Java图书管理系统
Posted 王嘻嘻-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java图书管理系统相关的知识,希望对你有一定的参考价值。
目录
一、核心需求
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图书管理系统的主要内容,如果未能解决你的问题,请参考以下文章