目录
一、book包
1.1 Book
package book;
/**
* Created with IntelliJ IDEA.
* Description: 图书
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:28
*/
public class Book {
private String bookName;
private String author;
private String type;
private double price;
private boolean isLend;//是否被借出
//new Book的同时利用构造方法初始化这本书的属性
//isLend不用初始化,因为它默认时false
public Book(String bookName, String author, String type, double price) {
this.bookName = bookName;
this.author = author;
this.type = type;
this.price = price;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public boolean getIsLend() {
return isLend;
}
public void setIsLend(boolean isLend) {
this.isLend = isLend;
}
@Override
public String toString() {
return "Book{" +
"bookName='" + bookName + '\'' +
", author='" + author + '\'' +
", type='" + type + '\'' +
", price=" + price +
(isLend ? ", 已借出" : ", 未借出") +
'}';
}
}
1.2 BookCase
package book;
/**
* Created with IntelliJ IDEA.
* Description: 书架
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:28
*/
public class BookCase {
private Book[] books;
private int usedSize;//有效数据个数
//初始化书架大小,并默认放入三本书
public BookCase() {
this.books = new Book[4];
books[0] = new Book("三国演义","罗贯中","小说",32.89);
books[1] = new Book("西游记","吴承恩","小说",22.55);
books[2] = new Book("红楼梦","曹雪芹","小说",54.34);
this.usedSize = 3;
}
public void changeDel(int pos) {//注意🙀
int i = pos;
for (; i < this.usedSize - 1; i++) {
this.books[i] = this.books[i + 1];
}
this.books[i] = null;
}
public boolean isFull() {
if (this.books.length == this.usedSize) {
return true;
} else {
return false;
}
}
public Book getBooks(int pos) {
if (pos >= 0 && pos < this.usedSize) {
return this.books[pos];
} else {
throw new NullPointerException();//运行时异常可以不去处理
}
}
public void setBooks(Book book) {
this.books[this.usedSize] = book;
}
public void setBooks(int pos, Book book) {//注意🙀
if (pos >= 0 && pos <= this.usedSize) {
this.books[pos] = book;
}
}
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
}
二、Main
import book.Book;
import book.BookCase;
import user.AdminUser;
import user.NormalUser;
import user.User;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:29
*/
public class Main {
public static User login() {
Scanner scan = new Scanner(System.in);
System.out.println("请输入您的姓名:");
String userName = scan.nextLine();
while (true) {
System.out.println("请输入您的身份:1.管理员 2.普通用户");
int choice = scan.nextInt();
if (choice == 1) {
AdminUser adminUser = new AdminUser(userName);
return adminUser;
} else if (choice == 2) {
NormalUser normalUser = new NormalUser(userName);
return normalUser;
} else {
System.out.println("输入有误,请重试");
}
}
}
public static void main(String[] args) {
BookCase bookCase = new BookCase();
User user = login();
while (true) {
int choice = user.menu();
user.workOperation(choice, bookCase);
}
}
}
三、operation包
3.1 AddOperation
package operation;
import book.Book;
import book.BookCase;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:03
*/
public class AddOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
Scanner scan = new Scanner(System.in);
System.out.println("*******新增图书*******");
boolean isFull = bookCase.isFull();
if (isFull) {
System.out.println("书架已满,无法新增!");
return;
}
System.out.println("请输入新增图书书名:");
String curBookName = scan.nextLine();
System.out.println("请输入新增图书作者名:");
String curAuthor = scan.nextLine();
System.out.println("请输入新增图书类型:");
String curType = scan.nextLine();
System.out.println("请输入新增图书价格:");
double curPrice = scan.nextDouble();
Book book = new Book(curBookName,curAuthor,curType,curPrice);
bookCase.setBooks(book);
int curUsedSize = bookCase.getUsedSize();
bookCase.setUsedSize(curUsedSize+1);
}
}
3.2 BorrowedOperatioin
package operation;
import book.Book;
import book.BookCase;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:05
*/
public class BorrowedOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
Scanner scan = new Scanner(System.in);
System.out.println("*******借阅图书*******");
System.out.println("请输入您要借阅的图书书名:");
String bookName = scan.nextLine();
System.out.println("请输入您要借阅的图书作者名:");
String author = scan.nextLine();
int curUsedSize = bookCase.getUsedSize();
for (int i = 0; i < curUsedSize; i++) {
Book book = bookCase.getBooks(i);
String curBookName = book.getBookName();
String curAuthor = book.getAuthor();
if (curBookName.equals(bookName) && curAuthor.equals(author)) {
if (book.getIsLend()) {
System.out.println("本书已被借阅!");
} else {
book.setIsLend(true);
System.out.println("借阅成功!");
}
return;
}
}
System.out.println("书架上没有这本书!");
}
}
3.3 DelOperation
package operation;
import book.Book;
import book.BookCase;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:05
*/
public class DelOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
Scanner scan = new Scanner(System.in);
System.out.println("*******删除图书*******");
System.out.println("请输入您要删除的图书书名:");
String bookName = scan.nextLine();
System.out.println("请输入您要删除的图书作者名:");
String author = scan.nextLine();
int curUsedSize = bookCase.getUsedSize();
for (int i = 0; i < curUsedSize; i++) {
Book book = bookCase.getBooks(i);
String curBookName = book.getBookName();
String curAuthor = book.getAuthor();
if (curBookName.equals(bookName) && curAuthor.equals(author)) {
bookCase.changeDel(i);
bookCase.setUsedSize(curUsedSize - 1);
return;
}
}
System.out.println("书架上没有这本书!");
}
}
3.4 DisplayOperation
package operation;
import book.Book;
import book.BookCase;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:06
*/
public class DisplayOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
System.out.println("*******显示图书*******");
int usedSize = bookCase.getUsedSize();
for (int i = 0; i < usedSize; i++) {
Book book = bookCase.getBooks(i);
System.out.println(book);
}
}
}
3.5 ExitOperation
package operation;
import book.Book;
import book.BookCase;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:05
*/
public class ExitOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
System.out.println("*******退出系统*******");
int usedSize = bookCase.getUsedSize();
for (int i = 0; i < usedSize; i++) {
bookCase.setBooks(i,null);
}
System.exit(0);
}
}
3.6 FindOperation
package operation;
import book.Book;
import book.BookCase;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:03
*/
public class FindOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
Scanner scan = new Scanner(System.in);
System.out.println("*******查找图书*******");
System.out.println("请输入您要查找的图书书名:");
String bookName = scan.nextLine();
System.out.println("请输入您要查找的图书作者名:");
String author = scan.nextLine();
int usedSize = bookCase.getUsedSize();
for (int i = 0; i < usedSize; i++) {
Book book = bookCase.getBooks(i);
String curBookName = book.getBookName();
String curAuthor = book.getAuthor();
if (curBookName.equals(bookName) && curAuthor.equals(author)) {
System.out.println(book);
return;
}
}
System.out.println("书架上没有这本书!");
}
}
3.7 IOperation
package operation;
import book.BookCase;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:04
*/
public interface IOperation {
void work(BookCase bookCase);
}
3.8 ReturnOperation
package operation;
import book.Book;
import book.BookCase;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 10:06
*/
public class ReturnOperation implements IOperation {
@Override
public void work(BookCase bookCase) {
Scanner scan = new Scanner(System.in);
System.out.println("*******归还图书*******");
System.out.println("请输入您要归还的图书书名:");
String bookName = scan.nextLine();
System.out.println("请输入您要归还的图书作者名:");
String author = scan.nextLine();
int curUsedSize = bookCase.getUsedSize();
for (int i = 0; i < curUsedSize; i++) {
Book book = bookCase.getBooks(i);
String curBookName = book.getBookName();
String curAuthor = book.getAuthor();
if (curBookName.equals(bookName) && curAuthor.equals(author)) {
if (book.getIsLend()) {
book.setIsLend(false);
System.out.println("归还成功!");
} else {
System.out.println("本书已归还过!");
}
return;
}
}
System.out.println("书架上没有这本书!");
}
}
四、user
4.1 AdminUser
package user;
import operation.*;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:28
*/
public class AdminUser extends User {
public AdminUser(String userName) {
super(userName);
super.iOperations = new IOperation[] {
new ExitOperation(),
new FindOperation(),
new AddOperation(),
new DelOperation(),
new DisplayOperation()
};
}
@Override
public int menu() {
Scanner scan = new Scanner(System.in);
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.print("请选择:");
int choice = scan.nextInt();
return choice;
}
}
4.2 NormalUser
package user;
import operation.*;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:29
*/
public class NormalUser extends User {
public NormalUser(String userName) {
super(userName);
super.iOperations = new IOperation[]{
new ExitOperation(),
new FindOperation(),
new BorrowedOperation(),
new ReturnOperation()
};
}
@Override
public int menu() {
Scanner scan = new Scanner(System.in);
System.out.println("********普通用户菜单*******");
System.out.println("1.查找图书");
System.out.println("2.借阅图书");
System.out.println("3.归还图书");
System.out.println("0.退出系统");
System.out.println("*************************");
System.out.print("请选择:");
int choice = scan.nextInt();
return choice;
}
}
4.3 User
package user;
import book.BookCase;
import operation.IOperation;
/**
* Created with IntelliJ IDEA.
* Description:
* User: tangyuxiu
* Date: 2024-08-04
* Time: 9:28
*/
public abstract class User {
private String userName;
protected IOperation[] iOperations;//注意🙀
//父类的成员变量初始化,要在父类中提供构造方法
public User(String userName) {
this.userName = userName;
}
public abstract int menu();
//注意🙀
public void workOperation(int choice, BookCase bookCase) {
this.iOperations[choice].work(bookCase);
}
}
本篇已完结 ......