简单的图书管理系统
自写的极其简陋的图书管理系统,代码不太规范,在学习中慢慢改
现在还不能实现多用户借书
问题:A借走了书,B借书时会借走A的书
数据存储用的是map,如有疑问或建议欢迎留言
LibMain.java
package com.inclass.test; import java.util.Scanner; /* * * 图书管理系统 * 1.登录和注册 * 2.登录成功后 * a.显示所有图书列表 添加 查询 修 删除 * b.借阅图书 需要绑定借阅人账号 * c.查看已借阅图书列表 归还图书 * 3.退出当前登录的账号 */ public class LibMain { public static void main(String[] args) { /* * 预定义 */ Libmanage lib = new Libmanage(); Scanner sc = new Scanner(System.in); //将会接收op1方法的返回值,是否进行下一阶段 int Op1=0; //将用于接收对图书的操作 int Op2=0; //用于第一个while循环————登录注册操作 int flag1=1; //用于第二个while循环————是否对图书进行操作 int flag2=1; /* * 开始进入图书馆 */ System.out.println("欢迎来到网络图书馆!"); while(flag1==1){ System.out.println("请输入需要的操作:1.登录2.注册0.退出系统"); Op1 = lib.op1();//在op1方法中登录成功,就会返回1,进入图书操作界面 if(Op1==1){ flag2=1; while(flag2==1){ lib.show();//显示操作菜单 Op2=sc.nextInt();//接收对图书的操作 switch(Op2){ case 1: lib.addBook();//1.增加图书 break; case 2: lib.delBook();//2.删除图书 break; case 3: lib.modBook();//3.修改图书 break; case 4: lib.selBook();//4.查询图书信息 break; case 5: lib.showAllBook();//5.显示可借阅图书 break; case 6: lib.borBook();//6.借阅图书 break; case 7: lib.showBorBook();//7.查看已经借阅的图书 break; case 8: lib.huanBook();//8.归还图书 break; case 0: flag2=0;//0.返回上一级 break; default: break; } }//第二个while的大括号 }//执行图书操作的if }//第一个while循环的大括号 } }
Libmanage.java
package com.inclass.test; /** * 图书和用户的操作 * @author y * */ import java.util.Scanner; import java.util.TreeMap; public class Libmanage { Scanner sc = new Scanner(System.in); //将会接收登录注册指令 int op1=0; //成员变量————用户 TreeMap<String, String> userMap = new TreeMap<>(); //成员变量————图书 TreeMap<Integer, Library> bookMap = new TreeMap<>(); //图书编号 int bno=0; //成员变量————用户和借书的关系 TreeMap<Integer, Library> borBook = new TreeMap<>();//将会被借出去的书存在这个treemap里,然后再与用户关联 TreeMap<Integer, Library> huanBook = new TreeMap<>();//要还的书的中介 TreeMap<String, TreeMap> userBook = new TreeMap<>(); //用于注册或登录的用户名和密码 String name=null,password=null; //用于图书操作的属性定义 String bname,bauther;//书名,书作者 double bprice;//书价格 /* * 登录注册选择 */ public int op1(){ int fh=0; try{ op1 = sc.nextInt();//接收登录注册指令 if(op1==1){ int i=1; System.out.println("请输入用户名:"); name = sc.next(); for (String str : userMap.keySet()) { if(str.equals(name)){ fh=login(str);//登录————登录成功会返回1,失败返回0 i=0;//如果没有该用户,那就会进行注册,有,置为0,不注册 break; } } if(i==1){ System.out.println("没有"+name+"用户,请进行注册!"); register();//跳到注册界面 } }else if(op1==2){ register();//注册 }else if(op1==0){ System.out.println("退出系统!..."); System.exit(0); }else{ System.out.println("输入有误请重新输入"); } }catch(Exception e){ System.out.println("输入有误请重新输入"); sc.next();//出现异常后,就不断进行死循环的解决办法(可想想别的解决办法) } return fh; } /* * 用户注册 * ->对密码没有要求 */ public int register(){ System.out.println("请输入用户名:"); name = sc.next(); System.out.println("请输入密码:"); password = sc.next(); for (String str : userMap.keySet()) { if(str.equals(name)){ System.out.println("已经存在该用户!请重新注册!"); return 0; } } userMap.put(name, password); System.out.println("注册成功!"); return 1; } /* * 用户登录 * ->先判断用户名是否相同,然后再判断密码是否相同。没有符合条件的就返回false,否则返回true */ public int login(String name){ System.out.println("请输入密码:"); password = sc.next(); if(password.equals(userMap.get(name))){ System.out.println("登陆成功!"); return 1; } System.out.println("用户名或密码错误!"); return 0; } /* *1.增加图书 */ public void addBook(){ try { int x=0; System.out.println("请输入图书编号:"); bno = sc.nextInt(); for (int i : bookMap.keySet()) { if(i==bno){ x=1;//如果已有图书,置为1,告诉用户不能添加 } } if(x==0){ System.out.println("请输入书名:"); bname = sc.next(); System.out.println("请输入作者:"); bauther = sc.next(); System.out.println("请输入价格:"); bprice = sc.nextDouble(); bookMap.put(bno, new Library(bname,bauther,bprice)); System.out.println("增加成功!新添图书的信息为:"); System.out.println("编号:"+bno + " " + bookMap.get(bno)); }else if(x==1){ System.out.println("已经存在编号为"+bno+"的书,请重新输入"); } } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 2.删除图书 */ public void delBook(){ System.out.println("请输入图书编号:"); try { int x=0; bno=sc.nextInt(); for (int i : bookMap.keySet()) { if(bno==i){ x=1; } } if(x==1){ bookMap.remove(bno); System.out.println("删除成功!"); }else{ System.out.println("没有编号为"+bno+"的书"); } } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 3.修改图书信息 */ public void modBook(){ try { int x=0; System.out.println("请输入需要修改的图书编号:"); bno = sc.nextInt(); for (int i : bookMap.keySet()) { if(bno==i){ x=1; } } if(x==1){ System.out.println("请输入修改后的书名:"); bname = sc.next(); System.out.println("请输入修改后的作者:"); bauther = sc.next(); System.out.println("请输入修改后的价格:"); bprice = sc.nextDouble(); bookMap.put(bno, new Library(bname,bauther,bprice)); System.out.println("修改成功!修改后图书的信息为:"); System.out.println("编号:"+bno + " " + bookMap.get(bno)); }else{ System.out.println("没有编号为"+bno+"的书"); } } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 4.查询图书 */ public void selBook(){ int x=0; try { System.out.println("请输入需要查询的图书编号:"); bno=sc.nextInt(); for (int i : bookMap.keySet()) { if(i==bno){ System.out.println(bookMap.get(i)); x=1; break; } } if(x==0){ System.out.println("没有编号为"+bno+"的书"); } } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 5.显示所有可借阅的书 */ public void showAllBook(){ for (int i : bookMap.keySet()) { System.out.println(i +" "+ bookMap.get(i)); } } /* * 6.借书 */ public void borBook(){ try { int x=0; System.out.println("请输入需要借阅图书的编号:"); bno=sc.nextInt(); for (int i : bookMap.keySet()) { if(bno==i){ x=1; } } if(x==1){ borBook.put(bno, bookMap.get(bno));//中介 userBook.put(name, borBook);//用户和借出去的书相关联 bookMap.remove(bno);//把这本书从图书馆移除 //borBook.clear();//放弃了多用户借书,如果这里clear,用户会借不到书 }else{ System.out.println("不存在"+bno+"的书,请重新输入"); } } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 7.查看已经借出去的书 */ public void showBorBook(){ for (String str : userBook.keySet()) { System.out.println(str); System.out.println(" " + userBook.get(str)); } } /* * 8.还书 */ public void huanBook(){ try { System.out.println("请输入需要归还图书的编号:"); bno=sc.nextInt(); huanBook.put(bno, (Library) userBook.get(name).get(bno));//中介 bookMap.put(bno, huanBook.get(bno));//向图书馆存书 userBook.remove(name, userBook.get(name).remove(bno));//将对应关系中的书删除 huanBook.clear();//清除缓存 } catch (Exception e) { System.out.println("输入有误请重新输入!"); } bno=0;//预防性措施 } /* * 显示操作菜单 */ public void show(){ 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.借阅图书"); System.out.println("7.查看已经借阅的图书"); System.out.println("8.归还图书"); System.out.println("0.返回上一级"); } {//事先存几本书和一名用户 bookMap.put(101, new Library("书1","作者1",12)); bookMap.put(102, new Library("书2","作者2",15)); bookMap.put(103, new Library("书3","作者3",17)); bookMap.put(104, new Library("书4","作者4",19)); userMap.put("aaa", "123"); } }
Library.java
/** * 图书信息 * @author y * */ public class Library { //书名 private String bookName; //作者 private String bookAuther; //价格 private double bookPrice; /* * set&get */ public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public double getBookPrice() { return bookPrice; } public void setBookPrice(double bookPrice) { this.bookPrice = bookPrice; } public String getBookAuther() { return bookAuther; } public void setBookAuther(String bookAuther) { this.bookAuther = bookAuther; } /* * 构造方法 */ public Library() { super(); // TODO Auto-generated constructor stub } public Library(String bookName, String bookAuther, double bookPrice) { super(); this.bookName = bookName; this.bookAuther = bookAuther; this.bookPrice = bookPrice; } @Override public String toString() { return "书名:" + bookName + ",作者: " + bookAuther + ", 价格:" + bookPrice; } }