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。