项目名称:图书管理系统 
项目需求:
一级菜单:
    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<Admin> admins=new ArrayList<>();ArrayList<Books> books = new ArrayList<>();ArrayList<LendBooks> lendbooks = new ArrayList<>();ArrayList<Member> 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.99999int i=(int)d+1000; //1000-9999return 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;}/*1.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;}}/*1.2.注册功能输入注册的账号密码。账号不能重复注册。且账号首字符必须是字母,并且账号只能包含数字和字母。才能注册成功。(可以随机产生一个4位整数验证码,验证码正确才能注册成功)*/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 <name.length() ; i++) {//name.lenght(i)相当每一个字符char c = name.charAt(i);if (c>='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("注册成功");}/*2.1录入书籍书名-作者-简介-数量 (录入时书籍号不能重复)*/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);}/*2.2下架书籍(删除书籍)输入下架书籍的名称: 存在则下架成功!*/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("图书馆没有这本书籍!");}}/*2.3更新书籍显示更新书籍的所有的信息,提示:1.更新书名 2.更新作者 3.更新简介 4.更新数量*/public void updatebook(){System.out.println("请您输入要更新的书本名称:");String name = sc.next();int index = pdBname(name);if (index!=-1){//说明要更新的书籍存在 indexSystem.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("您输入的书籍不存在!");}}/*2.4查询书籍输入书名: 存在 ---显示书籍相关信息*/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("您查询的书本名称不存在");}}/*2.5显示所有书籍信息*/public void selectbookAll(){if (books.size()==0){System.out.println("暂无书籍数据!");}else{System.out.println("显示如下:");for (Books book : books) {System.out.println(book);}}}/*2.5借出书籍输入借出书籍的名称:存在借出书籍:判断数量>0才能借出书籍      请您输入借出人姓名:记录当前借出书籍的时间: (原本的书籍数量-1。)*/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是否书本数量>0if(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("借阅成功!");//书本数量-1int num=books.get(index).getNum();books.get(index).setNum(num-1);}else {System.out.println("借阅的书本数量不足,借阅失败!");}}else{System.out.println("您需要借阅的书本不存在");}}/*2.7查询所有借出书籍信息借出书籍信息:书名-作者-简介-借出人-借出时间*/public void selectAlllengbook(){if (lendbooks.size()==0){System.out.println("暂无借阅数据!");}else{System.out.println("显示如下:");for (LendBooks lendbook : lendbooks) {System.out.println(lendbook);}}}/*2.8归还书籍输入归还书籍的名称————输入借出人姓名:存在:提示借出了多少时间--1秒1块(判断当前借出人是否是会员,是会员打折8折——不是会员原价)归还成功!原书籍容器中该书籍数量+1*/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("归还成功!欢迎下次借阅!");//书本数量+1int 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("您需要借阅的书本不存在");}}/*2.9注册会员注册会员的名字电话*/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());}@Overridepublic 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 ArrayList<Date> dates =new ArrayList<>();public String getLendname() {return lendname;}public void setLendname(String lendname) {this.lendname = lendname;}public ArrayList<Date> getDates() {return dates;}public void setDates(ArrayList<Date> dates) {this.dates = dates;}public boolean equals(Object obj) {LendBooks lendbook = (LendBooks) obj;return lendname == lendbook.getLendname() && lendname.equals(lendbook.getLendname());}@Overridepublic 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();}
}

如果有用就点赞,可以相互讨论~

千锋教育实训day07————java相关推荐

  1. 千锋教育实训day01———Java

    目录 上午 Java环境变量搭建 下载JDK8.0 JDK8.0安装 配置环境变量 测试 IDEA的安装 下午 基本数据类型 概念 数据类型转换 运算符 常用运算符分类 算术运算符 赋值运算符 关系运 ...

  2. 千锋教育实训day04————java

    上午 学生管理系统 /StuManage/学生管理系统函数 public class StuManage {//该类定义所有相关的学生管理系统的函数方法//注册功能User[] users= new ...

  3. 千锋教育实训day06————java

    上午 Object中的equals方法 /main/ public static void main(String[] args) {Stu s1 = new Stu();s1.setId(111); ...

  4. 千锋教育实训day05————java

    上午 string 敏感词过滤 public static void main(String[] args) {String src = "马化腾,你个小可爱,还我装备.你要是换我装备,我就 ...

  5. 千锋教育实训day02————java

    目录 上午 昨天动物园代码优化 while循环 while循环的基本语法 while循环的执行过程 ​ while循环的注意事项 while代码使用演示 break和continue语句的使用 bre ...

  6. 大学python实训总结-千锋Python实训总结 学好基础才能走的更远

    时间飞逝,不知不觉在千锋学习Python已经一个月了,在这不长不短的一个月时间感觉我以往的生活方式和学习方式完全被改变了,希望我能继续保持这样的求学心态和学习态度.下面这个Python实训总结就是我对 ...

  7. 千锋教育威哥学Java教程之Java基础学习路线

    一. Java到底是什么? Java是一门全球范围内使用最广泛的,面向对象的编程语言.Java语言具有功能强大和简单易用两个特征,它作为面向对象编程语言系列的代表,极好地实现了面向对象理论,允许程序员 ...

  8. 千锋教育威哥学Java——爆破专栏丨Spring Security系列教程之解决Spring Security环境中的跨域问题

    前言 上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题. 需要更多教程,微信 ...

  9. 千锋教育威哥学Java—最新Java学习路线图(完整详细版) 千锋Java教学出品

    需要更多教程,微信扫码即可

最新文章

  1. java generatorconfig_generatorConfig.xml配置信息详细
  2. expo开发React Native快捷键记录
  3. [云炬创业管理笔记]第6章制定创业行动测试3
  4. shopnc前台登陆不进去解决方法
  5. 【要闻】Kubernetes不适合发行版模式、Windows业务无法达到营收指引
  6. vs如何写多线程_java中的多线程的示例
  7. 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
  8. 【BZOJ2154】Crash的数字表格 [莫比乌斯反演]
  9. Django文档4.0(通俗易懂)
  10. SuperMap iDesktopX “电子地图坐标转换”—火星、百度坐标与常规坐标系之间的转换
  11. word文件怎么压缩?详细的操作步骤
  12. 带轮轮毂长度l和带轮宽b表_V带轮宽度怎么计算?知道是A型带,带数为6,轮缘宽、轮彀孔径与长度怎么计算?顺求公式...
  13. 轻型异常在线检测器LODA:Lightweight on-line detector of anomalies
  14. L1-005 考试座位号 (15 分)
  15. MSN群每周讨论之快速估算和管理
  16. SAP 会计凭证带税码过账
  17. 神舟战神笔记本怎么U盘装Win10系统教学
  18. 数据中心机柜散热解决方案,知道这两点就够了!
  19. 12月钓鱼网站简报:新网数码占比超52% 涨幅明显
  20. ARM汇编学习拾贝 (持续更新)

热门文章

  1. 石破天惊! MD5算法被破解!
  2. 5 面试官问你问题,该怎么回答,这里有总结的攻略--绝密,程序员大厂面试求职大揭秘!
  3. 马天宇现场助阵,TCL冰箱洗衣机品牌战略升级
  4. (转载)PLC内部电路常见的几种形式
  5. 在西安从事软件研发是什么样的体验?
  6. JavaScript进阶面向对象ES6整合篇
  7. 关于使用微软拼音在Hbuilder打不出顿号、的问题
  8. 练习项目(二):消融效果
  9. 雨花石能不能养人带辐射吗?
  10. 前高管曝淘宝隐忧:80%以上收入来源在线广告