简易图书管理系统——Java实现

简易图书管理系统——Java实现

本人还是小白,闲来无事,跟着网络上大牛们学习了这段程序,本身难度并不大,但自己在很多细节地方考虑的还是不够周全,一些功能还未实现,代码的可读性也不是很高,所以还请各位大牛能多指点!

主要分为3类,书本类Book,图书管理类LibraryManager,测试类Test。

Java Date格式化输出自行在CSDN上自己找哈,有很多,我在这里就偷个懒,嘻嘻!

代码附上:

Book类:

主要就是书本属性,以及set与get方法,可根据自身需求修改


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类:

其中注释掉的是重复的
可读性有点差劲,希望大牛们多指点!


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类:


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));
    }
}

运行结果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45919137/article/details/109339705