import java.util.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; class Book{ //书名集合 List<String> nameList =new ArrayList<String>(); //书借出状态 1:表示未借出 0:表示已借出 List<Integer> stateList = new ArrayList<Integer>(); //借出时间 List<String> timeList = new ArrayList<String>(); //记录借书次数 List<Integer> countBook = new ArrayList<Integer>(); //输入对象 Scanner scan = new Scanner(System.in); //记录所选的功能 int number; //判断是否退出 int systemNum; public void initBook(){ nameList.add("世界是数字的"); stateList.add(1); timeList.add(""); countBook.add(100); nameList.add("罗氏家族语录"); stateList.add(0); timeList.add("2016-9-8"); countBook.add(150); nameList.add("钢铁是怎样炼成的"); stateList.add(1); timeList.add(""); countBook.add(10); } //欢迎界面 public void helloBook(){ System.out.println("*************欢迎进入图书管理系统***************"); System.out.println("********** 1. 新增DVD ***************"); System.out.println("********** 2. 查看DVD ***************"); System.out.println("********** 3. 删除DVD ***************"); System.out.println("********** 4. 借出DVD ***************"); System.out.println("********** 5. 归还DVD ***************"); System.out.println("********** 6. 排行榜 ***************"); System.out.println("********** 6. 排行榜 ***************"); System.out.println("********** 7. 退 出 ***************"); System.out.println("************************************************"); System.out.println("请输入你的选择:"); number = scan.nextInt(); } //功能区 public void funtion(){ helloBook(); switch (number) { //添加 case 1: addBook(scan); logDown(scan); if (systemNum == 0){ funtion(); } break; //查看书籍 case 2: check(); logDown(scan); if (systemNum == 0) { funtion(); } break; //删除书籍 case 3: removeBook(scan); logDown(scan); if (systemNum == 0) { funtion(); } break; case 4: loan(scan); logDown(scan); if (systemNum == 0) { funtion(); } break; case 5: returnBook(scan); logDown(scan); if (systemNum == 0) { funtion(); } break; case 6: rankList(); logDown(scan); if (systemNum == 0) { funtion(); } break; case 7: System.out.println("谢谢使用图书管理系统......"); break; default : System.out.println("输入有误!!!"); funtion(); break; } } //打印方法 public void print(List<String> name,List<Integer> state,List<String> time){ Iterator runList = name.iterator(); System.out.println("序号\t"+"状态\t"+"书名\t\t\t"+"借出时间"); int count = 0; String stateStr = null; while(runList.hasNext()){ if (stateList.get(count).intValue() == 0) { stateStr = "已借出"; }else { stateStr = "可借"; } runList.next(); System.out.println((count+1) + "\t" + stateStr + "\t<<" + name.get(count) + ">>\t\t" + time.get(count)); count++; } } //退出系统 public void logDown(Scanner scan){ while (true) { System.out.println("输入0退出!!!"); systemNum = scan.nextInt(); if (systemNum == 0) { break; }else { System.out.println("输入有误!!!"); } } } //添加书籍 public void addBook(Scanner scan){ System.out.println("请输入书名***"); nameList.add(scan.next()); stateList.add(1); timeList.add(""); countBook.add(0); } //查看书籍 public void check(){ print(nameList, stateList, timeList); } //删除书籍 public void removeBook(Scanner scan){ System.out.println("请输入要删除的书名..."); String str = scan.next(); int count = nameList.indexOf(str); if (count >= 0) { if (stateList.get(count).intValue() != 0) { nameList.remove(count); stateList.remove(count); timeList.remove(count); System.out.println("删除/成功..."); }else { System.out.println("此书以被借出,不能删除..."); } }else { System.out.println("图书馆没有此书,请核对..."); } } //借出 public void loan(Scanner scan){ System.out.println("输入要借的书名..."); String str = scan.next(); int count = nameList.indexOf(str); System.out.println("*********\t"+count); if (count >= 0) { if(stateList.get(count).intValue() != 0){ System.out.println("输入借书时间(年-月-日)..."); String timeStr = scan.next(); timeList.set(count, timeStr); stateList.set(count, 0); countBook.set(count, countBook.get(count)+1); System.out.println("操作成功..."); }else { System.out.println("此书已被借出,抱歉..."); } }else { System.out.println("图书馆没有你要借的书,请核对..."); } } //归还 public void returnBook(Scanner scan){ System.out.println("你好,谢谢你来还书..."); System.out.println("请输入你所还书籍的名称..."); String str = scan.next(); int count = nameList.indexOf(str); if (count >= 0) { if (stateList.get(count).intValue() == 0) { System.out.println("请输入还书时间(年-月-日)"); String timeStr = scan.next(); long mon = money(timeList.get(count), timeStr); System.out.println("操作成功,欢迎下次再来......"); System.out.println("你的借书天数为:" + mon + "天 租金为:" + (mon*1) + "元"); timeList.set(count, ""); stateList.set(count, 1); }else { System.out.println("抱歉,此书从未借出过..."); } }else { System.out.println("此书没有从图书馆中借出,请核对..."); } } public long money(String date1,String date2){ //做时间差 //将String转为Date做计算yyyy-mm-dd是格式 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); long charge = 0; try{ Date d1 = sd.parse(date1); Date d2 = sd.parse(date2); //时间也是以毫秒为单位。 charge = (d2.getTime() - d1.getTime()) / (1000*24*60*60); }catch(ParseException e){ System.out.println(e); } return charge; } //排行榜 public void rankList(){ Object[] nameArr = nameList.toArray(); Object[] countArr = countBook.toArray(); int temp = 0; String str = null; for (int i = 0; i < countArr.length-1; i++) { for (int j = 0; j < countArr.length-1-i; j++) { if ((int)countArr[j] < (int)countArr[j+1]) { temp = (int)countArr[j]; countArr[j] = (int)countArr[j+1]; countArr[j+1] = temp; str = (String)nameArr[j]; nameArr[j] = (String)nameArr[j+1]; nameArr[j+1] = str; } } } System.out.println("序号\t"+"书名\t\t"+"\t"+"排行榜"); for (int i = 0; i < countArr.length; i++) { System.out.println((i+1) + "\t" + nameArr[i] + "\t\t" + countArr[i]); } } } public class demo { public static void main(String[] args) { Book book = new Book(); //图书馆书籍初始化 book.initBook(); //图书馆管理系统核心方法 book.funtion(); } }