千锋教育实训day07————java

千锋教育实训day07————java,第1张

千锋教育实训day07————java

项目名称:图书管理系统 
项目需求:
一级菜单:
    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<>();
    ArrayList books = 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 ArrayList dates =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();
    }
}

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5574606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存