用java写一个图书管理系统

要求

  编写一个保存书店每日交易记录的程序,使用字节流将书店的交易信息记录在本地的 csv文件中。当用户输入图书编号时,后台会根据图书编号查询到相应图书信息,并返回打印出来。用户紧接着输入购买数量,系统会判断库存是否充足,如果充足则将信息保存至本地的csv文件中,其中,每条信息包含了“图书编号”“图书名称”“购买数量”“单价”“总价”“出版社”等数据,每个数据之间用英文逗号或空格分割,每条数据之间由换行符分割。保存的时候需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。文件命名格式为“销售记录”加上当天日期加上“.csv”后缀,如“销售记录20160321.csv”。


思路

创建一个book类,你可以重写他的tostring方法,这样打印book的时候就可以显示图书信息了。

package Laberry;

import javax.swing.text.DateFormatter;
import java.io.*;
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;

public class Book {

    String no;
    String name;
    String chu_ban_she;
    int price;
    int numb;


    public Book() {
    }

    public Book(String no, String name, String chu_ban_she, int price, int numb) {

        this.no = no;
        this.name = name;
        this.chu_ban_she = chu_ban_she;
        this.price = price;
        this.numb = numb;

//        book_map.put(no, book);      //创建一个数组来存储其他信息。通过key找到所有其他信息。

    }

    public boolean is_book_full(){

            return numb >= 0 ;
        }

    public static void save(Book book, LocalDate date) throws IOException {

//        BufferedOutputStream outputStream = new BufferedOutputStream();//保存的时候需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。文件命名格式为“销售记录”加上当天日期加上“.csv”后缀,如“销售记录20160321.csv”。保存的时候需要判断本地是否存在当天的数据,如果存在则追加,不存在则新建。文件命名格式为“销售记录”加上当天日期加上“.csv”后缀,如“销售记录20160321.csv”。
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");//MM要大些   2024-03-03
        String filename = "销售记录" + date.format(formatter) + ".csv";

        String filepath = "E:\\桌面\\Library\\";

        File file = new File(filepath + filename);

        BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));

        System.out.println(file);
        if(file.exists()){

            writer.flush();
                writer.write("书号,书名,出版社,价格,数量\n");
                writer.flush();

            }
        writer.flush();
            //写去哪个路径,程序没说,是指写在该项目下嘛?
            writer.write(book.no + ","+book.name+"," + book.chu_ban_she + ","+book.price+book.numb+"\n");
        System.out.println("交易成功,记录已保存,期待您的下次光临!");
        writer.flush();
    }

}

Library类

你可以理解为main主类

package Laberry;

import java.io.BufferedOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Scanner;

public class Library {

    Book book1 = new Book("001", "java基础程序设计", "清华大学出版社", 88, 100);

    Book book2 = new Book("002", "python", "清华大学出版社", 666, 100);

    public Library() {

    }

    public static void main(String[] args) throws IOException {

        Library library = new Library();
        library.sales();

    }

    public void sales() throws IOException {

        HashMap<String, Book> book_map = new HashMap<String, Book>();

        book_map.put(book1.no, book1);
        book_map.put(book2.no, book2);

        Scanner scanner = new Scanner(System.in);
        System.out.println("please write down you want book number");
        String user_want_no = scanner.nextLine();

//        System.out.println(user_want_no + " 的信息:" + book_map.get(user_want_no));这样打印的是地址

        Book user_want_book = book_map.get(user_want_no);

        System.out.println(user_want_no + " 的信息:" + user_want_book.name + ", 出版社: " + user_want_book.chu_ban_she + ", 价格: " + user_want_book.price+",剩余数量:"+user_want_book.numb);

        if (user_want_book.is_book_full()) {

            System.out.println("您要的书籍还有剩余!请问您要购买多少本?");
            int user_want_buy_numb = scanner.nextInt();
            user_want_book.numb = user_want_book.numb - user_want_buy_numb;

            try{LocalDate now_date = LocalDate.now();
            user_want_book.save(user_want_book,now_date);}
            catch (IOException e){

                System.err.println("保存错误"+e.getMessage());
                e.printStackTrace();
            }

        }else {
            System.out.println("抱歉您想要的书籍已经卖完啦!");
        }
    }


}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我会尽力用中文回答你的问题。首先,Java是一门面向对象的编程语言,因此我们可以使用类来表示图书和图书管理系统。 具体来说,我们可以定义一个名为`Book`的类来表示图书。这个类可以包含图书的属性,比如书名、作者、出版社和 ISBN 编号。 ``` public class Book { private String title; private String author; private String publisher; private String isbn; public Book(String title, String author, String publisher, String isbn) { this.title = title; this.author = author; this.publisher = publisher; this.isbn = isbn; } // getters and setters for the class fields } ``` 然后,我们可以定义一个名为 `Library` 的类来表示图书管理系统。这个类可以包含一个 `Book` 类型的列表来存储图书,并且提供一些方法来添加、删除和查找图书。 ``` public class Library { private List<Book> books; public Library() { this.books = new ArrayList<>(); } public void addBook(Book book) { this.books.add(book); } public void removeBook(Book book) { this.books.remove(book); } public Book findBookByISBN(String isbn) { for (Book book : this.books) { if (book.getIsbn().equals(isbn)) { return book; } } return null; } // other methods for managing the library } ``` 希望这些信息能帮到你!如果你有其他问题,可以继续提问。 ### 回答2: 图书管理系统是一种用于管理图书馆或书店图书资源的软件系统。使用Java图书管理系统可以实现对图书的增加、删除、查询和借阅等功能。 首先,需要设计数据库表,包括图书信息表、借阅信息表和读者信息表。可以使用MySQL或其他关系型数据库来存储这些数据。 其次,可以使用Java的图形化界面库(如Swing或JavaFX)来设计用户界面,以便用户能够方便地操作图书管理系统。可以通过按钮、输入框和表格等组件来实现各个功能。 在图书信息管理方面,管理员可以使用系统界面进行图书的添加、删除和修改。对于每本图书,可以包括书名、作者、出版日期、ISBN等信息,也可以添加封面图片等附加信息。 在借阅管理方面,读者可以通过系统界面查询可借阅的图书,选择借阅后,系统会检查图书库存和借阅限制等信息,如果满足条件,将记录借阅信息并更新库存。 另外,还可以为用户提供图书查询功能,用户可以通过书名、作者等关键字进行图书搜索。系统可以根据用户的搜索条件查询数据库中的图书信息,并将结果显示在界面上。 在实现过程中,可以利用面向对象的编程思想,设计图书、读者和管理员等类,通过类之间的关联与继承来实现系统的各个功能模块。 总的来说,使用Java图书管理系统能够实现对图书的管理和借阅等功能,并提供方便易用的界面供用户操作。这样的系统可以有效地提高图书管理的效率和准确性。 ### 回答3: 图书管理系统是一种管理和维护图书信息的软件系统。使用Java一个图书管理系统可以有以下步骤和功能: 1. 数据库设计:首先,需要设计一个数据库,用于存储图书的详细信息,包括书名、作者、出版社、ISBN号、图书分类等。 2. 用户界面:使用Java的Swing或JavaFX框架可以创建一个用户界面,以方便用户操作。用户可以通过界面来添加、删除、查询和修改图书信息。 3. 添加图书:用户可以通过图书管理系统的界面来添加新的图书信息。用户需要输入图书的相关信息,并将其保存到数据库中。 4. 删除图书:用户可以选择一本图书并从图书库中删除它。系统需要进行确认,以确保用户的意愿。 5. 查询图书:用户可以通过图书的名称、作者或分类来查询图书信息。系统会将匹配的结果从数据库中检索出来,并显示在界面上供用户查看。 6. 修改图书:用户可以选择一本图书并修改它的相关信息,如书名、作者、出版社等。修改后的信息将被保存到数据库中。 7. 借阅管理:系统还可以提供图书借阅管理功能。用户可以借阅图书,并设置借阅的时间和归还日期。系统可以自动计算逾期罚款等相关事项。 8. 备份和恢复:为了避免数据丢失,图书管理系统可以提供数据库备份和恢复功能。用户可以定期备份数据库,并在需要时恢复数据。 综上所述,使用Java一个图书管理系统需要设计数据库、设置用户界面,并实现添加、删除、查询、修改、借阅管理等功能。这样可以方便图书管理员对图书信息的管理和查询,提高操作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值