项目名称:图书管理系统
项目需求:
一级菜单:
1.登录 2.注册 3.退出
登录功能:
用户输入账号密码实现登录。最多输错三次,每次输入错误
提示剩余次数。次数使用完后退出程序
用户登录成功进行”二级菜单“
注册功能:
输入注册的账号密码。账号不能重复注册。且账号首字符必须是字母,
并且账号只能包含数字和字母。才能注册成功。
(可以随机产生一个4位整数验证码,验证码正确才能注册成功)
二级菜单:
1.录入书籍
录入信息:书名-作者-简介-数量 (录入时书名不能重复)
2.下架书籍
输入下架书籍的名称: 存在则下架成功!
3.更新书籍
输入更新书籍的名称:
存在:
显示更新书籍的所有的信息
提示:1.更新书名 2.更新作者 3.更新简介 4.更新数量
4.查询书籍信息
输入书名:
存在 ---显示书籍相关信息
5.显示所有书籍信息
6.借出书籍
输入借出书籍的名称:
存在借出书籍:
判断数量>0才能借出书籍
请您输入借出人姓名:
记录当前借出书籍的时间:
(原本的书籍数量-1。)
7.查询所有借出书籍信息
借出书籍信息:书名-作者-简介-借出人-借出时间
8.归还书籍
输入归还书籍的名称:
输入借出人姓名:
存在:
提示借出了多少时间--1秒1块
(判断当前借出人是否是会员,是会员打折8折
不是会员原价
)
归还成功!原书籍容器中该书籍数量+1
9.注册会员
注册会员的名字电话
10.退出
分析程序中需要哪些对象?
管理员对象:哪些属性? username password
图书对象:哪些属性? bookName writer intro num ? ?
会员对象:哪些属性? name phone
分析程序中需要哪些容器?
管理员账号容器
存储图书的容器
存储借出图书的容器
会员的容器
一个简单的小项目,结合之前几天所学的知识可能自行编写
上代码
package 图书管理系统; import java.util.ArrayList; import java.util.Date; import java.util.Scanner; //该类专门用于定义图书馆管理系统相关的功能函数 public class BMS { //创建扫描器对象,用户扫描用户添加的管理员、图书、会员的相应信息,该扫描器最好创建在成员变量的位置,方便每一个函数都能使用,不用重写创建 Scanner sc=new Scanner(System.in); //创建一个用户存储多个管理员信息的集合容器。该容器需要创建在成员变量中,方便整个工具类的所有的功能函数都能共用同一个容器进行 *** 作 //该集合容器的类型必须是管理员对象类型的,为了方便把一个管理员的所有进行都封装在一个对象中,也方便后续的获取。 ArrayList admins=new ArrayList<>(); ArrayListbooks = new ArrayList<>(); ArrayList lendbooks = new ArrayList<>(); ArrayList members = new ArrayList<>(); //借书对象 LendBooks lendbook = new LendBooks(); //借阅时间记录 Date date = new Date(); int sum=3; //定义一个用于产生4位正式的函数 public int romdomFour(){ double d=Math.random()*8999;//0-8999.99999 int i=(int)d+1000; //1000-9999 return i; } //定义一个函数,判断adminname是否存在 public int pdAname(String name){ for (int i = 0; i < admins.size(); i++) if (admins.get(i).getAdminname().equals(name)) { return i; } return -1; } //定义一个函数,判断bookname是否存在 public int pdBname(String name){ for (int i = 0; i < books.size(); i++) if (books.get(i).getBookname().equals(name)) { return i; } return -1; } //定义一个函数,判断membername是否存在 public int pdMname(String name){ for (int i = 0; i < members.size(); i++) if (members.get(i).getName().equals(name)) { return i; } return -1; } public void login() { System.out.println("请您输入登录账号"); String name = sc.next(); System.out.println("请您输入登录密码"); String password = sc.next(); int yzm =romdomFour(); System.out.println("请您输入验证码"+yzm); int newyzm = sc.nextInt(); if(newyzm!=yzm){ //验证码失败 System.out.println("验证失败!"); return; } if (pdAname(name) != -1) { for (int i = 0; i < admins.size(); i++) { //比较密码,相同则登录成功 if (admins.get(i).getAdminpassword().equals(password)&&yzm==newyzm) { System.out.println("登陆成功!"); caidan2(); return; //切换到菜单二 } else { sum--; if (sum!= 0) { System.out.println("登陆失败,您密码错误! 还剩" + sum + "次机会"); return; //次数等于0 } else { System.out.println("登陆失败,您输入的次数过多!"); System.exit(0); } } } } else { System.out.println("登陆失败,您的账号不存在!"); return; } } public void zhuceadmin(){ System.out.println("提示账号首字符必须是字母,只能包含数字和字母,且长度或者大于6位"); System.out.println("请您输入注册的账号:"); String name = sc.next(); //账号长度大于6位,首字符必须是字母,并且账号只能包含数字和字母。 if (name.length()>=6) { int sz=0; int zm=0; //for循环字符串 for (int i = 0; i ='0'&&c<='9'){//判断当前是不是数字字符 sz++; } if (c>='a'&&c<='z'){//判断当前是不是字母字符 zm++; } } //当循环结束后,就能得出数字和字母的个数 //判断首字符必须是字母 int j=0; char b=name.charAt(j); if (sz!=0&&zm!=0&&(sz+zm)==name.length()){ if (b>='a'&&b<='z') { if (pdAname(name) != -1) { System.out.println("您输入的账户存在!注册失败!"); return; }else { System.out.println("符合注册条件"); } }else{ System.out.println("格式有误,首位字符必须是字母"); return; } }else{ System.out.println("格式有误,账号只能包含数字和字母"); return; } }else{ System.out.println("长度不合法"); return; } //判断name是否存在 System.out.println("请您输入注册的密码:"); String password = sc.next(); //把输入的账号和密码封装在一个Admin对象中 Admin admin = new Admin(); admin.setAdminname(name); admin.setAdminpassword(password); //存储在集合中 admins.add(admin); System.out.println("注册成功"); } public void entyrbook(){ //1.扫描用户需要添加书本信息 System.out.println("请您输入书本名称:"); String name = sc.next(); //判断书本名称是否存在 if (pdBname(name)!=-1){ System.out.println("您输入的id存在!添加失败!"); return; } System.out.println("请您输入书本作者:"); String write = sc.next(); System.out.println("请您输入书本简介:"); String intro = sc.next(); System.out.println("请您输入书本数量:"); int num = Integer.parseInt(sc.next()); if (num>=0){ System.out.println("书本添加成功!"); }else{ System.out.println("请重新输入"); return; } // 2.把用户输入的数据封装在一个书本对象中 Books book = new Books(); book.setBookname(name); book.setWriter(write); book.setIntro(intro); book.setNum(num); // 3.存储在书本集合中 books.add(book); } public void delbook(){ System.out.println("请您输入要删除的书本名称:"); String name = sc.next(); //根据Bookname查询是否存在 int index = pdBname(name); if (index!=-1){ books.remove(index); System.out.println("书本删除成功!"); }else{ System.out.println("图书馆没有这本书籍!"); } } public void updatebook(){ System.out.println("请您输入要更新的书本名称:"); String name = sc.next(); int index = pdBname(name); if (index!=-1){ //说明要更新的书籍存在 index System.out.println("您要更新的书籍信息如下:"); System.out.println(books.get(index)); System.out.println("确定是否修改?y修改、n取消"); String key = sc.next(); if (key.equalsIgnoreCase("y")){ System.out.println("1.更新书名 2.更新作者 3.更新简介 4.更新数量"); String num = sc.next(); switch (num){ case "1": System.out.println("请您输入书本新名称:"); String newname = sc.next(); books.get(index).setBookname(newname); System.out.println("书本名称修改成功!"); return; case "2": System.out.println("请您输入书本新作者:"); String newwriter = sc.next(); books.get(index).setWriter(newwriter); System.out.println("书本作者修改成功!"); return; case "3": System.out.println("请您输入书本新简介:"); String newintro = sc.next(); books.get(index).setIntro(newintro); System.out.println("书本简介修改成功!"); return; case "4": System.out.println("请您输入书本新数量:"); int newnum = Integer.parseInt(sc.next()); books.get(index).setNum(newnum); System.out.println("书本数量修改成功!"); return; default: System.out.println("您的输入有误,修改失败!"); return; } }else{ System.out.println("您已取消修改!"); return; } }else{ System.out.println("您输入的书籍不存在!"); } } public void selectByname(){ System.out.println("请您输入要查询的书本名称:"); String name = sc.next(); //根据Bookname查询是否存在 int index = pdBname(name); if (index!=-1){ System.out.println(books.get(index)); }else{ System.out.println("您查询的书本名称不存在"); } } public void selectbookAll(){ if (books.size()==0){ System.out.println("暂无书籍数据!"); }else{ System.out.println("显示如下:"); for (Books book : books) { System.out.println(book); } } } public void lendbook(){ System.out.println("请您输入需要借阅的书本名称:"); String name = sc.next(); //判断借阅书本是否存在 int index = pdBname(name); if (index!=-1){ System.out.println("借阅的书本存在,信息如下"); System.out.println(books.get(index)); //判断sum是否书本数量>0 if(books.get(index).getNum()!=0){ System.out.println("请您输入借阅人姓名:"); String lendname = sc.next(); lendbook.setLendname(lendname); lendbook.setBookname(books.get(index).getBookname()); lendbook.setWriter(books.get(index).getWriter()); lendbook.setIntro(books.get(index).getIntro()); lendbook.getDates().add(date); //存储在集合中 lendbooks.add(lendbook); System.out.println("借阅成功!"); //书本数量-1 int num=books.get(index).getNum(); books.get(index).setNum(num-1); }else { System.out.println("借阅的书本数量不足,借阅失败!"); } }else{ System.out.println("您需要借阅的书本不存在"); } } public void selectAlllengbook(){ if (lendbooks.size()==0){ System.out.println("暂无借阅数据!"); }else{ System.out.println("显示如下:"); for (LendBooks lendbook : lendbooks) { System.out.println(lendbook); } } } public void returnbook(){ System.out.print("请您输入需要归还的书本名称:"); String name = sc.next(); //判断借阅书本是否存在 int index = pdBname(name); if (index!=-1){ System.out.println("归还的书本存在,请您输入借阅人姓名:"); String lendname = sc.next(); //判断是否存在该借阅人 for (int i = 0; i < lendbooks.size(); i++) { if (lendbooks.get(i).getLendname().equals(lendname)) { System.out.println("借阅人信息存在"); //归还时间记录 Date newdate = new Date(); //3.求现在归还书本时间到借阅书本时间的差值 long a=date.getTime(); long b=newdate.getTime(); long time =b - a; //1.求出总秒数 long miaosum= time / 1000; //2.求出总分钟 long fensum = miaosum / 60; //求出不足一分钟秒数 long miao = miaosum % 60; //3.求出总小时数 long shisum = fensum / 60; //求出不足一小时的分钟 long fen = fensum % 60; //4.求出总天数 long daysum = fensum / 24; //求出不足一天的小时 long shi = shisum % 60; System.out.println("您共借阅:" + daysum + "天" + shi + "时" + fen+ "分" + miao+"秒 ,一共合计"+miaosum+"秒"); //计算总金额1秒1元 double sum= (double) miaosum; //判断借阅人是否是会员 int index2 = pdMname(lendname); if (index2!=-1){ System.out.println("您本次借阅书本需要支付"+sum+"元"); sum=0.8*sum; System.out.println("因为您是会员,享受本店8折优惠,本次借阅书本只需要支付"+sum+"元"); }else { System.out.println("您不是本店会员,本次借阅书本需要支付"+sum+"元"); } String next =sc.next(); if (next.equalsIgnoreCase("y")) { System.out.println("归还成功!欢迎下次借阅!"); //书本数量+1 int num = books.get(index).getNum(); books.get(index).setNum(num + 1); lendbooks.remove(i); return; }else { System.out.println("您取消了支付,归还失败!"); return; } } else { System.out.println("归还失败!"); return; } } }else{ System.out.println("您需要借阅的书本不存在"); } } public void zhucemember(){ System.out.println("请您输入会员姓名:"); String name = sc.next(); //判断会员是否相同 if (pdMname(name)!=-1){ System.out.println("您输入的会员名字存在!添加失败!"); return; } System.out.println("请您输入会员电话:"); String phone = sc.next(); //把输入的账号和密码封装在一个User对象中 Member menber = new Member(); menber.setName(name); menber.setPhone(phone); //把会员对象存在数组中 members.add(menber); System.out.println("会员注册成功!"); } //菜单1 1.登录 2.注册 3.退出 public void caidan1(){ System.out.println("——————欢迎来到图书管理系统——————"); while (true){ System.out.println("1.登录 2.注册 3.退出"); String key = sc.next(); switch (key){ case "1": login(); break; case "2": zhuceadmin(); break; case "3": System.out.println("欢迎下次使用"); System.exit(0); default: System.out.println("您输入有误,请重新输入"); break; } } } //菜单2 1.录入书籍 2.下架书籍 3.更新书籍 4.查询书籍信息 5.显示所有书籍信息 6.借出书籍 7.查询所有借出书籍信息 8.归还书籍 9.注册会员 10.退出 public void caidan2(){ while (true){ System.out.println("1.录入书籍 2.下架书籍 3.更新书籍 4.查询书籍信息 5.显示所有书籍信息 6.借出书籍 7.查询所有借出书籍信息 8.归还书籍 9.注册会员 10.退出"); String key = sc.next(); switch (key){ case "1": entyrbook(); break; case "2": delbook(); break; case "3": updatebook(); break; case "4": selectByname(); break; case "5": selectbookAll(); break; case "6": lendbook(); break; case "7": selectAlllengbook(); break; case "8": returnbook(); break; case "9": zhucemember(); break; case "10": System.out.println("账号退出成功!"); return; default: System.out.println("您输入有误,请重新输入!"); break; } } } }
package 图书管理系统; public class Admin { private String adminname; private String adminpassword; public String getAdminname() { return adminname; } public void setAdminname(String adminname) { this.adminname = adminname; } public String getAdminpassword() { return adminpassword; } public void setAdminpassword(String adminpassword) { this.adminpassword = adminpassword; } }
package 图书管理系统; public class Books { protected String bookname; protected String writer; protected String intro; private int num; public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public String getWriter() { return writer; } public void setWriter(String writer) { this.writer = writer; } public String getIntro() { return intro; } public void setIntro(String intro) { this.intro = intro; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public boolean equals(Object obj) { Books book = (Books) obj; return bookname == book.getBookname() && bookname.equals(book.getBookname()); } @Override public String toString() { return "书籍信息:{" + "书名=" + bookname +''' + ", 作者='" + writer + ''' + ", 简介='" + intro + ''' + ", 数量='" + num+ ''' + '}'; } }
package 图书管理系统; import java.util.ArrayList; import java.util.Date; public class LendBooks extends Books{ private String lendname; private ArrayListdates =new ArrayList<>(); public String getLendname() { return lendname; } public void setLendname(String lendname) { this.lendname = lendname; } public ArrayList getDates() { return dates; } public void setDates(ArrayList dates) { this.dates = dates; } public boolean equals(Object obj) { LendBooks lendbook = (LendBooks) obj; return lendname == lendbook.getLendname() && lendname.equals(lendbook.getLendname()); } @Override public String toString() { return "书籍信息:{"+ "书名='" + bookname + ''' + "作者='" + writer + ''' + "简介='" + intro + ''' + "借阅人='" + lendname + ''' + ", 借阅时间='" + dates + ''' + '}'; } }
package 图书管理系统; import javax.naming.Name; public class Member { private String name; private String phone; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
最后用main函数调用BMS函数菜单1成功实现
package 图书管理系统; public class text1 { public static void main(String[] args) { BMS bms=new BMS(); bms.caidan1(); } }
如果有用就点赞,可以相互讨论~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)