一.首先建立一个书架
public class Book {//书籍 private String title; private String auther; private int price; private String types; public boolean state; public Book(String title, String auther, int price, String types) { this.title = title; this.auther = auther; this.price = price; this.types = types; } public String getTitle() { return title; } public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } @Override public String toString() { return "Book{" + "title='" + title + '\'' + ", auther='" + auther + '\'' + ", price=" + price + ", types='" + types + '\'' + ","+(state==false?"未借出":"已借出")+ // ", state=" + state +(将这改为state==false?"未借出":"已借出",方便后面借 还书籍显示) '}'; }
public class BookList {//书架 public int number;//记录书本数 public Book[] books=new Book[10];//建立数组放书 public BookList(){ this.books[0]=new Book("三国演义","罗贯中",10,"小说"); this.books[1]=new Book("西游记","吴承恩",12,"小说"); this.books[2]=new Book("红楼梦","曹雪芹",11,"小说"); number=3; } public int getNumber() { return number; } public Book[] getBooks() { return books; } public void setNumber(int number) { this.number = number; } public void setBooks(Book book,int pos) { this.books[pos] = book;//将book内容放入books【pos]中 } }
二.建立一个用户
public abstract class User {//抽象类 public String name; public User(String name) { this.name = name; } public IOperation[] imperation;//在标题三,接口 public abstract int mean();//抽象方法 }
public class AdminUser extends User{//继承抽象类要重写抽象方法(管理员) public AdminUser(String name) { super(name); this.imperation=new IOperation[]{//建立数组内容,五个 new ExitOperation(), new FindOperatin(), new AbbOperation(), new DeOperation(), new ShowOperation() }; } public int mean(){//重写 System.out.println("欢迎"+this.name+"来到图书管理系统"); System.out.println("========管理员菜单============="); System.out.println("========1. 查找图书 =========="); System.out.println("========2. 新增图书 =========="); System.out.println("========3. 删除图书 =========="); System.out.println("========4. 显示图书 =========="); System.out.println("========0. 退出系统 =========="); System.out.println("============================"); System.out.println("请选择功能:"); Scanner in=new Scanner(System.in); int sum=in.nextInt(); return sum; } }
public class NomallUser extends User{//继承抽象类要重写抽象方法(普通用户) public NomallUser(String name) { super(name); this.imperation=new IOperation[]{//建立数组内容,四个 new ExitOperation(), new FindOperatin(), new BorrowOperation(), new ReturnOperation() }; } public int mean(){//重写 System.out.println("欢迎"+this.name+"来到图书管理系统"); System.out.println("========普通用户菜单==========="); System.out.println("========1. 查找图书 =========="); System.out.println("========2. 借阅图书 =========="); System.out.println("========3. 归还图书 =========="); System.out.println("========0. 退出系统 =========="); System.out.println("============================"); System.out.println("请选择功能:"); Scanner in=new Scanner(System.in); int sum=in.nextInt(); return sum; } }
三.建立一个主函数
public class Main { public static User get(){ Scanner in=new Scanner(System.in); System.out.println("请输入你的姓名:"); String name=in.nextLine(); System.out.println("请选择你的身份:1.管理员 2.普通用户"); int user= in.nextInt(); if(user==1){ return new AdminUser(name); } else if (user==2) { return new NomallUser(name); }else { return null; } } public static void main(String[] args) { User user=get();//向上转型 BookList bookList=new BookList(); while (true){ int choise=user.mean();//如果get()函数return new AdminUser(name);则user.mean为标题二中AdminUser的 mean() user.imperation[choise].work(bookList);//如果get()函数return new AdminUser(name);看下图解释,同理可反推return new NomallUser(name); } } }
user.imperation[choise].work(bookList);
1.user.imperation[choise]表示AdminUser中this.imperation数组 ,例如当choise=0时,imperation[0]=new ExitOperation().同理可以反推当choise=1、2....
2.user.imperation[choise].work(bookList)中work(booklist)为标题四中接口, 例如当choise=0时,imperation[0]=new ExitOperation()则user.imperation[0].work(bookList)相当于进入ExitOperation()中work函数,同理可以反推当choise=1、2....
四.建立一个功能接口
public interface IOperation {
public void work(BookList bookList);
}
public class FindOperatin implements IOperation{ public void work(BookList bookList) {//重写接口里函数 Scanner in=new Scanner(System.in); System.out.println("请输入要找的书名:"); String name=in.nextLine(); int a=1,num=bookList.getNumber(); for (int i=0;i<num;i++){ if(name.equals(bookList.books[i].getTitle())){ System.out.println(bookList.books[i]); a=0; break; } } if(a==1){ System.out.println("没有找到该书"); } } }