JavaSE练习--图书管理系统(控制台版本)


1.包装和类分块介绍

在这里插入图片描述
各种操作放在operatin包中 , 用户分类放在user包中 , 每个书的信息存在Book类中 , 一系列书放于BookList类中

< 1 > 首先通过IOperation接口创建一个work方法(用于统一各种Operation方法名)

< 2 >通过抽象类User实现管理员(AdminUser)和普通用户(NormalUser)的多态 , 分别实现两种不同的菜单操作,实现不同的operations数组操作

< 3 > 用Main方法选择调用不同的身份,启动程序
< 4 >通过Main方法中调用User的work方法 , 再通过User的work方法调用operations数组中各种Operation的work方法

各种操作介绍
AddOperation

添加图书(依次输入书名 , 作者 , 价格 , 类型 ) , 最后提示添加成功的信息

BorrowOperation

把未借出的图书借出去(按照书名)
此处的BorrowOperation也可以按照图书编号操作 , 具体可参考ReturnOperation操作

具体功能介绍

  • 实现了 work 方法,该方法用于处理借书操作。首先会在控制台输出提示信息让用户输入想借书籍的书名。
  • 通过 Scanner 获取用户输入的书名后,会遍历给定的 BookList (书籍列表)。
  • 若在列表中找到了同名书籍,接着判断该书是否已被借出,如果没借出就将该书的借出状态设为已借出,并输出“借书成功!”,然后结束方法执行;如果该书已借出,则输出“你想借阅的书籍已借出!”并结束方法执行。
  • 若遍历完整个书籍列表都没找到用户输入书名对应的书籍,就输出“未找到您想借阅的书籍”。
DeleteOperation

删除某本图书(按照书籍列表的图书编号)

具体功能介绍

  • 实现了 work 方法用于处理删除书籍操作。先是在控制台输出提示信息告知用户要进行删除书籍的操作,并让用户输入想删除的图书序号。
  • 通过 Scanner 获取用户输入的序号后,会先判断该序号是否在合理范围内(大于等于0且小于书籍列表的长度),若超出范围,则输出“输入编号不存在”并结束方法执行。
  • 若序号对应的是书籍列表中的最后一本书,就直接将书籍列表的长度减1,以此实现删除最后一本书的效果,随后结束方法执行。
  • 若不是最后一本书,会把列表中最后一本书放到输入序号对应的位置上,然后将书籍列表的长度减1,并输出“删除书籍成功!”,最后结束方法执行。
ExitOperation

退出系统

FindOperation

寻找图书(按照书名)

具体功能介绍

  • 实现的 work 方法用于执行查找书籍的操作。首先会在控制台输出提示信息,告知用户要进行查找操作并让用户输入要查找的书名。
  • 通过 Scanner 获取用户输入的书名后,会遍历给定的 BookList (书籍列表)。
  • 若在遍历过程中发现有书籍的名字与输入的书名相同,就会输出这本书的相关信息(通过输出 bookList.getBook(i) )以及“已找到!”的提示,然后结束方法执行。
  • 若遍历完整个书籍列表都没有找到匹配书名的书籍,就会输出“没找到,书籍不存在”,随后结束方法执行。
ListOperation

打印书籍列表
具体功能介绍
通过循环遍历给定的 BookList (书籍列表),对于列表中的每一本书(获取到 Book 对象),会按照序号(从1开始,通过 i + 1 表示)加上书的相关信息(直接输出 book 对象,调用了 Book 类的 toString 方法来展示关键信息)的格式,将每一本书的信息依次输出到控制台,以此实现查看书籍列表内容的功能。

ReturnOperation

把已借出的书籍还回去(按照书籍列表的图书编号)
具体功能介绍

  • 实现的 work 方法用于处理还书操作。先是在控制台输出“还书操作”的提示信息,接着提示用户输入想还书的编号,通过 Scanner 获取用户输入的编号后将其减1(编号从1开始计数,这里转换为从0开始的索引(下标))
  • 然后判断该编号是否合法,若编号小于0或者大于书籍列表的长度,就输出“输入编号不合法!”并结束方法执行。
  • 若编号合法,会判断对应书籍是否已借出,若已借出,则将该书的借出状态设为未借出,并输出“还书成功!”;若该书未借出,就输出“该书未借出!”。

2.Book类

public class Book {
   
   
    private String name;
    private String author;
    private  double price;
    private String type; //类型
    private boolean isBorrowed;

    //构造方法
    public Book(String name,String author,double price,String type){
   
   
        this.name=name;
        this.author=author;
        this.price=price;
        this.type=type;
        this.isBorrowed=false;
    }

    @Override
    public String toString() {
   
   
        return "[" + name + ',' + author + ',' + price +','+
                 type + ',' + (isBorrowed?"已借出":"未借出") + ']';
    }
    //提供getter,setter

    public String getName() {
   
   
        return name;
    }

    public void setName(String name) {
   
   
        this.name = name;
    }

    public String getAuthor() {
   
   
        return author;
    }

    public void setAuthor(String author) {
   
   
        this.author = author;
    }

    public double getPrice() {
   
   
        return price;
    }

    public void setPrice(double price) {
   
   
        this.price = price;
    }

    public String getType() {
   
   
        return type;
    }

    public void setType(String type) {
   
   
        this.type = type;
    }

    public boolean isBorrowed() {
   
   
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
   
   
        isBorrowed = borrowed;
    }
}

3.BookList类

public class BookList {
   
   
    private Book[] books=new Book[100]; //存放书籍
    private int size=0;
     public BookList(){
   
   
         books[0]=new Book("西游记","吴承恩",100,"古典小说");
         books[1]=new Book("红楼梦","曹雪芹",90,"古典小说");
         books[2]=new Book("高等数学","高斯",40,"数学");
         books[3]=new Book("Java入门到精通","詹姆斯高斯林",70,"计算机");
         size=4;
     }

    public int getSize() {
   
   
        return size;
    }

    public void setSize(int size) {
   
   
        this
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值