java基础练习--图书管理系统

该文章展示了一个简单的图书管理系统的设计,使用Java编程语言。系统支持添加、删除、查找和更新图书功能,实现了数据的持久化存储,通过对象序列化从文件读取和写入图书信息。用户可以按书名、状态等条件进行查询,还能进行借书和还书操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述

图书管理系统;

1.功能:

添加图书

删除图书

查找图书

​ 根据书名查找

​ 根据借阅状态查找

​ 查找全部

​ 退出

更新图书

借书

还书

2.准备:

读取:

从文件中读取图书信息,完成持久化存储

static{
     FileInputStream fileInputStream = null;
     try {
         fileInputStream = new FileInputStream("book.txt");
         ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
         books = (ArrayList<Book>) objectInputStream.readObject();
     } catch (Exception e) {
         books = new ArrayList<Book>();
     }
 }
输出

将图书信息写入文件

public static void write() throws IOException {
    FileOutputStream fileOutputStream = new FileOutputStream("book.txt");
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
    //这里是将集合对象写入文件
    objectOutputStream.writeObject(books);
    objectOutputStream.flush();
    objectOutputStream.close();
    fileOutputStream.close();
}

3.实体类(图书类)

包括:id ,书名,作者,价格,类型,状态

package LibraryMessageSystem;

import java.io.Serializable;

/**
 * Description:
 * date: 2023/5/3 15:11
 *
 * @author fjp
 * @version 1.0
 */
public class Book implements Serializable {
    private String id;
    //书名
    private String name;

    //作者
    private String author;
    //价格
    private String price;
    //书本的风格
    private String style;
    //是否借出
    private String status;


    public Book() {
    }

    public Book(String id, String name,String author, String price, String style, String status) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.price = price;
        this.style = style;
        this.status = status;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

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

    public String getStyle() {
        return style;
    }

    public void setStyle(String style) {
        this.style = style;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getAuthor() {
        return author;
    }

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

    @Override
    public String toString() {
        return  id+"\t\t "+ name+"\t\t"+author+"\t\t"+price+"\t\t "+style+"\t    "+status+"\t";
    }
}

4.添加图书

从键盘输入添加的图书信息,添加到集合中,图书编号随机生成

public static void inputBooks(){
    Scanner scanner = new Scanner(System.in);
    int id =(int) Math.floor( Math.random()*1000);
    String newid = Integer.toString(id);
    System.out.println("请输入图书名:");
    String name = scanner.next();
    System.out.println("请输入作者名:");
    String author = scanner.next();
    System.out.println("请输入图书价格:");
    String price = scanner.next();
    System.out.println("请输入图书种类:");
    String style = scanner.next();
    System.out.println("请输入图书状态:");
    String status = scanner.next();
    Book book = new Book();
    book.setId(newid);
    book.setName(name);
    book.setAuthor(author);
    book.setPrice(price);
    book.setStyle(style);
    book.setStatus(status);
    books.add(book);
}

将集合写入文件

public static void addBook() throws IOException, ClassNotFoundException {
    inputBooks();
    write();
    System.out.println("添加成功");
}

5.删除图书

根据书名进行删除图书

public static void deleteBook()  {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入要删除图书的书名:");
    String next = scanner.next();
    for (Book book : books) {
        if (book.getName().equals(next)){
            books.remove(book);
            System.out.println("删除成功");
            try {
                write();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return;
        }
        System.out.println("未找到图书");
    }

}

6.查找图书

根据书名查找

public static void findName(){
   Scanner scanner = new Scanner(System.in);
    System.out.println("请输入要查找的书名");
    String name = scanner.next();
    for (Book book : books) {
        if (book.getName().equals(name)){
            System.out.println("编号       书名          作者       价格      类型       状态");
            System.out.println(book);
           return;
        }
            System.out.println("未找到图书,请重新输入");

    }
}

根据借阅状态查找

public static void findStatus(){

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入要查找的图书类别");
    String style = scanner.next();
    for (Book book : books) {
        if (book.getStatus().equals("未借")){
            System.out.println("编号       书名          作者       价格      类型       状态");
            System.out.println(book);
            break;
        }else if(book.getStatus().equals("已借")){
            System.out.println("编号       书名          作者       价格      类型       状态");
            System.out.println(book);
           break;
        }else {
            System.out.println("状态输入有误,您可以输入未借/已借");
        }

    }
}

查找全部图书信息

public static void findBook(){
    System.out.println("编号       书名          作者       价格      类型       状态");
    for (Book book : books) {
        System.out.println(book);
    }
}

7.更新图书信息

public static void modifyBook()  {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入要更新图书的编号或书名:");
    String next = scanner.next();
    for (Book book : books) {
        if (book.getName().equals(next)||book.getId().equals(next)){
            System.out.println(book);
            System.out.println("请输入要修改的内容:");
            System.out.println("书名");
            String name = scanner.next();
            System.out.println("作者:");
            String author = scanner.next();
            System.out.println("价格");
            String price = scanner.next();
            System.out.println("类别:");
            String style = scanner.next();
            System.out.println("状态");
            String status = scanner.next();
            book.setName(name);
            book.setPrice(price);
            book.setAuthor(author);
            book.setStyle(style);
            book.setStatus(status);
            System.out.println("修改成功");
            try {
                write();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return;
        }
        System.out.println("请输入正确的书名或编号");
    }
}

8.借书

首先遍历看图书是否存在,存在接着判断图书状态,未借可借,更改图书状态,已借,不能借阅

public static void borrow() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("输入要借阅的书名:");
    String name = scanner.next();
    for (Book book : books) {
        if (book.getName().equals(name)) {
            if (book.getStatus().equals("未借")) {
                book.setStatus("已借");
                System.out.println("借阅成功,请爱惜图书");
                try {
                    write();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return;
            } else if (book.getStatus().equals("已借")) {
                System.out.println("已借出,换本书吧");
                return;
            }
        }else {
            System.out.println("图书不存在");
        }
    }
}

9.还书

输入归还的书名,更改图书状态

public static void returnBook() throws IOException {
    Scanner scanner = new Scanner(System.in);
    System.out.println("输入要归还的书名:");
    String name = scanner.next();
    for (Book book : books) {
        book.setStatus("未借");
        System.out.println("归还成功");
        write();
    }
}

10.环境类

package LibraryMessageSystem;

import java.io.IOException;
import java.util.Scanner;

/**
 * Description:
 * date: 2023/5/3 15:11
 *
 * @author fjp
 * @version 1.0
 */
@SuppressWarnings("all")
public class LibraryMessageSystem {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        boolean tag = true;
       while(true){
           System.out.println(" -------------------------------------------------------------");
           System.out.println("|                           图书管理系统                       |");
           System.out.println("| 1.增加图书  2.删除图书  3.查找图书  4.更新图书  5.借书  6.还书 |");
           System.out.println(" -------------------------------------------------------------");
           Scanner scanner = new Scanner(System.in);
           System.out.println("请选择你需要的操作:");
           int i = scanner.nextInt();
           switch (i){
               case 1:
                   BookUtil.addBook();
                   break;
               case 2:
                   BookUtil.deleteBook();
                   break;
               case 3:
                   tag=true;
                   while(tag) {
                       System.out.println("1.书名查找    2.状态查找    3.查找全部    4.返回上一级");
                       System.out.println("请选择查询方式:");
                       int nextInt = scanner.nextInt();
                       if (nextInt == 1) {
                           BookUtil.findName();

                       }
                       if (nextInt == 2) {
                           BookUtil.findStatus();
                       }
                       if (nextInt == 3) {
                           BookUtil.findBook();

                       }
                       if (nextInt == 4) {
                           tag = false;
                       }
                   }
                   break;
               case 4:
                   BookUtil.modifyBook();
                   break;
               case 5:
                   BookUtil.borrow();
                   break;
               case 6:
                   BookUtil.returnBook();
                   break;
           }
       }

    }
}

个人博客:https://fenjiapeng.github.io/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半糖不加奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值