本人其实并没有将框架搞得很透彻,看了四五次课还是如此,所以本文只是转载的。供自己学习研究使用。
框架:
一个主函数来执行,book存放书,user来判断身份,operation来具体执行。
book:
package save.book;
/**
* Created with IntelliJ IDEA.
* Description:
* save.User: admin
* Date: 2022-05-23
* Time: 16:11
*/
public class Book {
private String name;
private String author;
private int price;
private String type;
private boolean isBorrowed;
//对成员变量提供getterandsetter 构造方法 tostring
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", isBorrowed=" + isBorrowed +
'}';
}
}
booklist:
package save.book;
import save.book.Book;
/**
* Created with IntelliJ IDEA.
* Description:
* save.User: admin
* Date: 2022-05-23
* Time: 17:10
*/
public class Booklist {
private Book[] books = new Book[10];
private int usedSize;
//用于记录books这个数组有多少书。
public Booklist(){
books[0]= new Book("三国演义","罗贯中",9,"小说");
books[1]= new Book("西游记","吴承恩",29,"故事");
books[2]= new Book("红楼梦","曹雪芹",39,"文艺");
usedSize=3;
}
//需要给一个合法的pos位置
public Book getbookk(int pos){
return books[pos];
}
public void setBooks(int pos,Book book){
books[pos] = book;
}
public int getUsedSize(){
return usedSize;
}
//用于试试修改书架上的数的个数。
public void setUsedSize(int size){
usedSize=size;
}
}
user:
package save.User;
import save.book.Booklist;
import save.operation.IOperation;
/**
* Created with IntelliJ IDEA.
* Description:
* save.User: admin
* Date: 2022-05-23
* Time: 17:37
*/
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){
this.iOperations[choice].work(booklist);
}
}
normaluser:
package save.User;
import save.operation.*;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* save.User: admin
* Date: 2022-05-23
* Time: 17:38
*/
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
this.iOperations =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("4.显示图书");
System.out.println("0.退出系统");
System.out.println("请输入你的操作:");
Scanner scanner = new Scanner((System.in));
int choice = scanner.nextInt();
return choice;
}
}
adminuser:
package save.User;
import save.book.Booklist;
import save.operation.*;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* save.User: admin
* Date: 2022-05-23
* Time: 17:38
*/
public class AdminUser extends User{
public AdminUser(String name) {
super(name);
this.iOperations =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.退出系统");
System.out.println("请输入你的操作:");
Scanner scanner = new Scanner((System.in));
int choice = scanner.nextInt();
return choice;
}
}
main:
package save;
import save.User.AdminUser;
import save.User.NormalUser;
import save.User.User;
import save.book.Booklist;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: admin
* Date: 2022-05-23
* Time: 17:48
*/
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 NormalUser(name);
}
}
public static void main(String[] args) {
Booklist booklist = new Booklist();
User user = login();
while(true) {
int choice = user.menu();//发生了动态绑定
user.doOperation(choice,booklist);
}
}
}
ioperation:
public interface IOperation {
void work(Booklist booklist);
}
先看框架,并没有具体实现每个功能,所以这里整合放出来方法了:
public class AddOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("新增图书");
}
}
public class FindOperation implements IOperation{
public void work(Booklist bookList){
System.out.println("查找图书");
}
}
public class DelOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("删除图书");
}
}
public class DisplayOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("显示图书");
}
}
public class ExitOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("退出系统");
}
}
public class BorrowOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("借阅图书");
}
}
public class ReturnOperation implements IOperation{
public void work(Booklist booklist){
System.out.println("归还图书");
}
}
每个方法的具体实现(整合放出):等