Java图书管理系统

功能

实现简单的增删改查

Main类

java 复制代码
package com.test;

import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {

    private static List<Book> LIST;

    public static void main(String[] args) {
        System.out.println("正在初始化图书管理系统...");
        load();
        Scanner scanner = new Scanner(System.in);
        while (true){
            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("=======================================");
            switch(scanner.nextInt()){
                case 1:
                    insert(scanner);
                    break;
                case 2:
                    list();
                    break;
                case 3:
                    delete(scanner);
                    break;
                case 4:
                    modify(scanner);
                    break;
                case 5:
                    System.out.println("正在保存图书数据...");
                    save();
                    System.out.println("Bye bye ~");
                    return;
            }
        }
    }

    //导入数据
    @SuppressWarnings("unchecked")
    private static void load(){
        File file = new File("data");
        if(file.exists()){
            try (ObjectInputStream stream = new ObjectInputStream(new FileInputStream("data"))){
                LIST = (List<Book>) stream.readObject();
            } catch (IOException | ClassNotFoundException e){
                e.printStackTrace();
            }
        }else{
            LIST = new LinkedList<>();
        }
    }

    //保存信息
    private static void save(){
        try (ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("data"))){
            stream.writeObject(LIST);
            stream.flush();
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    //插入书籍
    private static void insert(Scanner scanner){
        //吸收回车
        scanner.nextLine();
        System.out.print("请输入书籍的标题:");
        String title = scanner.nextLine();
        System.out.print("请输入书籍的作者:");
        String author = scanner.nextLine();
        System.out.print("请输入书籍的价格:");
        int price = scanner.nextInt();
        scanner.nextLine();
        Book book = new Book(title, author, price);
        LIST.add(book);
        System.out.println("书籍信息添加成功:" + book);

//        //建造者模式
//        Book book = Book.builder()
//                .title(scanner.nextLine())
//                .author(scanner.nextLine())
//                .price(scanner.nextInt())
//                .build();
    }

    //查询书籍
    private static void list(){
        for(int i = 0; i < LIST.size(); i++){
            System.out.println(i + "." + LIST.get(i));
        }
    }

    //删除书籍
    private static void delete(Scanner scanner){
        scanner.nextLine();
        System.out.print("请输入你要删除的书籍ID编号:");
        int index = scanner.nextInt();
        scanner.nextLine();
        while(index >= LIST.size() || index < 0){
            System.out.print("没有对应的书籍,请重新输入:");
            index = scanner.nextInt();
            scanner.nextLine();
        }
        LIST.remove(index);
        System.out.println("删除书籍信息成功!");
    }

    //修改书籍
    private static void modify(Scanner scanner){
        scanner.nextLine();
        System.out.print("请输入你要修改的书籍ID编号:");
        int index = scanner.nextInt();
        scanner.nextLine();
        while(index >= LIST.size() || index < 0){
            System.out.println("没有对应的书籍,请重新输入:");
            index = scanner.nextInt();
            scanner.nextLine();
        }
        Book book = LIST.get(index);
        System.out.print("请输入书籍的标题:");
        book.setTitle(scanner.nextLine());
        System.out.print("请输入书籍的作者:");
        book.setAuthor(scanner.nextLine());
        System.out.print("请输入书籍的价格:");
        book.setPrice(scanner.nextInt());
        scanner.nextLine();
        System.out.println("书籍信息修改成功!");
    }
}

Book类

java 复制代码
package com.test;

import java.io.Serializable;

public class Book implements Serializable {
    private String title;
    private String author;
    private int price;

    public Book(String title, String author, int price){
        this.title = title;
        this.author = author;
        this.price = price;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    //    public static BookBuilder builder(){
//        return new BookBuilder();
//    }

    @Override
    public String toString() {
        return "《" + title + "》作者:" + author + " (" + price + "元)";
    }

//    public static class BookBuilder{
//
//        private String title;
//        private String author;
//        private int price;
//        private BookBuilder(){}
//
//        public BookBuilder title(String title){
//            this.title = title;
//            return this;
//        }
//
//        public BookBuilder author(String author){
//            this.author = author;
//            return this;
//        }
//
//        public BookBuilder price(int price){
//            this.price = price;
//            return this;
//        }
//
//        public Book build(){
//            return new Book(title, author, price);
//        }
//    }
}
相关推荐
二哈赛车手3 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
为何创造硅基生物3 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好3 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~3 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
星寂樱易李3 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
YDS8294 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅4 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆4 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
未若君雅裁5 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y5 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git