Java實現簡單圖書借閱系統

本文實例為大傢分享瞭Java實現圖書借閱系統的具體代碼,供大傢參考,具體內容如下

為圖書閱覽室開發一個圖書借閱系統,最多可存50本圖書,實現圖書的管理。圖書借閱系統具備以下主要功能。

u功能

Ø借出排行榜

Ø新增圖書

Ø查看圖書

Ø刪除圖書

Ø借出圖書

Ø歸還圖書

Ø退出

package com.daiinfo.seninorjava.ken8.implentment.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class Bookborrowing {
    public static void main(String[] args){
        int[] states=new int[50];//圖書借閱狀態 狀態0:已借出,1:可借
        int[] counts=new int[50];//圖書借閱次數
        String[] name=new String[50];//圖書名稱
        String[] dates=new String[50];//圖書日期
        //初始化圖書
        states[0]=0;
        counts[0]=15;
        name[0]="數據結構";
        dates[0]="2018-7-15";
        
        states[1]=1;
        counts[1]=12;
        name[1]="數據庫";
        dates[1]=null;
        
        states[2]=2;
        counts[2]=30;
        name[2]="離散數學";
        dates[2]=null;
        //外觀界面
        Scanner input=new Scanner(System.in);
        int num=-1;//用戶輸入0返回主菜單
        boolean flage=false;//記錄用戶是否退出系統,true為退出,false為不退出
        do {
            System.out.println("*************************************");
            System.out.println("1、新增圖書");
            System.out.println("2、查看圖書");
            System.out.println("3、刪除圖書");
            System.out.println("4、借出圖書");
            System.out.println("5、歸還圖書");
            System.out.println("6、退出");
            int choose=input.nextInt();
            switch(choose){
            case 0:
                int number=0;
                for(;name[number]!=null;number++) {
                    
                }//求出當前書目總數
                int[] sortBook=new int[number];
                printBook(name,counts,number,sortBook);
                break;
            case 1:
                System.out.println("------>新增圖書");
                int a=0;
                for(;a<name.length;a++) {
                    if(name[a]==null) {
                        System.out.println("請輸入圖書名稱");
                        name[a]=input.next();//錄入書名
                        System.out.println("/n"+"新增《"+name[a]+"》成功!!!");
                        
                        //將圖書信息存入數組
                        states[a]=1;
                        counts[a]=0;
                        dates[a]=null;
                        break;
                    }
                }
                if(a==50) {
                    System.out.println("書架已滿,勿加");
                }
                System.out.println("******************************");
                break;
            case 2:
                System.out.println("------>查看圖書");
                System.out.println("序號\t狀態\t名稱\t借出日期\t");
                for(int i=0;name[i]!=null;i++) {
                    String situation=(states[i]==0)?"已借出":"可借";
                    System.out.println((i+1)+"\t"+situation+"\t《"+name[i]+"》\t");
                    if(states[i]==0) {
                        System.out.println(dates[i]);
                    }else {
                        System.out.println();
                    }
                }
                System.out.println("*******************************");
                break;
            case 3:
                System.out.println("------->刪除圖書");
                System.out.println("請輸入圖書名稱");
                String book=input.next();
                boolean check1=false;//判斷是否找到刪除圖書名稱,false找不到
                for(int b=0;name[b]!=null;b++) {
                    if(name[b].equals(book)) {
                        check1=true;
                        if(states[b]==1) {
                            //圖書未借出,可以刪除
                            System.out.println("刪除《"+book+"》成功!");
                            int i=b;
                            for(;i<name.length-1;i++) {
                                states[i]=states[i+1];
                                name[i]=name[i+1];
                                dates[i]=dates[i+1];
                                counts[i]=counts[i+1];
                            }//將數組內容前移
                            break;
                        }else {
                            System.out.println("圖書已借出,無法刪除!");
                            break;
                        }
                    }
                }
                if(check1==false) {
                    System.out.println("沒有找到匹配信息!");
                }
                System.out.println("*************************");
                break;
            case 4:
                System.out.println("--------->借出圖書");
                System.out.println("請輸入圖書名稱:");
                String back=input.next();
                boolean check2=false;//判斷想要借出的書能否找到,false找不到,true找到
                for(int b=0;name[b]!=null;b++) {
                   if(name[b].equals(back)) {//書存在
                       check2=true;
                       if(states[b]==1) {
                           System.out.println("請輸入借出日期(年-月-日):");
                           dates[b]=input.next();
                           while(judge(dates[b])==false) {
                               System.out.println("日期非法,請重新輸入");
                               dates[b]=input.next();
                           }
                           states[b]=0;//將當前圖書狀態調成借出
                           counts[b]++;//當前圖書借出次數加一
                       }else {
                           System.out.println(name[b]+"已被借出!");
                       }
                       break;
                   }
                }
                if(check2==false) {
                    System.out.println("沒有找到匹配信息!");
                }
                System.out.println("*********************************");
                break;
            case 5:
                System.out.println("--------->歸還圖書");
                System.out.println("請輸入圖書名稱:");
                String back1=input.next();
                boolean check3=false;//判斷歸還的書能否找到,false找不到,true找到
                for(int b=0;name[b]!=null;b++) {
                       if(name[b].equals(back1)) {//書存在
                           check3=true;
                           if(states[b]==0) {//如果書借出
                               System.out.println("請輸入歸還日期(年-月-日):");
                               String returnDate=input.next();
                               while(judge(returnDate)==false) {
                                   System.out.println("日期非法,請重新輸入");
                                   returnDate=input.next();
                               }
                               System.out.println("歸還《"+back1+"》成功!");
                               System.out.println("借出日期"+dates[b]);
                               System.out.println("歸還日期"+returnDate);
                               int money=0;
                               try {
                                   money=daysBetween(dates[b],returnDate);
                                   }catch(Exception e) {
                                       e.printStackTrace();
                                   }
                               System.out.println("該書沒有被借出,無法執行操作");
                               }
                           break;
                           }
                       }
                if(check3==false) {
                    System.out.println("沒有找到匹配信息!");
                }
                System.out.println("*********************************");
                break;
            case 6:
                flage=true;
                break;
                default:
                flage=true;
                break;
            }
            if(flage==true) {
                break;
            }else {
                System.out.println("輸入0返回");
                num=input.nextInt();
            }
        }while(num==0);
        System.out.println("謝謝使用!");
    }


    private static boolean judge(String str) {
        // TODO Auto-generated method stub
        SimpleDateFormat sd=new SimpleDateFormat("yy-MM-dd");//日期格式
        try {
            sd.setLenient(false);//指定日期時間是否合格,true不合格,false合格
            sd.parse(str);
        }catch(Exception e){
            return false;
        }
        return true;
    }
    public static void printBook(String[] names,int[] sortBook,int number,int[] counts) {
        int[] another=counts.clone();//復制數組
        int i=0;
        int max=another[0];
        for(int p=0;p<=max;p++) {
            for(int q=0;q<number;q++) {
                if(counts[q]==p) {
                    sortBook[i++]=q;
                }
            }
        }
        System.out.println("序號\t"+"書名\t"+"借出次數");
        for(int x=(number-1);x>=0;x--) {//借出次數排行榜
            System.out.println((number-x)+"\t"+names[sortBook[x]]+"\t\t"+counts[sortBook[x]]);
        }
        System.out.println("******************");
    }
    public static int daysBetween(String smdate,String bdate) throws Exception{
        SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd");
        Calendar cal=Calendar.getInstance();
        cal.setTime(sdf.parse(smdate));
        long time1=cal.getTimeInMillis();
        cal.setTime(sdf.parse(bdate));
        long time2=cal.getTimeInMillis();
        long between_days=(time2-time1)/(1000*3600*24);
        return Integer.parseInt(String.valueOf(between_days));
    }

}

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: