[Java] 图书管理系统细解

一、题目要求

为图书管理人员编写一个图书管理系统,图书管理系统的设计主要是实现对图书的管理和相关操作,包括3个表:

图书信息表——存储图书的基本信息,包括书号、书名、作者、出版社、出版日期、存馆数量、定价等。

读者信息表——存储读者的基本信息,包括学号、姓名、学院、专业班级等。

图书借阅表——存储读者借书的相关信息,包括学号、姓名、书号、书名、借阅日期、应还日期、归还日期等。

用菜单选择方式完成下列功能:

1.图书信息添加功能:包括书号、书名、作者、出版社、存馆数量、定价等。

2.图书信息查询:分别按书名,按作者名,按出版社等进行查询。

3.图书信息排序:按书号、书名等按升序进行排序。

4.图书信息的修改、删除:按书号或书名进行图书的修改和删除。

5.读者信息添加功能:包括学号、姓名、学院、专业班级等。

6.读者信息查询:分别按学号、姓名、专业班级等进行查询。

7.读者信息排序:按学号、学院等按升序进行排序。

8.读者信息的修改、删除:按学号+姓名进行读者信息的修改和删除。

9.图书借阅:输入学号+书号,如果该书图书信息表中的存馆数量大于0,则可以借出,借出相应数量后修改图书信息表中的存馆数量,在图书借阅表添加该同学的借阅。

10.图书归还:输入学号+书号,修改图书信息表中的存馆数量,在图书借阅表中记录该同学的归还时间。

11.图书借阅查询:分别按学号、书名、学院等进行查询。

二、题目分析

1.根据三表要求,可以创建Book类与Reader类,Reader类继承Book类,便于图书借阅等操作。

2.创建两个不同适用对象类:librarian类、student类

3.可以创建四个包,分别为:

Property——声明Book类、Reader类

User——声明使用对象:librarian类、student类

Maketrue——实现Book类、Borrower类、Reader类的io流操作

operator——实现Book,Borrower,Reader的增删改查排序等操作

【如下】

 

三、注意事项

1.在操作时,要灵活应用各个类中包含的方法!模糊的时候看一遍方法!

2.

3.含有继承关系时,一定注意只能从高级别转至低级别,及:只能向下转型,不能向上转型!!当出现:xxx cannot be cast to xxx时,可以先从List类型处考虑,然后再考虑其他转型错误的地方。

4.写入一个Book对象时要注意加true!否则会覆盖前面的内容!

5.需要判断有无此借阅者or图书时,可以通过boolean flag = false;如果有,则fiag = true,否则仍然为false。然后通过if-else语句进行判断及执行。

四、具体实现

1>Property包

Book类:

package Property;

import java.util.ArrayList;
import java.util.List;

public class Book {
    private int no;  //书号
    private String title;  //书名
    private String author;  //作者
    private String publisher;   //出版社
    private String publicationTime;   //出版时间
    private int number;   //存馆数量
    private int price;  //定价


    public Book(int no, String title, String author, String publisher, String publicationTime, int number, int price) {
        super();
        this.no = no;
        this.title = title;
        this.author = author;
        this.publisher = publisher;
        this.publicationTime = publicationTime;
        this.number = number;
        this.price = price;
    }

    public static List<Book> temps = new ArrayList<>();
    public static List<Book> books = new ArrayList<>();

    public Book() {
        super();
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    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 getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    public String getPublicationTime() {
        return publicationTime;
    }

    public void setPublicationTime(String publicationTime) {
        this.publicationTime = publicationTime;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getPrice() {
        return price;
    }

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

Reader类:

固定借阅日期,通过改变实际借阅天数、预定借阅天数来改变应还日期及实际归还日期。

package Property;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

public class Reader {
    private int id;  //学号
    private String name;  //姓名
    private String school;  //学校
    private String major;   //专业
    private int cclass;  //班级
    private int no;   //书号
    private String title;  //书名
    private int trueDay;   //实际借阅天数
    private int appoint;   //约定借阅天数
    protected DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    protected static LocalDate localDate1 = LocalDate.now();
    //借阅日期
    protected String borrowDay = localDate1.format(dateTimeFormatter1);

    protected DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    protected LocalDate localDate2= localDate1.plusDays(appoint);
    //约定归还日期
    protected String appointDay = localDate2.format(dateTimeFormatter2);

    protected DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    protected LocalDate localDate3 =localDate1.plusDays(trueDay);
    //实际归还日期
    protected String returnDay = localDate3.format(dateTimeFormatter3);


    public Reader(int id, String name, String school, String major, int cclass){
        super();
        this.id = id;
        this.name = name;
        this.school = school;
        this.major = major;
        this.cclass = cclass;
    }
    public Reader(int id, String name, int no, String title, String borrowDay, String appointDay,String returnDay) {
        super();
        this.id = id;
        this.name = name;
        this.no = no;
        this.title = title;
        this.borrowDay = borrowDay;
        this.appointDay = appointDay;
        this.returnDay = returnDay;
    }

    public static List<Reader> readers =new ArrayList<>();
    public static List<Reader> borrowers =new ArrayList<>();
    public Reader(){
        super();
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
    public int getCclass() {
        return cclass;
    }
    public void setCclass(int cclass) {
        this.cclass = cclass;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public int getNo() {
        return no;
    }
    public String getTitle() {
        return title;
    }
    public String getBorrowDay(){
        return borrowDay;
    }
    public void setBorrowDay(String borrowDay) {
        this.borrowDay=borrowDay;
    }
    public String getAppointDay() {
        return appointDay;
    }
    public void setAppointDay(String appointDay){
        this.appointDay=appointDay;
    }
    public String getReturnDay(){
        return returnDay;
    }
    public void setReturnDay(String returnDay){
        this.returnDay=returnDay;
    }
}

2>User包

librarian类:

package User;

import operator.*;

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

public class librarian {
    public int menu() throws IOException {
        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("6.返回上一级目录");
            int i = scanner.nextInt();
            switch (i) {
                case 1:
                    addBook Add = new addBook();
                    Add.add();
                    break;
                case 2:
                    findBook Find = new findBook();
                    Find.find();
                    break;
                case 3:
                    sortBook Sort = new sortBook();
                    Sort.sort();
                    break;
                case 4:
                    changeBook Change = new changeBook();
                    Change.change();
                    break;
                case 5:
                    deleteBook Delete = new deleteBook();
                    Delete.delete();
                    break;
                case 6:
                    Scanner in = new Scanner(System.in);
                    librarian l = new librarian();
                    student s = new student();
                    System.out.println("请确定您的身份: 1. 管理员 2. 学生");
                    int choice = in.nextInt();
                    if (choice == 1) {
                        l.menu();
                    } else if(choice == 2){
                        s.menu();
                    }else{
                        System.out.println("输入错误!");
                    }
                    break;
                default:
                    System.out.println("输入错误!");
                    break;
            }
        }
    }
}

student类:

package User;
import operator.*;

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

public class student {
    public int menu() throws IOException {
        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("6.归还图书");
            System.out.println("7.返回上一级目录");
            int i = scanner.nextInt();
            switch (i) {
                case 1:
                    Borrow b = new Borrow();
                    b.borrow();
                    break;
                case 2:
                    findBorrow f = new findBorrow();
                    f.find();
                    break;
                case 3:
                    sortBorrower s = new sortBorrower();
                    s.sort();
                    break;
                case 4:
                    changeBorrow c = new changeBorrow();
                    c.change();
                    break;
                case 5:
                    deleteBorrow d = new deleteBorrow();
                    d.delete();
                    break;
                case 6:
                    Return r = new Return();
                    r.returnBook();
                    break;
                case 7:
                    Scanner in = new Scanner(System.in);
                    librarian l = new librarian();
                    student stu = new student();
                    System.out.println("请确定您的身份:\n 1. 管理员\n 2. 学生");
                    int choice = in.nextInt();
                    if (choice == 1) {
                        l.menu();
                    } else if(choice == 2){
                        stu.menu();
                    }else{
                        System.out.println("输入错误!");
                    }
                    break;
                default:
                    System.out.println("输入错误!");
                    break;
            }
        }
    }
}

Main类:

import User.*;
import java.io.IOException;
import java.util.*;


    public class Main {
        public static void main(String[] args) throws IOException {
            Scanner scanner = new Scanner(System.in);
            librarian l = new librarian();
            student s = new student();
            System.out.println("请确定您的身份:\n 1. 管理员 \n 2. 学生");
            int choice = scanner.nextInt();
            if (choice == 1) {
                l.menu();
            } else if(choice == 2){
                s.menu();
            }else{
                System.out.println("输入错误!");
            }
        }
    }

3>Maketrue包

ioBook类:

写入一个Book对象时要注意加true!否则会覆盖前面的内容!

package Maketrue;
import Property.Book;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ioBook extends Book {
    // 从文本文件中读出数据
    public static List read() throws IOException {

        List<Book> books= new ArrayList<>();
        // 创建一个字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("bookDate.txt"));
        String data;
        // 每次度一行,如果有内容继续读取
        while ((data = br.readLine()) != null) {
            //防止有空行出现
            if (data.equals("")) {
                continue;
            } else {
                String[] dataArr = data.split(" ");
                Book book = new Book();
                book.setNo(Integer.parseInt(dataArr[0].trim()));
                book.setTitle(dataArr[1].trim());
                book.setAuthor(dataArr[2].trim());
                book.setPublisher(dataArr[3].trim());
                book.setPublicationTime(dataArr[4].trim());
                book.setNumber(Integer.parseInt(dataArr[5].trim()));
                book.setPrice(Integer.parseInt(dataArr[6].trim()));
                books.add(book);
            }
        }
        br.close();
        return books;
    }
    //单个图书信息写入
    public static void saveBook(Book book) throws IOException {
        FileOutputStream fos = new FileOutputStream("bookDate.txt", true); //加true是为了不覆盖上一次数据
        StringBuffer data = new StringBuffer();
        data.append(book.getNo() + " ");
        data.append(book.getTitle() + " ");
        data.append(book.getAuthor() + " ");
        data.append(book.getPublisher() + " ");
        data.append(book.getPublicationTime() + " ");
        data.append(book.getNumber() + " ");
        data.append(book.getPrice() + "\n");
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
      //全部图书信息写入
    public static void saveBook(List books) throws IOException {
        FileOutputStream fos = new FileOutputStream("bookDate.txt");
        StringBuffer data = new StringBuffer();
        for (int i = 0; i < books.size(); i++) {
            Object book = books.get(i);
            data.append(((Book) book).getNo()+" "+((Book) book).getTitle()+" "+((Book) book).getAuthor()+" "+((Book) book).getPublisher()+" "+((Book) book).getPublicationTime()+" "+((Book) book).getNumber()+" "+((Book) book).getPrice()+"\n");
        }
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
}

ioBorrower类:

package Maketrue;
import Property.Book;
import Property.Reader;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ioBorrower extends Reader{
    // 从文本文件中读出数据
    public static List read() throws IOException {

        List<Book> books= new ArrayList<>();//List是Book类型,findborrow类中是reader,reader类型优先级高于book类型,遍历时用reader去取,只能向下转型,向上转型是错的
        // 创建一个字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("borrowerData.txt"));
        String data;
        // 每次度一行,如果有内容继续读取
        while ((data = br.readLine()) != null) {
            //防止有空行出现
            if (data.equals("")) {
                continue;
            } else {
                String[] dataArr = data.split(" ");
                Book book = new Book();
                book.setNo(Integer.parseInt(dataArr[0].trim()));
                book.setTitle(dataArr[1].trim());
                book.setAuthor(dataArr[2].trim());
                book.setPublisher(dataArr[3].trim());
                book.setPublicationTime(dataArr[4].trim());
                book.setNumber(Integer.parseInt(dataArr[5].trim()));
                book.setPrice(Integer.parseInt(dataArr[6].trim()));
                books.add(book);
            }
        }
        br.close();
        return books;
    }
    //单个图书信息写入
    public static void saveBook(Book book) throws IOException {
        //加true是为了不覆盖上一次数据
        FileOutputStream fos = new FileOutputStream("borrowerData.txt", true);
        StringBuffer data = new StringBuffer();
        data.append(book.getNo() + " ");
        data.append(book.getTitle() + " ");
        data.append(book.getAuthor() + " ");
        data.append(book.getPublisher() + " ");
        data.append(book.getPublicationTime() + " ");
        data.append(book.getNumber() + " ");
        data.append(book.getPrice() + "\n");
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
    //全部图书信息写入
    public static void saveBook(List books) throws IOException {
        FileOutputStream fos = new FileOutputStream("borrowerData.txt");
        StringBuffer data = new StringBuffer();
        for (int i = 0; i < books.size(); i++) {
            Object book = books.get(i);
            data.append(((Book) book).getNo()+" "+((Book) book).getTitle()+" "+((Book) book).getAuthor()+" "+((Book) book).getPublisher()+" "+((Book) book).getPublicationTime()+" "+((Book) book).getNumber()+" "+((Book) book).getPrice()+"\n");
        }
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
}

ioReader类:

package Maketrue;
import Property.Book;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ioReader {
    public static List read() throws IOException {
        List<Book> books= new ArrayList<>();
        // 创建一个字符缓冲输入流对象
        BufferedReader br = new BufferedReader(new FileReader("bookDate.txt"));
        String data;
        // 每次度一行,如果有内容继续读取
        while ((data = br.readLine()) != null) {
            //防止有空行出现
            if (data.equals("")) {
                continue;
            } else {
                String[] dataArr = data.split(" ");
                Book book = new Book();
                book.setNo(Integer.parseInt(dataArr[0].trim()));
                book.setTitle(dataArr[1].trim());
                book.setAuthor(dataArr[2].trim());
                book.setPublisher(dataArr[3].trim());
                book.setPublicationTime(dataArr[4].trim());
                book.setNumber(Integer.parseInt(dataArr[5].trim()));
                book.setPrice(Integer.parseInt(dataArr[6].trim()));
                books.add(book);
            }
        }
        br.close();
        return books;
    }
    //单个图书信息写入
    public static void saveBook(Book book) throws IOException {
        FileOutputStream fos = new FileOutputStream("bookDate.txt", true);
        StringBuffer data = new StringBuffer();
        data.append(book.getNo() + " ");
        data.append(book.getTitle() + " ");
        data.append(book.getAuthor() + " ");
        data.append(book.getPublisher() + " ");
        data.append(book.getPublicationTime() + " ");
        data.append(book.getNumber() + " ");
        data.append(book.getPrice() + "\n");
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
    //全部图书信息写入
    public static void saveBook(List books) throws IOException {
        FileOutputStream fos = new FileOutputStream("bookDate.txt");
        StringBuffer data = new StringBuffer();
        for (int i = 0; i < books.size(); i++) {
            Object book = books.get(i);
            data.append(((Book) book).getNo()+" "+((Book) book).getTitle()+" "+((Book) book).getAuthor()+" "+((Book) book).getPublisher()+" "+((Book) book).getPublicationTime()+" "+((Book) book).getNumber()+" "+((Book) book).getPrice()+"\n");
        }
        String dataStr = data.toString();
        byte[] buf = dataStr.getBytes();
        int len = buf.length;
        fos.write(buf, 0, len);
        fos.flush();
        fos.close();
    }
}

4>operator包

addBook类:

package operator;
import Maketrue.ioBook;
import Property.Book;
import java.io.IOException;
import java.util.Scanner;
import static Property.Book.books;
public class addBook {
    public void add() throws IOException{
        Scanner scanner = new Scanner(System.in);
        System.out.println("*****正在进行增加图书信息*****");
        System.out.println("请输入书号:");
        int no = scanner.nextInt();
        System.out.println("请输入书名:");
        String title = scanner.next();
        System.out.println("请输入作者:");
        String author = scanner.next();
        System.out.println("请输入出版社:");
        String publisher = scanner.next();
        System.out.println("请输入出版日期:");
        String publicationTime = scanner.next();
        System.out.println("请输入存馆数量:");
        int number = scanner.nextInt();
        System.out.println("请输入定价:");
        int price = scanner.nextInt();
        Book book = new Book(no, title, author, publisher, publicationTime, number, price);
        books.add(book);
        ioBook.saveBook(book);
        System.out.println("新增成功!");
    }
}

Borrow类:

package operator;
import Maketrue.ioBook;
import Maketrue.ioBorrower;
import Maketrue.ioReader;
import Property.Book;
import Property.Reader;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Borrow extends Reader {
    public void borrow() throws IOException {
        List<Book> books = new ArrayList<>();
        books = ioBook.read();
        if (books.size() == 0) {
            System.out.println("图书管理系统暂无图书!");
        } else {
            System.out.println("*****正在进行借阅*****");
            System.out.println("图书列表:");
            Scanner scanner = new Scanner(System.in);
            //展示所有可借阅的图书
            for (Book book : books) {
                System.out.println("书号:" + book.getNo() + " " + "书名:" + book.getTitle() + " " + "作者:" + book.getAuthor() + " " + "出版社:" + book.getPublisher() + " " + "出版日期:" + book.getPublicationTime() + " " + "存馆数量:" + book.getNumber() + " " + "定价:" + book.getPrice() + "\n");
            }
            System.out.println("请选择你要借阅的图书书号:");
            int no = scanner.nextInt();
            for (Book book1 : books) {
                if (no == book1.getNo()) {
                    if (book1.getNumber() > 0) {
                        int num = book1.getNumber();
                        num--;
                        book1.setNumber(num);
                        ioBook.saveBook(books);
                    } else {
                        System.out.println("该书的数量目前为0!");
                        break;
                    }
                    System.out.println("*****请进行登记信息*****");
                    System.out.println("请输入学号:");
                    int id = scanner.nextInt();
                    System.out.println("请输入姓名:");
                    String name = scanner.next();
                    System.out.println("请输入学院:");
                    String school = scanner.next();
                    System.out.println("请输入专业:");
                    String major = scanner.next();
                    System.out.println("请输入班级:");
                    int cclass = scanner.nextInt();
                    System.out.println("请输入约定借阅的天数:");
                    //约定借阅的天数
                    int a1 = scanner.nextInt();
                    String returnDay1 = "未还书";
                    DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    LocalDate localDate3 = localDate1.plusDays(a1);
                    //约定归还的日期
                    String appointDay1 = localDate3.format(dateTimeFormatter3);
                    Reader borrower2 = new Reader(id, name, no, book1.getTitle(), borrowDay, appointDay1, returnDay1);
                    Reader reader2 = new Reader(id, name, school, major, cclass);
                    readers.add(reader2);
                    ioReader.saveBook((List) reader2);
                    borrowers.add(borrower2);
                    ioBorrower.saveBook((List) borrower2);
                    System.out.println("新增成功!");
                }
            }
        }
    }
}

changeBook类:

package operator;

import Maketrue.ioBook;
import Property.Book;
import User.librarian;

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

public class changeBook extends Book {
    public void change() throws IOException {
        List<Book> books = new ArrayList<>();
        books = ioBook.read();
        boolean flag = false;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请选择你要修改的图书编号:");
        int no = scanner.nextInt();
        for (Book book : books){
            if (no == book.getNo()){
                flag = true;
                break;
            }
            else{
                flag = false;
            }
        }
        if(flag == false){
            System.out.println("图书管理系统中暂无此书!");
        }
        else if(flag == true) {
            Scanner in = new Scanner(System.in);
            System.out.println("*****正在进行修改图书信息*****");
            System.out.println("请再次选择你要修改的图书编号:");
            int nom = scanner.nextInt();
            for (Book book : books) {
                if (nom == book.getNo()) {
                    System.out.println("请输入你要修改的内容 \n 1.书号  2.书名 3.作者 4.出版社 \n 5.出版日期 6.存馆数量 7.定价 8.返回上一级菜单 \n");
                    int choose = in.nextInt();
                    switch (choose) {
                        case 1:
                            System.out.println("请输入修改后的书号:");
                            int no1 = scanner.nextInt();
                            book.setNo(no1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 2:
                            System.out.println("请输入修改后的书名:");
                            String title1 = scanner.next();
                            book.setTitle(title1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 3:
                            System.out.println("请输入修改后的作者:");
                            String author1 = scanner.next();
                            book.setAuthor(author1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 4:
                            System.out.println("请输入修改后的出版社:");
                            String publisher1 = scanner.next();
                            book.setPublisher(publisher1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 5:
                            System.out.println("请输入修改后的出版日期:");
                            String publicationTime1 = scanner.next();
                            book.setPublicationTime(publicationTime1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 6:
                            System.out.println("请输入修改后的存馆数量:");
                            int number1 = scanner.nextInt();
                            book.setNumber(number1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 7:
                            System.out.println("请输入修改后的定价:");
                            int price1 = scanner.nextInt();
                            book.setPrice(price1);
                            ioBook.saveBook(books);
                            System.out.println("修改成功!");
                            break;
                        case 8:
                            librarian l = new librarian();
                            l.menu();
                            break;
                        default:
                            System.out.println("输入错误!");
                            break;
                    }
                }
            }
        }
    }
}

changeBorrow类:

package operator;

import Maketrue.ioBorrower;
import Maketrue.ioReader;
import Property.Book;
import Property.Reader;
import User.student;

import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class changeBorrow extends Reader{
    public void change() throws IOException {
        List<Reader> readers = new ArrayList<>();
        List<Reader> borrowers = new ArrayList<>();
        readers = ioReader.read();
        borrowers = ioBorrower.read();
        if (readers.size() == 0) {
            System.out.println("读者信息系统暂无此读者!");
        } else {
            Scanner scanner = new Scanner(System.in);
            System.out.println("*****正在进行修改读者信息*****");
            System.out.println("请输入要修改的读者学号:");
            int id = scanner.nextInt();
            for (Reader reader : readers) {
                for (Reader borrower : borrowers) {
                    if (id == reader.getId()) {
                        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("6.修改专业");
                        System.out.println("7.修改班级");
                        System.out.println("8.修改约定归还日期");
                        System.out.println("9.修改实际归还日期");
                        System.out.println("10.返回上一级目录");
                        int choose = scanner.nextInt();
                        switch (choose) {
                            case 1:
                                System.out.println("请输入学号:");
                                int id1 = scanner.nextInt();
                                reader.setId(id1);
                                ioReader.saveBook(readers);
                                borrower.setId(id1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 2:
                                System.out.println("请输入姓名:");
                                String name1 = scanner.nextLine();
                                reader.setName(name1);
                                ioReader.saveBook(readers);
                                borrower.setName(name1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 3:
                                System.out.println("请输入书号:");
                                int no1 = scanner.nextInt();
                                borrower.setNo(no1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 4:
                                System.out.println("请输入书名:");
                                String title1 = scanner.next();
                                borrower.setTitle(title1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 5:
                                System.out.println("请输入学院:");
                                String school1 = scanner.next();
                                reader.setSchool(school1);
                                ioReader.saveBook(readers);
                                System.out.println("修改完毕!");
                                break;
                            case 6:
                                System.out.println("请输入专业:");
                                String major1 = scanner.next();
                                reader.setMajor(major1);
                                ioReader.saveBook(readers);
                                System.out.println("修改完毕!");
                                break;
                            case 7:
                                System.out.println("请输入班级:");
                                int cclass1 = scanner.nextInt();
                                reader.setCclass(cclass1);
                                ioReader.saveBook(readers);
                                System.out.println("修改完毕!");
                                break;
                            case 8:
                                System.out.println("请输入约定借阅的天数:");
                                int appoint1 = scanner.nextInt();
                                DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                                LocalDate localDate3 = localDate1.plusDays(appoint1);
                                String appointDay1 = localDate3.format(dateTimeFormatter3);
                                borrower.setAppointDay(appointDay1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 9:
                                System.out.println("请输入实际借阅的天数:");
                                int trueDay1 = scanner.nextInt();
                                DateTimeFormatter dateTimeFormatter4 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                                LocalDate localDate4 = localDate1.plusDays(trueDay1);
                                String returnDay1 = localDate4.format(dateTimeFormatter4);
                                borrower.setReturnDay(returnDay1);
                                ioBorrower.saveBook(borrowers);
                                System.out.println("修改完毕!");
                                break;
                            case 10:
                                student s =new student();
                                s.menu();
                            default:
                                System.out.println("输入错误!");
                                break;
                        }
                    }
                }
            }
        }
    }
}

deleteBook类:

package operator;

import Maketrue.ioBook;
import Property.Book;

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

public class deleteBook extends Book {
    public void delete() throws IOException {
            Scanner scanner = new Scanner(System.in);
            //读取文本文档中数据
            System.out.println("请输入想要删除的图书书号:");
            books = ioBook.read();
            int no = scanner.nextInt();
            boolean flag = false;
            for (Book book:books) {
                if (no == book.getNo()) {
                    flag = true;
                    break;
                }else{
                    flag = false;
                }
            }
            if(flag == true){
                System.out.println("*****正在进行删除图书*****");
                System.out.println("请输入要删除的图书书号");
                int nom = scanner.nextInt();
                books = ioBook.read();
                for (Book book:books) {
                    if (no == book.getNo()){
                        books.remove(book);
                        System.out.println("删除图书成功!");
                        break;
                }
            }
            ioBook.saveBook(books);
            } else if (flag == false){
                System.out.println("图书管理系统中暂无此书!");
        }
    }
}

deleteBorrow类:

package operator;

import Maketrue.ioBorrower;
import Maketrue.ioReader;
import Property.Reader;

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

public class deleteBorrow extends Reader {
    public void delete() throws IOException {
        if (readers.size() == 0) {
            System.out.println("读者信息系统暂无此读者!");
        } else {
            System.out.println("*****正在进行删除读者*****");
            System.out.println("请输入要删除的读者学号:");
            Scanner scanner = new Scanner(System.in);
            readers = ioReader.read();
            borrowers = ioBorrower.read();
            int id = scanner.nextInt();
            for (Reader reader : readers) {
                if (id == reader.getId()) {
                    readers.remove(reader);
                    System.out.println("删除完毕!");
                    break;
                }
            }
            for (Reader borrower : borrowers) {
                if (id == borrower.getId()) {
                    borrowers.remove(borrower);
                    System.out.println("删除完毕!");
                    break;
                }
            }
        }
        ioBorrower.saveBook(borrowers);
        ioReader.saveBook(readers);
    }
}

findBook类:

package operator;

import Maketrue.ioBorrower;
import Maketrue.ioReader;
import Property.Reader;

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

public class deleteBorrow extends Reader {
    public void delete() throws IOException {
        if (readers.size() == 0) {
            System.out.println("读者信息系统暂无此读者!");
        } else {
            System.out.println("*****正在进行删除读者*****");
            System.out.println("请输入要删除的读者学号:");
            Scanner scanner = new Scanner(System.in);
            readers = ioReader.read();
            borrowers = ioBorrower.read();
            int id = scanner.nextInt();
            for (Reader reader : readers) {
                if (id == reader.getId()) {
                    readers.remove(reader);
                    System.out.println("删除完毕!");
                    break;
                }
            }
            for (Reader borrower : borrowers) {
                if (id == borrower.getId()) {
                    borrowers.remove(borrower);
                    System.out.println("删除完毕!");
                    break;
                }
            }
        }
        ioBorrower.saveBook(borrowers);
        ioReader.saveBook(readers);
    }
}

findBorrow类:

package operator;

import Maketrue.ioBorrower;
import Property.Reader;

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

public class findBorrow extends Reader {
    public void find() throws IOException {
        Scanner scanner = new Scanner(System.in);
        borrowers = ioBorrower.read();
        boolean flag = false;
        System.out.println("请输入要查询的借阅者学号:");
        int id1 = scanner.nextInt();
       for (Reader borrower1 : borrowers){
            if (id1 == borrower1.getId()){
                flag = true;
                break;
            }else{
                flag = false;
            }
        }
        if (flag == false) {
            System.out.println("借阅者系统暂无此借阅者!");
        } else if(flag == true){
        System.out.println("*****正在进行查询借阅者*****");
        System.out.println("请再次输入要查询的借阅者学号:");
        int id = scanner.nextInt();
        for (Reader borrower : borrowers) {
            if (id == borrower.getId()) {
                System.out.println("学号:" + borrower.getId() + " " + "姓名:" + borrower.getName() + " " + "书号:" + borrower.getNo() + " " + "书名:" + borrower.getTitle() + " " + "借阅日期:" + borrower.getBorrowDay() + " " + "约定归还日期:" + borrower.getAppointDay() + " " + "实际归还日期:" + borrower.getReturnDay() + " " + "归还日期:" + borrower.getReturnDay());
                  }
                 }
                }
            }
        }

Return类:

package operator;

import Maketrue.ioBook;
import Maketrue.ioBorrower;
import Property.Book;
import Property.Reader;

import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Return extends Reader{
    public void returnBook() throws IOException {
        List<Book> books = new ArrayList<>();
        List<Reader> borrowers = new ArrayList<>();
        books = ioBook.read();
        borrowers = ioBorrower.read();
        if (borrowers.size() == 0) {
            System.out.println("系统暂无此借阅信息!");
        } else {
            System.out.println("*****正在进行还书*****");
            Scanner scanner = new Scanner(System.in);
            System.out.println("图书借阅列单:");
            //所有借阅中和借阅过的图书
            for (Reader borrower : borrowers) {
                System.out.println("学号:" + borrower.getId() + " " + "姓名:" + borrower.getName() + " " + "书号:" + borrower.getNo() + " " + "书名:" + borrower.getTitle() + " " + "借阅时间:" + borrower.getBorrowDay() + " " + "预计归还时间:" + borrower.getAppointDay() + " " + "实际归还时间:" + borrower.getReturnDay() + "\n");
            }
            System.out.println("请选择你要归还的图书书号:");
            int no = scanner.nextInt();
            System.out.println("请输入借阅者学号:");
            int id = scanner.nextInt();
            for (Reader borrower : borrowers) {
                for (Book book : books) {
                    if (no == book.getNo() && id == borrower.getId() && no == borrower.getNo() && borrower.getReturnDay().equals("未还书")) {
                        int n = book.getNumber();
                        n++;
                        Book book1 = new Book(book.getNo(), book.getTitle(), book.getAuthor(), book.getPublisher(), book.getPublicationTime(), n, book.getPrice());
                        //将改变前的数据删去
                        books.remove(book);
                        //加入改变后的数据
                        books.add(book1);
                        ioBook.saveBook(books);
                        break;
                    }
                }
            }
            for (Reader borrower : borrowers) {
                if (no == borrower.getNo() && borrower.getReturnDay().equals("暂未还书!")) {
                    System.out.println("请输入实际借阅的天数:");
                    int trueDay1 = scanner.nextInt();
                    DateTimeFormatter dateTimeFormatter4 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    LocalDate localDate4 = localDate1.plusDays(trueDay1);
                    //实际归还的日期
                    String returnDay1 = localDate4.format(dateTimeFormatter4);
                    borrower.setReturnDay(returnDay1);
                    ioBorrower.saveBook(borrowers);
                    System.out.println("还书成功!");
                    break;
                }
            }
        }
    }
}

sortBook类:

package operator;

import Maketrue.ioBook;
import Property.Book;

import java.io.IOException;
import java.util.Comparator;

public class sortBook extends Book {
    public void sort() throws IOException {
        //读取文本文档中数据
        books = ioBook.read();
        if (books.size() == 0) {
            System.out.println("图书管理系统暂无此图书!");
        } else {
            System.out.println("排序前:");
            //排序前的图书表
            for(Book book:books){
                System.out.println("书号:"+book.getNo()+" "+"书名:"+book.getTitle()+" "+"作者:"+book.getAuthor()+" "+"出版社:"+book.getPublisher()+" "+"出版时间:"+book.getPublicationTime()+" "+"存馆数量:"+book.getNumber()+" "+"定价:"+book.getPrice()+"\n");
            }
            System.out.println("*****正在进行排序图书信息*****");
            //按照书号进行排序
            books.sort(new Comparator<Book>() {
                @Override
                public int compare(Book book1, Book book2) {
                    int i = book1.getNo() - book2.getNo();
                    if (i != 0) {
                        return i;
                    } else {
                        return 0;
                    }
                }
            });
            System.out.println("排序成功!");
            System.out.println("排序后:");
            //排序后的图书表
            for(Book book:books){
                System.out.println("书号:"+book.getNo()+" "+"书名:"+book.getTitle()+" "+"作者:"+book.getAuthor()+" "+"出版社:"+book.getPublisher()+" "+"出版时间:"+book.getPublicationTime()+" "+"存馆数量:"+book.getNumber()+" "+"定价:"+book.getPrice()+"\n");
            }
            ioBook.saveBook(books);
        }
    }
}

sortBorrower类:

package operator;

import Maketrue.ioBorrower;
import Property.Book;
import Property.Reader;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class sortBorrower extends Reader {
    public void sort() throws IOException {
        List<Book> books = new ArrayList<>();
        borrowers = ioBorrower.read();
        if (borrowers.size() == 0) {
            System.out.println("图书管理系统暂无此书!");
        } else {
            System.out.println("排序前:");
            for(Reader borrower:borrowers){
                System.out.println("学号:" + borrower.getId() + " " + "姓名:" + borrower.getName() + " " + "书号:" + borrower.getNo() + " " + "书名:" + borrower.getTitle() + " " + "借阅日期:" + borrower.getBorrowDay() + " " + "约定归还日期:" + borrower.getAppointDay() + " " + "实际归还日期:" + borrower.getReturnDay() + " " + "归还日期:" + borrower.getReturnDay()+"\n");
            }
            System.out.println("*****正在进行排序图书信息*****");
            //按照借阅者学号进行排序
            borrowers.sort(new Comparator<Reader>() {
                public int compare(Reader borrower1, Reader borrower2) {
                    int i = borrower1.getId() - borrower2.getId();
                    if (i != 0) {
                        return i;
                    } else {
                        return 0;
                    }
                }
            });
            System.out.println("排序成功!");
            System.out.println("排序后:");
            //排序后的借阅表
            for(Reader borrower:borrowers){
                System.out.println("学号:" + borrower.getId() + " " + "姓名:" + borrower.getName() + " " + "书号:" + borrower.getNo() + " " + "书名:" + borrower.getTitle() + " " + "借阅日期:" + borrower.getBorrowDay() + " " + "约定归还日期:" + borrower.getAppointDay() + " " + "实际归还日期:" + borrower.getReturnDay() + " " + "归还日期:" + borrower.getReturnDay()+"\n");
            }
            ioBorrower.saveBook(borrowers);
        }
    }
}

sortReader类:

package operator;

import Maketrue.ioReader;
import Property.Reader;

import java.io.IOException;
import java.util.Comparator;

public class sortReader extends Reader {
    public void sort() throws IOException {
        //读取文本文档中数据
        readers = ioReader.read();
        if (readers.size() == 0) {
            System.out.println("图书管理系统暂无此书!");
        } else {
            System.out.println("排序前:");
            //排序前的读者信息表
            for(Reader reader:readers){
                System.out.println("学号:" + reader.getId() + " " + "姓名:" + reader.getName() + " " + "学院:" + reader.getSchool() + " " + "专业:" + reader.getMajor() + " " + "班级:" + reader.getCclass()+"\n");
            }
            System.out.println("*****正在进行排序图书信息*****");
            //按照读者学号进行排序
            readers.sort(new Comparator<Reader>() {
                public int compare(Reader reader1, Reader reader2) {
                    int i = reader1.getId() - reader2.getId();
                    if (i != 0) {
                        return i;
                    } else {
                        return 0;
                    }
                }
            });
            System.out.println("排序成功");
            System.out.println("排序后");
            //排序后的读者信息表
            for(Reader reader:readers){
                System.out.println("学号:" + reader.getId() + " " + "姓名:" + reader.getName() + " " + "学院:" + reader.getSchool() + " " + "专业:" + reader.getMajor() + " " + "班级:" + reader.getCclass()+"\n");
            }
            ioReader.saveBook(readers);
        }
    }
}

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值