【Java】—— 图书管理系统

基于往期学习的类和对象、继承、多态、抽象类和接口来完成一个控制台版本的 “图书管理系统”

在控制台界面中实现用户与程序交互

任务目标:

1、系统中能够表示多本图书的信息

2、提供两种用户(普通用户,管理员)

3、普通用户:查看书籍列表,查找图书,借书,还书

4、管理员:查看书籍列表,查找图书,新增图书,删除图书

任务实现:

1、图书类

创建一个包 library 用来表示 图书管理系统 ,再创建 Book 类表示 一本的图书信息

在类里创建需要用到的属性(书名,作者,价格,类型,是否被借出)

package library;

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;
    }
    //提供 get/set 方法
    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 getBorrowed() {
        return isBorrowed;
    }

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

2、图书列表类

创建一个 BookList 类用来管理多个书籍对象

package library;

public class BookList {
    //创建数组来记录多本书的信息
    private Book[] books = new Book[100];
    private int size = 0;//当前数组中有效元素的个数

    //构造方法
    public BookList(){
        //默认添加几本书,方便后续测试
        books[0] = new Book("西游记","吴承恩",100.0,"古典名著");
        books[1] = new Book("高等数学","高斯",90.0,"自然科学");
        books[2] = new Book("福尔摩斯探案集","阿瑟·柯南·道尔",110,"悬疑推理小说");
        size = 3;
    }

    //提供 get/set 方法

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Book getBook(int index){
        return books[index];
    }

    public void setBooks(int index,Book book){
        books[index] = book;
    }
}

3、用户类

因为 普通用户 和 管理员 是从 用户 中根据不同的权限分离出来的,这里就涉及到了 继承 的知识,让 子类 继承 父类 来减少代码量

package library.User;

import library.IOperation;

//用户父类,派生出子类管理员和普通用户
public abstract class User {
    //这里用 protected 修饰 name,可以让子类直接获取到,不用 get/set 方法
    protected String name;

    //当前这个类能够进行哪些操作,就往这个数组中添加对应的对象
    protected IOperation[] operations;

    //构造方法
    public User(String name) {
        this.name = name;
    }

    //管理员和普通用户的权限不一样,菜单面板也有所不同,
    //但是在父类中没有办法确定使用哪个菜单,所以可以写成抽象类,让子类去进行重写
    //通过返回用户输入的序号来决定执行不同的操作,所以使用 int 类
    //写成 抽象方法 后就需要将这个父类写成 抽象类
    public abstract int menu();
}

父类写到这,我们就可以去创建子类

4、普通用户类(NormalUser)

import java.util.Sc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值