集合:图书管理系统
系统需求分析:
通过集合图书管理系统,写成四个类,实现图书管理借阅等多方面功能。
对用户和管理员的相应功能实现做出了不同调整,具体如下图:
-
创建Book类
-
定义变量,写出构造方法.
-
private String bookId; private String bookName; private String author; private String bookPress; private int price; private String date = "未借出"; private int shu; private int lendshu; private String date1="未借出"; public Book() { } public Book(String bookId, String bookName, String author, String bookPress, int price, String date, int shu, String date1, int lendshu) { super(); this.bookId = bookId; this.bookName = bookName; this.author = author; this.bookPress = bookPress; this.price = price; this.date = date; this.date1 = date1; this.lendshu = lendshu; }
-
部分get(),set()方法。
-
public int getLendshu() { return lendshu; } public void setLendshu(int lendshu) { this.lendshu = lendshu; }
-
创建主类BookDemo首先写出登录选择的窗口代码
-
public static void main(String[] args) { System.out.println("----欢迎来到图书管理系统-----"); System.out.println("1-用户登录\t2-管理员登录\t3-退出系统"); Scanner scanner = new Scanner(System.in); System.out.println("请输入你的选择:"); String s = scanner.nextLine(); switch (s) { case "1": { user(); break; } case "2": { manager(); break; } case "3": { System.out.println("退出系统成功!"); System.exit(0);// 虚拟机退出系统 break; } default:System.out.println("选择不存在。"); } }
-
用户登录设置
-
这里给出了登录成功和失败的提示,并用for循环给三次机会,用完自动退出系统。
-
String password = "1";//密码 String user = "1";//账号 for (int i = 0; i < 3; i++) { Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名"); String us = scanner.nextLine(); System.out.println("请输入密码"); String word = scanner.nextLine(); if (password.equals(word) && user.equals(us)) { System.out.println("登录成功!"); break; } else { if (2 - i == 0) { System.out.println("你的账户已锁定,请联系相关管理员"); System.exit(0);// 虚拟机退出系统 } else { System.out.println("用户名或密码错误,还有" + (2 - i) + "机会!"); } } } se(); }
-
管理员登录设置
-
String password = "1"; String user = "1"; Scanner scanner = new Scanner(System.in); System.out.println("请输入管理员用户名"); String us = scanner.nextLine(); System.out.println("请输入密码"); String word = scanner.nextLine(); if (password.equals(word) && user.equals(us)) { System.out.println("登录成功!"); select(); } else { System.out.println("用户名或密码错误!"); BookDemo bookDemo = new BookDemo(); bookDemo.main(null); } }
-
用户类部分主要功能
-
一.搜索图书
-
if (b.size() == 0) { System.out.println("该系统未录入图书信息。"); } System.out.println("输入要查找书籍的图书名:"); Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); for (int i = 0; i < b.size(); i++) { Book book = b.get(i); if (string.equals(book.getBookName())) { System.out.println("\t--图书编号--\t--图书名称--\t--图书作者--\t--出版社--\t--现存数量--\t--市场价格--\t--借阅情况--"); System.out.println(book.getBookId() + book.getBookName() + book.getAuthor() + book.getBookPress() + book.getShu() + book.getPrice() + book.getDate()); } else { System.out.println("未找到相关书籍!"); } }
-
二. 借阅图书(下面部分代码分点细讲)
-
1.用户键盘输入想借阅的书籍,并提供迭代器遍历循环。
-
System.out.println("请输入要借阅图书名称:"); Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); Iterator<Book> iterator = b.iterator();
-
2.规定了每个人最多同时借阅数量,总不能让你把图书馆的书全部搬走吧!
-
else if (book.getLendshu() == 5) { System.out.println("本图书馆规定每人只能同时借阅5本书!"); break; }
-
3.通过Calendar类中的方法,借书成功后自动记录下借书的时间代码,并且返回对应需要还书的日期,以便用户知晓。
-
else if (book.getBookName().equals(s) && book.getShu() > 0) { System.out.println("借书成功!"); Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int date = calendar.get(Calendar.DATE); book.setDate(year + "年" + month + "月" + date + "日"); n--; j++; book.setLendshu(j); System.out.println("您的借书时间是:" + book.getDate()); calendar.set(year, month, date); calendar.add(Calendar.MONTH, 7); int year1 = calendar.get(Calendar.YEAR); int month1 = calendar.get(Calendar.MONTH) + 1; int date1 = calendar.get(Calendar.DATE); book.setDate1(year1 + "年" + month1 + "月" + date1 + "日"); System.out.println("最晚还书时间是:" + book.getDate1()); break; }
-
4.找不到书籍,给出对应提示。
-
else { System.out.println("你输入的名称不存在!"); }
-
5.返回界面
-
//创建对象,返回用户选择界面 user01 user01 = new user01(); book.setShu(n); user01.se();
-
三.归还书籍
-
1.归还书籍,返回归还的时间。
-
if (book.getBookId().equals(string) && book.getDate() != "未借出" && book.getLendshu() != 0) { System.out.println("归还图书成功!"); n++; j--; book.setLendshu(book.getLendshu() + j); book.setShu(book.getShu() + n); Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int date = calendar.get(Calendar.DATE); book.setDate1(year + "年" + month + "月" + date + "日"); System.out.println("您成功归还的时间是:" + book.getDate1() + !"); if (book.getLendshu() == 0) { book.setDate("未借出"); }
-
2.未借书则不用归还,给相应提示
-
else { System.out.println("归还失败,该书籍没被您借出!"); }
-
四.用户的个人借书情况
-
主要是方便用户查看自己借了多少本书,哪几本书,和要还书的时间信息。
-
if (b.size() == 0) { System.out.println("系统未录入书籍。"); } System.out.println("\t--图书编号--\t--图书名称--\t--已借数量--\t--借书时间--\t--规定还书时间--"); for (int i = 0; i < b.size(); i++) { Book book = b.get(i); System.out.println("\t" + book.getBookId() + "\t" + "\t" + book.getBookName() + "\t" + "\t" + book.getLendshu() + "\t" + "\t" + book.getDate() + "\t" + book.getDate1()); } } }
-
管理员主要功能实现
-
一.上架新图书
-
主要有以下几个步骤:
-
(1)创建图书对象
-
(2)键盘录入上架的新书信息
-
(3)将录入的信息赋值给对象变量
-
(4)将对象的值内存地址信息添加到集合
注:以下是简单的处理
-
1.这里没有给出重复的处理,因为图书馆可以有多本相同的书籍。
-
2.异常捕获主要是确保录入书籍信息准确与合理性。
-
Book book = new Book(); Scanner scanner = new Scanner(System.in); System.out.println("输入要上架的图书的编号:"); String s1 = scanner.nextLine(); System.out.println("请输入图书名称:"); String s2 = scanner.nextLine(); System.out.println("请输入图书作者:"); String s3 = scanner.nextLine(); System.out.println("请输入出版社:"); String s4 = scanner.nextLine(); try { System.out.println("请输入市场价格:"); int s6 = scanner.nextInt(); System.out.println("输入书籍数量"); int s7 = scanner.nextInt(); book.setPrice(s6); book.setShu(s7); } catch (Exception e) { System.out.println("上架失败!输入的价格书籍数量必须为整数!"); System.out.println("请重新添加!"); addBook(); // TODO: handle exception } book.setBookId(s1); book.setAuthor(s3); book.setBookName(s2); book.setBookPress(s4); b.add(book); System.out.println("上架成功!"); Manager manager = new Manager(); manager.select(); }
-
二.下架书籍
-
public static void deleteBook() { boolean flag = true; System.out.println("请输入要下架的图书名称:"); Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); Iterator<Book> iterator = b.iterator(); while (iterator.hasNext()) { Book book = iterator.next(); if (book.getBookName().equals(s)) { iterator.remove(); System.out.println("下架成功!"); flag = false; break; } } if (flag) { System.out.println("下架失败!,输入的图书名称有误!"); } }
-
三.修改图书信息
-
Scanner scanner = new Scanner(System.in); System.out.println("输入要修改的图书名:"); String name = scanner.nextLine(); System.out.println("输入要修改的图书出版社:"); String press = scanner.nextLine(); System.out.println("输入要修改的图书编号:"); String Id = scanner.nextLine(); String author = scanner.nextLine(); System.out.println("输入要修改的图书编号:"); int shu = scanner.nextInt(); System.out.println("输入要修改的价格:"); int price = scanner.nextInt(); Book book2 = new Book(); book2.setBookPress(press); book2.setBookName(name); book2.setBookId(Id); book2.setPrice(price); book2.setAuthor(author); book2.setShu(shu); // 遍历集合,通过if条件控制语句修改对于学生信息 for (int i = 0; i < b.size(); i++) { Book book1 = b.get(i); if (book1.getBookName().equals(name)) { b.set(i, book2); System.out.println("修改图书成功"); break; } else { System.out.println("要修改的图书信息不存在!"); } } }