IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java图书管理系统 -> 正文阅读

[Java知识库]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) {

    }
}

五、源代码

图书管理系统框架代码??

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


本小节完^_^?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 18:48:06  更:2022-01-30 18:48:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:58:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码