Skip to content

项目 4:图书信息管理系统

项目概述

图书信息管理系统是一个基于 Java 控制台的应用,用于管理图书信息。它提供了图书对象的创建、集合存储、以及增加、删除、查询等功能。

功能需求

  1. 图书对象:创建图书类,包含书名、作者、ISBN、价格等属性
  2. 集合存储:使用 ArrayList 存储图书信息
  3. 增加图书:添加新的图书到系统中
  4. 删除图书:根据 ISBN 删除指定的图书
  5. 查询图书:根据书名或作者查询图书信息
  6. 显示所有图书:显示系统中所有图书的信息
  7. 退出系统:退出图书管理系统

技术实现

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
系统已退出!

扩展功能

  1. 修改图书信息:根据 ISBN 修改图书的信息

  2. 按价格排序:按图书价格从高到低或从低到高排序

  3. 数据持久化:将图书信息保存到文件,下次启动时加载

  4. 输入验证:对用户输入进行验证,确保输入的有效性

  5. 图形界面:使用 Swing 或 JavaFX 实现图形界面

总结

图书信息管理系统是一个功能完整的 Java 控制台应用,它演示了如何使用面向对象编程、集合框架和控制台输入输出等基本 Java 技术。通过这个项目,你可以学习:

  1. 类的设计:如何设计和实现一个图书类
  2. 集合的使用:如何使用 ArrayList 存储和管理图书信息
  3. 用户交互:如何使用 Scanner 读取用户输入
  4. 控制流程:如何使用循环和 switch 语句控制程序流程
  5. 查询功能:如何实现按条件查询图书

这个项目是一个很好的 Java 入门练习,它涵盖了 Java 基础编程的许多重要概念,同时也是一个实用的小工具。

© 2026 编程马·菜鸟教程 版权所有