【JAVA】—简单的图书管理系统
1.简介
物品:书籍 书架
人物:用户 管理员
操作:增加 删除 查找 修改
2.相关类
Book 类-书籍
private String name;//书名
private String author;//作者
private Integer price;//价格
private String type;//类型
private boolean status;//是否借出 默认false
public Book(String name, String author, Integer price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
Book List 类-书架
public int usedSize;
private Book[] books;
public BookList() {
this.books = new Book[10];
//在引用操作前书架就有书
books[0] = new Book("三国","罗贯中",12,"小说");
books[1] = new Book("西游记","吴承恩",32,"小说");
books[2] = new Book("水浒传","施耐庵",52,"小说");
this.usedSize = 3;
}
operation类-操作
先创建 package operation
//这是一个接口其好处在于: 让操作和操作之间低耦合, 让操作和用户之间低耦合
public interface IOperation {
void work(BookList bookList);
}
接下来创建一组操作类, 每个类对应一个用户的动作.
AddOperation
DelOperation
FindOperation
RemoveOperation
DisplayOperation
BorrowOperation
ReturnOperation
ExitOperation
User 类-抽象类
User 类是一个抽象类, 每个子类需要做两件事情
- 初始化对应的操作数组
- 实现 Menu 菜单
public String name;
public IOperation[] operations;
public User(String name) {
this.name = name;
}
public abstract int menu();//用户操作菜单
public void doOperation(int choice, BookList bookList){
//看这个数组当中 存的到底是哪些操作
this.operations[choice].work(bookList);
}
NormalUser类-普通用户
public NormalUser(String name) {
super(name);
this.operations =new IOperation[]{
new ExitOperation(),
new FindOperation(),
new BorrowOperation(),
new ReturnOperation()
};
}
@Override
public int menu() {
Scanner scanner = new Scanner(System.in);
System.out.println("普通用户菜单");
System.out.println("=======================");
System.out.println("hello" + this.name+"欢迎来到图书系统");
System.out.println("1.查找图书");
System.out.println("2.借阅图书");
System.out.println("3.归还图书");
System.out.println("0.退出系统");
int choice = scanner.nextInt();
return choice;
}
AdminUser类-管理员
public AdminUser(String name) {
super(name);
this.operations = new IOperation[]{
new ExitOperation(),
new FindOperation(),
new AddOperation(),
new DelOperation(),
new DisplayOperation()
};
}
@Override
public int menu() {
Scanner scanner = new Scanner(System.in);
System.out.println("管理员菜单");
System.out.println("=======================");
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.退出系统");
int choice = scanner.nextInt();
return choice;
}
3.功能
1、简单的登录
public static User login(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名");
String name = scanner.nextLine();
System.out.println("请输入你的身份:1-》管理员 0:普通用户");
int choice = scanner.nextInt();
if (choice == 1){
return new AdminUser(name);
}else {
return new NormalUser(name);
}
}
2、管理端
- 查阅书籍
public class FindOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("查找书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("输入要查找的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
System.out.println("有这本书!");
System.out.println(book);
return;
}
}
System.out.println("没有这本书!");
}
}
- 增加书籍
public class AddOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("增加书籍 ");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入图书的名字");
String name = scanner.nextLine();
System.out.println("请输入图书的作者");
String author = scanner.nextLine();
System.out.println("请输入图书的价格");
int price = scanner.nextInt();
System.out.println("请输入图书的类型");
String type = scanner.next();
Book book = new Book(name,author,price,type);
int currentSize = bookList.getUsedSize();
bookList.setBooks(currentSize,book);
bookList.setUsedSize(currentSize+1);
}
}
- 删除书籍
public class DelOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("删除书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的书名");
String name = scanner.nextLine();
int i =0;
for (; i <bookList.getUsedSize() ; i++) {
Book book = bookList.getBook(i);
if (book.getName().equals(name)){
break;
}
}
if (i>=bookList.getUsedSize()){
System.out.println("no");
return;
}
int pos = i;
for (int j = pos; j <bookList.getUsedSize()-1 ; j++) {
Book book = bookList.getBook(j+1);
bookList.setBooks(j,book);
}
int currentSize = bookList.getUsedSize();
bookList.setUsedSize(currentSize-1);
System.out.println("删除书籍完毕!");
}
}
- 打印书籍列表
public class DisplayOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("展示书籍");
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
System.out.println(book);
}
}
}
- 退出
public class ExitOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("退出系统");
System.exit(1);
}
}
3、用户端
- 查询书籍
public class FindOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("查找书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("输入要查找的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
System.out.println("有这本书!");
System.out.println(book);
return;
}
}
System.out.println("没有这本书!");
}
}
- 借阅书籍
public class FindOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("查找书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("输入要查找的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
System.out.println("有这本书!");
System.out.println(book);
return;
}
}
System.out.println("没有这本书!");
}
}
- 归还书籍
public class ReturnOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("归还书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要归还的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
book.setStatus(false);
System.out.println(book);
return;
}
}
System.out.println("没有你要归还的这本书!");
}
}
- 退出
public class ExitOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("退出系统");
System.exit(1);
}
}
4.源代码
GitHub源代码
https://github.com/ZHANGHAHAAHA/javatest/tree/master/Study_01_18/src