前言:
哈喽,大家好,我是无敌小恐龙。
写一个图书管理系统,可以回顾以前所学习是知识:数据类型,变量,if ,for,数组,方法,类和对象,封装,继承,多态,抽象类和接口。把这些知识串起来,不仅可以加深我们对知识的理解,还可以初步理解做一个系统是什么流程,资源包也上传了哦。
一、图书管理系统是什么样的?
请看如下动图:
程序一运行:开始先输入名字,在输入身份是否为管理员还是普通用户,最终就是一些操作了。这就是要做的简单图书管理系统了,心理暗自说:还是蛮简单的嘛,嘿嘿嘿。重点是学Java面向对象的开发思想哟!!!对象与对象之间的联系。
二、准备工作
分析有哪些对象?
用户: 管理员 普通用户
书:Book 书架
一些操作: 操作的是书架
画UML图
三大模块:用户模块,书架模块,管理操作模块
三、实现三大模块
用户模块
用户分为管理员和普通用户,可以抽象出一个公共的类:User(abstract) 其子类有Admin,NormalUser。放入一个包User中。
User
package User;
import Book.Bookshelf;
import Operation.IOOperation;
public abstract class User {
//用户名
protected String name;
//用户的管理操作
protected IOOperation[] operations;
public User(String name) {
this.name = name;
}
//抽象的菜单方法,应为不同的用户有不同的实现菜单方式,返回值为int 返回 你要选择那个?
public abstract int menu();
//不同的用户,不是也有不同的操作吗?
//注意:操作的是书架
//答:采用了多态
public void doOperation(int option,Bookshelf bookshelf) {
operations[option].work(bookshelf);
}
}
Admin
package User;
import Operation.*;
import java.util.Scanner;
public class Admin extends User{
public Admin(String name) {
super(name);
//不同的用户操作不同,直接在用户初始化时,就决定了有那些操作了--->直接赋值
this.operations = new IOOperation[]{
new ExitSystemOperate(),
new FindBookOperate(),
new AddBookOperate(),
new DeleteBookOperate(),
new ShowBookOperate(),
};
}
//重写自己的菜单方法
@Override
public int menu() {
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 s = new Scanner(System.in);
int option = s.nextInt();
return option;
}
}
NormalUser:
package User;
import Operation.*;
import java.util.Scanner;
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
this.operations = new IOOperation[]{
new ExitSystemOperate(),
new FindBookOperate(),
new BorrowBookOperate(),
new BackBookOperate()
};
}
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("********************");
System.out.println("请输入选项:");
Scanner s = new Scanner(System.in);
int option = s.nextInt();
return option;
}
}
书架模块
书类:
package Book;
public class Book {
private String name