Java基础之图书管理系统

article/2025/10/10 23:59:13

一:建立信息表

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

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

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

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

新建类:

Book类:

package book;import javax.print.DocFlavor;
import java.io.Serializable;public class Book implements Serializable {private  int bookid;private  String bookname;private  String author;private  String publisher;//出版社private  String publication_date;//出版日期private  int booknumber=0;//数量private  String price;//定价public void setBookid(int bookid) {this.bookid = bookid;}public void setBookname(String bookname) {this.bookname = bookname;}public void setAuthor(String author) {this.author = author;}public void setPublisher(String publisher) {this.publisher = publisher;}public void setPublication_date(String publication_date) {this.publication_date = publication_date;}public void setBooknumber(int booknumber) {this.booknumber = booknumber;}public void setPrice(String price) {this.price = price;}public String getBookname(){return bookname;}public int getBookid() {return bookid;}public int getBooknumber() {return booknumber;}public String getPrice() {return price;}public String getAuthor() {return author;}public String getPublication_date() {return publication_date;}public String getPublisher() {return publisher;}@Overridepublic String toString() {return "book{" +"bookid=" + bookid +", bookname='" + bookname + '\'' +", author='" + author + '\'' +", publisher='" + publisher + '\'' +", publication_date='" + publication_date + '\'' +", booknumber=" + booknumber +", price=" + price +'}';}public Book(){this.bookid=bookid;this.bookname=bookname;this.author=author;this.publisher=publisher;this.publication_date=publication_date;this.booknumber=booknumber;this.price=price;}}

读者类:

package book;import javax.print.DocFlavor;
import java.io.Serializable;public class Reader implements Serializable {private long  manid;//学号private String manname;//姓名private String college;//学院private String major_class;//专业public long getManid() {return manid;}public void setManid(long manid) {this.manid = manid;}public String getManname() {return manname;}public void setManname(String manname) {this.manname = manname;}public String getCollege() {return college;}public void setCollege(String college) {this.college = college;}public String getMajor_class() {return major_class;}public void setMajor_class(String major_class) {this.major_class = major_class;}@Overridepublic String toString() {return "reader{" +"manid=" + manid +", manname='" + manname + '\'' +", college='" + college + '\'' +", major_class='" + major_class + '\'' +'}';}public Reader(){this.manid=manid;this.manname=manname;this.college=college;this.major_class=major_class;}
}

借阅者类:

package book;import java.io.Serializable;public class BookBorrow implements Serializable {private long borrowerid=0;//学号private String borrowername=null;//姓名private int bookid=0;//书号private String bookname=null;//书名private String borrowtime=null;//借阅日期private String duedate=null;//应还日期private String returntime=null;//归还日期//    @Override
//    public String toString() {
//        return "BookBorrow{" +
//                "borrowerid=" + borrowerid +
//                ", borrowername='" + borrowername + '\'' +
//                ", bookid=" + bookid +
//                ", bookname='" + bookname + '\'' +
//                ", borrowtime='" + borrowtime + '\'' +
//                ", duedate='" + duedate + '\'' +
//                ", returntime='" + returntime + '\'' +
//                '}';
//    }public long getBorrowerid() {return borrowerid;}public void setBorrowerid(long borrowerid) {this.borrowerid = borrowerid;}public String getBorrowername() {return borrowername;}public void setBorrowername(String borrowername) {this.borrowername = borrowername;}public int getBookid() {return bookid;}public void setBookid(int bookid) {this.bookid = bookid;}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname = bookname;}public String getBorrowtime() {return borrowtime;}public void setBorrowtime(String borrowtime) {this.borrowtime = borrowtime;}public String getDuedate() {return duedate;}public void setDuedate(String duedate) {this.duedate = duedate;}public String getReturntime() {return returntime;}public void setReturntime(String returntime) {this.returntime = returntime;}public BookBorrow() {this.borrowerid = borrowerid;this.borrowername = borrowername;this.bookid = bookid;this.bookname = bookname;this.borrowtime = borrowtime;this.duedate = duedate;this.returntime = returntime;}
}

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

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

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

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

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

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

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

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

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

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

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

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

------------------------------------------------------------------------------------------------------------------------------

先看一下菜单选择:

public static void main(String[] args) {//创建集合对象,用于存储数据ArrayList<Book> array = new ArrayList<Book>();ArrayList<Reader> arr = new ArrayList<Reader>();ArrayList<BookBorrow> ar = new ArrayList<BookBorrow>();//循环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.读者信息查询");System.out.println("8.读者信息排序");System.out.println("9.读者信息的修改");System.out.println("10.读者信息的删除");System.out.println("11.图书借阅");System.out.println("12.图书归还");System.out.println("13.图书借阅查询");System.out.println("14.退出");System.out.println("请输入对应序号:");Scanner sc = new Scanner(System.in);String line = sc.nextLine();//用switch语句完成操作的选择switch (line) {case "1":System.out.println("");addBook(array);break;case "2":System.out.println("");findBook(array);break;case "3":System.out.println("");sortingBook(array);break;case "4":System.out.println("");reviseBook(array);break;case "5":System.out.println("");deleteBook(array);break;case "6":System.out.println("");addReader(arr);break;case "7":System.out.println("");findReader(arr);break;case "8":System.out.println("");sortingReader(arr);break;case "9":System.out.println("");reviseReader(arr);break;case "10":System.out.println("");deleteReader(arr);break;case "11":System.out.println("");borrowingBook(ar, arr, array);break;case "12":System.out.println("");returnBook(ar, arr, array);break;case "13":System.out.println("");findBookborrow(ar,arr,array);break;case "14":System.out.println("谢谢使用");System.exit(0);//JVM退出default:System.out.println("请输入正确的序号");}}}

这里创建三个集合对象来接那三个类,由于不知道一个类中会有几个对象,所以用ArrayList方便接收。

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

//定义添加图书方法public static void addBook(ArrayList<Book> array) {//键盘录入信息Scanner sc = new Scanner(System.in);System.out.println("请输入书号:");int sbookid = sc.nextInt();System.out.println("请输入书名:");String ssbookname = sc.nextLine();//不多加一个输入会把该输入的忽略掉String sbookname = sc.nextLine();System.out.println("请输入作者:");String sauthor = sc.nextLine();System.out.println("请输入出版社:");String spublisher = sc.nextLine();System.out.println("请输入出版日期");String spublish_dater = sc.nextLine();System.out.println("请输入存馆数量:");int sbooknumber = sc.nextInt();System.out.println("请输入定价:");String sssbookname = sc.nextLine();//不多加一个输入会把该输入的忽略掉String sprice = sc.nextLine();//创建图书对象,将键盘录入的数据赋值给图书对象的成员变量Book books = new Book();books.setBookid(sbookid);books.setBookname(sbookname);books.setAuthor(sauthor);books.setPublisher(spublisher);books.setPublication_date(spublish_dater);books.setBooknumber(sbooknumber);books.setPrice(sprice);//将图书对象添加到集合中array.add(books);//给出提示System.out.println("添加图书成功");}

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

//定义查看图书信息public static void findBook(ArrayList<Book> array) {System.out.println("1.根据书名查找");System.out.println("2.根据作者名查找");System.out.println("3.根据出版社查找");Scanner scanner = new Scanner(System.in);//将整型数据Integer转换为基本数据类型intint a = Integer.parseInt(scanner.nextLine());if (!(a == 1 || a == 2 || a == 3)) {System.out.println("输入错误,请重新输写");} else {switch (a) {case 1:System.out.println("请输入书名:");String name1;name1 = scanner.next();if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {System.out.println("书号\t书名\t\t作者\t出版社\t\t数量\t价格");for (int i = 0; i < array.size(); i++) {Book b = array.get(i);if (name1.equals(b.getBookname())) {System.out.println(b.getBookid() + "," +b.getBookname() + "," + b.getAuthor() +"," + b.getPublisher() + "," + b.getBooknumber() +"," + b.getPrice());}}}break;case 2:System.out.println("请输入作者名:");String name2;name2 = scanner.next();if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {System.out.println("书号\t书名\t\t作者\t出版社\t\t数量\t价格");for (int i = 0; i < array.size(); i++) {Book b = array.get(i);if (name2.equals(b.getAuthor())) {System.out.println(b.getBookid() + "," +b.getBookname() + "," + b.getAuthor() +"," + b.getPublisher() + "," + b.getBooknumber() +"," + b.getPrice());}}}break;case 3:System.out.println("请输入出版社:");String name3;name3 = scanner.next();if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {System.out.println("书号\t书名\t\t作者\t出版社\t\t数量\t价格");for (int i = 0; i < array.size(); i++) {Book b = array.get(i);if (name3.equals(b.getPublisher())) {System.out.println(b.getBookid() + "," +b.getBookname() + "," + b.getAuthor() +"," + b.getPublisher() + "," + b.getBooknumber() +"," + b.getPrice());}}}break;}}}

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

//定义图书排序(冒泡排序)public static void sortingBook(ArrayList<Book> array) {
//        int[] arr = new int[100];
//        for (int i = 0; i < array.size(); i++) {
//            Book b = array.get(i);
//            arr[i] = b.getBookid();
//        }//冒泡for (int i1 = 0; i1 < array.size() - 1; i1++) {for (int j = 0; j < array.size() - 1 - i1; j++) {Book book1 = array.get(j);Book book2 = array.get(j+1);if (book1.getBookid()>book2.getBookid()) {
//                    int temp=arr[j];
//                    arr[j]=arr[j+1];
//                    arr[j+1]=temp;Collections.swap(array, j, j + 1);}}}//书号分别是98765时排序正确(56789),但书号分别是342时排序结果却是324// 答案:if语句括号里哪两个对象比较,就应该哪两个对象互换,而不是比较这两个去换那两个System.out.println("已完成排序");//查看排序后的图书for (int i = 0; i < array.size(); i++) {Book b = array.get(i);System.out.println(b.getBookid() + "," +b.getBookname() + "," + b.getAuthor() +"," + b.getPublisher() +","+b.getPublication_date()+ "," + b.getBooknumber() +"," + b.getPrice());}}

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

//定义图书信息的修改public static void reviseBook(ArrayList<Book> array) {System.out.println("1.根据书号修改");System.out.println("2.根据书名修改");Scanner scanner = new Scanner(System.in);int a = Integer.parseInt(scanner.nextLine());if (!(a == 1 || a == 2)) {System.out.println("输入错误,请重新输写");}switch (a) {case 1:System.out.println("请输入书号:");int name1;name1 = Integer.parseInt(scanner.nextLine());if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {for (int i = 0; i < array.size(); i++) {Book book = array.get(i);if (name1 == book.getBookid()) {int a1;String a2;System.out.println("请输入修改后的书号");a1 = Integer.parseInt(scanner.nextLine());book.setBookid(a1);System.out.println("请输入修改后的书名");a2 = scanner.next();book.setBookname(a2);System.out.println("请输入修改后的作者");a2 = scanner.next();book.setAuthor(a2);System.out.println("请输入修改后的出版社");a2 = scanner.next();book.setPublisher(a2);System.out.println("请输入修改后的出版日期");a2 = scanner.next();book.setPublication_date(a2);System.out.println("请输入修改后的数量");a1 = Integer.parseInt(scanner.next());book.setBooknumber(a1);System.out.println("请输入修改后的定价");a2 = scanner.next();book.setPrice(a2);System.out.println("已完成图书信息的修改");}}}break;case 2:System.out.println("请输入书名:");String name2;name2 = scanner.nextLine();if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;}for (int i = 0; i < array.size(); i++) {Book book = array.get(i);if (name2.equals(book.getBookname())) {int a1;String a2;System.out.println("请输入修改后的书号");a1 = Integer.parseInt(scanner.nextLine());book.setBookid(a1);System.out.println("请输入修改后的书名");a2 = scanner.next();book.setBookname(a2);System.out.println("请输入修改后的作者");a2 = scanner.next();book.setAuthor(a2);System.out.println("请输入修改后的出版社");a2 = scanner.next();book.setPublisher(a2);System.out.println("请输入修改后的出版日期");a2 = scanner.next();book.setPublication_date(a2);System.out.println("请输入修改后的数量");a1 = Integer.parseInt(scanner.nextLine());book.setBooknumber(a1);System.out.println("请输入修改后的定价");a2 = scanner.next();book.setPrice(a2);System.out.println("已完成图书信息的修改");}}break;}}//定义图书信息的删除public static void deleteBook(ArrayList<Book> array) {System.out.println("你想通过哪种方式删除图书");System.out.println("1.书号");System.out.println("2.书名");Scanner scanner = new Scanner(System.in);int a = Integer.parseInt(scanner.nextLine());if (!(a == 1 || a == 2)) {System.out.println("输入错误,请重新输写");}switch (a) {case 1:System.out.println("请输入书号:");int name1;name1 = Integer.parseInt(scanner.nextLine());if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {for (int i = 0; i < array.size(); i++) {Book book = array.get(i);if (name1 == book.getBookid()) {array.remove(i);}}}System.out.println("删除书籍成功!");break;case 2:System.out.println("请输入书名:");String name2;name2 = scanner.nextLine();if (array.size() == 0) {System.out.println("您还没有添加书籍");//结束方法return;} else {for (int i = 0; i < array.size(); i++) {Book book = array.get(i);if (name2.equals(book.getBookname())) {array.remove(i);}}}System.out.println("删除书籍成功!");break;}}

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

//定义添加读者信息public static void addReader(ArrayList<Reader> arr) {Scanner sc = new Scanner(System.in);System.out.println("请输入学号:");long sreaderkid = Integer.parseInt(sc.nextLine());System.out.println("请输入姓名:");String sreadername = sc.nextLine();System.out.println("请输入学院:");String scollege = sc.nextLine();System.out.println("请输入专业班级:");String smajor_class = sc.nextLine();//创建读者对象,将键盘录入的数据赋值给读者对象的成员变量Reader readers = new Reader();readers.setManid(sreaderkid);readers.setManname(sreadername);readers.setCollege(scollege);readers.setMajor_class(smajor_class);arr.add(readers);System.out.println("添加学生信息成功");}

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

//定义查看读者信息public static void findReader(ArrayList<Reader> arr) {System.out.println("1.根据学号查找");System.out.println("2.根据姓名查找");System.out.println("3.根据专业班级查找");Scanner scanner = new Scanner(System.in);//将整型数据Integer转换为基本数据类型intint a = Integer.parseInt(scanner.nextLine());if (!(a == 1 || a == 2 || a == 3)) {System.out.println("输入错误,请重新输写");} else {switch (a) {case 1:System.out.println("请输入学号:");long name1;name1 = Long.parseLong(scanner.next());if (arr.size() == 0) {System.out.println("您还没有添加读者");//结束方法return;} else {System.out.println("学号\t\t姓名\t学院\t\t\t\t专业班级");for (int i = 0; i < arr.size(); i++) {Reader b = arr.get(i);if (name1 == b.getManid()) {System.out.println(b.getManid() + "," +b.getManname() + "," + b.getCollege() +"," + b.getMajor_class());}}}break;case 2:System.out.println("请输入姓名:");String name2;name2 = scanner.next();if (arr.size() == 0) {System.out.println("您还没有添加读者");//结束方法return;} else {System.out.println("学号\t\t姓名\t学院\t\t\t\t专业班级");for (int i = 0; i < arr.size(); i++) {Reader b = arr.get(i);if (name2.equals(b.getManname())) {System.out.println(b.getManid() + "," +b.getManname() + "," + b.getCollege() +"," + b.getMajor_class());}}}break;case 3:System.out.println("请输入专业班级:");String name3;name3 = scanner.next();if (arr.size() == 0) {System.out.println("您还没有添加读者");//结束方法return;} else {System.out.println("学号\t\t姓名\t学院\t\t\t\t专业班级");for (int i = 0; i < arr.size(); i++) {Reader b = arr.get(i);if (name3.equals(b.getMajor_class())) {System.out.println(b.getManid() + "," +b.getManname() + "," + b.getCollege() +"," + b.getMajor_class());}}}break;}}}

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

//定义冒泡排序public static void sortingReader(ArrayList<Reader> arr) {
//        long[] ar = new long[100];
//        for (int i = 0; i < arr.size(); i++) {
//            Reader r = arr.get(i);
//            ar[i] = Math.toIntExact(r.getManid());
//        }//冒泡for (int i = 0; i < arr.size() - 1; i++) {for (int j = 0; j < arr.size() - 1 - i; j++) {Reader reader1=arr.get(j);Reader reader2=arr.get(j+1);if (reader1.getManid()>reader2.getManid()) {Collections.swap(arr, j, j + 1);}}}System.out.println("已完成排序");//查看排序后的图书System.out.println("学号\t\t姓名 学院\t专业班级");for (int i = 0; i < arr.size(); i++) {Reader r = arr.get(i);System.out.println(r.getManid() + "," +r.getManname() + "," + r.getCollege() +"," + r.getMajor_class());}}

(因为学院是String类型的,所以这里只按学号进行升序排序)

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

  //定义读者信息修改public static void reviseReader(ArrayList<Reader> arr) {Scanner scanner = new Scanner(System.in);System.out.println("请输入学号");long a = Integer.parseInt(scanner.nextLine());System.out.println("请输入姓名");String b = scanner.next();if (arr.size() == 0) {System.out.println("您还没有添加读者");//结束方法return;} else {for (int i = 0; i < arr.size(); i++) {Reader r = arr.get(i);if (a == r.getManid() && b.equals(r.getManname())) {long a1;String a2;System.out.println("请输入修改后的学号");a1 = scanner.nextLong();r.setManid(a1);System.out.println("请输入修改后的姓名");a2 = scanner.next();r.setManname(a2);System.out.println("请输入修改后的学院");a2 = scanner.next();r.setCollege(a2);System.out.println("请输入修改后的专业班级");a2 = scanner.next();r.setMajor_class(a2);System.out.println("已完成读者信息的修改");}}}}//定义读者信息删除public static void deleteReader(ArrayList<Reader> arr) {Scanner sc = new Scanner(System.in);System.out.println("请输入该读者的学号");long a1 = sc.nextLong();System.out.println("请输入该读者的姓名");String a2 = sc.next();if (arr.size() == 0) {System.out.println("您还没有添加读者");//结束方法return;} else {for (int i = 0; i < arr.size(); i++) {Reader reader = arr.get(i);if (a1 == reader.getManid() && a2.equals(reader.getManname())) {arr.remove(i);}}System.out.println("已删除该读者");}}

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

//定义图书借阅public static void borrowingBook(ArrayList<BookBorrow> ar, ArrayList<Reader> arr, ArrayList<Book> array) {Scanner sc = new Scanner(System.in);boolean panduan1 = false;boolean panduan2 = false;Reader reader3 = null;//确定读者类对象System.out.println("请输入借阅者的学号(8位以内)");long a1 = sc.nextLong();System.out.println("请输入借阅的书号");int a2 = sc.nextInt();//判断输入的学号是否存在for (int i = 0; i < arr.size(); i++) {Reader reader1 = arr.get(i);if (a1 == reader1.getManid()) {panduan1 = true;}}//判断书号是否存在for (int j = 0; j < array.size(); j++) {Book book1 = array.get(j);if (a2 == book1.getBookid()) {panduan2 = true;}}if (panduan1 == true && panduan2 == true) {for (int i1 = 0; i1 < array.size(); i1++) {Book book2 = array.get(i1);//确定图书类对象if (a2 == book2.getBookid() && book2.getBooknumber() >= 1) {for (int i2 = 0; i2 < arr.size(); i2++) {Reader reader2 = arr.get(i2);if (a1 == reader2.getManid()) {reader3 = reader2;}}System.out.println("该图书剩余:" + book2.getBooknumber() + "本");System.out.println("请选择您要借出的数量");int n1 = sc.nextInt();if (n1 <= book2.getBooknumber()) {System.out.println("已成功借出");//获取日历类对象Calendar calendar = Calendar.getInstance();String year = String.valueOf(calendar.get(Calendar.YEAR));//校正后String nonth = String.valueOf(calendar.get(Calendar.MONTH) + 1);String day = String.valueOf(calendar.get(Calendar.DATE));calendar.add(Calendar.MONTH, 3);String year1 = String.valueOf(calendar.get(Calendar.YEAR));//校正后String nonth1 = String.valueOf(calendar.get(Calendar.MONTH) + 1);String day1 = String.valueOf(calendar.get(Calendar.DATE));//修改图书数量book2.setBooknumber(book2.getBooknumber() - n1);//读者reader3,图书book2BookBorrow bookBorrow = new BookBorrow();bookBorrow.setBookid(book2.getBookid());bookBorrow.setBookname(book2.getBookname());bookBorrow.setBorrowerid(reader3.getManid());bookBorrow.setBorrowername(reader3.getManname());bookBorrow.setBorrowtime(year + "年" + nonth + "月" + day + "日");bookBorrow.setDuedate(year1 + "年" + nonth1 + "月" + day1 + "日");//将图书借阅者对象添加到集合中ar.add(bookBorrow);}}}} else {System.out.println("您输入的学号或书号有误");}}

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

  //定义图书归还public static void returnBook(ArrayList<BookBorrow> ar, ArrayList<Reader> arr, ArrayList<Book> array) {Scanner scanner = new Scanner(System.in);System.out.println("请输入您的学号");long a1 = scanner.nextLong();System.out.println("请输入书号");int a2 = scanner.nextInt();boolean panduan1 = false;boolean panduan2 = false;//判断输入的学号是否存在for (int i = 0; i < arr.size(); i++) {Reader reader1 = arr.get(i);if (a1 == reader1.getManid()) {panduan1 = true;}}//判断书号是否存在for (int j = 0; j < array.size(); j++) {Book book1 = array.get(j);if (a2 == book1.getBookid()) {panduan2 = true;}}if (panduan1 == true && panduan2 == true) {for (int i = 0; i < array.size(); i++) {Book book1=array.get(i);if (a2==book1.getBookid()){System.out.println("请输入您归还的数量");int n;n= scanner.nextInt();book1.setBooknumber(book1.getBooknumber()+n);//不知道如何引用借出的数量Calendar c=Calendar.getInstance();String year= String.valueOf(c.get(Calendar.YEAR));String month= String.valueOf(c.get(Calendar.MONTH)+1);String date= String.valueOf(c.get(Calendar.DATE));//找借阅者(学号加书号)for (int i1 = 0; i1 < ar.size(); i1++) {BookBorrow bookBorrow=ar.get(i1);if (bookBorrow.getBookid()==a2&&bookBorrow.getBorrowerid()==a1){bookBorrow.setReturntime(year+"年"+month+"月"+date+"日");System.out.println("图书归还成功!");}}}}} else {System.out.println("您的输入有误");}}

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

//定义图书借阅查询public static void findBookborrow(ArrayList<BookBorrow> ar, ArrayList<Reader> arr, ArrayList<Book> array){if (ar.size()==0){System.out.println("您还没有添加借阅者信息");return;}System.out.println("请选择您要查询的方式");System.out.println("1.按学号");System.out.println("2,桉书名");System.out.println("3,按学院");Scanner scanner=new Scanner(System.in);int n1= scanner.nextInt();switch(n1){case 1:System.out.println("请输入您想查询的学号");long mid= scanner.nextLong();System.out.println("学号 姓名 书号 书名 借阅日期 应还日期 归还日期");for (int i = 0; i < ar.size(); i++) {BookBorrow bookBorrow=ar.get(i);if (bookBorrow.getBorrowerid()==mid){System.out.println(bookBorrow.getBorrowerid()+","+bookBorrow.getBorrowername()+","+bookBorrow.getBookid()+","+bookBorrow.getBookname()+","+bookBorrow.getBorrowtime()+","+bookBorrow.getDuedate()+","+bookBorrow.getReturntime());}}break;case 2:System.out.println("请输入您想查询的书名");String bname= scanner.nextLine();System.out.println("学号 姓名 书号 书名 借阅日期 应还日期 归还日期");for (int i = 0; i < ar.size(); i++) {BookBorrow bookBorrow=ar.get(i);if (bname.equals(bookBorrow.getBookname())){System.out.println(bookBorrow.getBorrowerid()+","+bookBorrow.getBorrowername()+","+bookBorrow.getBookid()+","+bookBorrow.getBookname()+","+bookBorrow.getBorrowtime()+","+bookBorrow.getDuedate()+","+bookBorrow.getReturntime());}}break;case 3:System.out.println("请输入您想查询的学院");String mcollege= scanner.nextLine();System.out.println("学号 姓名 书号 书名 借阅日期 应还日期 归还日期");for (int i = 0; i < arr.size(); i++) {Reader reader=arr.get(i);if (mcollege.equals(reader.getCollege())){for (int i1 = 0; i1 < ar.size(); i1++) {BookBorrow bookBorrow=ar.get(i1);if (reader.getManid()== bookBorrow.getBookid()){System.out.println(bookBorrow.getBorrowerid()+","+bookBorrow.getBorrowername()+","+bookBorrow.getBookid()+","+bookBorrow.getBookname()+","+bookBorrow.getBorrowtime()+","+bookBorrow.getDuedate()+","+bookBorrow.getReturntime());}else {System.out.println("没有在借阅者信息表中找到此人!");}}}else {System.out.println("读者中无人在此学院!");}}break;default:System.out.println("您的输入有误!");}}

总结:

这个做的比较早,一开始的思路是等学完I/O流再做,后来发现用ArrayList也能实现,所以就用它磕磕绊绊的做出来了,目前还在学习中,希望以后能越做越快,越做越好,加油!


http://chatgpt.dhexx.cn/article/JInrMtE9.shtml

相关文章

Java实现简单图书管理系统

目录 利物浦是冠军&#xff01; 一、图书管理系统的功能 二、图书管理系统的基本实现思路 1、Book包 2、user包 3、operation包 4、利用Main函数来连接所有包 三、图书管理系统的具体实现 1、Book包 &#xff08;1&#xff09;book类 &#xff08;2&#xff09;bookL…

Java实现图书管理系统(超详细解析)

图书管理系统简单实现。图书管理系统基于Java&#xff0c;页面使用jsp实现。 用户进入登录页面&#xff0c;输入账号密码&#xff0c;系统会自动检验账号和密码是否匹配&#xff0c;匹配成功则进入图书管理首页。首页查看图书信息&#xff0c;新增图书信息&#xff0c;删除不需…

Java实现简单的图书管理系统(讲解清晰,代码齐全,能正常运行)

目录 实现的样子 大致思路 代码 &#xff08;按照这个目录创建包&#xff09; 首先是book包下&#xff0c;有两个类 book类 bookList类 然后是operation包下&#xff0c;有7个类和1个接口 AddOperation类 BorrowOperation类 DelOperation类 DisplayOperation类 ExitO…

Java课程设计—— 图书管理系统

1系统需求分析 1.1功能需求分析 本课题根据图书信息管理综合分析&#xff0c;便出于方便管理考虑&#xff0c;将图书信息管理系统的功能总结起来&#xff0c;共需要实现以下几个方面功能: 1.1.1管理图书信息 管理所有图书的基本信息&#xff0c;对图书信息的操作包括添加、…

用Java实现简易的图书管理系统(超详细)

目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义规范) 3.6 操作类的具体实现 3.6.1 增加操作 3.6.2 查找操作 3.6.3 删除操作 3.6…

mysql 数组函数_mysql数组函数知识讲解

MySQL的数组函数有很多种&#xff0c;今天给大家介绍的就是mysql数组中的mysql_fetch_array()函数&#xff0c;mysql_fetch_array()函数的代码编写有什么特点呢&#xff1f; MySQL中有很多功能强大的函数&#xff0c;下面为您介绍的函数mysql_fetch_array()属于MySQL数组函数&a…

MySQL聚合函数

一、聚合函数介绍 1、聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。 2、聚合函数类型 AVG() SUM() MAX() MIN() COUNT() 3、聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。 二、AVG和SUM函数 # AVG函数用于求一组数据的平均值&a…

MySql常用函数大全讲解

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数&#xff0c;可以简化用户的操作。例如&#xff0c;字符串连接函数可以很方便的将多个字符串连接在一起。在这一讲中…

MySql统计函数COUNT详解

MySql统计函数COUNT详解 1. COUNT()函数概述2. COUNT()参数说明3. COUNT()判断存在4. COUNT()阿里开发规范 1. COUNT()函数概述 COUNT() 是一个聚合函数&#xff0c;返回指定匹配条件的行数。开发中常用来统计表中数据&#xff0c;全部数据&#xff0c;不为NULL数据&#xff0…

MYSQL窗口函数

文章目录 一、为何使用窗口函数二、什么是窗口函数三、窗口函数如何使用3.1 序号函数3.2 分布函数3.3 前后函数3.4 头尾函数3.5 其他函数3.6 聚类窗口函数 一、为何使用窗口函数 在日常工作中经常会遇到类似这样的需求&#xff1a; 怎么样得到各部门工资排名前N名的员工列表?…

MySQL常见函数

一、单行函数 1.1 字符函数 length(str)&#xff1a;统计字符串的字节数&#xff08;取决于编码方式&#xff0c;utf8汉字3字节&#xff0c;gbk汉字2字节&#xff09;concat(str1, str2)&#xff1a;拼接字符substr/substring(str, n1 [,n2])&#xff1a;切割字符&#xff0c…

MySQL常用函数大全(总结篇)

本篇文章讲解是是MySQL的函数方法&#xff0c;涵盖所有的MySQL常见的方法。下面是本篇文章的目录结构&#xff0c;可以根据自己需求点击右方目录查找&#xff1a; 一、数字函数二、字符串函数三、日期函数四、MySQL高级函数 &#xff08;一&#xff09;数字函数 1、ABS(x) 返…

MySQL常用函数大全(实例演示)

此博客主要包括如下类型函数&#xff1a; 一、数字函数 二、字符串函数 三、日期函数 四、MySQL高级函数 一、数字函数 1、ABS(x) 返回x的绝对值 SELECT ABS(-1); 结果&#xff1a; 2、AVG(expression) 返回一个表达式的平均值&#xff0c;expression 是一个字段 SELE…

MySql常用函数大全

MySql常用函数大全 MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数&#xff0c;可以简化用户的操作。例如&#xff0c;字符串连接函数可以很方便的将多个字符串连接…

MySQL函数大全

目录 &#xff08;一&#xff09;字符函数 ①length(str)函数 ②concat(str1,str2,...)函数 ③upper(str)、lower(str)函数 ④substr(str,start,len)函数 ⑤instr(str,要查找的子串)函数 ⑥trim(str)函数 ⑦lpad(str,len,填充字符)、rpad(str,len,填充字符)函数 ⑧rep…

MySQL函数(经典收藏)

MySQL函数&#xff08;经典收藏&#xff09; MySQL函数 MySQL数据库提供了很多函数包括&#xff1a; 数学函数&#xff1b;字符串函数&#xff1b;日期和时间函数&#xff1b;条件判断函数&#xff1b;系统信息函数&#xff1b;加密函数&#xff1b;格式化函数&#xff1b; …

MySql常用函数大全(详细)

一、数学函数 &#xff08;1&#xff09;ABS&#xff08;x&#xff09;返回绝对值&#xff1b;例&#xff1a; &#xff08;2&#xff09;PI&#xff08;&#xff09;返回圆周率的函数&#xff0c;默认值为小数后六位&#xff1b;例&#xff1a; &#xff08;3&#xff09;求函…

齐全且实用的MySQL函数使用大全

目录 一、MySQL函数介绍 二、MySQL函数分类 &#xff08;一&#xff09;单行函数 ①字符串函数 ②数学函数 ③日期函数 ④流程控制函数 ⑤系统信息函数 ⑥其他函数 &#xff08;二&#xff09;聚合函数 三、函数使用示例 &#xff08;一&#xff09;字符函数 ①le…

sql注入的小工具介绍

sql注入的小工具介绍 啊D注入工具&#xff1a; pangolin&#xff08;穿山甲&#xff09; 穿山甲&#xff1b;Pangolin&#xff08;中文译名为穿山甲&#xff09;一款帮助渗透测试人员进行Sql注入测试的安全工具&#xff0c;是深圳宇造诺赛科技有限公司(Nosec)旗下的网站安全测…

sql注入检测工具 mysql_SQL注入测试

简介 SQL 注入是一种专门针对SQL语句的攻击方式。通过把SQL命令插入到web表单提交、输入域名或者页面请求的查询字符串中&#xff0c;利用现有的程序&#xff0c;来非法获取后台的数据库中的信息。在web的测试中涉及到的会比较多些。 注入原理 存在注入的原因是后台在编写程序时…