这个数
z分为三个包
1.主要创建书,书架以及启动程序
2.主要对应一些关于书的操作
3.建立使用者的类
这是程序启动的主程序,也就是main函数,刚开始是判断用户的身份,进而不同的身份对应着不同的操作方法
package demo1;
import demo3.AdminUser;
import demo3.NormolUser;
import demo3.User;
import java.util.Scanner;
public class Main {
public static User login() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入你的身份:1.管理员 2.普通用户");
int choice = sc.nextInt();
if (choice == 1) {
return new AdminUser(username);
} else {
return new NormolUser(username);
}
}
public static void main(String[] args) {
BookList bookList = new BookList();
User user = login();
while (true) {
int choice=user.menu();
user.doIOperation(choice,bookList);
}
}
}
这是书的类,主要包含书的属性和tostring方法
package demo1;
public class Book {
private String name;
private String author;
private int price;
private String type;
private boolean isBorrowed;
public Book() {
}
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isIsBorrowed() {
return isBorrowed;
}
public void setIsBorrowed(boolean isBorrowed) {
this.isBorrowed = isBorrowed;
}
@Override
public String toString() {
return "Book{name = " + name
+ ", author = " + author
+ ", price = " + price
+ ", type = " + type
+ ','+((isBorrowed )? ", 已借出":"未借出")+'}';
}
}
这是书架类,初始化的时候就已经放进去三本书
package demo1;
public class BookList {
private Book[] books=new Book[10];
private int useSize;
public BookList(){
this.books[0]=new Book("三国演义","罗贯中",100,"小说");
this.books[1]=new Book("红楼梦","曹雪芹",90,"小说");
this.books[2]=new Book("西游记","吴承恩",80,"小说");
useSize=3;
}
public int getUseSize(){
return useSize;
}
public void setUseSize(int useSize){
this.useSize=useSize;
}
public Book[] getBook(){
return books;
}
public Book getBook(int pos) {
return books[pos];
}
public void setBook(int pos,Book books) {
this.books [pos]= books;
}
}
接下来是一些操作,可以见名知意。其中创建了一个接口,用来更加便捷的进行对书架的操作
package demo2;
import demo1.Book;
import demo1.BookList;
import java.util.Scanner;
public class AddOperation implements IOoperation{
@Override
public void work(BookList bookList) {
//1.判断书架是否放满
int currentSize=bookList.getUseSize();
if(currentSize==bookList.getBook().length){
System.out.println("书架已放满");
return;
}
//2.获取用户输入
Scanner scanner=new Scanner(System.in);
System.out.println("请输入书名:");
String name=scanner.nextLine();
System.out.println("请输入作者:");
String author=scanner.nextLine();
System.out.println("请输入类型");
String type=scanner.nextLine();
System.out.println("请输入价格:");
int price=scanner.nextInt();
//3.创建一本书
Book newbook=new Book(name,author,price,type);
//4.判断书架是否有这本书
for (int i = 0; i < currentSize; i++) {
Book book=bookList.getBook(i);
if(book.getName().equals(name)){
System.out.println("书架已存在这本书");
return;
}
}
//5.将这本书放入书架
bookList.setBook(currentSize,newbook);
bookList.setUseSize(currentSize+1);
System.out.println("添加成功");
}
}
package demo2;
import demo1.Book;
import demo1.BookList;
import java.util.Scanner;
public class BorrowedOperation implements IOoperation{
@Override
public void work(BookList bookList) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要借阅的书名:");
String name = scanner.nextLine();
int currentSize= bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
if(book.isIsBorrowed()){
System.out.println("该书籍已经被借阅!");
return;
}
if (bookList.getBook(i).getName().equals(name)) {
book.setIsBorrowed(true);
System.out.println("借阅成功!");
return;
}
}
System.out.println("没有找到该书籍!");
}
}
package demo2;
import demo1.Book;
import demo1.BookList;
import java.util.Scanner;
public class DelOperation implements IOoperation{
@Override
public void work(BookList bookList) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的图书的名字:");
String name = scanner.nextLine();
int currentSize = bookList.getUseSize();
int index = -1;
for (int i = 0; i < bookList.getUseSize(); i++) {
Book book = bookList.getBook(i);
if (book.getName().equals(name)) {
index = i;
break;
}
if(i==currentSize){
System.out.println("没有找到该图书");
return;
}
}
for (int i = index; i < currentSize-1; i++) {
Book book = bookList.getBook(i+1);
bookList.setBook(i, book);
}
bookList.setBook(currentSize-1,null);
bookList.setUseSize(currentSize-1);
System.out.println("删除成功");
}
}
package demo2;
import demo1.BookList;
public class ExitOperation implements IOoperation{
@Override
public void work(BookList bookList) {
System.exit(0);
}
}
package demo2;
import demo1.BookList;
import java.util.Scanner;
public class FindOperation implements IOoperation{
@Override
public void work(BookList bookList) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查找的书名:");
String name = scanner.nextLine();
int currentSize= bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
if (bookList.getBook(i).getName().equals(name)) {
System.out.println(bookList.getBook(i));
return;
}
}
System.out.println("没有找到该书");
}
}
package demo2;
import demo1.BookList;
public interface IOoperation {
void work(BookList bookList);
}
package demo2;
import demo1.Book;
import demo1.BookList;
import java.util.Scanner;
public class ReturnOperation implements IOoperation{
@Override
public void work(BookList bookList) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要归还的书名:");
String name = scanner.nextLine();
int currentSize= bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)){
if(book.isIsBorrowed()){
book.setIsBorrowed(false);
System.out.println("归还成功!");
return;
}
}
}
System.out.println("没有找到该书!");
}
}
package demo2;
import demo1.Book;
import demo1.BookList;
public class ShowOperation implements IOoperation{
@Override
public void work(BookList bookList) {
int currentSize = bookList.getUseSize();
for (int i = 0; i < currentSize; i++) {
Book book = bookList.getBook(i);
System.out.println(book);
}
}
}
最后是用户的类,分为管理员和普通用户,以及他们的父类
package demo3;
import demo2.*;
import java.util.Scanner;
public class AdminUser extends User {
public AdminUser(String name) {
super(name);
this.iOoperations=new IOoperation[]{
new ExitOperation(),
new FindOperation(),
new AddOperation(),
new DelOperation(),
new ShowOperation()
};
}
@Override
public int menu() {
System.out.println("管理员"+name+"登录成功!");
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("********************");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的选择");
int choice = scanner.nextInt();
return choice;
}
}
package demo3;
import demo2.*;
import java.util.Scanner;
public class NormolUser extends User{
public NormolUser(String name) {
super(name);
this.iOoperations=new IOoperation[]{
new ExitOperation(),
new FindOperation(),
new BorrowedOperation(),
new ReturnOperation()
};
}
@Override
public int menu() {
System.out.println("普通用户"+name+"登录成功");
System.out.println("*****普通用户菜单*****");
System.out.println("1.查找图书");
System.out.println("2.借阅图书");
System.out.println("3.归还图书");
System.out.println("0.退出系统");
System.out.println("********************");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的选择");
int choice = scanner.nextInt();
return choice;
}
}
package demo3;
import demo1.BookList;
import demo2.IOoperation;
public abstract class User {
protected String name;
protected IOoperation[] iOoperations;
public User(String name) {
this.name = name;
}
public abstract int menu();
public void doIOperation(int choice, BookList bookList){
iOoperations[choice].work(bookList);
}
}