【JavaSE】简易图书管理系统


一、成果展示

在这里插入图片描述

  • 管理员界面
    在这里插入图片描述
  • 普通用户界面
    在这里插入图片描述

二、思路

  • 该系统的对象实体主要分为图书实体和用户实体。
  • 对于图书实体,可以编写一个图书类,其中包含图书的各项属性(书名,书号,作者等);除此之外,还需要一个书架类,其中包含一个图书数组,和记录图书书目的变量。
  • 对于用户实体,包含两类用户:管理员用户和普通用户。因此,可以先写一个用户父类,由管理员类和普通用户类继承该父类,然后再分别实现各自不同的方法。
  • 对于图书操作类,先写一个操作接口,然后由其他操作类都实现这个接口,为方便只要引用该接口就可以实例化所有操作类对象。

三、完整代码

  • Book 类
package book;
public class Book {
    private String bookName;
    private String isbn;//书号
    private String author;
    private String press; //出版社
    private double price;
    private boolean borrow;//书本状态(是否被借出)

    public Book(){
    }
    public Book(String bookName, String isbn, String author, String press, double price) {
        this.bookName = bookName;
        this.isbn = isbn;
        this.author = author;
        this.press = press;
        this.price = price;
    }
    @Override
    public String toString() {
        return "Book{" +
                "bookName='《" + bookName + "》\'" +
                ", isbn='" + isbn + '\'' +
                ", author='" + author + '\'' +
                ", press='" + press + '\'' +
                ", price=" + price +
                (borrow == false ? ",未被借出" : ",已被借出")+
                '}';
    }
    public void setBookName(String bookName){
        this.bookName=bookName;
    }
    public String getBookName(){
        return bookName;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getPress() {
        return press;
    }

    public void setPress(String press) {
        this.press = press;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public boolean isBorrow() {
        return borrow;
    }

    public void setBorrow(boolean borrow) {
        this.borrow = borrow;
    }
}

  • BookList 类
package book;
public class BookList {
    private Book[] books = new Book[10];
    private int bookNumber;
    public boolean flag=true; //控制进出书架
    public BookList(){
        books[0]=new Book("老人与海","01223","海明威","北京大学出版社",39.9);
        books[1]=new Book("骆驼祥子","01224","老舍","南京大学出版社",56.9);
        books[2]=new Book("阿Q正传","01225","鲁迅","教育出版社",42.9);
        bookNumber = 3;
    }
    public void setBooks(int pos,Book book){
        books[pos] = book;
    }
    public Book getBooks(int pos){
        return books[pos];
    }

    public int getBookNumber() {
        return bookNumber;
    }

    public void setBookNumber(int bookNumber) {
        this.bookNumber = bookNumber;
    }
}
  • IOpera 接口
package opera;
import book.BookList;
public interface IOpera {
    void work(BookList bookList);
}
  • AddBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddBook implements IOpera{
    public void work(BookList bookList){
        int currNum = bookList.getBookNumber();
        Scanner in = new Scanner(System.in);
        System.out.println("请输入书名:");
        String bookName = in.nextLine();
        System.out.println("请输入书号:");
        String isbn = in.nextLine();
        System.out.println("请输入作者:");
        String author = in.nextLine();
        System.out.println("请输入出版社:");
        String press = in.nextLine();
        System.out.println("请输入价格:");
        double price = in.nextDouble();
        for(int i=0;i<currNum;i++){
            if(bookName.equals(bookList.getBooks(i).getBookName())){
                System.out.println("该书已存在!");
            }
        }
        Book book = new Book(bookName,isbn,author,press,price);
        bookList.setBooks(currNum,book);
        bookList.setBookNumber(currNum+1);
    }
}
  • DelBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class DelBook implements IOpera{
    public void work(BookList bookList) {
        System.out.println("请输入要删除的书:");
        Scanner in = new Scanner(System.in);
        String bookName = in.nextLine();
        FindBook findBook = new FindBook();
        int index = findBook.findBook(bookName,bookList);
        int currNum = bookList.getBookNumber();
        for(int i =index;i<currNum-1;i++){
            Book book = bookList.getBooks(i+1);
            bookList.setBooks(i,book);
        }
        System.out.println("删除成功!");
        bookList.setBookNumber(currNum-1);
    }
}
  • AlterBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AlterBook implements IOpera{
    public void work(BookList bookList) {
        System.out.println("请输入要修改的书:");
        Scanner in = new Scanner(System.in);
        String bookName = in.nextLine();
        FindBook findBook = new FindBook();
        int index = findBook.findBook(bookName,bookList);
        System.out.println("请输入书名:");
        String name = in.nextLine();
        System.out.println("请输入书号:");
        String isbn = in.nextLine();
        System.out.println("请输入作者:");
        String author = in.nextLine();
        System.out.println("请输入出版社:");
        String press = in.nextLine();
        System.out.println("请输入价格:");
        double price = in.nextDouble();
        Book newBook = new Book(name,isbn,author,press,price);
        bookList.setBooks(index,newBook);
    }
}
  • FindBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class FindBook implements IOpera{
    public int findBook(String bookName,BookList bookList){
        int currNum = bookList.getBookNumber();
        for(int i=0;i<currNum;i++){
            Book book = bookList.getBooks(i);
            if(book.getBookName().equals(bookName)){
                return i;
            }
        }
        return -1;
    }
    public void work(BookList bookList) {
        System.out.println("请输入要查找的书名:");
        Scanner in = new Scanner(System.in);
        String bookName = in.nextLine();
        int index = findBook(bookName,bookList);
        if(index!=-1){
            System.out.println(bookList.getBooks(index));
        }
        else{
            System.out.println("未找到该书!");
        }
    }
}
  • BorrowBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class BorrowBook implements IOpera{
    public void work(BookList bookList) {
        System.out.println("请输入需要借的书名:");
        Scanner in = new Scanner(System.in);
        String bookName = in.nextLine();
        FindBook findBook = new FindBook();
        int index = findBook.findBook(bookName,bookList);
        if(index!=-1 && bookList.getBooks(index).isBorrow()==false){
            bookList.getBooks(index).setBorrow(true);
            System.out.println("借书成功!");
        }
        else{
            System.out.println("未找到该书!");
        }
    }
}
  • LendBook 类
package opera;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class LendBook implements IOpera{
    @Override
    public void work(BookList bookList) {
        System.out.println("请输入需要归还的书:");
        Scanner in = new Scanner(System.in);
        String bookName = in.nextLine();
        FindBook findBook = new FindBook();
        int index = findBook.findBook(bookName,bookList);
        if(index!=-1){
            bookList.getBooks(index).setBorrow(false);
            System.out.println("还书成功!");
        }
        else{
            System.out.println("未找到该书!");
        }
    }
}
  • ShowBook 类
package opera;
import book.Book;
import book.BookList;
public class ShowBook implements IOpera{
    public void work(BookList bookList){
        int currNum = bookList.getBookNumber();
        for(int i =0 ;i<currNum;i++){
            System.out.println(bookList.getBooks(i));
        }
    }
}
  • ExitSystem 类
package opera;
import book.BookList;
public class ExitSystem implements IOpera{
    public void work(BookList bookList) {
        bookList.flag=false;
        System.out.println("已成功退出系统!");
    }
}
  • User 类
package user;
import book.BookList;
import opera.IOpera;
abstract public class User  {
    protected String name;
    protected IOpera[] iopera;
    abstract public int meue();
    public void doWork(int choise,BookList bookList){

        this.iopera[choise].work(bookList);
    }
    public User(String name){

        this.name = name;
    }

    public String getName() {

        return name;
    }

    public void setName(String name) {

        this.name = name;
    }
}
  • AdminUser 类
package user;
import opera.*;
import java.util.Scanner;
public class AdminUser extends User{
    public AdminUser(String name){
        super(name);
        this.iopera = new IOpera[]{
                new ExitSystem(),
                new FindBook(),
                new AddBook(),
                new DelBook(),
                new AlterBook(),
                new ShowBook()
        };
    }
    public int meue(){
        System.out.println("---------");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.修改图书");
        System.out.println("5.显示图书");
        System.out.println("0.退出系统");
        System.out.println("---------");
        System.out.println("请输入你的操作:");
        Scanner in = new Scanner(System.in);
        int choise = in.nextInt();
        return choise;
    }
}
  • NormalUser 类
package user;
import opera.*;
import java.util.Scanner;
public class NormalUser extends User {
    public NormalUser(String name){
        super(name);
        this.iopera=new IOpera[]{
                new ExitSystem(),
                new FindBook(),
                new BorrowBook(),
                new LendBook()
        };
    }
    public int meue(){
        System.out.println("---------");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("---------");
        System.out.println("请输入你的操作:");
        Scanner in = new Scanner(System.in);
        int choise = in.nextInt();
        return choise;
    }
}
  • Test 类
import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;
import java.util.Scanner;
public class Test {
    //登录系统
    public static User login() {
        System.out.println("请输入你的姓名:");
        Scanner in = new Scanner(System.in);
        String name = in.nextLine();
        System.out.println("Hello " + name + ",欢迎来到图书管理系统!");
        System.out.println("***********************************");
        System.out.println("请选择你的身份:   1.管理员    2.普通用户");
        System.out.println("***********************************");
        int choise = in.nextInt();
        if (choise == 1) {
            return new AdminUser(name);
        }
        else {
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();
        while(bookList.flag){
            int choise = user.meue();
            user.doWork(choise,bookList);
        }
    }
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值