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;
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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
好的,退出程序,本次操作结束!拜~~拜~