# 前言
这是一个 Java 图书管理系统 CMD 版
说明:Java 面向对象编程设计,适合初学 Java 的同学开始模仿制作,阅读的第一个程序项目,功能可能并不是那么完美,感兴趣的同学可以参考
开发环境
Windows 10
Java IDE: IDEA 2021.3
技术栈
Java JDK 1.8
开始时间:2023-3-15
结束时间:2023-3-23
# 项目结构
Library
└── src
└── com.ksamar.library ---------- 项目包
├── controllers ---------- 控制器包
│ ├── book ---------- 图书控制器包
│ │ ├── BookController.java ---------- 图书控制器
│ │ └── BorrowController.java ---------- 借阅控制器
│ ├── login ---------- 登录控制器包
│ │ └── LoginController.java ---------- 登录控制器
│ ├── operate ---------- 日志控制器包
│ │ └── OperateController.java ---------- 日志控制器
│ └── user ---------- 用户控制器包
│ └── UserController.java ---------- 用户控制器
├── entity ---------- 实体包
│ ├── Book.java ---------- 图书信息实体
│ ├── Borrow.java ---------- 借阅信息实体
│ ├── Operation.java ---------- 日志信息实体
│ └── User.java ---------- 用户信息实体
├── tools ---------- 工具包
│ ├── HorizontaRule.java ---------- 水平线工具
│ ├── Initialization.java ---------- 数据初始化
│ ├── SqlList.java ---------- 数据库
│ └── TimeConversion.java ---------- 时间转换器
├── views ---------- 视图包
│ ├── admin ---------- 管理员视图包
│ │ ├── AdminView.java ---------- 管理员视图
│ │ ├── BookManageView.java ---------- 图书管理视图
│ │ ├── BorrowView.java ---------- 借阅图书视图
│ │ └── UserManageView.java ---------- 用户管理视图
│ ├── login ---------- 登录视图包
│ │ └── LoginView.java ---------- 登录视图
│ ├── share ---------- 共享包
│ │ └── SearchBookView.java ---------- 搜索图书包
│ ├── user ---------- 用户视图包
│ │ └── UserView.java ---------- 用户视图
│ └── View.java ---------- 默认视图
└── Main.java ---------- 主方法
# 什么是 MVC 模式?

引用 runoob 对 MVC 的介绍 源地址
# ✒️一、项目图片
# 管理员界面

# 图书管理界面

# 用户管理界面

# 图书借阅界面

# 用户界面

# 图书搜索界面

# ✒️二、项目部分代码
# 图书管理
/** | |
* 操作面板 | |
*/ | |
@Override | |
public void options() { | |
while (visible) { | |
System.out.println("=================================================="); | |
System.out.println("请选择执行操作"); | |
System.out.println("1.查询图书"); | |
System.out.println("2.增加图书"); | |
System.out.println("3.删除图书"); | |
System.out.println("4.编辑图书"); | |
System.out.println("5.借阅图书"); | |
System.out.println("6.归还图书"); | |
System.out.println("7.查询借阅图书"); | |
System.out.println("8.超时未归还图书查询"); | |
System.out.println("0.返回"); | |
System.out.println("=================================================="); | |
operation = scanner.nextInt(); | |
switch (operation) { | |
case 1: | |
new SearchBookView().searchBook(); break; | |
case 2: | |
addBook(); break; | |
case 3: | |
deleteBook(); break; | |
case 4: | |
editBook(); break; | |
case 5: | |
new BorrowView().borrowBook(); break; | |
case 6: | |
new BorrowView().returnBook(); break; | |
case 7: | |
new BorrowView().searchBorrowBook(); break; | |
case 8: | |
new BorrowView().searchOverTimeBook(); break; | |
case 0: | |
visible = false; break; | |
default: | |
break; | |
} | |
} | |
} |
# 搜索图书
/** | |
* 搜索图书 | |
*/ | |
public void searchBook() { | |
System.out.println("=================================================="); | |
System.out.println("1.查询所有"); | |
System.out.println("2.指定查询"); | |
System.out.println("0.返回"); | |
System.out.println("=================================================="); | |
operation = scanner.nextInt(); | |
switch (operation) { | |
case 1: | |
searchAll(); break; | |
case 2: | |
bookType(); | |
String[] searchType = {"id", "groups", "name", "author", "press", "isbn"}; | |
System.out.print("请选择搜索类型:"); | |
int type = scanner.nextInt(); | |
System.out.print("请输入信息:"); | |
String text = scanner.next(); | |
search(searchType[type - 1], text); | |
break; | |
default: | |
break; | |
} | |
} |
# 借阅图书
/** | |
* 借阅图书 | |
*/ | |
public void borrowBook() { | |
boolean borrowState = true; | |
while (borrowState) { | |
System.out.println("=================================================="); | |
System.out.println("借阅图书"); | |
System.out.println("=================================================="); | |
System.out.print("请输入要借阅的图书ISBN号码:"); | |
String isbn = scanner.next(); | |
Book book = bookController.searchIsbn(isbn); | |
if (book != null) { | |
System.out.println("=================================================="); | |
System.out.println(book); | |
System.out.println("=================================================="); | |
System.out.println("1.确定借阅"); | |
System.out.println("0.重新输入"); | |
System.out.println("=================================================="); | |
operation = scanner.nextInt(); | |
if (operation == 1) { | |
System.out.print("请输入要借阅的用户身份卡号:"); | |
String idCard = scanner.next(); | |
User user = userController.searchIdCard(idCard); | |
if (user != null) { | |
ArrayList<Object> borrowArrayList = borrowController.borrowBook(book, user); | |
if (borrowArrayList.get(0).equals(true)) { | |
System.out.println("借阅成功"); | |
} | |
else if (borrowArrayList.get(1).equals(-1)) { | |
System.out.println("此账户已被冻结,无法借阅"); | |
} | |
else if (borrowArrayList.get(1).equals(1)) { | |
System.out.println("此书数量为 0 无法借阅"); | |
} | |
else if (borrowArrayList.get(1).equals(2)) { | |
System.out.println("当前账户已超过借阅上限"); | |
} | |
else { | |
System.out.println("借阅失败"); | |
} | |
borrowState = false; | |
} | |
else { | |
System.out.println("此用户不存在,请重新输入"); | |
} | |
} | |
} | |
else { | |
System.out.println("此书不存在,请重新输入"); | |
} | |
} | |
} |
# 归还图书
/** | |
* 归还图书 | |
*/ | |
public void returnBook() { | |
boolean returnState = true; | |
while (returnState) { | |
System.out.println("=================================================="); | |
System.out.println("归还图书"); | |
System.out.println("=================================================="); | |
System.out.print("请输入要归还图书的身份卡号码:"); | |
String idCard = scanner.next(); | |
User user = userController.searchIdCard(idCard); | |
if (user != null) { | |
ArrayList<Borrow> borrowArrayList = borrowController.searchBorrowBook(user.getUsername()); | |
int index = 1; | |
System.out.println("=================================================="); | |
for (Borrow borrow : borrowArrayList) { | |
System.out.println(index++ + ". " + borrow); | |
} | |
System.out.println("=================================================="); | |
System.out.print("请输入要归还的图书编号:"); | |
operation = scanner.nextInt(); | |
ArrayList<Object> returnArrayList = borrowController.returnBook(borrowArrayList.get(operation - 1), user); | |
if (returnArrayList.get(0).equals(true)) { | |
System.out.println("归还成功"); | |
returnState = false; | |
} | |
else { | |
System.out.println("归还失败"); | |
} | |
} | |
else { | |
System.out.println("此用户不存在,请重新输入"); | |
} | |
} | |
} |
# 添加图书
/** | |
* 添加图书 | |
*/ | |
public void addBook() { | |
System.out.println("=================================================="); | |
System.out.print("请输入组别:"); | |
String groups = scanner.next(); | |
System.out.print("请输入书名:"); | |
String name = scanner.next(); | |
System.out.print("请输入作者:"); | |
String author = scanner.next(); | |
System.out.print("请输入出版社:"); | |
String press = scanner.next(); | |
System.out.print("请输入价格:"); | |
double price = scanner.nextDouble(); | |
System.out.print("请输入数量:"); | |
int quantity = scanner.nextInt(); | |
System.out.print("请输入ISBN号码:"); | |
String isbn = scanner.next(); | |
System.out.println("=================================================="); | |
ArrayList<Object> objectArrayList = bookController.addBook(groups, name, author, press, price, quantity, isbn); | |
if (objectArrayList.get(0).equals(true)) { | |
System.out.println("添加成功"); | |
} | |
else { | |
System.out.println("ISBN重复,添加失败"); | |
} | |
} |
# 编辑图书
/** | |
* 编辑图书 | |
*/ | |
public void editBook() { | |
System.out.println("=================================================="); | |
System.out.print("请输入要编辑的图书ID:"); | |
int id = scanner.nextInt(); | |
System.out.println("=================================================="); | |
Book book = bookController.searchId(String.valueOf(id)); | |
if (book != null) { | |
boolean editState = true; | |
while (editState) { | |
System.out.println("=================================================="); | |
System.out.println(book); | |
System.out.println("=================================================="); | |
System.out.println("1.编辑组别"); | |
System.out.println("2.编辑书名"); | |
System.out.println("3.编辑作者"); | |
System.out.println("4.编辑出版社"); | |
System.out.println("5.编辑价格"); | |
System.out.println("6.编辑数量"); | |
System.out.println("7.编辑ISBN"); | |
System.out.println("0.退出编辑"); | |
System.out.println("=================================================="); | |
System.out.print("请输入操作选项:"); | |
int options = scanner.nextInt(); | |
if (options > 0 && options < 8) { | |
String[] editType = {"groups", "name", "author", "press", "price", "quantity", "isbn"}; | |
System.out.print("请输入编辑信息:"); | |
String text = scanner.next(); | |
ArrayList<Object> objectArrayList = bookController.editBook(book, editType[options - 1], text); | |
if (objectArrayList.get(0).equals(false)) { | |
System.out.println("编辑失败,ISBN已存在"); | |
} | |
} | |
else if (options == 0) { | |
editState = false; | |
} | |
} | |
} | |
else { | |
System.out.println("此书不存在,无法编辑"); | |
} | |
} |
# 删除图书
/** | |
* 删除图书 | |
*/ | |
public void deleteBook() { | |
System.out.println("=================================================="); | |
System.out.print("请输入要删除的图书ID:"); | |
int id = scanner.nextInt(); | |
System.out.println("=================================================="); | |
int delete = bookController.deleteBook(id); | |
if (delete == 1) { | |
System.out.println("删除成功"); | |
} | |
else { | |
System.out.println("删除失败"); | |
} | |
} |
# ✒️项目源码
GitHub: GitHub
Gitee: Gitee
