JavaSE图书管理系统
思路
实际上大概分为三步,关于书相关的放在book包里,关于用户相关的放在User包里,关于操作相关的我们放在Operation包里,不同的包用来管理不同的代码,那么为什么要把操作放在一个包里呢?原因是我们分为普通用户和管理员用户,那么普通用户和管理员用户的操作是不一样的,我们放在一个类里面,不太好区分。
关于book包,operation包,user包里面的类和接口。
关于book包里,定义两个类,bookList为书架的类,book关于书的类。
关于operation包里的类都是对bookList的操作,如查找,删除等。
关于User的类,大致为管理员类和普通用户类,和普通的User类。
一.Main方法
import book.BookList;
import user.AdminUser;
import user.NormaUser;
import user.User;
import java.util.Scanner;
public class Main {
public static User login(){
System.out.println("请输入你的姓名:");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
System.out.println("请输入你的身份, 1: 管理员 2: 普通用户->");
int choice = scanner.nextInt();
if(choice==1){
//管理员
return new AdminUser(name);
}else{
//普通用户
return new NormaUser(name);
}
}
public static void main(String[] args) {
BookList booklist = new BookList();//书架创建
//user 指向哪个对象 就看返回值是哪个
User user = login();
//登录
while(true) {
//重复执行操作
int choice = user.menu();
//看user指向哪个对象,就调用哪个菜单
System.out.println("choice: " + choice);
//根据choice 的选择,来决定调用的是哪个方法?
user.doOperation(choice, booklist);
}
}
}
二.User包
1.User类
package user;
import book.BookList;
import operation.IOPeration;
public abstract class User {
protected String name;
protected IOPeration[] ioPerations;
public User(String name) {
this.name = name;
}
public abstract int menu();
public void doOperation(int choice, BookList bookList){
ioPerations[choice].work(bookList);//拿到对象,调用对象的方法
}
}
2.NormaUser类
package user;
import operation.*;
import java.util.Scanner;
public class NormaUser extends User {
//普通用户
public NormaUser(String name) {
super(name);
this.ioPerations = new IOPeration[]{
new ExitOperation(),
new FindOperation(),
new BorrowOperation(),
new ReturnOperation(),
};//初始化数组
}
public int menu(){
//菜单
System.out.println("***********普通用户*********");
System.out.println("1. 查找图书");
System.out.println("2. 借阅图书");
System.out.println("3. 归还图书");
System.out.println("0. 退出系统");
System.out.println("****************************");
Scanner sc = new Scanner(System.in);
Sy