1、简单的登录
2、管理端
1、查阅书籍
2、增加书籍
3、删除书籍
4、打印书籍列表
5、退出系统
3、用户端
1、查找书籍
2.、借阅书籍
3.、归还书籍
4、打印书籍列表
5、退出系统
4、类的设计
1、创建图书相关的类
2、创建操作相关的类
3、创建用户相关的类
4、进行整合
5、代码
1、图书类book
1、Book
package com.bit.book;
public class Book {
public String name;
public String author;
public int price;
public String type;//小说
public boolean isBorrowed;//是否被借出
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==true)?",已经被借出":",未借出")+
//", isBorrowed=" + isBorrowed +
'}';
}
}
2、BookList
package com.bit.book;
public class BookList {
public Book[] books=new Book[10];
private int size;//有效数据个数
public BookList(){
books[0]=new Book("三国演义","罗贯中",12,"小说");
books[1]=new Book("西游记","吴承恩",13,"小说");
books[2]=new Book("水浒传","施耐庵",14,"小说");
this.size=3;
}
public void setBooks(int pos,Book book){
this.books[pos] = book;
}
public Book getBooks(int pos) {
return books[pos];
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
2、操作类operation
1、AddOperation(增加书籍)
package com.bit.operation;
import com.bit.book.Book;
import com.bit.book.BookList;
public class AddOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("AddOperation");
System.out.println("请输入图书的名字:");
String name = scanner.next();
System.out.println("请输入图书的作者");
String author = scanner.next();
System.out.println("请输入图书的价格");
int price = scanner.nextInt();
System.out.println("请输入图书的类型");
String type = scanner.next();
Book book = new Book(name,author,price,type);
//没有考虑满的情况
int curSize = bookList.getSize();
bookList.setBooks(curSize,book);
bookList.setSize(curSize+1);
System.out.println("添加书籍成功!");
}
}
2、BorrowOperation(借阅书籍)
package com.bit.operation;
import com.bit.book.Book;
import com.bit.book.BookList;
public class BorrowOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("BorrowOperation");
System.out.println("输入需要借阅书籍的名称");
String name = scanner.next();
//不会从bookList-》进行删除-》isBorrowed true
//1、找这本书 是否存在
int i = 0;
for (; i < bookList.getSize(); i++) {
if(bookList.getBooks(i).name.equals(name)) {
break;
}
}
if(i >= bookList.getSize()) {
System.out.println("没有此书");
return;
}
//2、他是否被借出 false 可以借
Book book = bookList.getBooks(i);
if(book.isBorrowed) {
System.out.println("已经借出去了");
}else {
book.isBorrowed = true;
System.out.println("书籍成功借阅");
}
}
}
3、DelOperation(删除书籍)
package com.bit.operation;
import com.bit.book.Book;
import com.bit.book.BookList;
public class DelOperation implements IOperation {
@Override
public void work(BookList bookList) {
System.out.println("DelOperation");
System.out.println("输入需要删除书籍的名称");
String name = scanner.next();
//不会从bookList-》进行删除-》isBorrowed true
//1、找这本书 是否存在
int i = 0;
for (; i < bookList.getSize(); i++) {
if(bookList.getBooks(i).name.equals(name)) {
break;
}
}
if(i >= bookList.getSize()) {
System.out.println("没有此书");
return;
}
//2、开始删除
int pos = i;
for (int j = pos; j < bookList.getSize()-1; j++) {
Book nextBook = bookList.getBooks(j+1);
bookList.setBooks(j,nextBook);
}
bookList.setSize(bookList.getSize()-1);
System.out.println("删除成功!");
}
}
前面增加了《活着》这本书,现在删除《西游记》并打印列表,会发现,没有西游记这本书了。
4、DisplayOperation(打印书籍列表)
package com.bit.operation;
import com.bit.book.BookList;
public class DisplayOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("DisplayOperation");
for (int i = 0; i < bookList.getSize(); i++) {
System.out.println(bookList.getBooks(i));
}
}
}
5、ExitOperation(退出系统)
package com.bit.operation;
import com.bit.book.BookList;
public class ExitOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("byebye!");
System.exit(0);
}
}
0退出系统
6、FindOperation(查找书籍)
package com.bit.operation;
import com.bit.book.BookList;
public class FindOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("FindOperation");
System.out.println("输入需要查找书籍的名称");
String name = scanner.next();
//不会从bookList-》进行删除-》isBorrowed true
//1、找这本书 是否存在
int i = 0;
for (; i < bookList.getSize(); i++) {
if(bookList.getBooks(i).name.equals(name)) {
System.out.println(bookList.getBooks(i));
break;
}
}
if(i >= bookList.getSize()) {
System.out.println("没有此书");
return;
}
System.out.println("书籍查找成功");
}
}
7、IOperation(接口)
package com.bit.operation;
import com.bit.book.BookList;
import java.util.Scanner;
public interface IOperation {
Scanner scanner=new Scanner(System.in);
void work(BookList bookList);
}
8、ReturnOperation(归还书籍)
package com.bit.operation;
import com.bit.book.Book;
import com.bit.book.BookList;
public class ReturnOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("ReturnOperation");
System.out.println("输入需要归还书籍的名称");
String name = scanner.next();
//不会从bookList-》进行删除-》isBorrowed true
//1、找这本书 是否存在
int i = 0;
for (; i < bookList.getSize(); i++) {
if(bookList.getBooks(i).name.equals(name)) {
break;
}
}
if(i >= bookList.getSize()) {
System.out.println("没有此书");
return;
}
//2、他是否被借出 false 可以借
Book book = bookList.getBooks(i);
if(book.isBorrowed) {
book.isBorrowed = false;
System.out.println("书籍归还成功!");
}else {
System.out.println("书籍归还失败");
}
}
}
3、用户类
1、Admin(管理员)
package com.bit.usr;
import com.bit.operation.*;
import java.util.Scanner;
public class Admin extends User{
public Admin(String name) {
this.name = name;
this.operations = new IOperation[]{new ExitOperation(),new FindOperation(),
new AddOperation(), new DelOperation(), new DisplayOperation()};
}
@Override
public int menu() {
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. 退出系统");
System.out.println("=============================");
System.out.println("请输入您的选择: ");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
2、NormalUser(普通用户)
package com.bit.usr;
import com.bit.operation.*;
import java.util.Scanner;
public class NormalUser extends User {
public NormalUser(String name){
this.name=name;
this.operations=new IOperation[]{ new ExitOperation(), new FindOperation(),
new BorrowOperation(), new ReturnOperation(), new DisplayOperation() };
}
@Override
public int menu() {
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. 退出系统");
System.out.println("=============================");
System.out.println("请输入您的选择: ");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
3、User(用户)
package com.bit.usr;
import com.bit.book.BookList;
import com.bit.operation.IOperation;
public abstract class User {
protected String name;
protected IOperation[] operations;
public abstract int menu();
// 根据用户选项执行操作
public void doOperation(int choice, BookList bookList) {
operations[choice].work(bookList);
}
}
4、Main(主函数)
package com.bit;
import com.bit.book.BookList;
import com.bit.usr.*;
import java.util.Scanner;
public class Main {
public static User login() {
System.out.println("请输入你的名字:");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
System.out.println("请输入您的身份(1 表示管理员, 0 表示普通用户):");
int who = scanner.nextInt();
if(who == 1) {
return new Admin(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();
// 0 bookList
user.doOperation(choice, bookList);
}
}
}