大的方面分为三个部分:图书、用户(管理员和普通用户)、图书系统的功能。
图书:
先是一个关于书籍的类(Book),里边存放当前书籍的书名、作者、类型、价格等信息。
再是一个关于图书系统的类(BookList),里边存放一个Book数组,包含图书系统里的各种书籍。
用户:
由于用户分为管理员和普通用户,但是他们存在姓名及对书籍进行一些操作的共有信息,所以我们首先定一个User父类,里边存放姓名,各自不同的菜单及操作数组。
管理员和普通用户都为了继承父类,分别是Admin类(管理员)和NomalUder类(普通用户),里边分别包含各自从父类继承来的属性以及对方法的重写。
图书系统功能:
先定义一个各个功能的总接口(Ioperation)。
再是实现这个接口的实现类,来实现增删改查等功能。
三个文件夹(book,operation,usr)来控制整个图书管理系统。
1>接口
public interface IOperation {
Scanner scanner=new Scanner(System.in);
public void work(BookList booklist);
}
scanner方便后面各个功能从键盘读取数据,比如添加书籍时,需要输入书籍的书名,作者等信息。work方法为后面实现类来重写具体的功能。
2>添加书籍
public class AddOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("添加书籍");
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,true);
//添加图书
booklist.books[booklist.getSize()]=book;
//长度加一
booklist.setSize(booklist.getSize()+1);
}
}
3>借阅书籍
public class BorrewOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("BorrowOperation");
System.out.println("输入需要借阅书籍的名称");
String name=scanner.next();
int flag=-1;//记录此书在系统中的位置,没有则为0
//1.这本书是否存在
for(int i=0;i
4>删除图书
public class DelOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("BorrowOperation");
System.out.println("输入需要删除书籍的名称");
String name=scanner.next();
//先查找这本书是否存在
int flag=-1;
for(int i=0;i
5>打印书籍信息
public class DisplayOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("DisplayOperation");
for(int i=0;i
6>查找图书
public class FindOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("BorrowOperation");
System.out.println("输入需要查询书籍的名称");
String name=scanner.next();
//先查找这本书是否存在
int flag=-1;
for(int i=0;i
7>归还图书
public class ReturnOperation implements IOperation {
@Override
public void work(BookList booklist) {
System.out.println("BorrowOperation");
System.out.println("输入需要归还书籍的名称");
String name=scanner.next();
//先查找这本书是否存在
int flag=-1;
for(int i=0;i
8>退出系统
public class Exit implements IOperation{
@Override
public void work(BookList booklist) {
System.out.println("byebye!");
}
}
1>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,boolean isBorrowed) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
this.isBorrowed=true;//表示可借
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", isBorrowed=" + isBorrowed +
'}';
}
}
2>BookList类
public class BookList {
public Book[] books=new Book[10];
public int size;//标记有效字符个数;
//构造函数
public BookList()
{
books[0]=new Book("三国演义","罗贯中",23,"小说",true);
books[1]=new Book("西游记","吴承恩",13,"小说",true);
books[2]=new Book("水浒传","施耐庵",6,"小说",true);
this.size=3;
}
@Override
public String toString() {
return "BookList{" +
"books=" + Arrays.toString(books) +
", size=" + size +
'}';
}
//获取书籍数量
public int getSize() {
return size;
}
//改变图书系统书籍数目
public void setSize(int size) {
this.size = size;
}
//添加pos位置的图书
public void setBooks(int pos,Book book) {
this.books[pos]=book;
}
//获取pos位置的图书
public Book getBooks(int pos) {
return books[pos];
}
}
1>User父类
public abstract class User {
protected String name;
//接口定义了一个数组,这个数组里边的内容是 实现这个接口的类(FindOperation,BorrewOperation
//等都是实现IOperation接口的类)
protected IOperation[] operations;
public abstract int menu();
//根据用户的操作执行
public void doOperation(int choice, BookList bookList)
{
operations[choice].work(bookList);
}
}
2>管理员
public class Admin extends User{
public Admin(String name)
{
this.name=name;
this.operations=new IOperation[]{
new Exit(),
new AddOperation(),
new DelOperation(),
new DisplayOperation(),
new FindOperation(),
};
}
@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>普通用户
public class NomalUser extends User {
public NomalUser(String name){
this.name=name;
this.operations=new IOperation[]{
new Exit(),
new FindOperation(),
new BorrewOperation(),
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;
}
}