Java图书管理系统

目录

一、核心需求

1. 简单的登录

2. 管理端

整理书籍(该功能为可扩展功能)

查阅书籍

增加书籍

删除书籍

打印书籍列表

退出

3. 用户端

查询书籍

借阅书籍

归还书籍

退出

二、类的设计

1. 创建图书相关的类

先创建 package book

2. 创建操作相关的类

先创建 package operation

3. 创建用户相关的类

先创建 package user

4. 进行整合

创建 Main 方法, 搭建整体逻辑

5. 实现具体的每个 Operation

三、框架建模

四、基本框架代码

book类:

bookList类:

Main方法:

 用户类:

相关操作类框架代码:

五、源代码

图书管理系统框架代码  

图书管理系统接口代码完善


一、核心需求

1. 简单的登录

2. 管理端

  • 整理书籍(该功能为可扩展功能)

  • 查阅书籍

  • 增加书籍

  • 删除书籍

  • 打印书籍列表

  • 退出

3. 用户端

  • 查询书籍

  • 借阅书籍

  • 归还书籍

  • 退出

二、类的设计

1. 创建图书相关的类

先创建 package book

创建 Book 类, 表示一本书;创建 BookList 类, 用来保存 N 本书

2. 创建操作相关的类

先创建 package operation

接下来创建一组操作类, 每个类对应一个用户的动作AddOperation 、DeleteOperation、 FindOperation、DisplayOperation、BorrowOperation、ReturnOperation、UpdateOperation

先把空类创建好, 不着急实现细节. 抽象出 Operation 的好处: 让操作和操作之间低耦合, 让操作和用户之间低耦合.

3. 创建用户相关的类

先创建 package user

创建 User 类, 这是一个抽象类;创建普通用户类, 是 User 的子类;创建管理员用户类

4. 进行整合

创建 Main 方法, 搭建整体逻辑

5. 实现具体的每个 Operation

三、框架建模

四、基本框架代码

book类:

package book_management;

//书本实体类
public class Book {
    //书名
    private String bookName;
    //作者
    private String author;
    //价格
    private double price;
    //书籍类别
    private String type;
    //借阅状态,默认为false
    private boolean isBorrowed;

    public Book(String bookName,String author,double price,String type){
        this.bookName = bookName;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    //只有需要修改的属性才需要提供setter - price、type、借阅状态

    public void setPrice(double price){
        this.price = price;
    }
    public void setType(String type){
        this.type = type;
    }
    public void setBorrowed(boolean borrowed){
        isBorrowed = borrowed;
    }


    public String getBookName(){
        return bookName;
    }
    public String getAuthor(){
        return author;
    }
    public double getPrice(){
        return price;
    }
    public String getType(){
        return type;
    }
    public boolean isBorrowed(){
        return isBorrowed;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookName='" + bookName + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }
}

bookList类:

package book_management;

import come.B;

import java.util.ArrayList;
import java.util.List;

//书架类
public class BookList {
    // books存放了所有当前书架中的书,每个Book对象就是一本书的实体
    private static List<Book> books = new ArrayList<>();
    // booksName存放了所有的书本名称 - 查询书籍等都是通过书名来操作
    private static List<String> bookName = new ArrayList<>();

    // 初始化books和booksName,默认将四大名著放入书架中
    // 使用static代码块初始化static变量
    static {
        books.add(new Book("西游记","吴承恩",99.99,"小说"));
        books.add(new Book("红楼梦","曹雪芹",108.9,"小说"));
        books.add(new Book("水浒传","施耐庵",199.89,"小说"));
        books.add(new Book("三国演义","罗贯中",145.39,"小说"));

        bookName.add("西游记");
        bookName.add("红楼梦");
        bookName.add("水浒传");
        bookName.add("三国演义");
    }

    public void displayBooks(){
        for (Book book : books){
            System.out.println(book);
        }
    }

    public boolean contains(String booksName){
        return BookList.bookName.contains(booksName);
    }

    public void add(Book book){
        books.add(book);
        bookName.add(book.getBookName());
    }
}

Main方法:

package book_management;

import java.util.Scanner;

//整个程序的入口
public class Main {
    private static Scanner scanner = new Scanner(System.in);
    public static void main (String[] args){
        User user = login();
        BookList bookList = new BookList();
        while(true){
            int choice = user.menu();
            if(choice == -1){
                System.out.println("ByeBye!");
                break;
            }
            user.doOperation(choice,bookList);
        }
    }

    private static User login() {
        System.out.println("请输入用户名:");
        String name = scanner.next();
        System.out.println("请选择您的角色,1为普通用户,0为管理员");
        int choice = scanner.nextInt();
        if (choice == 1){
            return new NormalUser(name);
        }
        return new AdminUser(name);
    }
}

 用户类:

package book_management;

//用户类 —— 抽象类
//不知道是普通用户还是管理员
public abstract class User {
    //用户名
    protected String name;
    //有权操作的方法
    protected IOperation[] operations;
    // 菜单,只有具体的子类才知道菜单长啥样~~
    public abstract int menu();

    public void doOperation(int choice,BookList bookList){
        operations[choice - 1].work(bookList);
    }
}

相关操作类框架代码:

package book_management;

import java.util.Scanner;

//操作书架的接口
// 增删改查-借书-还书
// 接口中只有全局常量和抽象方法
public interface IOperation {
    // 全局常量,所有接口的子类共享
    // static + final共同修饰
    Scanner scanner = new Scanner(System.in);
    //在对应的书架类进行操作
    void work(BookList bookList);
}

//添加书籍
public class AddOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("现在正在进行添加书籍操作...");
    }
}

//借阅书籍
public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {

    }
}

//删除书籍
public class DeleteOperation implements IOperation{
    @Override
    public void work(BookList bookList) {

    }
}

//展示所有书籍
public class DisplayAllBooks implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("您现在正在进行的是查看所有书籍的操作!");
        bookList.displayBooks();
    }
}

//查找书籍
public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {

    }
}

//归还书籍
public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {

    }
}

//更新书籍
public class UpdateOperation implements IOperation{
    @Override
    public void work(BookList bookList) {

    }
}

五、源代码

图书管理系统框架代码  

图书管理系统接口代码完善


本小节完^_^ 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王嘻嘻-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值