第四周Java学习总结

本周把启航一面的任务的框架和所有功能的实现都写完了,但对于新添加的图书保存文件的实现还没有解决...

本后的Java学习了API的部分类,和面对对象的部分进阶教程,

后附源码

package com.book;

import java.util.ArrayList;
import java.util.Scanner;

public class B_Main {

    //管理者数表
    public static ArrayList<Manager> ListManager = new ArrayList<>();
    //图书数组
    public static ArrayList<Book> ListBook = new ArrayList<>();
    //学生数组
    public static ArrayList<BorrowStudent> ListStudent = new ArrayList<>();

    //身份选择代号
    public static final String MANAGER = "1";
    public static final String STUDENT= "2";
    public static final String EXIT= "0";

    //管理员登录选择代号
    public static final String MANAGER_GET = "1";
    public static final String FIND_MANGER_COUNT = "2";
    public static final String BUILD_MANAGER_COUNT = "3";

    //学生登录选择代号
    public static final String STUDENT_GET = "1";
    public static final String BUILD_STUDENT_COUNT = "2";
    public static final String FIND_STUDENT_COUNT = "3";

    //管理员操作代号
    public static final String ADD_BOOK = "1";
    public static final String FIND_BOOK = "2";
    public static final String FIND_STUDENT = "3";
    public static final String REVISE_BOOK_INFORMATION = "4";

    public static void main(String[] args) {
        String choose;
        Scanner cin = new Scanner(System.in);

        while(true) {
            menu1();

            choose = cin.next();

            switch (choose) {
                //管理者
                case MANAGER -> {
                    menu2();
                    String choose1 = cin.next();
                    switch (choose1){
                        case MANAGER_GET -> {
                            if(ManGet(ListManager)){
                               loop1 : while (true) {
                                   menu5();

                                   //管理者登录后的选择
                                   choose = cin.next();
                                   switch (choose) {
                                       //
                                       case ADD_BOOK -> AddBook(ListBook);

                                       case FIND_BOOK -> {
                                           System.out.println("请输入您要查找的图书信息");
                                           String Find = cin.next();

                                           if (!OutFindBook(Find, ListBook)) {
                                               System.out.println("未查询到有关书籍");
                                           }
                                       }

                                       case FIND_STUDENT -> {
                                           System.out.println("请输入您要查找学生的姓名");
                                           String name = cin.next();
                                           System.out.println("请输入您要查找对的学生的学号");
                                           String Id = cin.next();

                                           boolean judge = FindStudent(ListStudent, name, Id);
                                           if (!judge) {
                                               System.out.println("未找到该学生");
                                           }
                                       }

                                       case REVISE_BOOK_INFORMATION -> {
                                           System.out.println("请输入您要修改或删除的图书编号");
                                           String find_book_id = cin.next();
                                           System.out.println("请输入您要修改或删除的书名");
                                           String find_book_name = cin.next();

                                           boolean judge = FindBook(find_book_id, find_book_name, ListBook);
                                           if (!judge) {
                                               System.out.println("未查询到该书籍");
                                           }
                                       }

                                       case EXIT -> {
                                           break loop1;
                                       }

                                       default -> System.out.println("输入错误,无此选项,请重新输入");
                                   }
                               }
                            }
                        }

                        case  FIND_MANGER_COUNT-> {
                            System.out.println("请输入您的账号(电话号码)");
                            String PhoneNumber = cin.next();
                            System.out.println("请输入您的姓名");
                            String name = cin.next();
                            System.out.println("请输入注册密钥");
                            String Key = cin.next();

                            if (!FindManagerPassword(ListManager, PhoneNumber, name, Key)) {
                                System.out.println("输入信息有误,请检查后再试");
                            }
                        }
                        case BUILD_MANAGER_COUNT -> BuildManagerCount(ListManager);

                        case EXIT -> {
                            break;
                        }

                        default -> System.out.println("输入错误,无此选项,请重新输入");
                    }
                }
                //学生
                case STUDENT -> {
                    menu3();
                    //学生选择
                    String Choose2 = cin.next();
                    switch (Choose2){
                        //学生登录
                        case STUDENT_GET -> {
                            if (StudentGet()){
                                loop2 : while(true) {
                                    menu4();
                                    choose = cin.next();

                                    switch (choose) {
                                        //借阅图书
                                        case "1" -> {
                                            System.out.println("请输入您要借阅的书名");
                                            String name = cin.next();

                                            System.out.println("请输入您要借阅图书的ID");
                                            String Id = cin.next();

                                            BorrowBook(name, Id, ListBook);
                                        }
                                        //归还图书
                                        case "2" -> {
                                            System.out.println("请输入您要归还借阅的书名");
                                            String name = cin.next();

                                            System.out.println("请输入您要归还图书的ID");
                                            String Id = cin.next();

                                            ReturnBook(name, Id, ListBook);
                                        }
                                        //查找图书
                                        case "3" -> {
                                            System.out.println("请输入您要查找的图书信息");
                                            String Find = cin.next();

                                            if (!OutFindBook(Find, ListBook)) {
                                                System.out.println("未查询到有关书籍");
                                            }
                                        }
                                        //返回上一步
                                        case EXIT -> {
                                            break loop2;
                                        }
                                        default -> System.out.println("输入错误,无此选项,请重新输入");
                                    }
                                }

                            }

                        }
                        //创建学生账号
                        case BUILD_STUDENT_COUNT -> BuildStudentCount(ListStudent);
                        //找回账号
                        case FIND_STUDENT_COUNT -> {
                            System.out.println("请输入您的学号");
                            String id = cin.next();
                            System.out.println("请输入您的姓名");
                            String name = cin.next();

                            if(FindStudentPassword(ListStudent,id,name)){
                                System.out.println("输入信息有误,请检查后再试");
                            }

                        }
                        //学生窗口退出
                        case EXIT-> {
                            break;
                        }
                        default -> System.out.println("输入错误,无此选项,请重新输入");

                    }
                }
                //退出程序
                case EXIT -> {
                    System.exit(0);
                }
                default -> System.out.println("输入错误,无此选项,请重新输入");
            }
        }
    }

    //初始的身份菜单
    public static void menu1() {
        System.out.println("--------------欢迎来到bk的图书管理系统--------------");
        System.out.println("请选择您的身份:");
        System.out.println("1.管理员");
        System.out.println("2.学生登入");
        System.out.println("0.退出程序");
    }

    //管理员的登陆菜单
    public static void menu2(){
        System.out.println("请选择您要进行的操作:");
        System.out.println("1.管理员账号登入");
        System.out.println("2.找回密码");
        System.out.println("3.注册管理账号(需要登入钥匙)");
        System.out.println("0.返回上一步");
    }

    //管理员登陆后的操作菜单
    public static void menu5(){
        System.out.println("请选择您的操作:");
        System.out.println("1.增加图书");
        System.out.println("2.查找图书");
        System.out.println("3.查找借阅者");
        System.out.println("4.修改图书信息");
        System.out.println("0.返回上一步");
    }

    //修改信息选择
    public static void menu6(){
        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("0.返回上一步");
    }

    //学生登陆菜单
    public static void menu3(){
        System.out.println("请选择您的操作");
        System.out.println("1.学生登入");
        System.out.println("2.注册学生账号");
        System.out.println("3.忘记密码");
        System.out.println("0.返回上一步");
    }

    //学生的操作菜单
    public static void menu4(){
        System.out.println("请选择您要进行的操作:");
        System.out.println("1.借阅图书");
        System.out.println("2.归还图书");
        System.out.println("3.查找图书");
        System.out.println("0.返回上一步");
    }

    //管理员登录
    public static boolean ManGet(ArrayList<Manager> ListManager){

        if (ListManager.size() == 0){
            System.out.println("当前未有管理者,请先注册管理者账号");
            return false;
        }
        Scanner cin = new Scanner(System.in);

        System.out.println("请输入手机号");
        String UserName = cin.next();//接受账号

        //检索账号(手机号)是否存在
        for (Manager m : ListManager) {
            boolean judge = UserName.equals(m.getM_Phone());
            if (judge) {
                System.out.println("请输入密码");
                String Password = cin.next();//接收密码
                if (m.getM_Password().equals(Password)) {
                    System.out.println("登陆成功!");
                    return true;
                } else {
                    System.out.println("密码输入错误!");
                    return false;
                }
            }
        }

        System.out.println("未检索到系统内存在改账号,请检查是否输入错误");

        return false;
    }

    //注册管理者账号;
    public static void BuildManagerCount(ArrayList<Manager> ListManager){
        Scanner cin = new Scanner(System.in);
        //输入姓名
        System.out.println("请输入您的姓名");
        String name = cin.next();

        //创建账号;使用手机号作为登入账号
        String PhoneNumber;
        while(true) {
            System.out.println("请输入您的手机号码");
            PhoneNumber = cin.next();

            if (PhoneNumber.length() != 11) {
                System.out.println("输入有误,请重新输入");
            }else {
                break;
            }
        }
        //输入密码
        String Password1;
        String Password2;
        while(true) {
            System.out.println("请输入您的密码");
            Password1 = cin.next();

            //再次输入密码,以确认输入正确
            System.out.println("请再次输入您的密码");
            Password2 = cin.next();

            if(!Password1.equals(Password2)){
                System.out.println("两次密码不一致,请重新输入");
            }else{
                break;
            }

        }

        //输入管理者密钥,以确保管理者不被随意注册
        System.out.println("请输入注册钥匙");
        String key;
        while(true){
            key = cin.next();

            if(!key.equals(Manager.getM_Key())){
                System.out.println("密钥输入错误,请重新输入");
            }else{
                break;
            }
        }

        Manager m = new Manager(Password1,name,PhoneNumber);

        ListManager.add(m);

        System.out.println("注册成功!");
    }

    //添加图书
    public static void AddBook(ArrayList<Book> list){
        Scanner cin = new Scanner(System.in);

        System.out.println("请输入图书的id");
        String B_Id = cin.next();

        System.out.println("请输入书名");
        String B_Name = cin.next();

        System.out.println("请输入作者");
        String Writer = cin.next();

        System.out.println("请输入出版社(全称)");
        String Press = cin.next();

        System.out.println("请输入出版时间(格式:XXXX年XX月XX日)");
        String Publish_Time = cin.next();

        System.out.println("请输入数量");
        int sum = cin.nextByte();

        System.out.println("请输入价格");
        double price = cin.nextByte();

        Book b = new Book(B_Id,B_Name,Writer,Press,Publish_Time,sum,price);

        list.add(b);

        System.out.println("添加成功!");
    }

    //查找图书-修改或删除图书信息
    public static boolean FindBook(String FindBookId,String FindBookName,ArrayList<Book> ListBook){
        Scanner cin = new Scanner(System.in);

        if (ListBook.size() == 0){
            System.out.println("当前系统未添加图书");
        }

        for (Book b : ListBook) {
            if (FindBookId.equals(b.getB_Id()) && FindBookName.equals(b.getB_Name())) {
                b.ShowBook();

                System.out.println("请选择您要进行的操作:(1->修改信息  2->删除书籍信息)");

                String choose = cin.next();
                if (choose.equals("1")) {
                    menu6();
                    choose = cin.next();
                    ReviseBookInformation(b, choose);
                    return true;
                }else if (choose.equals("2")){
                    ListBook.remove(b);
                    System.out.println("删除成功");
                    return true;
                }
            }
        }
        return false;
    }

    //修改图书信息
    public static void ReviseBookInformation(Book b,String choose){
        Scanner cin = new Scanner(System.in);

        System.out.println("请输入修改后的信息");

        //录入输入信息
        int re_sum = 0;
        double re_price = 0;
        String re_string = "";
        if (choose.equals("3"))  re_sum = cin.nextByte();
        if (choose.equals("1"))  re_price = cin.nextByte();
        else{
            re_string = cin.next();
        }

        //修改信息
        switch(choose){
            case "1" -> b.setPrice(re_price);
            case "2" -> b.setPress(re_string);
            case "3" -> b.setSum(re_sum);
            case "4" -> b.setPublish_Time(re_string);
            case "5" -> b.setWriter(re_string);
            default -> System.out.println("输入错误请重新输入");
        }

        System.out.println("修改成功!");

        b.ShowBook();
    }

    //输出查找图书信息
    public static boolean OutFindBook(String FindBookName,ArrayList<Book> ListBook){
        if (ListBook.size() == 0){
            System.out.println("当前尚未添加图书");
            return false;
        }

        for (Book b : ListBook) {
            if (FindBookName.equals(b.getB_Name())) {
                b.ShowBook();
            } else if (FindBookName.equals(b.getB_Id())) {
                b.ShowBook();
            } else if (FindBookName.equals(b.getPress())) {
                b.ShowBook();
            } else if (FindBookName.equals(b.getWriter())) {
                b.ShowBook();
            }
        }

        return false;
    }

    //查找学生信息
    public static boolean FindStudent(ArrayList<BorrowStudent> list,String name,String id){
        if (list.size() == 0){
            System.out.println("当前尚未有学生借阅");
            return false;
        }

        BorrowStudent s1;
        for (BorrowStudent borrowStudent : list) {
            s1 = borrowStudent;
            if (s1.getS_name().equals(name) && s1.getS_Id().equals(id)){
                s1.ShowStudent();
                return true;
            }
        }
        return false;
    }

    //找回密码(管理员)
    public static boolean FindManagerPassword(ArrayList<Manager> list,String PhoneNumber,String name,String key){
        Scanner cin = new Scanner(System.in);

        for(int i = 0;i < list.size();i++){
            Manager m = list.get(i);
            if (m.getM_Phone().equals(PhoneNumber) && m.getM_Name().equals(name) && Manager.getM_Key().equals(key)){
                do {
                    System.out.println("请输入新的密码");
                    String NewNumber1 = cin.next();
                    System.out.println("请再次输入密码");
                    String NewNumber2 = cin.next();

                    if (NewNumber1.equals(NewNumber2)) {
                        ListManager.get(i).setM_Password(NewNumber1);
                        System.out.println("密码修改成功!");
                        break;
                    }
                    System.out.println("两次输入密码不一致,请重新输入");
                }while(true);
                return true;
            }
        }
        return  false;
    }

    //学生登录
    public static boolean StudentGet(){
        Scanner cin = new Scanner(System.in);

        String S_Id;
        String S_Password;

        System.out.println("请输入您的学号");
        S_Id = cin.next();

        for (BorrowStudent s1 : ListStudent) {
            boolean judge = S_Id.equals(s1.getS_Id());
            if (judge) {
                System.out.println("请输入密码");
                S_Password = cin.next();
                if (S_Password.equals(s1.getS_Password())) {
                    System.out.println("登录成功!");
                    return true;
                } else {
                    System.out.println("密码输入错误");
                    return false;
                }
            }
        }

        System.out.println("未检索到系统内存在改账号,请检查是否输入错误");
        return false;
    }

    //学生信息认证
    public static void BuildStudentCount(ArrayList<BorrowStudent> ListStudent){
        Scanner cin = new Scanner(System.in);

        String S_name;//姓名
        String S_Id;//学号
        String S_Password;//密码
        String College;//学院
        String Object;//专业
        String S_Class;//班级

        System.out.println("请输入您的姓名");
        S_name = cin.next();

        //录入密码
        String S_Password1;
        String Password2;
        while(true) {
            System.out.println("请输入您的密码");
            S_Password1 = cin.next();

            //再次输入密码,以确认输入正确
            System.out.println("请再次输入您的密码");
            Password2 = cin.next();

            if(!S_Password1.equals(Password2)){
                System.out.println("两次密码不一致,请重新输入");
            }else{
                break;
            }
        }

        System.out.println("请输入您的学号");
        S_Id = cin.next();

        System.out.println("请输入您的学院");
        College = cin.next();

        System.out.println("请输入您的专业");
        Object = cin.next();

        System.out.println("请输入您的班级");
        S_Class = cin.next();

        BorrowStudent S1 = new BorrowStudent(S_name,S_Id,S_Password1,College,Object,S_Class);

        ListStudent.add(S1);
        System.out.println("注册成功!");
    }

    //找回学生密码
    public static boolean FindStudentPassword(ArrayList<BorrowStudent> list,String id,String name){
        Scanner cin = new Scanner(System.in);
        for (int i = 0;i < list.size(); i++){
            BorrowStudent s1 = list.get(i);
            if (s1.getS_Id().equals(id) && s1.getS_name().equals(name)){
                do {
                    System.out.println("请输入新的密码");
                    String NewNumber1 = cin.next();
                    System.out.println("请再次输入密码");
                    String NewNumber2 = cin.next();

                    if (NewNumber1.equals(NewNumber2)) {
                        ListManager.get(i).setM_Password(NewNumber1);
                        System.out.println("密码修改成功!");
                        break;
                    }
                    System.out.println("两次输入密码不一致,请重新输入");
                }while(true);
                return true;
            }
        }

        return false;
    }

    //借阅图书
    public static void BorrowBook(String BookName,String BookId,ArrayList<Book> list){
        int i = 0;
        for (Book b : list){
            if(b.getB_Name().equals(BookName) && b.getB_Id().equals(BookId)  ){
                i++;
                if (b.getSum() >= 1){
                    b.setSum(b.getSum() - 1);
                    System.out.println("借阅成功!");
                }else {
                    System.out.println("剩余数量不足");
                }
            }
        }
        if (i != 1) {
            System.out.println("未查询到该图书");
        }
    }

    //归还图书
    public static void ReturnBook(String BookName,String BookId,ArrayList<Book> list){
        for (Book b : list){
            if(b.getB_Name().equals(BookName) && b.getB_Id().equals(BookId)){
                    b.setSum(b.getSum() + 1);
                    System.out.println("归还成功!");
            }else {
                System.out.println("未查询到该图书");
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值