【Java】图书管理系统,完整版+源代码!!!

1. 图书管理系统菜单

1.1 管理员菜单

  1. 查找图书
  2. 新增图书
  3. 删除图书
  4. 显示图书
  5. 退出系统

1.2普通用户菜单

  1. 查找图书
  2. 借阅图书
  3. 归还图书
  4. 退出系统

2.基本框架的实现

首先我们要建立一个新的文件,在文件内建立三个包,分别命名为user(用户)、book(图书),operation(操作)
在这里插入图片描述
先写book相关的代码。于是,我们先在book包中新建一个java类,名为:Book。
在这里插入图片描述
显示图书时,我们希望它能显示出所有图书的名称、作者、价格、类型和图书目前是否借出。

	private String name;//书名
    private String author;//作者
    private int price;//价格(价格也可以定义为浮点型)
    private String type;//图书的种类
    private boolean isLend;//图书是否被借出

右击鼠标,选择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 isLend() {
   
   
        return isLend;
    }

再写它们的构造方法:

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

快捷键: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;
            // this.isLend = isLend;新生成的书籍默认是没有被借出的,所以省略
    }

我们再右键选择Generate,选择ToString,全选,点OK,自动生成:

 @Override
    public String toString() {
   
   
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                (isLend==true ? " 已借出" :" 未借出")+
                //", isLend=" + isLend +
                '}';
    }

此时,在book包中新建一个类:BookList(书架):
在这个书架中,我们希望能在里面固定的位置放书,并且能知道放了几本书:

 private Book[] books=new Book[10];//这个书架可以放十本书
 private int useSize;//记录下当前book数组中有几本书

然后依旧是右键Generate ,getter and setter(先选useSize),自动生成:

public int getUseSize() {
   
   
        return useSize;
    }

    public void setUseSize(int useSize) {
   
   
        this.useSize = useSize;
    }

这边先按照思路把整体的框架下先实现出来,其中的细节之后再慢慢写出来

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);
    }
}
 

现在书的属性和用户的属性的包和类已经完成差不多,现在要搭建用户的功能上去

由于想要实现的功能和操作基本上是针对图书的我们可以继续创一个包operation再创建一个接口命名为IOperation

package operation;

import book.BookList;

public interface IOperation {
   
   
    void work(BookList bookList);

}

我们在opera(实现功能的包)中,创建两个类,AddOperation、FindOperation,这两个类。

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

FindOperation类中:

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

AddOperation类中:

package operation;
 
import book.BookList;
 
public class AddOperation implements IOPeration {
   
   
    public void work(BookList bookList){
   
   
        System.out.println("新增图书!");
    }
}

同理,新建类DelOperation(删除图书):

package operation;
 
import book.BookList;
 
public class DelOperation implements IOPeration{
   
   
    @Override
    public void work(BookList bookList) {
   
   
        System.out.println("删除图书!");
    }
}

新建一个类:ShowOperation(显示图书):

package operation;
 
import book.BookList;
 
public class ShowOperation implements IOPeration{
   
   
    @Override
    public void work(BookList bookList) {
   
   
        System.out.println("打印所有图书!");
    }
}

再新建一个类:ExitOperation(退出系统):

package operation;
 
import book.BookList;
 
public class ExitOperation implements IOPeration{
   
   
    @Override
    public void work(BookList bookList) {
   
   
        System.out.println("退出系统!");
    }
}

新建一个BrrowOperation类(借阅图书):

package operation;
 
import book.BookList;
 
public class BrrowOperation implements IOPeration{
   
   
    @Override
    public void work(BookList bookList) {
   
   
        System.out.println("借阅图书!");
    }
}

再新建一个类:ReturnOperation(归还图书):

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

在这里插入图片描述
接着,我们来细化我们的类。

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

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

public int menu(){
   
   
        System.out.println("******管理员菜单******");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示图书");
        System.out.println("0.退出系统");
        System.out.println("*********************");
        System.out.println("请输入你的操作:");
    }

再给普通用户添加菜单:

 public int menu(){
   
   
        System.out.println("******普通用户菜单******");
        System.out.println("1.查找图书");
        System.out.
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游向大厂的咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值