Appearance
项目 4:图书信息管理系统
项目概述
图书信息管理系统是一个基于 Java 控制台的应用,用于管理图书信息。它提供了图书对象的创建、集合存储、以及增加、删除、查询等功能。
功能需求
- 图书对象:创建图书类,包含书名、作者、ISBN、价格等属性
- 集合存储:使用 ArrayList 存储图书信息
- 增加图书:添加新的图书到系统中
- 删除图书:根据 ISBN 删除指定的图书
- 查询图书:根据书名或作者查询图书信息
- 显示所有图书:显示系统中所有图书的信息
- 退出系统:退出图书管理系统
技术实现
1. 图书类(Book)
首先,我们需要创建一个图书类,用于存储图书的信息。
java
public class Book {
private String title; // 书名
private String author; // 作者
private String isbn; // ISBN
private double price; // 价格
// 构造方法
public Book(String title, String author, String isbn, double price) {
this.title = title;
this.author = author;
this.isbn = isbn;
this.price = price;
}
// getter 和 setter 方法
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
// 重写 toString 方法,用于打印图书信息
@Override
public String toString() {
return "书名: " + title + ", 作者: " + author + ", ISBN: " + isbn + ", 价格: " + price;
}
}2. 图书管理系统类(BookManagementSystem)
接下来,我们创建图书管理系统类,实现具体的功能。
java
import java.util.ArrayList;
import java.util.Scanner;
public class BookManagementSystem {
private ArrayList<Book> books; // 存储图书信息的集合
private Scanner scanner; // 用于读取用户输入
// 构造方法
public BookManagementSystem() {
books = new ArrayList<>();
scanner = new Scanner(System.in);
}
// 显示菜单
public void showMenu() {
System.out.println("===================================");
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("===================================");
System.out.print("请选择操作: ");
}
// 启动系统
public void start() {
boolean running = true;
while (running) {
showMenu();
int choice = scanner.nextInt();
scanner.nextLine(); // 消费换行符
switch (choice) {
case 1:
addBook();
break;
case 2:
deleteBook();
break;
case 3:
searchBook();
break;
case 4:
displayAllBooks();
break;
case 5:
running = false;
System.out.println("系统已退出!");
break;
default:
System.out.println("输入错误,请重新选择!");
break;
}
}
}
// 添加图书
public void addBook() {
System.out.println("===================================");
System.out.println(" 添加图书");
System.out.println("===================================");
System.out.print("请输入书名: ");
String title = scanner.nextLine();
System.out.print("请输入作者: ");
String author = scanner.nextLine();
System.out.print("请输入ISBN: ");
String isbn = scanner.nextLine();
// 检查 ISBN 是否已存在
for (Book book : books) {
if (book.getIsbn().equals(isbn)) {
System.out.println("ISBN 已存在,请重新输入!");
return;
}
}
System.out.print("请输入价格: ");
double price = scanner.nextDouble();
scanner.nextLine(); // 消费换行符
// 创建图书对象并添加到集合
Book book = new Book(title, author, isbn, price);
books.add(book);
System.out.println("添加成功!");
}
// 删除图书
public void deleteBook() {
System.out.println("===================================");
System.out.println(" 删除图书");
System.out.println("===================================");
System.out.print("请输入要删除的图书 ISBN: ");
String isbn = scanner.nextLine();
boolean found = false;
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getIsbn().equals(isbn)) {
books.remove(i);
found = true;
break;
}
}
if (found) {
System.out.println("删除成功!");
} else {
System.out.println("未找到该图书!");
}
}
// 查询图书
public void searchBook() {
System.out.println("===================================");
System.out.println(" 查询图书");
System.out.println("===================================");
System.out.println("1. 按书名查询");
System.out.println("2. 按作者查询");
System.out.print("请选择查询方式: ");
int searchChoice = scanner.nextInt();
scanner.nextLine(); // 消费换行符
boolean found = false;
switch (searchChoice) {
case 1:
System.out.print("请输入书名: ");
String title = scanner.nextLine();
System.out.println("===================================");
System.out.println("查询结果:");
for (Book book : books) {
if (book.getTitle().contains(title)) {
System.out.println(book);
found = true;
}
}
break;
case 2:
System.out.print("请输入作者: ");
String author = scanner.nextLine();
System.out.println("===================================");
System.out.println("查询结果:");
for (Book book : books) {
if (book.getAuthor().contains(author)) {
System.out.println(book);
found = true;
}
}
break;
default:
System.out.println("输入错误,请重新选择!");
return;
}
if (!found) {
System.out.println("未找到匹配的图书!");
}
}
// 显示所有图书
public void displayAllBooks() {
System.out.println("===================================");
System.out.println(" 所有图书信息");
System.out.println("===================================");
if (books.isEmpty()) {
System.out.println("暂无图书信息!");
} else {
for (Book book : books) {
System.out.println(book);
}
}
}
// 主方法
public static void main(String[] args) {
BookManagementSystem system = new BookManagementSystem();
system.start();
}
}代码解析
1. 图书类(Book)
- 成员变量:书名、作者、ISBN、价格
- 构造方法:用于创建图书对象
- getter 和 setter 方法:用于访问和修改成员变量
- toString 方法:用于打印图书信息
2. 图书管理系统类(BookManagementSystem)
成员变量:
books:存储图书信息的 ArrayList 集合scanner:用于读取用户输入的 Scanner 对象
方法:
showMenu():显示系统菜单start():启动系统,处理用户输入addBook():添加图书deleteBook():删除图书searchBook():查询图书displayAllBooks():显示所有图书main():主方法,创建系统对象并启动
运行示例
运行结果
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 1
===================================
添加图书
===================================
请输入书名: Java 编程思想
请输入作者: Bruce Eckel
请输入ISBN: 9787111213826
请输入价格: 108.0
添加成功!
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 1
===================================
添加图书
===================================
请输入书名: 深入理解 Java 虚拟机
请输入作者: 周志明
请输入ISBN: 9787111421900
请输入价格: 89.0
添加成功!
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 4
===================================
所有图书信息
===================================
书名: Java 编程思想, 作者: Bruce Eckel, ISBN: 9787111213826, 价格: 108.0
书名: 深入理解 Java 虚拟机, 作者: 周志明, ISBN: 9787111421900, 价格: 89.0
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 3
===================================
查询图书
===================================
1. 按书名查询
2. 按作者查询
请选择查询方式: 1
请输入书名: Java
===================================
查询结果:
书名: Java 编程思想, 作者: Bruce Eckel, ISBN: 9787111213826, 价格: 108.0
书名: 深入理解 Java 虚拟机, 作者: 周志明, ISBN: 9787111421900, 价格: 89.0
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 2
===================================
删除图书
===================================
请输入要删除的图书 ISBN: 9787111213826
删除成功!
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 4
===================================
所有图书信息
===================================
书名: 深入理解 Java 虚拟机, 作者: 周志明, ISBN: 9787111421900, 价格: 89.0
===================================
图书信息管理系统
===================================
1. 添加图书
2. 删除图书
3. 查询图书
4. 显示所有图书
5. 退出系统
===================================
请选择操作: 5
系统已退出!扩展功能
修改图书信息:根据 ISBN 修改图书的信息
按价格排序:按图书价格从高到低或从低到高排序
数据持久化:将图书信息保存到文件,下次启动时加载
输入验证:对用户输入进行验证,确保输入的有效性
图形界面:使用 Swing 或 JavaFX 实现图形界面
总结
图书信息管理系统是一个功能完整的 Java 控制台应用,它演示了如何使用面向对象编程、集合框架和控制台输入输出等基本 Java 技术。通过这个项目,你可以学习:
- 类的设计:如何设计和实现一个图书类
- 集合的使用:如何使用 ArrayList 存储和管理图书信息
- 用户交互:如何使用 Scanner 读取用户输入
- 控制流程:如何使用循环和 switch 语句控制程序流程
- 查询功能:如何实现按条件查询图书
这个项目是一个很好的 Java 入门练习,它涵盖了 Java 基础编程的许多重要概念,同时也是一个实用的小工具。
