Java——图书管理系统

系统简介

1.本系统存有书籍信息与管理员、用户账号。管理员与用户(教师、学生)可以使用本系统。
2.系统数据存有以学号、工号为编号的空账号,用户可以输入工号、学号进行注册,管理员账号无法在本级系统注册,用户账号与管理员账号的默认密码都是编号,即工号、学号。
3.用户可以对书籍进行检索、借阅、归还,管理员可以对书籍进行检索、增加、删除、更改。管理员可以更改用户账号密码和信息。

系统功能

代码模块

Book类
属性:编号、书名、作者、是否在馆状态
方法:获取与设置属性

package com.LibraryManagementSystem.Book;import java.io.Serializable;//书
public class Book implements Serializable {private String Num;    //书籍编号private String Name;    //书名private String Author;  //作者private boolean Status; //是否在馆中的状态public Book (String Num, String Name, String Author, boolean Status) {    //构造方法传入属性this.Num = Num;this.Name = Name;this.Author = Author;this.Status = Status;}//获取与设置书本属性的方法public void setNum(String num) {   //设置与获取属性的方法this.Num = num;}public String getNum() {return Num;}public void setName(String name) {this.Name = name;}public String getName() {return Name;}public void setAuthor(String author) {this.Author = author;}public String getAuthor() {return Author;}public void setStatus(boolean status) {this.Status = status;}public boolean getStatus() {return Status;}@Overridepublic String toString() {return "书 { " +"编号: " + Num +" , 书名: 《 " + Name +" 》 , 作者: " + Author +" , 是否在馆: " + Status +" }";}}

用户

学生用户

Student类
属性:学号、姓名、学院、专业
方法:获取与设置属性

package com.LibraryManagementSystem.User.Student;import java.io.Serializable;//学生用户类
public class Student implements Serializable {//学生用户有学号、密码、姓名、学院、专业属性private String Id;private String key;private String name;private String college;private String major;//构造方法public Student(String Id, String key, String name, String college, String major) {this.Id = Id;this.key = key;this.name = name;this.college = college;this.major = major;}//获取、设置属性的方法public String getId() {return Id;}public void setId(String Id) {this.Id = Id;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCollege() {return college;}public void setCollege(String college) {this.college = college;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}@Overridepublic String toString() {return "学生用户 { " +"编号 : " + Id +" , 姓名 : " + name +" , 学院 :" + college +" , 专业 :" + major +" }";}}

教师用户

Teacher类
属性:工号、姓名、部门
方法:获取与设置属性

package com.LibraryManagementSystem.User.Teacher;import java.io.Serializable;//教师用户类
public class Teacher implements Serializable {//教师用户有工号、密码、姓名、部门属性private String Id;private String key;private String name;private String apartment;//构造方法public Teacher(String Id, String key, String name, String apartment) {this.Id = Id;this.key = key;this.name = name;this.apartment = apartment;}public String getId() {return Id;}public void setId(String id) {this.Id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getKey() { return key; }public void setKey(String key) { this.key = key; }public String getApartment() {return apartment;}public void setApartment(String apartment) {this.apartment = apartment;}@Overridepublic String toString() {return "教师用户 { " +"编号 : " + Id +" , 姓名 : " + name+" , 部门 : " + apartment+ " } ";}
}

管理员

Librarian 类
属性:工号、姓名
方法:获取与设置属性、整理书籍、更改用户密码、更改用户信息
管理员独有方法
1.整理书籍
----将书架的书籍按编号进行排序
2.更改用户密码
----先选择要更改的账号是教师用户账号还是学生用户账号,再输入工号或者学号找到要更改的账号,输入并设置新密码
3.更改用户信息
----先选择要更改的账号是教师用户账号还是学生用户账号,再输入工号或者学号找到要改改账号,选择要更改的属性,输入并设置新属性

package com.LibraryManagementSystem.User.Librarian;import java.io.Serializable;//管理员用户类
public class Librarian implements Serializable {//管理员用户有工号、密码、姓名属性private String Id;private String name;private String key;//构造方法public Librarian(String Id, String name, String key) {this.Id = Id;this.name = name;this.key = key;}//获取、设置属性的方法public String getId() {return Id;}public void setId(String id) {Id = id;}public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "管理员 {" +" 编号: " + Id +" , 姓名: " + name+ " } " ;}}

数据的储存

书架

BookList类
属性:books ( Book 类型数组 —— 存储 Book 对象 )
方法:操作 ( Book 类型数组 —— 存储 Book 对象 )

package com.LibraryManagementSystem.Book;import java.io.Serializable;public class BookList implements Serializable {//序列化版本号private static final long serialVersionUID = 1L;//书都是同一类型的元素,创建一个数组来存储书private Book[] books;private int count;//书架先放四本书public BookList(){this.books = new Book[10];books[0] = new Book("1001","Java从入门到精通","明日科技",true);books[1] = new Book("1002","浮生六记","沈复",true);books[2] = new Book("1003","What Life Should Mean to You","Alfred Adler",true);books[3] = new Book("1004","飘","简·爱",true);count = 4;}//获取书架、数量、容量、属性和设置属性的方法public Book[] getBooks() { return books; }public void setCount(int count) {this.count = count;}public int getCount() {return count;}public void setBooks(int num,Book book) {books[num] = book;count++;}public Book getBook(int num) {return this.books[num];}public int getSIZE() {return this.books.length;}
}

学生用户名单

StudentList类
属性:students ( Student 数组——存储 Student 对象 )
方法:操作 students ( Student 数组——存储 Student 对象 )

package com.LibraryManagementSystem.User.Student;import java.io.Serializable;//学生用户名单
public class StudentList implements Serializable {//序列化版本号private static final long serialVersionUID = 3L;//学生都是同一类型的元素,创建一个数组来存储学生用户private Student[] students;private int count;//学生用户名单先放五个学生public StudentList() {this.students = new Student[5000];students[0] = new Student("300001","300001","朱自清","文学院","汉语言文学");students[1] = new Student("300002","300002","毕加索","美术学院","中国画");students[2] = new Student("300003","300003","颜回","历史与文化学院","古代文化");students[3] = new Student("300004","300004","司马光","数学与统计学院","数学师范");students[4] = new Student("300005","300005","富兰克林","文理学院","实验班");count = 5;}//获取学生用户及名单、数量、容量、属性和设置属性的方法public Student[] getStudents() {return students;}public Student getStudent(int num) { return students[num]; }public void setStudents(Student[] students) {this.students = students;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public int getSIZE() { return this.students.length; }//删除学生用户的方法public void remove(Student student) {student.setName(null);student.setCollege(null);student.setMajor(null);}}

教师用户名单

StudentList类
属性:students ( Student 数组——存储 Student 对象 )
方法:操作 students ( Student 数组——存储 Student 对象 )

package com.LibraryManagementSystem.User.Teacher;import java.io.Serializable;//教师用户名单
public class TeacherList implements Serializable {//序列化版本号private static final long serialVersionUID = 4L;//教师都是同一类型的元素,创建一个数组来存储教师private Teacher[] teachers;private int count=4;//教师用户名单先放四个教师用户public TeacherList() {this.teachers = new Teacher[500];teachers[0] = new Teacher("200001","200001","朱自清","文学院");teachers[1] = new Teacher("200002","200002","齐白石","美术学院");teachers[2] = new Teacher("200003","200003","陈演恪","历史与文化学院");teachers[3] = new Teacher("200004","200004","罗华庚","数学与统计学院");count = 4;}//获取教师用户及名单、数量、容量、属性和设置属性的方法public Teacher getTeacher(int num) { return teachers[num]; }public Teacher[] getTeachers() {return teachers;}public void setTeachers(Teacher[] teachers) {this.teachers = teachers;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public int getSIZE() { return this.teachers.length; }//删除教师用户的方法public void remove(Teacher teacher) {teacher.setName(null);teacher.setApartment(null);}}

管理员名单

LibrarianList类
属性:librarians ( Librarian 类型数组——存储 Librarian 对象 )
方法:操作 librarians ( Librarian 类型数组——存储 Librarian 对象 )

package com.LibraryManagementSystem.User.Librarian;import java.io.Serializable;//管理员用户名单
public class LibrarianList implements Serializable {//序列化版本号private static final long serialVersionUID = 2L;//管理员都是同一类型的元素,创建一个数组来存储管理员private Librarian[] librarians;private int count;//管理员名单先放四个默认管理员public LibrarianList() {this.librarians = new Librarian[50];librarians[0] = new Librarian("100001","小萌","100001");librarians[1] = new Librarian("100002","小赵","100002");librarians[2] = new Librarian("100003","大刘","100003");librarians[3] = new Librarian("100004","明明","100004");count = 4;}//获取管理员用户及名单、数量、容量、属性和设置属性的方法public Librarian getLibrartian( int num ) { return this.librarians[num]; }public Librarian[] getLibrarians() {return librarians;}public void setLibrarians(Librarian[] librarians) {this.librarians = librarians;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public int getSIZE() { return this.librarians.length; }}

对图书的操作

查询书籍

输入书籍名字,在书架中找到这本书,展示

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//查找一本书
public class SearchBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {System.out.println("查找书籍");Book[] books = bookList.getBooks(); //获取书架中存储书的数组while (true) {System.out.println("请输入你想要查找的书籍的书名,或者输入 0 退出");String name = in.next();if(name.equals("0")) {System.out.println("退出");break;}else {int i;for(i=0;i<bookList.getCount();i++) {//找到了要查找的书籍if (books[i].getName().equals(name)) {System.out.println("小图在书架找到了这本书,"+'\n'+books[i]);break;}//没有找到else if(i == bookList.getCount()-1) {System.out.println("非常抱歉,小图没有在书架找到这本书,请你重新输入书名:");break;}}}}System.out.println("本次查找操作结束,请告诉小图接下来的指示:");return;}
}

展示书架

展示书架的所有书

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//展示书架所有书籍
public class ShowBookList implements Serializable {Scanner in = new Scanner( System.in );public void work(BookList bookList) {Book[] books = bookList.getBooks(); //获取存储书本的数组System.out.println("书架所有书籍展示如下:");for (int i = 0; i < bookList.getCount(); i++) {//            books[i].showBook();          输出结果没有对齐
//            System.out.println();System.out.println(books[i]);}System.out.println("本次展示操作完成,请告诉小图接下来的指示:");}}

借阅书籍

输入书籍名字,在书架找到这本书,设置这本书的是否在馆状态为 False

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//借阅书架中的一本书
public class BorrowBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {Book[] books = bookList.getBooks(); //获取书架中存储书的数组while (true) {System.out.println("请输入你想要借阅的书籍的书名,或者输入 0 返回");String name = in.next();if(name.equals("0")) {System.out.println("返回");break;}else {int i=0;for(i=0;i<bookList.getCount();i++) {//找到了要借阅的书籍if (books[i].getName().equals(name)) {System.out.println("小图找到了这本书:"+'\n'+books[i]);//如果这本书已经被借出if( ! books[i].getStatus() ) {System.out.println("非常抱歉,这本书已经被借出,不在馆内");}//如果这本书没有被借出else {System.out.println("请选择是否要借阅这本书:    任意内容 > 借阅 , 0 > 取消");String choice = in.next();if(choice.equals("0")) {System.out.println("好了,已经取消,请告诉小图接下来的指示:");}else {System.out.println("好了,你借阅这本书成功,请告诉小图接下来的指示:");books[i].setStatus(false);System.out.println(books[i]);
//                                //跳出找书的for循环
//                                i=bookList.getCount();}}break;}//没有找到else if(i == bookList.getCount()-1) {System.out.println("非常抱歉,小图没有在书库找到这本书,请你重新输入书名:");break;}}}}System.out.println("本次借阅操作结束");return;}
}

归还书籍

输入书籍名字,在书架找到这本书,设置这本书的是否在馆状态为 True

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//归还一本书
public class ReturnBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {Book[] books = bookList.getBooks(); //获取书架中存储书的数组while (true) {System.out.println("请输入你想要归还的书籍的书名,或者输入 0 返回");String name = in.next();if(name.equals("0")) {System.out.println("返回");break;}else {int i=0;for(i=0;i<bookList.getCount();i++) {//找到了要归还的书籍if (books[i].getName().equals(name)) {System.out.println("小图在书架找到了这本书:"+'\n'+books[i]);//如果这本书原已经在馆内if( books[i].getStatus() ) {System.out.println("这本书正在馆内,无需归还哦");break;}//如果这本书不在馆内else {System.out.println("确认现在归还这本书吗:    任意内容 > 归还 , 0 > 取消");String choice = in.next();if(choice.equals("0")) {System.out.println("已经取消,请告诉小图接下来的指示:");
//                                //跳出找书的for循环
//                                i=bookList.getCount();}else {System.out.println("好了,归还这本书成功,请告诉小图接下来的指示:");books[i].setStatus(true);System.out.println(books[i]);
//                                //跳出找书的for循环
//                                i=bookList.getCount();}}break;}
//                    //如果书本已经在馆内
//                    if( k!=-1 && books[k].getStatus() ) {//                        break;
//                    }//没有找到else if(i == bookList.getCount()-1) {System.out.println("没有找到这本书!请重新输入书名:");break;}}}}System.out.println("本次归还操作结束,请告诉小图接下来的指示:");return;}
}

增加书籍

输入书的编号、名字、作者,新建对应的书籍对象,设置是否在馆状态为是,将其加入书架

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//增加一本书到书架中
public class AddBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {System.out.println("增加书籍");int count = bookList.getCount();int size = bookList.getSIZE();
//        int bookNum=-1; //默认输入的编号有误
//        int choice=-1;  //默认输入的命令有误if (count == size) {System.out.println("当前书架已满,无法添加书籍");} else {while (true) {//                while(true) {//System.out.println("是否要添加一本书籍进入书架:    任意内容 > 添加  ,  0 > 返回");String choice = in.next();if (choice.equals("0")) {System.out.println("返回");break;}
//                else if (choice.equals("1")) {System.out.println("你选择了添加:");System.out.println("请输入要添加的书籍的编号:");String bookNum = in.next();System.out.println("请输入要添加的书籍的书名:");String bookName = in.next();System.out.println("请输入要添加的书籍的作者:");String bookAuthor = in.next();Book book = new Book(bookNum, bookName, bookAuthor, false);System.out.println(book);System.out.println("是否确定添加这本书到书架中?   任意内容 > 添加  ,  0 > 取消Add");String choice1 = in.next();if(choice1.equals("0")){System.out.println("取消成功,请选择下一步操作:");}else {bookList.setBooks(count++, book);book.setStatus(true);System.out.println(bookList.getBook(count - 1));System.out.println("好了,小图已经把这本书放入书架了,请选择下一步操作:");}}}System.out.println("本次添加书籍操作结束");return;}}//  此处用if-else语句更便捷。switch语句不方便退出外部的while循环,需要在switch外加if判断是否需要退出while循环//                    switch (choice) {//                        case "0" :
//                            System.out.println("你选择了不添加!");
//                            break;
//                        case "1" :
//                            System.out.println("你选择了添加:");
//                            System.out.println("请输入要添加的书籍的编号:");
//                            String bookNum  = in.next();
//                            System.out.println("请输入要添加的书籍的书名:");
//                            String bookName = in.next();
//                            System.out.println("请输入要添加的书籍的作者:");
//                            String bookAuthor = in.next();
//                            Book book = new Book(bookNum,bookName,bookAuthor,true);
//                            bookList.setBooks(count++,book);
//                            System.out.println(bookList.getBook(count-1));
//                            System.out.println("添加此书成功!   请选择下一步操作:");
//                            break;
//                        default :
//                            System.out.println("未读取到有效命令,请重新输入:");
//                            break;//
//                    System.out.println("你输入的 "+unusage+" 不是可用命令,请重新输入!");
//
//
//                            System.out.println("你输入的编号 "+unusage+" 不是数字,请重新输入!");//                    try {//                    } catch(Exception e) {//
//                    }
//                    finally {//                        if(choice!=-1){//                            break;
//                        }
//                        String unusage = in.next();
//                        }
//                }
//                if(choice == 0) {//                    choice=-1;  //恢复输入的命令有误的默认
//                    break;
//                }
//                else {//                    while(true) {//
//                        try {//                            bookNum = in.nextInt();
//                        } catch(Exception e) {//
//                        }
//                        finally {//                            if(bookNum!=-1){//                                bookNum=-1; //恢复输入的编号有误的默认
//                                break;
//                            }
//                            String unusage = in.next();
//                        }
//                    }//                    System.out.println("请输入要添加的书籍的书名:");
//                    String bookName = in.next();
//                    System.out.println("请输入要添加的书籍的作者:");
//                    String bookAuthor = in.next();
//                    Book book = new Book(bookNum,bookName,bookAuthor,true);
//                    bookList.setBooks(count++,book);
//                    System.out.println(bookList.getBook(count-1));
//                    System.out.println("本次添加书籍成功!   请选择下一步操作:");
//                    choice = -1;    //恢复输入的命令有误的默认

删除书籍

输入书籍名字,在书架找到这本书,设置这本书编号外的属性为空

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//删除书架中的一本书
public class DeleteBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {Book[] books = bookList.getBooks(); //获取书架中存储书的数组while (true) {System.out.println("请输入你想要删除的书籍的书名,或者输入 0 返回");String name = in.next();if(name.equals("0")) {System.out.println("返回");break;}else {int i;for( i=0 ; i<bookList.getCount() ; i++ ) {if (books[i].getName().equals(name)) { //找到了要删除的书籍System.out.println("小图在书架找到了这本书:"+'\n'+books[i]);System.out.println("请选择是否要删除这本书:1 > 删除 , 任意内容 > 取消");String choice = in.next();if(choice.equals("1")) {System.out.println("好了,删除成功,请告诉小图接下来的指示:");    //删除数组元素(被删除的元素的后面的元素前移)for( int j=i+1 ; j<bookList.getCount() ; j++ ) {books[i++] = books[j++];}int temp = bookList.getCount()-1;bookList.setCount(temp);}else {System.out.println("好了,已经取消,请告诉小图接下来的指示:");}break;}else if(i == bookList.getCount()-1) {    //没有找到这本书System.out.println("非常抱歉,小图没有在书架上找到这本书,请你重新输入书名:");break;}}}}System.out.println("本次删除操作结束,请告诉小图接下来的指示:");return;}
}

改动书籍

输入书的名字,在书架中找到这本书,选择更改其属性

package com.LibraryManagementSystem.BookOperation;import com.LibraryManagementSystem.Book.Book;
import com.LibraryManagementSystem.Book.BookList;import java.io.Serializable;
import java.util.Scanner;//改动书架中的一本书
public class AlterBook implements Serializable {Scanner in = new Scanner(System.in);public void work(BookList bookList) {Book[] books = bookList.getBooks(); //获取书架中存储书的数组while (true) {System.out.println("请输入你想要更改的书籍的书名,或者输入 0 返回");String name = in.next();if(name.equals("0")) {System.out.println("返回");break;}for(int i=0;i<bookList.getCount();i++) {//找到了要改动的书籍if (books[i].getName().equals(name)) {System.out.println("小图在书架找到了这本书:"+'\n'+books[i]);while(true) {System.out.println("请选择你要对这本书进行的更改:    1 > 更改编号, 2 > 更改书名, 3 > 更改作者, 4 > 更改是否在库状态 , 任意内容 > 不更改");String choice = in.next();switch (choice) {case "1" :System.out.println("目前编号为:"+books[i].getNum()+" ,请输入你要为其更改到的编号:");String bookNum = in.next();books[i].setNum(bookNum);System.out.println("成功将《"+books[i].getName()+"》的编号改为"+bookNum);System.out.println("目前这本书的信息:");System.out.println(books[i]);break;case "2" :System.out.println("目前书名为:"+books[i].getName()+" ,请输入你要为其更改到的书名:");String bookName = in.next();String formalBookName = books[i].getName();books[i].setName(bookName);System.out.println("成功将《"+formalBookName+"》的书名改为"+bookName);System.out.println("目前这本书的信息:");System.out.println(books[i]);break;case "3" :System.out.println("目前作者为:"+books[i].getAuthor()+" ,请输入你要为其更改到的作者:");String bookAuthor = in.next();books[i].setAuthor(bookAuthor);System.out.println("成功将《"+books[i].getName()+"》的作者改为"+bookAuthor);System.out.println("目前这本书的信息:");System.out.println(books[i]);break;case "4" :System.out.println("目前是否在库状态为:"+books[i].getStatus()+" ,请输入你要为其更改到的是否在库状态:");boolean bookStatus = in.nextBoolean();books[i].setStatus(bookStatus);System.out.println("成功将《"+books[i].getName()+"》的是否在库状态改为"+bookStatus);System.out.println("目前这本书的信息:");System.out.println(books[i]);break;default :System.out.println("好了,不对这本书进行更改,请告诉小图接下来的指示:");work(bookList);break;}break;}}//没有找到else if(i == bookList.getCount()) {System.out.println("非常抱歉,小图没有在书架没有找到这本书");break;}}}return;}
}

用户的操作

学生用户操作菜单

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.BookOperation.BorrowBook;
import com.LibraryManagementSystem.BookOperation.ReturnBook;
import com.LibraryManagementSystem.BookOperation.SearchBook;
import com.LibraryManagementSystem.BookOperation.ShowBookList;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class StudentChooseOperations {Scanner in = new Scanner(System.in);//操作方法ShowBookList showBookList = new ShowBookList();SearchBook searchBook = new SearchBook();BorrowBook borrowBook = new BorrowBook();ReturnBook returnBook = new ReturnBook();Exit exit = new Exit();//选择做操作的方法public void work(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList ) {while( true ) {System.out.println("===================================================================================================");System.out.println("    请输入序号选择你要进行的操作: 1 > 展示书架 , 2 > 查询书籍 , 3 > 借阅书籍 , 4 > 归还书籍 , 0 > 退出");System.out.println("===================================================================================================");String choice = in.next();switch ( choice ) {case "0" :exit.work(bookList,librarianList,teacherList,studentList);break;case "1" :showBookList.work(bookList);break;case "2" :searchBook.work(bookList);break;case "3" :borrowBook.work(bookList);break;case "4" :returnBook.work(bookList);break;case "逍遥游" :showXiaoYaoYou();break;case "滕王阁序" :showTengWangGeXu();break;case "孔雀东南飞" :showKongQueDongNanFei();break;default:System.out.println("小图没有获取到有效命令,请小主重新输入:");break;}}}//彩蛋《逍遥游》public void showXiaoYaoYou() {System.out.println();System.out.println("《逍遥游》————庄子");System.out.println();System.out.println("  北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂\n" +"天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。《齐谐》者,志怪者也。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇\n" +"而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。天之苍苍,\n" +"其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟;置\n" +"杯焉则胶,水浅而舟大也。风之积也不厚,则其负大翼也无力。故九万里,则风斯在下矣,而后乃今培风;背负青天,而莫之夭阏者,而\n" +"后乃今将图南。蜩与学鸠笑之曰:“我决起而飞,抢榆枋而止,时则不至,\n" +"而控于地而已矣,奚以之九万里而南为?”适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!\n" +"小知不及大知,小年不及大年。奚以知其然也?朝菌不知晦朔,蟪蛄不知春秋,此小年也。楚之南有冥灵者,以五百岁为春,五百岁为秋\n" +";上古有大椿者,以八千岁为春,八千岁为秋。此大年也。而彭祖乃今以久\n" +"特闻,众人匹之,不亦悲乎?\n" +"\n" +"  汤之问棘也是已:“穷发之北,有冥海者,天池也。有鱼焉,其广数千里,未有知其修者,其名为鲲。有鸟焉,其名为鹏,背若泰山,\n" +"翼若垂天之云;抟扶摇羊角而上者九万里,绝云气,负青天,然后图南,且适南冥也。斥鷃笑之曰:‘彼且奚适也?我腾跃而上,不过数\n" +"仞而下,翱翔蓬蒿之间,此亦飞之至也。而彼且奚适也?’”此小大之辩也。\n" +"\n" +"  故夫知效一官、行比一乡、德合一君、而征一国者,其自视也,亦若此矣。而宋荣子犹然笑之。且举世誉之而不加劝,举世非之而不\n" +"加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世,未数数然也。虽然,犹有未树也。夫列子御风而行,泠然善也,旬有五日而后\n" +"反。彼于致福者,未数数然也。此虽免乎行,犹有所待者也。若夫乘天地之\n" +"正,而御六气之辩,以游无穷者,彼且恶乎待哉?故曰:至人无己,神人无功,圣人无名。\n" +"\n" +"  尧让天下于许由,曰:“日月出矣,而爝火不息;其于光也,不亦难乎?时雨降矣,而犹浸灌;其于泽也,不亦劳乎?夫子立而天下治,\n" +"而我犹尸之;吾自视缺然,请致天下。”许由曰:“子治天下,天下既已治也;而我犹代子,吾将为名乎?名者,实之宾也;吾将为宾乎?\n" +"鹪鹩巢于深林,不过一枝;偃鼠饮河,不过满腹。归休乎君,予无所用天\n" +"下为!庖人虽不治庖,尸祝不越樽俎而代之矣!”\n" +"\n" +"  肩吾问于连叔曰:“吾闻言于接舆,大而无当,往而不反。吾惊怖其言。犹河汉而无极也;大有径庭,不近人情焉。”连叔曰:“其言谓\n" +"何哉?”曰:“藐姑射之山,有神人居焉。肌肤若冰雪,淖约若处子,不食五谷,吸风饮露,乘云气,御飞龙,而游乎四海之外;其神凝,\n" +"使物不疵疠而年谷熟。吾以是狂而不信也。”连叔曰:“然。瞽者无以与乎文\n" +"章之观,聋者无以与乎钟鼓之声。岂唯形骸有聋盲哉?夫知亦有之!是其言也,犹时女也。之人也,之德也,将旁礴万物以为一,世蕲乎乱,\n" +"孰弊弊焉以天下为事!之人也,物莫之伤:大浸稽天而不溺,大旱金石流,土山焦而不热。是其尘垢秕糠将犹陶铸尧舜者也,孰肯以物为事?\n" +"”宋人资章甫而适诸越,越人断发文身,无所用之。尧治天下之民,平\n" +"海内之政,往见四子藐姑射之山,汾水之阳,窅然丧其天下焉。\n" +"\n" +"  惠子谓庄子曰:“魏王贻我大瓠之种,我树之成,而实五石。以盛水浆,其坚不能自举也。剖之以为瓢,则瓠落无所容。非不呺然大也\n," +"吾为其无用而掊之。”庄子曰:“夫子固拙于用大矣。宋人有善为不皲手之药者,世世以洴澼絖为事。客闻之,请买其方百金。聚族而谋\n" +"曰:‘我世世为洴澼絖,不过数金,今一朝而鬻技百金,请与之。’客得之,以\n" +"说吴王。越有难,吴王使之将,冬,与越人水战,大败越人。裂地而封之。能不皲手一也,或以封,或不免于洴澼絖,则所用之异也。\n" +"今子有五石之瓠,何不虑以为大樽,而浮乎江湖,而忧其瓠落无所容?则夫子犹有蓬之心也夫!”\n" +"\n" +"  惠子谓庄子曰:“吾有大树,人谓之樗。其大本拥肿而不中绳墨,其小枝卷曲而不中规矩,立之途,匠者不顾。今子之言大而无用,\n" +"众所同去也。”庄子曰:“子独不见狸狌乎?卑身而伏,以候敖者;东西跳梁,不辟高下;中于机辟,死于罔罟。今夫斄牛,其大若垂天\n" +"之云。此能为大矣,而不能执鼠。今子有大树,患其无用,何不树之于无何有之乡\n" +",广莫之野,彷徨乎无为其侧,逍遥乎寝卧其下。不夭斤斧,物无害者,无所可用,安所困苦哉!”");System.out.println();return;}//彩蛋《滕王阁序》public void showTengWangGeXu() {System.out.println();System.out.println("《滕王阁序》————王勃");System.out.println();System.out.println("  豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,\n" +"徐孺下陈蕃之榻。雄州雾列,俊采星驰。台隍枕夷夏之交,宾主尽东南之美。都督阎公之雅望,棨戟遥临;宇文新州之懿范,襜帷暂驻。\n" +"十旬休假,胜友如云;千里逢迎,高朋满座。腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库。家君作宰,路出名区;童子何知,\n" +"躬逢胜饯。(豫章故郡 一作:南昌故郡;青霜 一作:清霜)\n" +"  时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿。临帝子之长洲,得天人之旧馆。层峦耸翠,\n" +"上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。(天人 一作:仙人;层峦 一作:层台;即冈, \n" +"一作:列冈;飞阁流丹 一作:飞阁翔丹)\n" +"\n" +"  披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞\n" +"与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨,雁阵惊寒,声断衡阳之浦。(轴 通:舳;迷津 一作:弥津;云销雨霁,彩彻\n" +"区明 一作:虹销雨霁,彩彻云衢)\n" +"\n" +"  遥襟甫畅,逸兴遄飞。爽籁发而清风生,纤歌凝而白云遏。睢园绿竹,气凌彭泽之樽;邺水朱华,光照临川之笔。四美具,二难并。\n" +"穷睇眄于中天,极娱游于暇日。天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。望长安于日下,目吴会于云间。地势极而南溟深,\n" +"天柱高而北辰远。关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。怀帝阍而不见," +"奉宣室以何年?(遥襟甫畅 一作:遥吟俯畅)\n" +"\n" +"  嗟乎!时运不齐,命途多舛。冯唐易老,李广难封。屈贾谊于长沙,非无圣主;窜梁鸿于海曲,岂乏明时?所赖君子见机,达人知命。\n" +"老当益壮,宁移白首之心?穷且益坚,不坠青云之志。酌贪泉而觉爽,处涸辙以犹欢。北海虽赊,扶摇可接;东隅已逝,桑榆非晚。孟尝\n" +"高洁,空余报国之情;阮籍猖狂,岂效穷途之哭!(见机 一作:安贫;以犹欢 一作:" +"而相欢)\n" +"\n" +"  勃,三尺微命,一介书生。无路请缨,等终军之弱冠;有怀投笔,慕宗悫之长风。舍簪笏于百龄,奉晨昏于万里。非谢家之宝树,\n" +"接孟氏之芳邻。他日趋庭,叨陪鲤对;今兹捧袂,喜托龙门。杨意不逢,抚凌云而自惜;钟期既遇,奏流水以何惭?\n" +"\n" +"  呜呼!胜地不常,盛筵难再;兰亭已矣,梓泽丘墟。临别赠言,幸承恩于伟饯;登高作赋,是所望于群公。敢竭鄙怀,恭疏短引;\n" +"一言均赋,四韵俱成。请洒潘江,各倾陆海云尔。");System.out.println();}//彩蛋《孔雀东南飞》public void showKongQueDongNanFei() {System.out.println();System.out.println("《孔雀东南飞》————乐府诗集");System.out.println();System.out.println("  汉末建安中,庐江府小吏焦仲卿妻刘氏,为仲卿母所遣,自誓不嫁。其家逼之,乃投水而死。仲卿闻之,亦自缢于庭树。\n" +"时人伤之,为诗云尔。\n" +"\n" +"  孔雀东南飞,五里一徘徊。\n" +"\n" +"  “十三能织素,十四学裁衣。十五弹箜篌,十六诵诗书。十七为君妇,心中常苦悲。君既为府吏,守节情不移。贱妾留空房,相见常日稀。\n" +"鸡鸣入机织,夜夜不得息。三日断五匹,大人故嫌迟。非为织作迟,君家妇难为!妾不堪驱使,徒留无所施。便可白公姥,及时相遣归。”\n" +"\n" +"  府吏得闻之,堂上启阿母:“儿已薄禄相,幸复得此妇。结发同枕席,黄泉共为友。共事二三年,始尔未为久。女行无偏斜,何意致不厚。”\n" +"\n" +"  阿母谓府吏:“何乃太区区!此妇无礼节,举动自专由。吾意久怀忿,汝岂得自由!东家有贤女,自名秦罗敷。可怜体无比,阿母为汝求。\n" +"便可速遣之,遣去慎莫留!”\n" +"\n" +"  府吏长跪告:“伏惟启阿母。今若遣此妇,终老不复取!”\n" +"\n" +"  阿母得闻之,槌床便大怒:“小子无所畏,何敢助妇语!吾已失恩义,会不相从许!”\n" +"\n" +"  府吏默无声,再拜还入户。举言谓新妇,哽咽不能语:“我自不驱卿,逼迫有阿母。卿但暂还家,吾今且报府。不久当归还,还必相迎取。\n" +"以此下心意,慎勿违吾语。”\n" +"\n" +"  新妇谓府吏:“勿复重纷纭。往昔初阳岁,谢家来贵门。奉事循公姥,进止敢自专?昼夜勤作息,伶俜萦苦辛。谓言无罪过,供养卒大恩;\n" +"仍更被驱遣,何言复来还!妾有绣腰襦,葳蕤自生光;红罗复斗帐,四角垂香囊;箱帘六七十,绿碧青丝绳,物物各自异,种种在其中。\n" +"人贱物亦鄙,不足迎后人,留待作遗施,于今无会因。时时为安慰,久久莫相忘!”\n" +"\n" +"  鸡鸣外欲曙,新妇起严妆。著我绣夹裙,事事四五通。足下蹑丝履,头上玳瑁光。腰若流纨素,耳著明月珰。指如削葱根,口如含朱丹。\n" +"纤纤作细步,精妙世无双。\n" +"\n" +"  上堂拜阿母,阿母怒不止。“昔作女儿时,生小出野里。本自无教训,兼愧贵家子。受母钱帛多,不堪母驱使。今日还家去,念母劳家里。\n" +"”却与小姑别,泪落连珠子。“新妇初来时,小姑始扶床;今日被驱遣,小姑如我长。勤心养公姥,好自相扶将。初七及下九,嬉戏莫相忘。”\n" +"出门登车去,涕落百余行。\n" +"\n" +"  府吏马在前,新妇车在后。隐隐何甸甸,俱会大道口。下马入车中,低头共耳语:“誓不相隔卿,且暂还家去。吾今且赴府,不久当还归。\n" +"誓天不相负!”\n" +"\n" +"  新妇谓府吏:“感君区区怀!君既若见录,不久望君来。君当作磐石,妾当作蒲苇。蒲苇纫如丝,磐石无转移。我有亲父兄,性行暴如雷,\n" +"恐不任我意,逆以煎我怀。”举手长劳劳,二情同依依 。\n" +"\n" +"  入门上家堂,进退无颜仪。阿母大拊掌,不图子自归:“十三教汝织,十四能裁衣,十五弹箜篌,十六知礼仪,十七遣汝嫁,谓言无誓违。\n" +"汝今何罪过,不迎而自归?”兰芝惭阿母:“儿实无罪过。”阿母大悲摧。\n" +"\n" +"  还家十余日,县令遣媒来。云有第三郎,窈窕世无双。年始十八九,便言多令才。\n" +"\n" +"  阿母谓阿女:“汝可去应之。”\n" +"\n" +"  阿女含泪答:“兰芝初还时,府吏见丁宁,结誓不别离。今日违情义,恐此事非奇。自可断来信,徐徐更谓之。”\n" +"\n" +"  阿母白媒人:“贫贱有此女,始适还家门。不堪吏人妇,岂合令郎君?幸可广问讯,不得便相许。”\n" +"\n" +"  媒人去数日,寻遣丞请还,说有兰家女,承籍有宦官。云有第五郎,娇逸未有婚。遣丞为媒人,主簿通语言。直说太守家,有此令郎君,\n" +"既欲结大义,故遣来贵门。\n" +"\n" +"  阿母谢媒人:“女子先有誓,老姥岂敢言!”\n" +"\n" +"  阿兄得闻之,怅然心中烦。举言谓阿妹:“作计何不量!先嫁得府吏,后嫁得郎君。否泰如天地,足以荣汝身。不嫁义郎体,其往欲何云?”\n" +"  兰芝仰头答:“理实如兄言。谢家事夫婿,中道还兄门。处分适兄意,那得自任专!虽与府吏要,渠会永无缘。登即相许和,便可作婚姻。”\n" +"\n" +"  媒人下床去。诺诺复尔尔。还部白府君:“下官奉使命,言谈大有缘。”府君得闻之,心中大欢喜。视历复开书,便利此月内,六合正相应。\n" +"良吉三十日,今已二十七,卿可去成婚。交语速装束,络绎如浮云。青雀白鹄舫,四角龙子幡。婀娜随风转,金车玉作轮。踯躅青骢马,\n" +"流苏金镂鞍。赍钱三百万,皆用青丝穿。杂彩三百匹,交广市鲑珍。从人四五百,郁郁登郡门。\n" +"\n" +"  阿母谓阿女:“适得府君书,明日来迎汝。何不作衣裳?莫令事不举!”\n" +"\n" +"  阿女默无声,手巾掩口啼,泪落便如泻。移我琉璃榻,出置前窗下。左手持刀尺,右手执绫罗。朝成绣夹裙,晚成单罗衫。晻晻日欲暝,\n" +"愁思出门啼。\n" +"\n" +"  府吏闻此变,因求假暂归。未至二三里,摧藏马悲哀。新妇识马声,蹑履相逢迎。怅然遥相望,知是故人来。举手拍马鞍,嗟叹使心\n" +"伤:“自君别我后,人事不可量。果不如先愿,又非君所详。我有亲父母,逼迫兼弟兄。以我应他人,君还何所望!”\n" +"\n" +"  府吏谓新妇:“贺卿得高迁!磐石方且厚,可以卒千年;蒲苇一时纫,便作旦夕间。卿当日胜贵,吾独向黄泉!”\n" +"\n" +"  新妇谓府吏:“何意出此言!同是被逼迫,君尔妾亦然。黄泉下相见,勿违今日言!”执手分道去,各各还家门。生人作死别,恨恨那\n" +"可论?念与世间辞,千万不复全!\n" +"\n" +"  府吏还家去,上堂拜阿母:“今日大风寒,寒风摧树木,严霜结庭兰。儿今日冥冥,令母在后单。故作不良计,勿复怨鬼神!命如南山石,\n" +"四体康且直!”\n" +"\n" +"  阿母得闻之,零泪应声落:“汝是大家子,仕宦于台阁。慎勿为妇死,贵贱情何薄!东家有贤女,窈窕艳城郭,阿母为汝求,便复在旦夕。”\n" +"\n" +"  府吏再拜还,长叹空房中,作计乃尔立。转头向户里,渐见愁煎迫。\n" +"\n" +"  其日牛马嘶,新妇入青庐。奄奄黄昏后,寂寂人定初。“我命绝今日,魂去尸长留!”揽裙脱丝履,举身赴清池。\n" +"\n" +"  府吏闻此事,心知长别离。徘徊庭树下,自挂东南枝。\n" +"\n" +"  两家求合葬,合葬华山傍。东西植松柏,左右种梧桐。枝枝相覆盖,叶叶相交通。中有双飞鸟,自名为鸳鸯。仰头相向鸣,夜夜达五更。\n" +"行人驻足听,寡妇起彷徨。多谢后世人,戒之慎勿忘。");System.out.println();}}

教师用户操作菜单

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.BookOperation.BorrowBook;
import com.LibraryManagementSystem.BookOperation.ReturnBook;
import com.LibraryManagementSystem.BookOperation.SearchBook;
import com.LibraryManagementSystem.BookOperation.ShowBookList;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class TeacherChooseOperations {Scanner in = new Scanner(System.in);//存储操作方法的数组ShowBookList showBookList = new ShowBookList();SearchBook searchBook = new SearchBook();BorrowBook borrowBook = new BorrowBook();ReturnBook returnBook = new ReturnBook();Exit exit = new Exit();//选择做操作的方法public void work(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {while( true ) {System.out.println("================================================================================================");System.out.println("    请输入序号选择你要进行的操作: 1 > 展示书架 ,2 > 查询书籍 ,3 > 借阅书籍 ,4 > 归还书籍 , 0 > 退出");System.out.println("================================================================================================");String choice = in.next();switch ( choice ) {case "0" :exit.work(bookList,librarianList,teacherList,studentList);break;case "1" :showBookList.work(bookList);break;case "2" :searchBook.work(bookList);break;case "3" :borrowBook.work(bookList);break;case "4" :returnBook.work(bookList);break;case "逍遥游" :showXiaoYaoYou();break;case "滕王阁序" :showTengWangGeXu();break;case "孔雀东南飞" :showKongQueDongNanFei();break;default:System.out.println("小图没有获取到有效命令,请小主重新输入:");break;}}}//彩蛋《逍遥游》public void showXiaoYaoYou() {System.out.println();System.out.println("《逍遥游》————庄子");System.out.println();System.out.println("  北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂\n" +"天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。《齐谐》者,志怪者也。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇\n" +"而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。天之苍苍,\n" +"其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟;置\n" +"杯焉则胶,水浅而舟大也。风之积也不厚,则其负大翼也无力。故九万里,则风斯在下矣,而后乃今培风;背负青天,而莫之夭阏者,而\n" +"后乃今将图南。蜩与学鸠笑之曰:“我决起而飞,抢榆枋而止,时则不至,\n" +"而控于地而已矣,奚以之九万里而南为?”适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!\n" +"小知不及大知,小年不及大年。奚以知其然也?朝菌不知晦朔,蟪蛄不知春秋,此小年也。楚之南有冥灵者,以五百岁为春,五百岁为秋\n" +";上古有大椿者,以八千岁为春,八千岁为秋。此大年也。而彭祖乃今以久\n" +"特闻,众人匹之,不亦悲乎?\n" +"\n" +"  汤之问棘也是已:“穷发之北,有冥海者,天池也。有鱼焉,其广数千里,未有知其修者,其名为鲲。有鸟焉,其名为鹏,背若泰山,\n" +"翼若垂天之云;抟扶摇羊角而上者九万里,绝云气,负青天,然后图南,且适南冥也。斥鷃笑之曰:‘彼且奚适也?我腾跃而上,不过数\n" +"仞而下,翱翔蓬蒿之间,此亦飞之至也。而彼且奚适也?’”此小大之辩也。\n" +"\n" +"  故夫知效一官、行比一乡、德合一君、而征一国者,其自视也,亦若此矣。而宋荣子犹然笑之。且举世誉之而不加劝,举世非之而不\n" +"加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世,未数数然也。虽然,犹有未树也。夫列子御风而行,泠然善也,旬有五日而后\n" +"反。彼于致福者,未数数然也。此虽免乎行,犹有所待者也。若夫乘天地之\n" +"正,而御六气之辩,以游无穷者,彼且恶乎待哉?故曰:至人无己,神人无功,圣人无名。\n" +"\n" +"  尧让天下于许由,曰:“日月出矣,而爝火不息;其于光也,不亦难乎?时雨降矣,而犹浸灌;其于泽也,不亦劳乎?夫子立而天下治,\n" +"而我犹尸之;吾自视缺然,请致天下。”许由曰:“子治天下,天下既已治也;而我犹代子,吾将为名乎?名者,实之宾也;吾将为宾乎?\n" +"鹪鹩巢于深林,不过一枝;偃鼠饮河,不过满腹。归休乎君,予无所用天\n" +"下为!庖人虽不治庖,尸祝不越樽俎而代之矣!”\n" +"\n" +"  肩吾问于连叔曰:“吾闻言于接舆,大而无当,往而不反。吾惊怖其言。犹河汉而无极也;大有径庭,不近人情焉。”连叔曰:“其言谓\n" +"何哉?”曰:“藐姑射之山,有神人居焉。肌肤若冰雪,淖约若处子,不食五谷,吸风饮露,乘云气,御飞龙,而游乎四海之外;其神凝,\n" +"使物不疵疠而年谷熟。吾以是狂而不信也。”连叔曰:“然。瞽者无以与乎文\n" +"章之观,聋者无以与乎钟鼓之声。岂唯形骸有聋盲哉?夫知亦有之!是其言也,犹时女也。之人也,之德也,将旁礴万物以为一,世蕲乎乱,\n" +"孰弊弊焉以天下为事!之人也,物莫之伤:大浸稽天而不溺,大旱金石流,土山焦而不热。是其尘垢秕糠将犹陶铸尧舜者也,孰肯以物为事?\n" +"”宋人资章甫而适诸越,越人断发文身,无所用之。尧治天下之民,平\n" +"海内之政,往见四子藐姑射之山,汾水之阳,窅然丧其天下焉。\n" +"\n" +"  惠子谓庄子曰:“魏王贻我大瓠之种,我树之成,而实五石。以盛水浆,其坚不能自举也。剖之以为瓢,则瓠落无所容。非不呺然大也\n," +"吾为其无用而掊之。”庄子曰:“夫子固拙于用大矣。宋人有善为不皲手之药者,世世以洴澼絖为事。客闻之,请买其方百金。聚族而谋\n" +"曰:‘我世世为洴澼絖,不过数金,今一朝而鬻技百金,请与之。’客得之,以\n" +"说吴王。越有难,吴王使之将,冬,与越人水战,大败越人。裂地而封之。能不皲手一也,或以封,或不免于洴澼絖,则所用之异也。\n" +"今子有五石之瓠,何不虑以为大樽,而浮乎江湖,而忧其瓠落无所容?则夫子犹有蓬之心也夫!”\n" +"\n" +"  惠子谓庄子曰:“吾有大树,人谓之樗。其大本拥肿而不中绳墨,其小枝卷曲而不中规矩,立之途,匠者不顾。今子之言大而无用,\n" +"众所同去也。”庄子曰:“子独不见狸狌乎?卑身而伏,以候敖者;东西跳梁,不辟高下;中于机辟,死于罔罟。今夫斄牛,其大若垂天\n" +"之云。此能为大矣,而不能执鼠。今子有大树,患其无用,何不树之于无何有之乡\n" +",广莫之野,彷徨乎无为其侧,逍遥乎寝卧其下。不夭斤斧,物无害者,无所可用,安所困苦哉!”");System.out.println();return;}//彩蛋《滕王阁序》public void showTengWangGeXu() {System.out.println();System.out.println("《滕王阁序》————王勃");System.out.println();System.out.println("  豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,\n" +"徐孺下陈蕃之榻。雄州雾列,俊采星驰。台隍枕夷夏之交,宾主尽东南之美。都督阎公之雅望,棨戟遥临;宇文新州之懿范,襜帷暂驻。\n" +"十旬休假,胜友如云;千里逢迎,高朋满座。腾蛟起凤,孟学士之词宗;紫电青霜,王将军之武库。家君作宰,路出名区;童子何知,\n" +"躬逢胜饯。(豫章故郡 一作:南昌故郡;青霜 一作:清霜)\n" +"  时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿。临帝子之长洲,得天人之旧馆。层峦耸翠,\n" +"上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。(天人 一作:仙人;层峦 一作:层台;即冈, \n" +"一作:列冈;飞阁流丹 一作:飞阁翔丹)\n" +"\n" +"  披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞\n" +"与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨,雁阵惊寒,声断衡阳之浦。(轴 通:舳;迷津 一作:弥津;云销雨霁,彩彻\n" +"区明 一作:虹销雨霁,彩彻云衢)\n" +"\n" +"  遥襟甫畅,逸兴遄飞。爽籁发而清风生,纤歌凝而白云遏。睢园绿竹,气凌彭泽之樽;邺水朱华,光照临川之笔。四美具,二难并。\n" +"穷睇眄于中天,极娱游于暇日。天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。望长安于日下,目吴会于云间。地势极而南溟深,\n" +"天柱高而北辰远。关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。怀帝阍而不见," +"奉宣室以何年?(遥襟甫畅 一作:遥吟俯畅)\n" +"\n" +"  嗟乎!时运不齐,命途多舛。冯唐易老,李广难封。屈贾谊于长沙,非无圣主;窜梁鸿于海曲,岂乏明时?所赖君子见机,达人知命。\n" +"老当益壮,宁移白首之心?穷且益坚,不坠青云之志。酌贪泉而觉爽,处涸辙以犹欢。北海虽赊,扶摇可接;东隅已逝,桑榆非晚。孟尝\n" +"高洁,空余报国之情;阮籍猖狂,岂效穷途之哭!(见机 一作:安贫;以犹欢 一作:" +"而相欢)\n" +"\n" +"  勃,三尺微命,一介书生。无路请缨,等终军之弱冠;有怀投笔,慕宗悫之长风。舍簪笏于百龄,奉晨昏于万里。非谢家之宝树,\n" +"接孟氏之芳邻。他日趋庭,叨陪鲤对;今兹捧袂,喜托龙门。杨意不逢,抚凌云而自惜;钟期既遇,奏流水以何惭?\n" +"\n" +"  呜呼!胜地不常,盛筵难再;兰亭已矣,梓泽丘墟。临别赠言,幸承恩于伟饯;登高作赋,是所望于群公。敢竭鄙怀,恭疏短引;\n" +"一言均赋,四韵俱成。请洒潘江,各倾陆海云尔。");System.out.println();}//彩蛋《孔雀东南飞》public void showKongQueDongNanFei() {System.out.println();System.out.println("《孔雀东南飞》————乐府诗集");System.out.println();System.out.println("  汉末建安中,庐江府小吏焦仲卿妻刘氏,为仲卿母所遣,自誓不嫁。其家逼之,乃投水而死。仲卿闻之,亦自缢于庭树。\n" +"时人伤之,为诗云尔。\n" +"\n" +"  孔雀东南飞,五里一徘徊。\n" +"\n" +"  “十三能织素,十四学裁衣。十五弹箜篌,十六诵诗书。十七为君妇,心中常苦悲。君既为府吏,守节情不移。贱妾留空房,相见常日稀。\n" +"鸡鸣入机织,夜夜不得息。三日断五匹,大人故嫌迟。非为织作迟,君家妇难为!妾不堪驱使,徒留无所施。便可白公姥,及时相遣归。”\n" +"\n" +"  府吏得闻之,堂上启阿母:“儿已薄禄相,幸复得此妇。结发同枕席,黄泉共为友。共事二三年,始尔未为久。女行无偏斜,何意致不厚。”\n" +"\n" +"  阿母谓府吏:“何乃太区区!此妇无礼节,举动自专由。吾意久怀忿,汝岂得自由!东家有贤女,自名秦罗敷。可怜体无比,阿母为汝求。\n" +"便可速遣之,遣去慎莫留!”\n" +"\n" +"  府吏长跪告:“伏惟启阿母。今若遣此妇,终老不复取!”\n" +"\n" +"  阿母得闻之,槌床便大怒:“小子无所畏,何敢助妇语!吾已失恩义,会不相从许!”\n" +"\n" +"  府吏默无声,再拜还入户。举言谓新妇,哽咽不能语:“我自不驱卿,逼迫有阿母。卿但暂还家,吾今且报府。不久当归还,还必相迎取。\n" +"以此下心意,慎勿违吾语。”\n" +"\n" +"  新妇谓府吏:“勿复重纷纭。往昔初阳岁,谢家来贵门。奉事循公姥,进止敢自专?昼夜勤作息,伶俜萦苦辛。谓言无罪过,供养卒大恩;\n" +"仍更被驱遣,何言复来还!妾有绣腰襦,葳蕤自生光;红罗复斗帐,四角垂香囊;箱帘六七十,绿碧青丝绳,物物各自异,种种在其中。\n" +"人贱物亦鄙,不足迎后人,留待作遗施,于今无会因。时时为安慰,久久莫相忘!”\n" +"\n" +"  鸡鸣外欲曙,新妇起严妆。著我绣夹裙,事事四五通。足下蹑丝履,头上玳瑁光。腰若流纨素,耳著明月珰。指如削葱根,口如含朱丹。\n" +"纤纤作细步,精妙世无双。\n" +"\n" +"  上堂拜阿母,阿母怒不止。“昔作女儿时,生小出野里。本自无教训,兼愧贵家子。受母钱帛多,不堪母驱使。今日还家去,念母劳家里。\n" +"”却与小姑别,泪落连珠子。“新妇初来时,小姑始扶床;今日被驱遣,小姑如我长。勤心养公姥,好自相扶将。初七及下九,嬉戏莫相忘。”\n" +"出门登车去,涕落百余行。\n" +"\n" +"  府吏马在前,新妇车在后。隐隐何甸甸,俱会大道口。下马入车中,低头共耳语:“誓不相隔卿,且暂还家去。吾今且赴府,不久当还归。\n" +"誓天不相负!”\n" +"\n" +"  新妇谓府吏:“感君区区怀!君既若见录,不久望君来。君当作磐石,妾当作蒲苇。蒲苇纫如丝,磐石无转移。我有亲父兄,性行暴如雷,\n" +"恐不任我意,逆以煎我怀。”举手长劳劳,二情同依依 。\n" +"\n" +"  入门上家堂,进退无颜仪。阿母大拊掌,不图子自归:“十三教汝织,十四能裁衣,十五弹箜篌,十六知礼仪,十七遣汝嫁,谓言无誓违。\n" +"汝今何罪过,不迎而自归?”兰芝惭阿母:“儿实无罪过。”阿母大悲摧。\n" +"\n" +"  还家十余日,县令遣媒来。云有第三郎,窈窕世无双。年始十八九,便言多令才。\n" +"\n" +"  阿母谓阿女:“汝可去应之。”\n" +"\n" +"  阿女含泪答:“兰芝初还时,府吏见丁宁,结誓不别离。今日违情义,恐此事非奇。自可断来信,徐徐更谓之。”\n" +"\n" +"  阿母白媒人:“贫贱有此女,始适还家门。不堪吏人妇,岂合令郎君?幸可广问讯,不得便相许。”\n" +"\n" +"  媒人去数日,寻遣丞请还,说有兰家女,承籍有宦官。云有第五郎,娇逸未有婚。遣丞为媒人,主簿通语言。直说太守家,有此令郎君,\n" +"既欲结大义,故遣来贵门。\n" +"\n" +"  阿母谢媒人:“女子先有誓,老姥岂敢言!”\n" +"\n" +"  阿兄得闻之,怅然心中烦。举言谓阿妹:“作计何不量!先嫁得府吏,后嫁得郎君。否泰如天地,足以荣汝身。不嫁义郎体,其往欲何云?”\n" +"  兰芝仰头答:“理实如兄言。谢家事夫婿,中道还兄门。处分适兄意,那得自任专!虽与府吏要,渠会永无缘。登即相许和,便可作婚姻。”\n" +"\n" +"  媒人下床去。诺诺复尔尔。还部白府君:“下官奉使命,言谈大有缘。”府君得闻之,心中大欢喜。视历复开书,便利此月内,六合正相应。\n" +"良吉三十日,今已二十七,卿可去成婚。交语速装束,络绎如浮云。青雀白鹄舫,四角龙子幡。婀娜随风转,金车玉作轮。踯躅青骢马,\n" +"流苏金镂鞍。赍钱三百万,皆用青丝穿。杂彩三百匹,交广市鲑珍。从人四五百,郁郁登郡门。\n" +"\n" +"  阿母谓阿女:“适得府君书,明日来迎汝。何不作衣裳?莫令事不举!”\n" +"\n" +"  阿女默无声,手巾掩口啼,泪落便如泻。移我琉璃榻,出置前窗下。左手持刀尺,右手执绫罗。朝成绣夹裙,晚成单罗衫。晻晻日欲暝,\n" +"愁思出门啼。\n" +"\n" +"  府吏闻此变,因求假暂归。未至二三里,摧藏马悲哀。新妇识马声,蹑履相逢迎。怅然遥相望,知是故人来。举手拍马鞍,嗟叹使心\n" +"伤:“自君别我后,人事不可量。果不如先愿,又非君所详。我有亲父母,逼迫兼弟兄。以我应他人,君还何所望!”\n" +"\n" +"  府吏谓新妇:“贺卿得高迁!磐石方且厚,可以卒千年;蒲苇一时纫,便作旦夕间。卿当日胜贵,吾独向黄泉!”\n" +"\n" +"  新妇谓府吏:“何意出此言!同是被逼迫,君尔妾亦然。黄泉下相见,勿违今日言!”执手分道去,各各还家门。生人作死别,恨恨那\n" +"可论?念与世间辞,千万不复全!\n" +"\n" +"  府吏还家去,上堂拜阿母:“今日大风寒,寒风摧树木,严霜结庭兰。儿今日冥冥,令母在后单。故作不良计,勿复怨鬼神!命如南山石,\n" +"四体康且直!”\n" +"\n" +"  阿母得闻之,零泪应声落:“汝是大家子,仕宦于台阁。慎勿为妇死,贵贱情何薄!东家有贤女,窈窕艳城郭,阿母为汝求,便复在旦夕。”\n" +"\n" +"  府吏再拜还,长叹空房中,作计乃尔立。转头向户里,渐见愁煎迫。\n" +"\n" +"  其日牛马嘶,新妇入青庐。奄奄黄昏后,寂寂人定初。“我命绝今日,魂去尸长留!”揽裙脱丝履,举身赴清池。\n" +"\n" +"  府吏闻此事,心知长别离。徘徊庭树下,自挂东南枝。\n" +"\n" +"  两家求合葬,合葬华山傍。东西植松柏,左右种梧桐。枝枝相覆盖,叶叶相交通。中有双飞鸟,自名为鸳鸯。仰头相向鸣,夜夜达五更。\n" +"行人驻足听,寡妇起彷徨。多谢后世人,戒之慎勿忘。");System.out.println();}}

管理员用户操作菜单

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.BookOperation.*;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class LibrarianChooseOperations {Scanner in = new Scanner(System.in);//操作方法ShowBookList showBookList = new ShowBookList();SearchBook searchBook = new SearchBook();AddBook addBook = new AddBook();DeleteBook deleteBook = new DeleteBook();AlterBook alterBook = new AlterBook();SortBook sortBook = new SortBook();SetUserKey setUserKey = new SetUserKey();SetUser setUser = new SetUser();DeleteUser deleteUser = new DeleteUser();Exit exit = new Exit();//选择做操作的方法public void work(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {while( true ) {System.out.println("===========================================================================================================================================================================");System.out.println("    请输入序号选择你要进行的操作: 1 > 展示书架 ,2 > 查询书籍 ,3 > 增加书籍 ,4 > 删除书籍 ,5 > 改动书籍信息 ,6 > 整理书架  7 > 更改用户密码 ,8 > 更改用户属性 9 > 删除用户账号 , 0 > 退出 ");System.out.println("===========================================================================================================================================================================");String choice = in.next();switch ( choice ) {case "0" :exit.work(bookList,librarianList,teacherList,studentList);break;case "1" :showBookList.work(bookList);break;case "2" :searchBook.work(bookList);break;case "3" :addBook.work(bookList);break;case "4" :deleteBook.work(bookList);break;case "5" :alterBook.work(bookList);break;case "6" :sortBook.work(bookList);break;case "7" :setUserKey.work(teacherList,studentList);break;case "8" :setUser.work(teacherList,studentList);break;case "9" :deleteUser.work(teacherList,studentList);break;default:System.out.println("小图没有获取到有效命令,请小主重新输入:");break;}}}
}

修改用户属性

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class SetUser {Scanner in = new Scanner(System.in);//更改用户属性的方法public void work(TeacherList teacherList, StudentList studentList) {System.out.println("请选择要更改属性的用户类型:  1 > 教师用户 , 2 > 学生用户  , 任意内容 > 取消");String choice = in.next();//更改教师用户属性if(choice.equals("1")) {while(true) {System.out.println("请输入教师工号:");String teacherId = in.next();for(int i=0;i< teacherList.getCount();i++) {//找到了该用户if (teacherId.equals(teacherList.getTeacher(i).getId())) {System.out.println(teacherList.getTeachers()[i]);while (true) {System.out.println("请选择要更改的属性:  1 > 编号 , 2 > 姓名 , 3 > 部门 , 任意内容 > 取消");String choice11 = in.next();switch (choice11) {case "1" :System.out.println("请输入要改到的编号:");String newId = in.next();teacherList.getTeacher(i).setId(newId);System.out.println("更改成功:");System.out.println(teacherList.getTeacher(i));break;case "2" :System.out.println("请输入要改到的名字:");String newName = in.next();teacherList.getTeacher(i).setName(newName);System.out.println("更改成功:");System.out.println(teacherList.getTeacher(i));break;case "3" :System.out.println("请输入要改到的部门:");String newApartment = in.next();teacherList.getTeacher(i).setApartment(newApartment);System.out.println("更改成功:");System.out.println(teacherList.getTeacher(i));break;default :System.out.println("取消成功,返回:");break;}break;}//找到了就for循环并且返回调用方法return;}else if(i==teacherList.getCount()-1) {System.out.println("未找到该教师用户,请重试:");break;}}}}//更改学生用户属性if(choice.equals("2")) {while(true) {System.out.println("请输入学生学号:");String studentId = in.next();for(int i=0;i< studentList.getCount();i++) {//找到了该用户if (studentId.equals(studentList.getStudent(i).getId())) {System.out.println(studentList.getStudents()[i]);System.out.println("请选择要更改的属性:  1 > 编号 , 2 > 姓名 , 3 > 学院 , 4 > 专业 , 任意内容 > 取消");String choice11 = in.next();switch (choice11) {case "1" :System.out.println("请输入要改到的编号:");String newId = in.next();studentList.getStudent(i).setId(newId);System.out.println("更改成功:");System.out.println(studentList.getStudent(i));break;case "2" :System.out.println("请输入要改到的名字:");String newName = in.next();studentList.getStudent(i).setName(newName);System.out.println("更改成功:");System.out.println(studentList.getStudent(i));break;case "3" :System.out.println("请输入要改到的学院:");String newCollege = in.next();studentList.getStudent(i).setCollege(newCollege);System.out.println("更改成功:");System.out.println(studentList.getStudent(i));break;case "4" :System.out.println("请输入要改到的学专业:");String newMajore = in.next();studentList.getStudent(i).setMajor(newMajore);System.out.println("更改成功:");System.out.println(studentList.getStudent(i));break;default :System.out.println("取消成功,返回:");break;}//找到了就跳出for循环并且返回调用方法return;}if(i==studentList.getCount()-1) {System.out.println("未找到该学生用户,请重试:");break;}}}}}
}

修改用户密码

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class SetUserKey {Scanner in = new Scanner(System.in);//更改用户密码的方法public void work(TeacherList teacherList, StudentList studentList) {System.out.println("更改用户密码:");System.out.println("请选择用户种类:    1 > 教师用户 , 2 > 学生用户");String choice = in.next();//更改教师用户密码if(choice.equals("1")) {System.out.println("请输入该教师用户的工号:");String TeacherId = in.next();for(int i=0;i< teacherList.getCount();i++) {//找到了该用户if(TeacherId.equals(teacherList.getTeacher(i).getId())) {System.out.println(teacherList.getTeachers()[i]);System.out.println("请输入该用户的新密码:");String newKey = in.next();teacherList.getTeachers()[i].setKey(newKey);System.out.println("设置新密码成功,返回:");break;}if(i == teacherList.getCount()-1 )  {System.out.println("未找到该教师用户,请重新输入:");break;}}}//更改学生用户密码else if(choice.equals("2")) {System.out.println("请输入该学生用户的学号:");String studentId = in.next();for(int i=0;i<studentList.getCount();i++) {//找到了该用户if(studentId.equals(studentList.getStudents()[i].getId())) {System.out.println(studentList.getStudents()[i]);System.out.println("请输入该用户的新密码:");String newKey = in.next();studentList.getStudents()[i].setKey(newKey);System.out.println("设置新密码成功,返回:");break;}else if(i == studentList.getCount()-1 )  {System.out.println("未找到该学生用户,请重新输入:");break;}}}else {System.out.println("未获取到有效指令,返回:");}return;}}

删除用户

package com.LibraryManagementSystem.UserOperation;import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;public class DeleteUser {Scanner in = new Scanner(System.in);public void remove() {  }//删除用户账号的方法public void work(TeacherList teacherList, StudentList studentList) {System.out.println("删除用户:");System.out.println("请选择用户种类:    1 > 教师用户 , 2 > 学生用户");String choice = in.next();//删除教师用户if(choice.equals("1")) {System.out.println("请输入该教师用户的工号:");String TeacherId = in.next();for(int i=0;i< teacherList.getCount();i++) {//找到了要删除的用户if (teacherList.getTeachers()[i].getId().equals(TeacherId)) {System.out.println("小图找到了这个账号:"+'\n'+teacherList.getTeachers()[i]);System.out.println("请选择是否要删除这个账号:1 > 删除 , 任意内容 > 取消");String choice1 = in.next();if(choice1.equals("1")) {System.out.println("好了,删除成功,请告诉小图接下来的指示:");    //删除数组元素(被删除的元素的后面的元素前移)for( int j=i+1 ; j<teacherList.getCount() ; j++ ) {teacherList.getTeachers()[i++] = teacherList.getTeachers()[j++];}int temp = teacherList.getCount()-1;teacherList.setCount(temp);}else {System.out.println("好了,已经取消,请告诉小图接下来的指示:");}break;}else if(i == teacherList.getCount()-1 )  {System.out.println("未找到该教师用户,请重新输入:");break;}}}//更改学生用户密码else if(choice.equals("2")) {System.out.println("请输入该学生用户的学号:");String studentId = in.next();for(int i=0;i<studentList.getCount();i++) {//找到了该用户if(studentId.equals(studentList.getStudents()[i].getId())) {System.out.println("小图找到了这个账号:"+'\n'+studentList.getStudents()[i]);System.out.println("请选择是否要删除这个账号:1 > 删除 , 任意内容 > 取消");String choice2 = in.next();if(choice2.equals("1")) {System.out.println("好了,删除成功,请告诉小图接下来的指示:");    //删除数组元素(被删除的元素的后面的元素前移)for( int j=i+1 ; j<studentList.getCount() ; j++ ) {studentList.getStudents()[i++] = studentList.getStudents()[j++];}int temp = studentList.getCount()-1;studentList.setCount(temp);}else {System.out.println("好了,已经取消,请告诉小图接下来的指示:");}break;}else if(i == studentList.getCount()-1 )  {System.out.println("未找到该学生用户,请重新输入:");break;}}}else {System.out.println("未获取到有效指令,返回:");}return;}}

引导、注册、登录与退出

引导

系统首页

package com.LibraryManagementSystem.Run;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;
import com.LibraryManagementSystem.UserOperation.Exit;import java.util.Scanner;//引导
public class Guide {Scanner in = new Scanner(System.in);//欢迎语static {System.out.println();System.out.println("    欢迎使用本图书馆管理系统,小图听候您的指令~");System.out.println("=========================================================================================");}//引导方法public void guide(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {System.out.println( "请输入序号选择您要进行的操作: " +"1 > 登录 , " +"2 > 注册  , " +"0 > 退出系统");String choice = in.next();switch ( choice ) {case "0":Exit exit = new Exit();exit.work(bookList, librarianList, teacherList, studentList);break;case "1":new Enter().enter(bookList, librarianList, teacherList, studentList);break;case "2":new Registration().registration(bookList, librarianList, teacherList, studentList);break;default:System.out.println("小图没有获取到有效指令,请重新输入:");guide(bookList, librarianList, teacherList, studentList);break;}}}

注册

1.管理员
----管理员账号无法在本系统注册,需要在上级管理系统进行设置
2.教师用户
----教师用户类型数组中,各教师用户账号已经设置好工号为编号,其他属性为空。教师用户注册时输入工号,系统找出对应的编号所在的账号,输入并设置其他属性,默认密码为账号的编号,即工号
3.学生用户
----学生用户类型数组中,各学生用户账号已经设置好学号为编号,其他属性为空。学生用户注册时输入学号,系统找出对应的学号所在的账号,输入并设置其他属性,默认密码为账号的编号,即学号

package com.LibraryManagementSystem.Run;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.Student;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.Teacher;
import com.LibraryManagementSystem.User.Teacher.TeacherList;import java.util.Scanner;//注册
public class Registration {Scanner in = new Scanner(System.in);//注册方法public  void registration(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {System.out.println("注册:");System.out.println("请输入序号选择您的身份:1 > 教师 , 2 > 学生 , 0 > 取消 ");String choice = in.next();switch ( choice ) {case "0":System.out.println("好了,已经取消,请告诉小图接下来的指示:");new Guide().guide(bookList,librarianList,teacherList,studentList);break;//教师用户注册case "1":System.out.println("教师用户注册:");System.out.println("您获得的Id是:"+String.valueOf(Integer.valueOf(teacherList.getTeachers()[teacherList.getCount()-1].getId())+1));System.out.println("请输入您的名字:");String name = in.next();System.out.println("请输入您所在的部门:");String apartment = in.next();System.out.println("您将注册:");teacherList.getTeachers()[teacherList.getCount()] = new Teacher(String.valueOf(Integer.valueOf(teacherList.getTeachers()[teacherList.getCount()-1].getId())+1),String.valueOf(Integer.valueOf(teacherList.getTeachers()[teacherList.getCount()-1].getId())+1),name,apartment);System.out.println(teacherList.getTeachers()[teacherList.getCount()]);System.out.println("是否确定注册? 任意内容 > 确定, 0 > 取消 ");String choice1 = in.next();if( choice1.equals("0") ){teacherList.remove(teacherList.getTeachers()[teacherList.getCount()]);System.out.println("好了,已经取消此次注册,回到引导界面:");new Guide().guide(bookList,librarianList,teacherList,studentList);}else {int temp = teacherList.getCount()+1;teacherList.setCount(temp);System.out.println("初始密码是工号");System.out.println("注册成功,进入登录界面:");new Enter().enter(bookList,librarianList,teacherList,studentList);}break;//学生用户注册case "2":System.out.println("学生用户注册:");System.out.println("您的Id是:"+String.valueOf(Integer.valueOf(studentList.getStudents()[studentList.getCount()-1].getId())+1));System.out.println("请输入您的名字:");String studentName = in.next();System.out.println("请输入您所在的学院:");String college = in.next();System.out.println("请输入您所修的专业:");String stuMajor = in.next();System.out.println("您将注册:");studentList.getStudents()[studentList.getCount()] = new Student(String.valueOf(Integer.valueOf(studentList.getStudents()[studentList.getCount()-1].getId())+1),String.valueOf(Integer.valueOf(studentList.getStudents()[studentList.getCount()-1].getId())+1),studentName,college,stuMajor);System.out.println(studentList.getStudents()[studentList.getCount()]);System.out.println("是否确定注册? 任意内容 > 确定, 0 > 取消 ");String choice2 = in.next();if( choice2.equals("0") ){studentList.remove(studentList.getStudents()[studentList.getCount()]);System.out.println("好了,已经取消此次注册,回到引导界面:");new Guide().guide(bookList,librarianList,teacherList,studentList);}else {int temp = studentList.getCount()+1;studentList.setCount(temp);System.out.println("初始密码是学号");System.out.println("注册成功,进入登录界面:");new Enter().enter(bookList,librarianList,teacherList,studentList);}break;}}}

登录

1.管理员登录
----管理员登录需要提供工号和密码,然后读出管理员类型数组中的所有管理员对象,先匹配管理员的工号,再对工号匹配的对象验证密码
2.教师登录
----教师用户登录需要提供工号和密码,然后读出教师类型数组中的所有教师对象,先匹配教师用户的工号,再对工号匹配的对象验证密码
3.学生登录
----学生用户登录需要提供学号和密码,然后读出学生类型数组中的所有学生对象,先匹配学生用户的学号,再对学号匹配的对象验证密码

 package com.LibraryManagementSystem.Run;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;
import com.LibraryManagementSystem.UserOperation.LibrarianChooseOperations;
import com.LibraryManagementSystem.UserOperation.StudentChooseOperations;
import com.LibraryManagementSystem.UserOperation.TeacherChooseOperations;import java.util.Scanner;//登录
public class Enter {Scanner in = new Scanner(System.in);//登录方法public void enter(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {System.out.println("登录:");System.out.println("请输入序号选择您的身份:1 > 管理员 , 2 > 教师 , 3 > 学生 , 0 > 取消 ");String choice = in.next();switch ( choice ) {case "0":System.out.println("好了,已经取消,请告诉小图接下来的指示:");new Guide().guide( bookList,librarianList, teacherList, studentList );break;//管理员登录case "1":while(true) {System.out.println("请输入您的管理员Id,或者输入 0 返回上一步");String librarianId = in.next();if( librarianId.equals("0") ) {System.out.println("返回上一步:");enter(bookList,librarianList, teacherList, studentList);}//在管理员名单中寻找尝试登陆的用户for (int i = 0; i < librarianList.getCount(); i++) {//找到了该管理员用户if( librarianList.getLibrarians()[i].getId().equals(librarianId) ) {//验证System.out.println("请输入您的密码:");String key1 = in.next();if(!key1.equals(librarianList.getLibrarians()[i].getKey())) {System.out.println("您输入的密码有误,请重试或者与管理员联系");enter(bookList,librarianList,teacherList,studentList);break;}System.out.println("=====================================================================");System.out.println(librarianList.getLibrarians()[i]);System.out.println("=====================================================================");System.out.println("    "+librarianList.getLibrarians()[i].getName()+" ,欢迎您使用小图~");new LibrarianChooseOperations().work(bookList,librarianList,teacherList,studentList);break;}}//没有找到System.out.println("非常抱歉,小图没有找到您输入的Id,请您重新操作:");}//教师用户登录case "2":while(true) {System.out.println("请输入您的用户Id,或者输入 0 返回上一步");String teacherId = in.next();if( teacherId.equals("0") ) {System.out.println("返回上一步:");enter(bookList,librarianList, teacherList, studentList);}//在教师用户名单中寻找尝试登陆的用户int i;for (i = 0; i < teacherList.getCount(); i++) {//找到了该教师用户if( teacherList.getTeachers()[i].getId().equals(teacherId) ) {//验证System.out.println("请输入您的密码:");String key2 = in.next();if(!key2.equals(teacherList.getTeachers()[i].getKey())) {System.out.println("您输入的密码有误,请重试或者与管理员联系");enter(bookList,librarianList,teacherList,studentList);break;}System.out.println("=========================================================================");System.out.println(teacherList.getTeachers()[i]);System.out.println("=========================================================================");System.out.println("    "+teacherList.getTeachers()[i].getName()+"老师 , 欢迎您使用小图~");new TeacherChooseOperations().work(bookList,librarianList,teacherList,studentList);break;}}//没有找到System.out.println("非常抱歉,小图没有找到您输入的Id,请您重新操作:");}//学生用户登录case "3":while(true) {System.out.println("请输入您的用户Id,或者输入 0 返回上一步");String studentId = in.next();if( studentId.equals("0") ) {System.out.println("返回上一步:");enter(bookList,librarianList, teacherList, studentList);}//在学生用户名单中寻找尝试登陆的用户for (int i = 0; i < studentList.getCount(); i++) {//找到了该学生用户if( studentList.getStudents()[i].getId().equals(studentId) ) {//验证System.out.println("请输入您的密码:");String key3 = in.next();if(!key3.equals(studentList.getStudents()[i].getKey())) {System.out.println("您输入的密码有误,请重试或者与上级系统管理员联系");enter(bookList,librarianList,teacherList,studentList);break;}System.out.println("======================================================================");System.out.println(studentList.getStudents()[i]);System.out.println("=====================================================================");System.out.println("    "+studentList.getStudents()[i].getName()+"同学 , 欢迎你使用小图~");new StudentChooseOperations().work(bookList,librarianList,teacherList,studentList);break;}}//没有找到System.out.println("非常抱歉,小图没有找到您输入的Id,请您重新操作:");}}}}case "2":while(true) {System.out.println("请输入您的用户Id,或者输入 0 返回上一步");String teacherId = in.next();if( teacherId.equals("0") ) {System.out.println("返回上一步:");Enter();}//在教师用户名单中寻找尝试登陆的用户int i;for (i = 0; i < teacherList.getCount(); i++) {//找到了该教师用户if( teachers[i].getId().equals(teacherId) ) {//验证System.out.println("请输入您的密码:");String key2 = in.next();if(!key2.equals(teachers[i].getKey())) {System.out.println("您输入的密码有误,请重试或者与管理员联系");break;}System.out.println("=========================================================================");System.out.println(teachers[i]);System.out.println("=========================================================================");System.out.println("    "+teachers[i].getName()+"老师 , 欢迎您使用小图~");teachers[i].doOperation(bookList);break;}//没有找到if( i == teacherList.getCount()-1 ) {System.out.println("非常抱歉,小图没有找到您输入的Id,请您重新操作:");}}}case "3":while(true) {System.out.println("请输入您的用户Id,或者输入 0 返回上一步");String studentId = in.next();if( studentId.equals("0") ) {System.out.println("返回上一步:");Enter();}//在学生用户名单中寻找尝试登陆的用户for (int i = 0; i < studentList.getCount(); i++) {//找到了该学生用户if( students[i].getId().equals(studentId) ) {//验证System.out.println("请输入您的密码:");String key3 = in.next();if(!key3.equals(students[i].getKey())) {System.out.println("您输入的密码有误,请重试或者与管理员联系");break;}System.out.println("======================================================================");System.out.println(students[i]);System.out.println("=====================================================================");System.out.println("    "+students[i].getName()+"同学 , 欢迎你使用小图~");students[i].doOperation(bookList);i++;break;}//没有找到else if( i == teacherList.getCount()-1 && !students[i].getId().equals(studentId) ){System.out.println("非常抱歉,小图没有找到您输入的Id,请您重新操作:");}}}}}

退出

退出程序

package com.LibraryManagementSystem.Run;import com.LibraryManagementSystem.Book.BookList;
import com.LibraryManagementSystem.Date.Serialization;
import com.LibraryManagementSystem.User.Librarian.LibrarianList;
import com.LibraryManagementSystem.User.Student.StudentList;
import com.LibraryManagementSystem.User.Teacher.TeacherList;
import java.io.File;
import java.io.Serializable;
import java.util.Scanner;//退出程序
public class Exit implements Serializable {Scanner in = new Scanner( System.in );public void work(BookList bookList, LibrarianList librarianList, TeacherList teacherList, StudentList studentList) {System.out.println("亲,你确定要退出程序嘛? 请输入你的选择:  0 > 退出 , 任意内容 > 取消");String choice = in.next();switch (choice) {case "0" :System.out.println("好的,退出程序,本次操作结束!拜~~拜~");//退出前进行序列化,保存最新数据到硬盘文件中Serialization serialization = new Serialization();serialization.Serialize(bookList, new File("D://libraryDate//bookListDate.dat"));serialization.Serialize(librarianList, new File("D://libraryDate//librarianListDate.dat"));serialization.Serialize(teacherList, new File("D://libraryDate//teacherListDate.dat"));serialization.Serialize(studentList, new File("D://libraryDate//studentListDate.dat"));//退出System.exit(1);default  :System.out.println("已经取消,请告诉小图接下来的指示:");break;}return;}}

数据的保存与读入

序列化:将内存中的数据写入到硬盘

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;//序列化类
public class Serialization {//无参构造方法public Serialization() {    }//序列化方法,传入要序列化的对象和目标文件public void Serialize(Object object, File file) {//创建对象输出流ObjectOutputStream oos = null ;//操作流try {//序列化,把传入方法中的对象写入到硬盘文件中oos = new ObjectOutputStream(new FileOutputStream(file));oos.writeObject(object);oos.flush();} catch (IOException e) {e.printStackTrace();} finally {if(oos != null) {try {oos.close();} catch (IOException e) {e.printStackTrace();}}}}
}

反序列化:将硬盘中的数据读入到内存

package com.LibraryManagementSystem.Date;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;//反序列化类
public class Deserialization {//无参构造方法public Deserialization() { }//反序列化方法,传入目标文件,返回反序列化的对象public Object deserialize(File file) {//创建空对象用于接受反序列化对象Object object=null;//创建对象输入流ObjectInputStream ois = null;//操作流try {//反序列化,把对象从硬盘文件读出到内存中ois = new ObjectInputStream(new FileInputStream(file));object = (Object) ois.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {if (ois != null) {try {ois.close();} catch (IOException e) {e.printStackTrace();}}}//返回反序列化出来的对象return object;}}

测试

package com.LibraryManagementSystem.Test;import com.LibraryManagementSystem.Run.Login;import java.io.Serializable;//测试
public class Main implements Serializable {public static void main(String[] args) {//进入系统Login login = new Login();login.login();}
}

运行结果

    欢迎使用本图书馆管理系统,小图听候您的指令~
=========================================================================================
请输入序号选择您要进行的操作: 1 > 登录 , 2 > 注册  , 0 > 退出系统
2
注册:
请输入序号选择您的身份:1 > 教师 , 2 > 学生 , 0 > 取消
2
学生用户注册:
您的Id是:300005
请输入您的名字:
许疏鸿
请输入您所在的学院:
计算机科学与技术
请输入您所修的专业:
软件工程
您将注册:
学生用户 { 编号 : 300005 , 姓名 : 许疏鸿 , 学院 :计算机科学与技术 , 专业 :软件工程 }
是否确定注册? 任意内容 > 确定, 0 > 取消
q
注册成功,进入登录界面:
登录:
请输入序号选择您的身份:1 > 管理员 , 2 > 教师 , 3 > 学生 , 0 > 取消
2
请输入您的用户Id,或者输入 0 返回上一步
200001
请输入您的密码:
200001
=========================================================================
教师用户 { 编号 : 200001 , 姓名 : 朱自清 , 部门 : 文学院 }
=========================================================================朱自清老师 , 欢迎您使用小图~
================================================================================================请输入序号选择你要进行的操作: 0 > 退出 , 1 > 展示书架 ,2 > 查询书籍 ,3 > 借阅书籍 ,4 > 归还书籍
================================================================================================
1
书架所有书籍展示如下:
书 { 编号: 1001 , 书名: 《 Java从入门到精通 》 , 作者: 明日科技 , 是否在馆: true }
书 { 编号: 1002 , 书名: 《 浮生六记 》 , 作者: 沈复 , 是否在馆: true }
书 { 编号: 1003 , 书名: 《 What Life Should Mean to You 》 , 作者: Alfred Adler , 是否在馆: true }
书 { 编号: 1004 , 书名: 《 飘 》 , 作者: 简·爱 , 是否在馆: true }
本次展示操作完成,请告诉小图接下来的指示:
================================================================================================请输入序号选择你要进行的操作: 0 > 退出 , 1 > 展示书架 ,2 > 查询书籍 ,3 > 借阅书籍 ,4 > 归还书籍
================================================================================================
2
查找书籍
请输入你想要查找的书籍的书名,或者输入 0 以取消本次查询操作:
浮生六记
小图在书架找到了这本书,
书 { 编号: 1002 , 书名: 《 浮生六记 》 , 作者: 沈复 , 是否在馆: true }
请输入你想要查找的书籍的书名,或者输入 0 以取消本次查询操作:
0
已经取消
本次查找操作结束,请告诉小图接下来的指示:
================================================================================================请输入序号选择你要进行的操作: 0 > 退出 , 1 > 展示书架 ,2 > 查询书籍 ,3 > 借阅书籍 ,4 > 归还书籍
================================================================================================
3
请输入你想要借阅的书籍的书名,或者输入 0 以取消本次借阅操作:
浮生六记
小图找到了这本书:
书 { 编号: 1002 , 书名: 《 浮生六记 》 , 作者: 沈复 , 是否在馆: true }
请选择是否要借阅这本书:    任意内容 > 借阅 , 0 > 取消
q
好了,你借阅这本书成功,请告诉小图接下来的指示:
书 { 编号: 1002 , 书名: 《 浮生六记 》 , 作者: 沈复 , 是否在馆: false }
请输入你想要借阅的书籍的书名,或者输入 0 以取消本次借阅操作:
0
已经取消
本次借阅操作结束,请告诉小图接下来的指示:
================================================================================================请输入序号选择你要进行的操作: 0 > 退出 , 1 > 展示书架 ,2 > 查询书籍 ,3 > 借阅书籍 ,4 > 归还书籍
================================================================================================
0
亲,你确定要退出程序嘛? 请输入你的选择:  0 > 退出 , 任意内容 > 取消
0
好的,退出程序,本次操作结束!拜~~拜~

Java——课设——图书管理系统实现 2.0相关推荐

  1. java 课设 商品库存管理系统

    比较辛苦的java课设!写了蛮久的,战斗了好多个通宵. 下载https://download.csdn.net/download/qq_37871063/10297290 入门:JAVAFX+MVC+ ...

  2. C++期末课设—图书管理系统

    期末将至,还有人为不知道如何写课设而头疼吗,这里给大家带来一个最简单基础的课设项目,图书管理系统. 功能分析 一般来说,简单的图书管理系统有以下几个功能: 1.用户管理 2.读者管理 3.图书管理 4 ...

  3. 学生信息管理系统(成绩统计)Java课设

    下载地址:学生信息管理系统(成绩统计)Java课设-Web服务器文档类资源-CSDN下载 ├── StudentInfo │   ├── bin │   │   ├── com │   │   │   ...

  4. Java课设:火车售票系统2.0

    文章目录 注意 系统概述 数据库表的变化 类名变化 运行 管理员登陆 管理员界面 录入车次 修改车次信息 查看所有车次 删除车次 管理员用户资料查询 注意 火车售票系统等java课设已经停止更新了,博 ...

  5. java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计图书管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 开 ...

  6. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  7. 华南农业大学课设——数据结构课设、Java课设、操作系统课设

    文章目录 缘起 大二上-数据结构课设(高校教学管理系统)-C++.Qt 视频演示 感想 大二下-Java课设(流程图绘制程序)-JavaFX 视频演示 感想 大三上-操作系统课设(模拟磁盘文件系统实现 ...

  8. 基于Java+Swing+mysql图书管理系统

    基于Java+Swing+mysql图书管理系统 一.系统介绍 二.功能展示 1.用户登陆 2.图书管理 3.图书添加 4.图书类别管理 5.图书类别添加 三.数据库 四.其它 1.其他系统实现 五. ...

  9. C语言课设-----工资管理系统(附全部源码)

    C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...

最新文章

  1. MapReduce工作流理解
  2. memcached全面剖析–2.理解 memcached的内存存储
  3. mpvue微信小程序动画_入门微信小程序
  4. gdb调试常用命令速查(段错误调试)
  5. backtrader期权回测框架
  6. qt createtor 中文乱码
  7. 面试官:你说对 MySQL 事务很熟?那我问你 10 个问题
  8. hashset和hashmap有什么关系
  9. NI VISION视觉安装
  10. Java生态技术体系科普
  11. PS里面如何批处理图片
  12. 计算机硬件的五大功能模块,什么是操作系统的五大功能模块
  13. Python爬取中国银行外汇牌价(statsmodels预测分析)--(二)
  14. 7个少有人知的资源宝藏网站,浏览器瞬间爆棚!速速收藏
  15. 原材料入库控制的三个问题
  16. springboot项目搭建0051-通用mapper使用mapper.xml
  17. 提升方法(Boosting)
  18. 新唐单片机模拟IIC
  19. 四款图表制作类软件,我最推荐的是?
  20. 手把手教你做一个新浪博客发布软件JAVA版本(5)--打开博客发布页面并解析博客内容

热门文章

  1. QML 图形渲染 - LinearGradient
  2. QQ浏览器关闭百度搜索页面右边的百度热榜详细教程
  3. 群晖nas和微软服务器差别,群晖nas和希捷家庭云服务器区别
  4. SQL IN(规定多个值) 和 BETWEEN(选取介于两个值之间的数据范围) 操作符
  5. 一,survey:person re-identification:past,present and future
  6. 秋之媚语:落叶与花魂共舞
  7. 光环国际PMP:看完你就知道什么是瞎忙与高效
  8. ThinkPad 嘀嘀响 报警
  9. 计算机化自适应测验 英语,情绪调节的计算机化自适应测验
  10. MFC之学习Bezier样条使用