Java图书管理系统源码注解
程序入口:
package tsts; import user.signIn; public class assd { public static void main(String[] args) { //默认用户列表: //普通用户1 : name 小巴 账号abc123 密码:123456789 //管理员用户1 : name 小白 账号abc1234 密码:123456789 //入口函数,调用登录类,图书管理系统开启,登录系统开始启用 signIn signin = new signIn(); signin.donlu(); } }
urer包
package user; public class aninm { //用户类 public String name; private String accountNumber; private String password; public aninm (){ } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAccountNumber() { return accountNumber; } public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public aninm(String name, String accountNumber, String password) { this.name = name; this.accountNumber = accountNumber; this.password = password; } }
-==============
package user; import java.util.ArrayList; import java.util.Scanner; public class root extends signIn{ //管理员操作页面 public void operation(book.bookList bl,String rootname){ Scanner scanner = new Scanner(System.in); while (true){ System.out.println("========================================================"); System.out.println("尊贵的"+rootname+"管理员,欢迎你使用图书管理系统,请输入你想要进行的操作"); System.out.println("1.查询书籍信息\n2.新增书籍信息\n3.删除书籍信息\n4.打印全部书籍列表\n5.打印借阅记录\n6.退出当前登录\n7.退出系统"); String xz = scanner.next(); //退出账号索引 boolean tc = false; //判断用户进行的操作 switch (xz){ case "1" : //调用查询书名方法 System.out.println("请输入需要查询的书名"); String cx = scanner.next(); bok.queryBook(cx,bl); break; case "2" : //调用新增书方法 bok.addBook(bl); break; case "3" : //调用删除方法 System.out.println("请输入要删除的书名"); String gh = scanner.next(); bok.removeBook(gh,bl); break; case "4" : //调用展示所有书籍方法 bok.showBook(bl); break; case "5" : //借阅记录查询 bok.recordBook(bl); break; case "7" : //退出系统,结束java虚拟机 System.out.println("欢迎下次使用!"); System.exit(0); break; case "6" : //退出当前管理员登录 tc = true; break; default: System.out.println("没有此操作"); } if (tc){ //退出到登录界面 System.out.println("退出成功"); break; } } } }
---------
package user; import book.bookList; import java.util.ArrayList; import java.util.Scanner; public class signIn { //初始化用户列表类 userList ul = new userList() ; //初始化相关图书记录类 bookList booklist = new bookList(); //初始化图书操作类 book.bookOperation bok = new book.bookOperation(booklist); //登录系统方法 public void donlu(){ //开始循环 while (true){ Scanner scanner = new Scanner(System.in); //登录欢迎界面 System.out.println("========================================"); System.out.println("欢迎来到java图书管理系统,请输入您需要进行的操纵:"); System.out.println("1.普通用户登录 2.管理员登录 3.退出系统"); //接收并判断用户选择对应的操作 String signin = scanner.next(); switch (signin){ case "1" : //调用普通用户登录方法 UserSignIn(); continue; case "2" : //调用管理员登录方法 RootSignIn(); continue; case "3" : //结束java虚拟机 System.out.println("欢迎下次使用"); System.exit(0); default: System.out.println("没有对应的操作"); } } } //用户登录验证方法 private void UserSignIn(){ while (true){ Scanner scanner = new Scanner(System.in); System.out.println("========================================================"); System.out.println("请输入用户账号:"); String userAccountNumber = scanner.next(); //验证账号 //记录用户账号信息 int dm = 0; //记录用户账号信息 boolean jlf = false; //遍历用户 for (int i = 0;i<ul.user.size();i++){ //判断用户列表中是否有该用户信息 if (ul.user.get(i).getAccountNumber().equals(userAccountNumber)){ //记录该用户账号 dm =i; break; }else if(i == ul.user.size()-1 ){ System.out.println("没有此用户!"); jlf = true; break; } } //若用户不存在,则退出循环,重新输入用户账号 if (jlf){ continue; } System.out.println("请输入用户密码:"); String userPassword = scanner.next(); //验证密码 // 将前方记录的用户名与密码匹配 if (!ul.user.get(dm).getPassword().equals(userPassword)){ System.out.println("密码错误!"); continue; }else { //密码正确,调用用户方法,对图书进行相应操作 System.out.println("登录成功!"); user u = new user(); u.operation(booklist,ul.user.get(dm).getName()); break; } } } //管理员登录验证方法 private void RootSignIn(){ //初始化用户信息 // userList us = new userList(); while (true){ Scanner scanner = new Scanner(System.in); System.out.println("请输入管理员账号:"); String rootAccountNumber = scanner.next(); //验证账号 int dm = 0; int jlf = 0; for (var i = 0;i<ul.root.size();i++){ if (ul.root.get(i).getAccountNumber().equals(rootAccountNumber)){ dm =i; break; }else if(i == ul.root.size()-1 ){ System.out.println("没有此管理员!"); jlf = 1; break; } } if (jlf == 1){ continue; } System.out.println("请输入管理员密码:"); String rootPassword = scanner.next(); //验证密码 if (!ul.root.get(dm).getPassword().equals(rootPassword)){ System.out.println("密码错误!"); continue; }else { //密码正确,调用用户方法,对图书进行相应操作 System.out.println("登录成功!"); root r = new root(); r.operation(booklist,ul.root.get(dm).getName()); break; } } } }
-------------
package user; import java.util.ArrayList; import java.util.Scanner; public class user extends signIn{ //普通用户操作类 public void operation(book.bookList bl,String username){ Scanner scanner = new Scanner(System.in); while (true){ System.out.println("========================================================"); System.out.println("尊贵的"+username+"用户,欢迎你使用图书管理系统,请输入你想要进行的操作"); System.out.println("1.查询书籍信息\n2.借阅书籍\n3.归还书籍\n4.打印全部书籍列表\n5.退出当前登录\n6.退出系统"); String xz = scanner.next(); //退出账号索引 boolean tc = false; //判断用户执行的操作 switch (xz){ case "1" : //调用查询书籍方法 System.out.println("请输入需要查询的书名"); String cx = scanner.next(); bok.queryBook(cx,bl); break; case "2" : //调用借阅书籍方法 System.out.println("请输入需要借阅的书名"); String jy = scanner.next(); bok.borrowBooks(jy,bl,username); break; case "3" : //调用归还书籍方法 System.out.println("请输入归还的书名"); String gh = scanner.next(); bok.returnTheBook(gh,bl,username); break; case "4" : //调用显示所有书籍方法 bok.showBook(bl); break; case "6" : //退出系统,结束java虚拟机 System.out.println("欢迎下次使用!"); System.exit(0); break; case "5" : //退出当前循环 tc = true; break; default: System.out.println("没有此操作"); } if (tc){ //当用户选择退出,结束当前用户操作页面,返回用户登录页面 System.out.println("退出登录成功"); break; } } } }
--------------------
package user; import java.util.ArrayList; public class userList { //普通用户账号密码信息存储 ArrayList<aninm> user = new ArrayList(); //管理员用户账号密码信息存储 ArrayList<aninm> root = new ArrayList(); public userList(){ //默认添加一位普通用户,一位管理员用户 user.add(new aninm("小巴","abc123","123456789")); root.add(new aninm("小白","abc1234","123456789")); } }
==book包
package book; public class book { //图书类 private String bookName;//书名 private String authorName;//作者名 private int bookPrice;//数量 private int zonbook;//总数量 private boolean bookState;//是否借出状态 public book(){} //图书构造方法 public book(String bookName, String authorName, int bookPrice) { this.bookName = bookName; this.authorName = authorName; this.bookPrice = bookPrice; this.zonbook = bookPrice; this.bookState = true; } public int getZonbook() { return zonbook; } public void setZonbook(int zonbook) { this.zonbook = zonbook; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthorName() { return authorName; } public void setAuthorName(String authorName) { this.authorName = authorName; } public int getBookPrice() { return bookPrice; } public void setBookPrice(int bookPrice) { this.bookPrice = bookPrice; } public boolean getBookState() { return bookState; } public void setBookState(boolean bookState) { this.bookState = bookState; } }
==
package book; import book.book; import java.util.ArrayList; public class bookList { //图书类 //书架 图书集合 private ArrayList<book> books = new ArrayList<book>(); //借书记录 private ArrayList<String> arr = new ArrayList<String>(); //获取图书数量 public ArrayList<book> getBooks() { return books; } //设置图书数量 public void setBooks(ArrayList<book> books) { this.books = books; } //获取借书记录 public ArrayList<String> getArr() { return arr; } //设置借书记录 public void setArr(ArrayList<String> arr) { this.arr = arr; } }
==
package book; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Scanner; public class bookOperation { //图书操作类 public bookOperation(){ } //初始化图书信息 public bookOperation(bookList booklist){ //默认往书架上添加三本图书 booklist.getBooks().add(new book("程序设计基础","林青霞",3)); booklist.getBooks().add(new book("网页脚本技术","左冷禅",5)); booklist.getBooks().add(new book("前端设计开发","张曼玉",2)); } //查询所有图书信息 public void showBook(bookList book){ //标题 System.out.println(" 书名 : 作者 数量 状态"); //判断书架上是否有图书 if (book.getBooks().size()!=0){ //遍历所有的图书 for (int i = 0;i<book.getBooks().size();i++){ String zt = null; if (book.getBooks().get(i).getBookState()){ zt = "可借阅"; }else { zt = "已借出"; } System.out.println((i+1)+" "+book.getBooks().get(i).getBookName()+" "+book.getBooks().get(i).getAuthorName() +" "+ book.getBooks().get(i).getBookPrice() +"本 "+ zt); } }else { System.out.println("暂无任何书籍信息"); } } //查询书籍详细信息 public void queryBook(String name,bookList book){ //遍历所有图书 for (int i = 0;i<book.getBooks().size();i++){ if (book.getBooks().get(i).getBookName().equals(name)){ String zt = null; if (book.getBooks().get(i).getBookState()){ zt = "可借阅"; }else { zt = "已借出"; } System.out.println(" 书名 : 作者 数量 状态"); System.out.println((i+1)+" "+book.getBooks().get(i).getBookName()+" "+book.getBooks().get(i).getAuthorName() +" "+ book.getBooks().get(i).getBookPrice() +"本 "+ zt); break; }else if (i==book.getBooks().size()-1){ System.out.println("未找到此书籍"); } } } //新增书籍信息 管理员方法 public void addBook(bookList book){ Scanner scanner = new Scanner(System.in); //获取图书名称 System.out.println("请输入新增书的书名"); String name = scanner.next(); //判断书架上是否有书,没有则直接添加 if (book.getBooks().size()!=0){ //遍历图书 for (int i = 0;i<book.getBooks().size();i++){ //查看是否有相同名字的图书,若有则增加该图书的数量 if (book.getBooks().get(i).getBookName().equals(name)){ System.out.println("请输入新增书的数量"); int jg = scanner.nextInt(); if(jg<=0){ System.out.println("非法操作"); }else { //已存在相同书名,该书数量增加 book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+jg); book.getBooks().get(i).setZonbook(book.getBooks().get(i).getZonbook()+jg); System.out.println("添加图书数量成功!"); } break; }else if (i==book.getBooks().size()-1){ //若最后一本书都没有相同名称,则书架上没有相同的书籍,则证明是新图书,调用添加方法添加 System.out.println("请输入新增书的作者"); String uname = scanner.next(); System.out.println("请输入新增书的数量"); int jg = scanner.nextInt(); if(jg<=0){ System.out.println("非法操作"); }else { book.getBooks().add(new book(name,uname,jg)); System.out.println("新增图书成功!"); } break; } } }else { //书架上没有任何书,直接添加 System.out.println("请输入新增书的作者"); String uname = scanner.next(); System.out.println("请输入新增书的数量"); int jg = scanner.nextInt(); if(jg<=0){ System.out.println("非法操作"); }else { book.getBooks().add(new book(name,uname,jg)); System.out.println("新增图书成功!"); } } book.setBooks(book.getBooks()); } //删除书籍信息重写 public void removeBook(String name,bookList book){ //遍历所有图书 for (int i = 0;i<book.getBooks().size();i++){ //输入名称与书架上的图书名称相同,则下架该图书 if (book.getBooks().get(i).getBookName().equals(name)){ System.out.println("成功下架"+book.getBooks().get(i).getBookName()); book.getBooks().remove(i); break; }else if (i==book.getBooks().size()-1){ //没有相同名称的书籍则提示 System.out.println("未找到此书籍"); } } book.setBooks(book.getBooks()); } //借阅书籍重写 public void borrowBooks(String name,bookList book,String username){ //遍历图书 for (int i = 0;i<book.getBooks().size();i++){ //判断书架上是否有该书籍 if (book.getBooks().get(i).getBookName().equals(name)){ //判断该书籍是否为可借出状态 if (book.getBooks().get(i).getBookState()){ //判断该书籍剩余数量是否大于1 if (book.getBooks().get(i).getBookPrice()>1){ //书籍数量大于一,成功借出剩余,剩余数量减一本 book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()-1); }else{ //书籍数量等于一,最后一本,书籍状态改为不可借出 book.getBooks().get(i).setBookState(false); book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()-1); } //借书成功 System.out.println("借书成功!"); //添加借书记录 SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); book.getArr().add("用户 "+username+" 在 "+formatter.format(date)+" 时借阅了 "+book.getBooks().get(i).getBookName()+" 书籍"); break; }else{ //图书状态为不可借出状态 System.out.println("该书已被借出!"); break; } //遍历到最后一本书,均未找到相同名称的书,则书架没有该图书 }else if (i==book.getBooks().size()-1){ System.out.println("未找到此书籍"); } } book.setBooks(book.getBooks()); } //归还书籍重写 public void returnTheBook(String name,bookList book,String username){ //遍历图书 for (int i = 0;i<book.getBooks().size();i++){ //判断书架是否有此书 if (book.getBooks().get(i).getBookName().equals(name)){ if (!book.getBooks().get(i).getBookState()||book.getBooks().get(i).getBookPrice() < book.getBooks().get(i).getZonbook()){ //记录判断图书是否为已借出状态,或者图书剩余数量小于图书原本数量,则证明该书被借出 if (book.getBooks().get(i).getBookState()){ //该书为可借出状态,归还图书后剩余图书数量加一 book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+1); }else{ //若该书为不可借出状态,归还图书后则修改为可借出,并且剩余图书数量加一 book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+1); book.getBooks().get(i).setBookState(true); } //归还图书记录 //获取用户归还时当前时间 SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); book.getArr().add("用户 "+username+ " 在 "+formatter.format(date)+" 时归还了 "+book.getBooks().get(i).getBookName()+" 书籍"); System.out.println("还书成功!"); break; }else{ //未有任何借书记录 System.out.println("该书还没有借阅记录"); break; } }else if (i==book.getBooks().size()-1){ System.out.println("未找到此书籍"); } } book.setBooks(book.getBooks()); } //借阅信息记录重写 public void recordBook(bookList book){ //遍历借书和还书的所有记录 if (book.getArr().size()!=0){ for (int i = 0;i<book.getArr().size();i++){ System.out.println(book.getArr().get(i)); } }else { System.out.println("暂时未有借阅记录"); } book.setBooks(book.getBooks()); } }
运行效果===========================