图书管理系统

一、图书管理系统菜单
🍓管理员菜单

1.查找图书

2.新增图书

3.删除图书

4.显示图书

0.退出系统

---------------------------------------------------------------------------------------------------------------------------------

🌼用户菜单

1.查找图书

2.借阅图书

3.归还图书

0.退出系统

二、实现基本框架
先建立一个新的文件,命名为TestBook,在文件内建立两个包,分别命名为user(用户)、book(图书)。

 先写book相关的代码。于是,我们先在book包中新建一个java类,名为:Book。

显示图书时,我们希望它能显示出所有图书的名称、作者、价格、类型和图书目前是否借出。

  private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//类型
    private boolean isBorrowed;//是否被借出,初始值是false,在构造方法中不用写
 右击鼠标,选择Generate,选择Getter and Setter 选项,点击shift,点最后一个,就能全选:

自动生成:

 
    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 int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
 
    public String getType() {
        return type;
    }
 
    public void setType(String type) {
        this.type = type;
    }
 
    public boolean isBorrowed() {
        return isBorrowed;
    }

再写它们的构造方法:

当我们新增一本图书时,它默认就是未被借出的,所以不用构造方法。

快捷键:alt+insert。按ctrl,可以多选,直接生成下面代码块:

 
    public Book(String name, String author, int price, String type) {//构造方法
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }
 我们再右键选择Generate,选择ToString,全选,点OK,自动生成:

  @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }
此时,在book包中新建一个类:BookList(书架):

在这个书架中,我们希望能在里面固定的位置放书,并且能知道放了几本书:

    private  Book[] books=new  Book[10];//这个书架可以放十本书
    private int usedSize;//记录下当前book数组中有几本书
然后依旧是右键Generate ,getter and setter,自动生成:

 当前界面:

我们还记得在C语言中,我们用到的 define,用define语句来定义一个常量,同理,我们这边也可以定义一个能放多少本书的常量:

  private static final int DEFAULT_SIZE=10;
  private  Book[] books=new  Book[DEFAULT_SIZE];
我们这边就是先按思路慢慢写,慢慢补充。在后面,我会放完整的代码。

book包已经告一段落了,现在来写user包。

我们在user包中新建三个类:AdminUser(管理员)、NormalUser(用户)、User。

NormalUser、AdminUser,这也就是我们图书管理系统面对的两个对象了,管理员和用户,他们具有一些相同的属性。我们就可以写一个User类,让两个类去继承,来省一些代码了。

🥗我们先写User类叭~

package user;
 
public class User {
    protected String name;//名字.这边的protect代表的是名字的权限。如果是private,它只能在同一个包的同一类使用。就不能让AdminUser类继承了。
    //写public的话,权限太大了,不是很好。
    public User(String name) {//构造方法
        this.name = name;
    }
}
所以在AdminUser类中:

package user;
 
public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
    }
}
可以直接用快捷键,alt+insert,直接生成构造方法。

同理,NormalUser类中:

package user;
 
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
    }
}
 
我们书的属性和用户属性的包和类已经写了大概。我们现在回归到我前面列的功能上:

 然后,我们就会发现我们想要实现的功能和操作基本上是针对图书的。所以,这边,我们可以选择直接在图书book包中写方法,也可以选择另外再创建一个包。

我这边是新建了一个包,命名为:opera,再创建一个接口命名为IOPeration。

创建接口:点oper,右击,点击java Class:

 然后页面为:

 创建接口:

package opera;
 
import book.BookList;
 
public interface IOPeration {//创建接口
    void work(BookList bookList);//抽象方法
    //功能主要是针对图书的,也就是针对书架。
}
 我们在opera(实现功能的包)中,创建两个类,AddOperation、FindOperation,这两个类。

我们会发现这两个类的实现也都要依靠BookList(书架)来实现。所以,在这两个类中,实现接口:

FindOperation类中:

package opera;
 
import book.BookList;
public class FindOperation implements IOPeration{//继承
    @Override
    public void work(BookList bookList) {//重写IOPeration类中的work方法
        System.out.println("查找图书!");
    }
}
AddOperation类中:

package opera;
 
import book.BookList;
 
public class AddOperation implements IOPeration {
    public void work(BookList bookList){
        System.out.println("新增图书!");
    }
}
 同理,新建类DelOperation(删除图书):

package opera;
 
import book.BookList;
 
public class DelOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书!");
    }
}
 新建一个类:ShowOperation(显示图书):

package opera;
 
import book.BookList;
 
public class ShowOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println("打印所有图书!");
    }
}
 再新建一个类:ExitOperation(退出系统):

package opera;
 
import book.BookList;
 
public class ExitOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统!");
    }
}
新建一个BrrowOperation类(借阅图书):

package opera;
 
import book.BookList;
 
public class BrrowOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书!");
    }
}
 再新建一个类:ReturnOperation(借阅图书):

package opera;
 
import book.BookList;
 
public class ReturnOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书!");
    }
}


接着,我们来细化我们的类。

🍅我们还没有给user添加菜单。

我们先给管理员添加菜单:

    public void menu(){
        System.out.println("____________________________________");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        S

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值