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);
//        }
//    }
}
相关推荐
技术无疆20 分钟前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
2401_8582861122 分钟前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py24 分钟前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy24 分钟前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
C-SDN花园GGbond2 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处3 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
leon6253 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
拾光师4 小时前
spring获取当前request
java·后端·spring
aPurpleBerry4 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j