首先我们应确定我们的需求:
书,书架
用户分为:普通用户,管理员用户
普通用户的权限:查找图书,借阅图书, 归还图书,退出系统
管理员用户的权限:查找图书,新增图书,删除图书,显示图书,退出系统
Book包存放:Book BookList
Use包存放:User,Puser,ImUser
Operator包存放:Operate,Add,Borrow,Delet,Exit,Find,Rvert,Show
Book类实现:
package Book;
public class Book {
private String bName;//书名
private String bAtuthor;//作者
private double bPrice;//价格
private boolean fal;//用于判断是否借出
public Book (String bName, String bAtuthor, Double bPrice) {
this.bName = bName;
this.bAtuthor = bAtuthor;
this.bPrice = bPrice;
}
public String getbName() {
return bName;
}
public void setbName(String bName) {
this.bName = bName;
}
public String getbAtuthor() {
return bAtuthor;
}
public void setbAtuthor(String bAtuthor) {
this.bAtuthor = bAtuthor;
}
public double getbPrice() {
return bPrice;
}
public void setbPrice(double bPrice) {
this.bPrice = bPrice;
}
public boolean isFal() {
return fal;
}
public void setFal(boolean fal) {
this.fal = fal;
}
@Override
public String toString() {
return "Book{" +
"bName='" + bName + '\'' +
", bAtuthor='" + bAtuthor + '\'' +
", bPrice=" + bPrice +
(fal ? " 已被借出" : " 未被借出") +
'}';
}
}
BookList类实现
package Book;
public class BookList {
private Book[] bookList;
private int nowSize;
public BookList () {
bookList = new Book[10];
bookList[0] = new Book("西游记","吴承恩",18.8);
bookList[1] = new Book("三国演义","k=罗贯中",28.8);
bookList[2] = new Book("红楼梦","曹雪芹",38.8);
this.nowSize = 3;
}
public int getNowSize () {
return this.nowSize;
}
public void setNowSize (int size) {
this.nowSize = size;
}
public void setBook (int idx,Book book) {
this.bookList[idx] = book;
}
public Book getBook (int idx) {
return this.bookList[idx];
}
}
Operate接口实现
package Operate;
import Book.BookList;
public interface Operate {
public void method (BookList bookList);
}
Add类实现,用户添加书籍
package Operate;
import Book.Book;
import Book.BookList;
import java.util.Scanner;
public class Add implements Operate {
@Override
public void method(BookList bookList) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要添加的书名:");
String bName = sc.next();
System.out.println("请输入作者名:");
String bAuthor = sc.next ();
System.out.println("请输入数的价格 :");
double price = sc.nextDouble();
Book book = new Book (bName,bAuthor,price);
int size = bookList.getNowSize();
bookList.setBook(size,book);
bookList.setNowSize(size + 1);
}
}
Delet类代码实现,用于删除书籍
package Operate;
import Book.Book;
import Book.BookList;
import java.util.Scanner;
public class Delet implements Operate {
@Override
public void method(BookList bookList) {
System.out.println("请输入你要删除的书名:");
Scanner sc = new Scanner(System.in);
String bName = sc.next ();
int size = bookList.getNowSize();
for (int i = 0; i < size; i++) {
Book book = bookList.getBook(i);
if (bName.equals (book.getbName())) {
System.out.println("已找到,信息如下.");
System.out.println(book);
for (int j = i; j < size - 1; j++) {//通过覆盖删除该书
Book b = bookList.getBook(i + 1);
bookList.setBook(j,b);
}
bookList.setBook(size - 1,null);
bookList.setNowSize(size - 1);//将现有大小减一
System.out.println("已删除");
return;
}
}
System.out.println("该书不存在");
}
}
Find类代码实现,用于查找书籍
package Operate;
import Book.Book;
import Book.BookList;
import java.util.Scanner;
public class Find implements Operate {
@Override
public void method(BookList bookList) {
System.out.println("请输入你要查找的书名:");
Scanner sc = new Scanner(System.in);
String bName = sc.next ();
int size = bookList.getNowSize();
for (int i = 0; i < size; i++) {
Book book = bookList.getBook(i);
if (bName.equals (book.getbName())) {
System.out.println("已找到,信息如下.");
System.out.println(book);
return;
}
}
System.out.println("未找到该书");
}
}
Show类代码实现,用于展现所有书籍信息
package Operate;
import Book.Book;
import Book.BookList;
public class Show implements Operate {
@Override
public void method(BookList bookList) {
int size = bookList.getNowSize();
for (int i = 0; i < size; i ++) {
Book b = bookList.getBook(i);
System.out.println(b);
}
}
}
Borrow类代码实现,用于普通用户借书
package Operate;
import Book.Book;
import Book.BookList;
import java.util.Scanner;
public class Borrow implements Operate {
@Override
public void method(BookList bookList) {
System.out.println("请输入你要查找的书名:");
Scanner sc = new Scanner(System.in);
String bName = sc.next ();
int size = bookList.getNowSize();
for (int i = 0; i < size; i++) {
Book book = bookList.getBook(i);
if (bName.equals (book.getbName())) {
if (book.isFal()) {
System.out.println("该书已被借阅");
} else {
book.setFal(true);
System.out.println("借阅成功");
}
return;
}
}
System.out.println("未找到该书");
}
}
Revert类代码实现,普通用户归还书
package Operate;
import Book.Book;
import Book.BookList;
import java.util.Scanner;
public class Borrow implements Operate {
@Override
public void method(BookList bookList) {
System.out.println("请输入你要查找的书名:");
Scanner sc = new Scanner(System.in);
String bName = sc.next ();
int size = bookList.getNowSize();
for (int i = 0; i < size; i++) {
Book book = bookList.getBook(i);
if (bName.equals (book.getbName())) {
if (book.isFal()) {
System.out.println("该书已被借阅");
} else {
book.setFal(true);
System.out.println("借阅成功");
}
return;
}
}
System.out.println("未找到该书");
}
}
Exit类代码实现
package Operate;
import Book.BookList;
public class Exit implements Operate {
@Override
public void method(BookList bookList) {
System.out.println("已退出");
int size = bookList.getNowSize();
for (int i = 0; i < size; i++) {
bookList.setBook(i,null);
}
System.exit(0);
}
}
User类的实现
package Use;
import Book.BookList;
import Operate.Operate;
public abstract class User {
Operate[] operate;
public abstract int menu ();
public void operate (int choice, BookList bookList) {
operate[choice].method(bookList);
}
}
Puser类的实现
package Use;
import Operate.Operate;
import Operate.Borrow;
import Operate.Exit;
import Operate.Revert;
import Operate.Find;
import java.util.Scanner;
public class Puser extends User {
public Puser () {//初始化该用户的权限
super ();
operate = new Operate[] {
new Exit(),
new Find(),
new Borrow(),
new Revert()
};
}
public int menu () {
System.out.println("欢迎来到图书管理系统");
System.out.println("1.查找图书");
System.out.println("2.借阅图书");
System.out.println("3.归还图书");
System.out.println("0.退出系统");
Scanner sc = new Scanner(System.in);
System.out.println("请选择:》");
int choice = sc.nextInt ();
return choice;
}
}
ImUser类的实现
package Use;
import Operate.Operate;
import Operate.Exit;
import Operate.Show;
import Operate.Delet;
import Operate.Add;
import Operate.Find;
import java.util.Scanner;
public class ImUser extends User {
public ImUser () {
super ();
operate = new Operate[] {
new Exit(),
new Find (),
new Add (),
new Delet(),
new Show ()
};
}
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.退出系统");
Scanner sc = new Scanner(System.in);
System.out.println("请选择:》");
int choice = sc.nextInt ();
return choice;
}
}
Main的实现
import Book.BookList;
import Use.ImUser;
import Use.Puser;
import Use.User;
import java.util.Scanner;
public class Main {
public static User login () {
System.out.println("1:-》管理员登录 2.-》普通用户登录");
Scanner sc = new Scanner(System.in);
int choice = sc.nextInt ();
if (choice == 1) {
return new ImUser();
} else {
return new Puser();
}
}
public static void main(String[] args) {
User user = login ();//选取登录用户
BookList bookList = new BookList();
while (true) {
int choice = user.menu();//选取具体操作
user.operate(choice,bookList);//调用该操作
}
}
}