一、题目要求
为图书管理人员编写一个图书管理系统,图书管理系统的设计主要是实现对图书的管理和相关操作,包括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);
}
}
}