JavaSE综合大练习——图书管理系统的实现

目录

图书管理系统演示

包的分类

包的内部成员

book包

user包

operation包

具体实现

main函数

User

AdminUser

NormalUser

Book

BookList

FindOperation

AddOperation 

DelOperation

DisplayOperation

ExitOperation

BorrowOperation

ReturnOperation


图书管理系统演示

以管理员身份进入图书管理系统

 显示图书

查找图书 

增加图书 

 

 再次显示图书

 删除图书

再次显示图书

退出系统

以普通成员身份进入图书管理系统

借阅图书

查找图书

归还图书

 

再次查找图书

包的分类

我们要实现图书管理系统首先必不可少的是要确定有哪几个对象,每个对象都放入一个包当中。

图书管理系统的对象有:图书,使用者。所以我们这里就可以分俩个包。为了方便理解,我们也可以把使用者的一些操作单独放入一个包当中

包的内部成员

包分配好了之后,我们就可以在包中写每个包中的具体成员了。

比如book包,我们可以有图书类和用于存放图书的书架类

user包,我们可以有管理员类,普通成员类

operation包中就可以有一些操作:查找图书,增加图书,删除图书,显示图书,借阅图书,归还图书,退出图书管理系统。

book包

user包

因为不管是管理员还是普通成员,都是使用者,这里我们可以写一个User类,让管理员和普通成员继承它,方便以后的一些操作。

operation包

 因为这些方法都是对书架上的图书进行一些操作,所以我们可以写一个接口来作为一种规范。让其它方法都继承它。

具体实现

main函数

import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

public class Main {
    public static User login(){
        System.out.println("请输入你的姓名");
        Scanner scanner = new Scanner(System.in);
        String username = scanner.nextLine();
        System.out.println("请输入你的身份:1 - 管理员,0 - 普通用户");
        int choice = scanner.nextInt();
        if(choice == 1){
            return new AdminUser(username);
        }else{
            return new NormalUser(username);
        }
    }
    public static void main(String[] args) {
        //准备数据
        BookList bookList = new BookList();
        //登录
        User user = login();
        while(true) {
            int choice = user.menu();
            user.doOperation(choice, bookList);
        }
    }
}

User

package user;

import book.BookList;
import operation.IOperation;

public abstract class User {
    protected String name;
    protected IOperation[] ioperation;//只是定义了一个数组,没有初始化和分配内存
    public User(String name){
        this.name = name;
    }
    public abstract int menu();
    public void doOperation(int choice, BookList bookList){
        ioperation[choice].work(bookList);
    }
}

AdminUser

package user;

import operation.*;

import java.util.Scanner;

public class AdminUser extends User {
    public AdminUser(String name){
        super(name);
        this.ioperation = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DispalyOperation(),
        };
    }
    public int menu(){
        System.out.println("***********************************");
        System.out.println("hello"+name+"欢迎来到图书小练习");
        System.out.println("0.退出系统");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示图书");
        System.out.println("***********************************");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

NormalUser

package user;

import operation.*;

import java.util.Scanner;

public class NormalUser extends User {
    public NormalUser(String name){
        super(name);
        this.ioperation = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation(),
        };
    }
    public int menu(){
        System.out.println("***********************************");
        System.out.println("hello"+name+"欢迎来到图书小练习");
        System.out.println("0.退出系统");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("***********************************");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

Book

package book;

public class Book {
    private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//种类
    private 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)?"已借出":"未借出")+
                '}';
    }

    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 isBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
}

BookList

package book;

public class BookList {
    Book[] books = new Book[10];
    private int usedsize = 10;
    //预先存放几本书
    public BookList(){
        books[0] = new Book("三国演义","罗贯中",50,"小说");
        books[1] = new Book("西游记","吴承恩",40,"小说");
        books[2] = new Book("红楼梦","曹雪芹",50,"小说");
        usedsize = 3;
    }

    public int getUsedsize() {
        return usedsize;
    }

    public void setUsedsize(int usedsize) {
        this.usedsize = usedsize;
    }
    public Book getPos(int pos){
        return books[pos];
    }
    //存储一本书到指定的位置
    //当前最后可以存储的位置
    public void setBooks(Book book,int pos){
        books[pos] = book;
    }
}

FindOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书");
        System.out.println("请输入你要查找的图书名字");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getPos(i);
            if(name.equals(book.getName())){
                System.out.println("找到了");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有这本书");
    }
}

AddOperation 

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("增加图书");
        System.out.println("请输入书的名字");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("请输入书的作者");
        String author = scanner.nextLine();
        System.out.println("请输入书的价格");
        int price = scanner.nextInt();
        scanner.nextLine();//读enter建
        System.out.println("请输入书的类型");
        String type = scanner.nextLine();
        Book book = new Book(name,author,price,type);
        int currentSize = bookList.getUsedsize();
        bookList.setBooks(book,currentSize);
        currentSize++;
        bookList.setUsedsize(currentSize);
    }
}

DelOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
        System.out.println("请输入你要删除的图书:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int n = -1;
        int currentSize = bookList.getUsedsize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getPos(i);
            if(name.equals(book.getName())){
                n = i;
                break;
            }
        }
        if(n == -1){
            System.out.println("没有你要删除的这本书");
            return;
        }
        for (int i = n; i < currentSize-1; i++) {
            Book book = bookList.getPos(i+1);
            bookList.setBooks(book,i);
        }
        //每次删除都要把最后一本书置空
        bookList.setBooks(null,currentSize-1);
        bookList.setUsedsize(currentSize-1);
        System.out.println("删除成功");
    }
}

DisplayOperation

package operation;

import book.Book;
import book.BookList;

public class DispalyOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("显示图书");
        int currentSize = bookList.getUsedsize();
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getPos(i);
            System.out.println(book);
        }
    }
}

ExitOperation

package operation;

import book.BookList;

public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        System.exit(0);
    }
}

BorrowOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书");
        System.out.println("请输入你要借阅的图书");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();
        for (int i = 0; i <currentSize ; i++) {
            Book book = bookList.getPos(i);
            if(name.equals(book.getName())){
                if(book.isBorrowed() == true){
                    System.out.println("该书已经被借出");
                    return;
                }else{
                    book.setBorrowed(true);
                    System.out.println("借书成功");
                    return;
                }
            }
        }
        System.out.println("没有你要借的图书");
    }
}

ReturnOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
        System.out.println("请输入你要归还的图书");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();
        for (int i = 0; i <currentSize ; i++) {
            Book book = bookList.getPos(i);
            if(name.equals(book.getName())){
                if(book.isBorrowed() == true){
                    book.setBorrowed(true);
                    System.out.println("还书成功");
                    return;
                }else{
                    System.out.println("该书已被归还");
                    return;
                }
            }
        }
        System.out.println("该书不是本图书馆的书,无需归还");
    }
 }

猜你喜欢

转载自blog.csdn.net/qq_62712350/article/details/126542909
今日推荐