目录
逻辑实现:
第一步:登录界面
登录方法:landing
package User;
import java.util.Scanner;
import Library.Booklist;
public class Main {
public static User landing() {//登录界面的方法
System.out.println("请输入你的名字:>");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
System.out.println("请选择:0->普通用户,1——>管理员");
int choice = scanner.nextInt();
if(choice == 0 ) {
return new NormalUser(name);
}
else {
return new AdminUser(name);}
}
public static void main(String[] args) {
Booklist booklist = new Booklist();//准备数据
User user = landing();//用来选择登录那个界面的
}
}
第二步:菜单的实现
一步一步来,先加个菜单:
代码:
package User;
public abstract class User {
protected String name;
public User(String name) {
// TODO Auto-generated constructor stub
this.name = name;
}
public abstract int menu();
}
好了,解释完毕!现在来看看menu()方法的具体实现:
AdminUser中:
package User;
import java.util.Scanner;
public class AdminUser extends User{
public AdminUser(String name) {
// TODO Auto-generated constructor stub
super(name);//先帮父类构造
this.name = name;//再自己构造
}
public int menu() {
System.out.println("欢迎 "+name+"来到图书管理系统");
System.out.println("*******************************");
System.out.println("0.退出系统");
System.out.println("1.添加图书");
System.out.println("2.移除图书");
System.out.println("3.查找图书");
System.out.println("4.显示图书");
System.out.println("*******************************");
System.out.println("请选择你的操作");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
NormalUser类中:
package User;
import java.util.Scanner;
public class NormalUser extends User{
public NormalUser(String name) {
// TODO Auto-generated constructor stub
super(name);
this.name = name;
}
public int menu() {
System.out.println("欢迎 "+name+"来到图书管理系统");
System.out.println("*******************************");
System.out.println("0.退出系统");
System.out.println("1.借阅图书");
System.out.println("2.归还图书");
System.out.println("3.查找图书");
System.out.println("4.显示图书");
System.out.println("请选择你的操作");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
第三步:增,删,查,显示等操作方法的实现和调用
思路:
第一步:User(父类)中
第二步:在AdminUser(子类)中
第三步:在NormalUser(子类)中
调用:
调用方法:doOperation
代码:
public void doOperation(int choice,Booklist booklist) {
ioperations[choice].work(booklist);//利用之前定义的接口数组来访问各种操作方法
}
方法实现:
1.AddOperation
代码:
package Operation;
import java.util.Scanner;
import Library.Booklist;
public class AddOperation implements IOperation{
public void work(Booklist booklist) {//重写方法,使这个方法变为Addoperation的方法
System.out.println("添加图书!");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要添加的图书的名字:>");
String name = scanner.nextLine();
System.out.println("请输入你要添加的图书的类型:>");
String type = scanner.nextLine();
System.out.println("请输入你要添加的图书的作者:>");
String author = scanner.nextLine();
System.out.println("请输入你要添加的图书的价格:>");
int price = scanner.nextInt();
System.out.println("添加成功!");
}
}
2.DisplayOperation
代码:
package Operation;
import Library.Book;
import Library.Booklist;
public class DisplayOperation implements IOperation {
public void work(Booklist booklist) {
System.out.println("显示图书!");
int curSize = booklist.getSize();
for(int i = 0;i<curSize;i++) {
Book book = booklist.getPos(i);
System.out.println(book);
}
}
}
当然,这个代码要实现就要在原来的代码中添加一些细节的东西,三处细节:
3.DelOperation
package Operation;
import java.util.Scanner;
import Library.Book;
import Library.Booklist;
public class DelOperation implements IOperation {
public void work(Booklist booklist) {//重写方法,使work方法变成DelOperation的方法
Scanner scanner = new Scanner(System.in);
System.out.println("删除图书!");
System.out.println("请输入你要删除的图书的名字:>");
String name = scanner.nextLine();
int curSize = booklist.getSize();
int index = -1;
for(int i = 0;i<curSize;i++) {
Book book = booklist.getPos(i);
if(name.equals(book.getName())) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("没有你要删除的书!");
}
else {
for(int i = index;i<curSize-1;i++) {
Book book = booklist.getPos(i+1);
booklist.setBooks(book, i);
}
booklist.setSize(curSize-1);
booklist.setBooks(null, curSize);
System.out.println("删除成功!");
}
}
}
4.其它方法