DisplayOperation类:进行展示操作
package operation; import book.Book; import book.BookList; public class DisplayOperation implements IOperation{ //重写work方法 @Override public void work(BookList bookList) { System.out.println("显示图书:"); for (int i=0;i< bookList.getUsedSize();i++) { Book book=bookList.getBook(i); System.out.println(book); } } }
ExitOperation类:进行退出操作
package operation; import book.BookList; public class ExitOperation implements IOperation{ //重写work方法 public void work(BookList bookList) { System.out.println("退出系统!"); //终止当前运行的Java虚拟机。 参数作为状态代码,为零则终止程序 System.exit(0); } }
FindOperation类:进行查找操作
package operation; import book.Book; import book.BookList; import java.util.Scanner; public class FindOperation implements IOperation{ //重写work方法 @Override public void work(BookList bookList) { System.out.println("查找图书!"); Scanner scanner = new Scanner(System.in); System.out.println("请输入图书的名字:"); String name = scanner.nextLine(); //查找图书 for (int i=0;i< bookList.getUsedSize();i++) { Book book=bookList.getBook(i); if (book.getName().equals(name)) { System.out.println("找到图书!该图书"+((book.isBorrowed())? "已借出":"未借出")); System.out.println(book); break; } if (i== bookList.getUsedSize()-1) { System.out.println("未找到该图书!"); break; } } } }
ReturnOperation:归还图书
package operation; import book.BookList; import book.Book; import java.util.Scanner; public class ReturnOperation implements IOperation{ //重写work类 @Override public void work(BookList bookList) { System.out.println("归还图书!"); Scanner scanner = new Scanner(System.in); System.out.println("请输入归还图书的名字:"); String name = scanner.nextLine(); int currentSize = bookList.getUsedSize(); //修改图书状态,是否被借出 for (int i = 0; i < currentSize; i++) { Book book = bookList.getBook(i); if(book.getName().equals(name)) { book.setBorrowed(false); System.out.println("归还成功!"); return; } } } }
(3)user
AdminUsers类:用于实现组合管理员用户的功能
package user; import operation.*; import java.util.Scanner; public class AdminUsers extends User { //AdminUsers构造方法 public AdminUsers(String name) { super(name); this.operations =new IOperation[]{ new ExitOperation(), new FindOperation(), new AddOperation(), new DelOperation(), new DisplayOperation(), }; } //设计管理员用户的菜单,实现他们的功能 public int menu(){ System.out.println("hello "+this.name+"欢迎来到图书馆!"); System.out.println("1,查找图书!"); System.out.println("2,新增图书!"); System.out.println("3,删除图书!"); System.out.println("4,显示图书!"); System.out.println("0,提出系统!"); Scanner sc=new Scanner(System.in); int choice=sc.nextInt(); return choice; } }
NormalUsers类:用于实现组合普通用户的功能
package user; import operation.*; import java.util.Scanner; //继承User类,使得User类可以分别去满足两种不同用户的需求 public class NormalUsers extends User { //NormalUsers构造方法 public NormalUsers(String name) { super(name); this.operations =new IOperation[]{ new ExitOperation(), new FindOperation(), new BorrowOperation(), new ReturnOperation() }; } //设计管理员用户的菜单,实现他们的功能 public int menu(){ System.out.println("hello "+this.name+"欢迎来到图书馆!"); System.out.println("1,查找图书!"); System.out.println("2,借阅图书!"); System.out.println("3,归还图书!"); System.out.println("0,退出系统!"); Scanner sc=new Scanner(System.in); int choice=sc.nextInt(); return choice; } }
User类: 该类是user包中另两个类的父类,通过此类来判断用户类型,并加以实现
package user; import book.BookList; import operation.IOperation; public abstract class User { //两个变量:保存您的姓名 并创建一个IOperation的数组,用于实现相应的操作 protected String name; protected IOperation[] operations; public User(String name) { this.name = name; } //通过用户类型来打印相应的菜单 public abstract int menu(); //选择你想进行的操作 public void doOperation(int choice, BookList bookList) { this.operations[choice].work(bookList); } }
(4)Main函数
import book.BookList; import user.AdminUsers; import user.NormalUsers; import user.User; import java.util.Scanner; public class Main { //判断你的用户类型 public static User login(){ Scanner sc=new Scanner(System.in); System.out.println("请输入你的姓名:"); String name =sc.nextLine(); System.out.println("请确认你的身份:1-》管理员,0-》普通用户"); int choice=sc.nextInt(); if (choice==1) return new AdminUsers(name); else return new NormalUsers(name); } public static void main(String[] args) { BookList bookList=new BookList(); User user=login(); //实现你想进行的操作 while (true){ int choice = user.menu(); user.doOperation(choice,bookList); } } }
3、效果展示
(1)AdminUsers
(2) NormalUser
3、结语
图书管理系统还可以有更多的功能,如果大家感兴趣可以去研究研究,更加完善这个系统。
大家如果发现有什么错误评论区点评,谢谢支持!