Simple book management system-Java implementation

Simple book management system-Java implementation

I am still a noob, and I have nothing to do. I learned this program from the big cows on the Internet. It is not difficult in itself, but I am not comprehensive enough in many details. Some functions have not been implemented, and the code is readable. Sex is not very high, so please give me some advice!

It is mainly divided into 3 categories, Book category, LibraryManager category, and Test category.

The formatted output of Java Date can be found on CSDN. There are many. I'll be lazy here, hehe!

The code is attached:

Book class:

Mainly book attributes, and set and get methods, which can be modified according to your needs


import java.util.Date;

public class Book {
    private String name;//书名
    private int id;//序列号
    private int price;//价格
    private String authon;//作者
    private boolean statc = true;//借阅状态ture在馆,false借出
    private Date borrowData;//借阅日期
    private int count;//被借次数

    public Date getBorrowData() {
        return borrowData;
    }

    public void setBorrowData(Date borrowData) {
        this.borrowData = borrowData;
    }

    public int getCount() {
        return count;
    }

    public void setCount() {
        this.count++;
    }

    public boolean getStatc() {
        return statc;
    }

    public void setStatc(boolean statc) {
        this.statc = statc;
    }

    public Book(String name, int id, int price, String authon) {//构造函数
        this.name = name;
        this.id = id;
        this.price = price;
        this.authon = authon;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getPrice() {
        return price;
    }

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

    public String getAuthon() {
        return authon;
    }

    public void setAuthon(String authon) {
        this.authon = authon;
    }
}

LibraryManager class:

The commented out ones are repetitive. The
readability is a bit poor, I hope you can give me more advice!


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class LibraryManager {
    private Book[] book = new Book[10];//创建数组存储书本
    Scanner input = new Scanner(System.in);
    Date date = new Date();
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

    public void init(){//初始化
        Book book1 = new Book("《平凡的世界》",01,50,"贾平凹");
        Book book2 = new Book("《巴黎圣母院》",02,35,"雨果");
        Book book3 = new Book("《金陵十三钗》",03,26,"严歌苓");
        book[0] = book1;
        book[1] = book2;
        book[2] = book3;
    }

    public void menu(){//界面选择
        System.out.println("-------欢迎进入图书管理系统--------");
        System.out.println("请根据提示选择:");
        System.out.println("1.增加图书\t\t2.删除图书\t\t3.借阅图书\n4.归还图书\t\t5.图书借阅排行\t"+"6.书籍目录\n"+"0.退出系统");
        int choice = input.nextInt();
        switch (choice){
            case 1:
                addBook();
                break;
            case 2:
                deleteBook();
                break;
            case 3:
                checkOutBook();
                break;
            case 4:
                returnBook();
                break;
            case 5:
                rankBook();
                break;
            case 6:
                showBook();
                break;
            case 0:
                System.exit(0);
            default:
        }
    }

    public void showBook(){//输出图书
        for(Book x :book) {
            if (x!=null) {
                if (x.getStatc())
                    System.out.println("名称:" + x.getName() +
                            "\t\t\t序列号:" + x.getId() + "\t\t作者:" + x.getAuthon() +
                            "\t\t被借"+x.getCount()+"次"+"\t\t状态:入藏");
                else
                    System.out.println("名称:" + x.getName() +
                            "\t\t\t序列号:" + x.getId() + "\t\t作者:" + x.getAuthon() +
                            "\t\t被借"+x.getCount()+"次"+"\t\t状态:"+format.format(x.getBorrowData())+"借出");
            }
        }
    }

    public void rankBook() {//按借阅次数降序排序
        Book[] tempbook = new Book[book.length];//创建一个临时数组使之等于原数组
        for(int i = 0;i<book.length;i++){
            if(book[i] != null){
                tempbook[i] = book[i];
            }
        }
        System.out.println("借书次数由高到低为:");
        int i, j;
        for (i = 0;i < tempbook.length-1;i++) {//冒泡排序
            for (j = 0; j < tempbook.length - i - 1; j++) {
                if (tempbook[j] != null && tempbook[j + 1] != null) {
                    if (tempbook[j].getCount() < tempbook[j + 1].getCount()) {
                        Book temp = tempbook[j];
                        tempbook[j] = tempbook[j + 1];
                        tempbook[j + 1] = temp;
                    }
                }
            }
        }

        for (Book x : tempbook) {
            if (x != null) {
                if (x.getStatc())
                    System.out.println("名称:" + x.getName() +
                            "\t\t序列号:" + x.getId() + "\t\t作者:" + x.getAuthon() +
                            "\t\t被借" + x.getCount() + "次" + "\t\t状态:入藏");
                else
                    System.out.println("名称:" + x.getName() +
                            "\t\t序列号:" + x.getId() + "\t\t作者:" + x.getAuthon() +
                            "\t\t被借" + x.getCount() + "次" + "\t\t状态:" + x.getBorrowData() + "借出");
            }
        }
    }
    
    public void addBook(){//增加图书
        String name,authon;
        int id,price,i;
        System.out.println("请输入书籍名称,序列号,价格,作者");
        name = input.next();
        id = input.nextInt();
        price = input.nextInt();
        authon = input.next();
        Book temp = new Book(name,id,price,authon);
        for(i = 0;i<book.length;i++){
            if(book[i]==null)
                break;
        }
        book[i] = temp;
    }

    public int findName(int location){//查找与name相同的下标
        String name = input.next();
        for(int j = 0;j < book.length;j++){
            if(book[j].getName().equals(name)){
                location = j;
                break;
            }
        }
        return location;
    }

    public int findId(int location){//查找与序列号相同的下标
        int n = input.nextInt();
        for(int j = 0;j < book.length;j++){
            if(book[j].getId()==n){
                location = j;
                break;
            }
        }
        return location;
    }

    public void deleteBook(){//删除图书
        System.out.println("1.按名称删除\t"+"2.按序列号删除");
        int i = input.nextInt(),location = -1;//待删除下标
        switch (i){
            case 1:
                System.out.println("请输入要删除的书籍名称:");
//                String name = input.next();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getName().equals(name)){
//                        location = j;
//                        break;
//                    }
//                }
                location = findName(location);
                break;
            case 2:
                System.out.println("请输入要删除书籍的序列号:");
//                int n = input.nextInt();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getId()==n){
//                        location = j;
//                        break;
//                    }
//                }
                location = findId(location);
                break;
        }
        //进行移动
        int start = location,end;
        int nulllocation = book.length;//null的下标
        for(int j = 0;j<book.length;j++){
            if(book[j] == null) {
                nulllocation = j;
                break;
            }
        }
        end = nulllocation-1;
        for(int j = start;j < end;j++){
            if(j==book.length-1)
                book[j] = null;
            else
                book[j] = book[j+1];
        }
        book[end] = null;
    }

    public void checkOutBook(){//借阅图书
        System.out.println("1.按名称借阅\t"+"2.按序列号借阅");
        int i = input.nextInt(),location = -1;//待借阅下标
        switch (i){
            case 1:
                System.out.println("请输入要借阅的书籍名称:");
//                String name = input.next();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getName().equals(name)){
//                        location = j;
//                        break;
//                    }
//                }
                location = findName(location);
                break;
            case 2:
                System.out.println("请输入要借阅书籍的序列号:");
//                int n = input.nextInt();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getId()==n){
//                        location = j;
//                        break;
//                    }
//                }
                location = findId(location);
                break;
        }

        book[location].setCount();//被借次数+1
        if(book[location].getStatc()){
            Date time = new Date();
            book[location].setBorrowData(time);
            book[location].setStatc(false);
        }else {
            System.out.println(book[location].getName()+"于"+book[location].getBorrowData()+"已借出!");
        }
    }

    public void returnBook(){//归还图书
        System.out.println("1.按书名归还\t2.按序列号归还");
        int i = input.nextInt(),location = -1;//待归还下标
        switch (i){
            case 1:
                System.out.println("请输入你要归还的书名");
//                String name = input.next();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getName().equals(name)){
//                        location = j;
//                        break;
//                    }
//                }
                location = findName(location);
                break;
            case 2:
                System.out.println("请输入你要归还的序列号");
//                int n = input.nextInt();
//                for(int j = 0;j < book.length;j++){
//                    if(book[j].getId()==n){
//                        location = j;
//                        break;
//                    }
//                }
                location = findId(location);
                break;
        }
        book[location].setStatc(true);
        book[location].setBorrowData(null);
    }
}

Test class:


import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String n = null;
        LibraryManager manager = new LibraryManager();
        manager.init();
        do {//控制是否退出
            manager.menu();
            System.out.println("回主菜单?y(是)/其他(结束)");
            n = input.next();
        }while ("y".equals(n));
    }
}

Operation result chart:

Insert picture description here
Insert picture description here
Insert picture description here

Insert picture description here

Guess you like

Origin blog.csdn.net/weixin_45919137/article/details/109339705