用Java语言实现一个简单的图书管理系统

这个系统有两个登录选项:用户和管理员,选择两者进入都需要输入账号和密码进行审核。

用户有查看图书列表,借阅图书,归还图书这些选项,管理员有查看图书列表,增加图书,删除图书,修改图书这些选项。

我们先建一个Book类,用来存放图书名称以及借阅状态,图书的编号我这里用的是集合的索引来代替。

Book类:

public class Book {
    String name;
    String sit;

    public Book() {
    }

    public Book(String name, String sit) {
        this.name = name;
        this.sit = sit;
    }

    public String getName() {
        return name;
    }

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

    public String getSit() {
        return sit;
    }

    public void setSit(String sit) {
        this.sit = sit;
    }
}

然后是User类和Admin类,定义了String类型的account和pwd这两个数据,其实在后面的使用中只用到了两个类的getAccount和getPwd方法。

User类:

public class User {
    private String account = "123456";
    private String pwd = "123456";

    public User() {
    }

    public User(String account, String pwd) {
        this.account = account;
        this.pwd = pwd;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

Admin类:

public class Admin {
    private String account = "123456";
    private String pwd = "123456";

    public Admin() {
    }

    public Admin(String account, String pwd) {
        this.account = account;
        this.pwd = pwd;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

然后建一个Logic类,其中有allMenu方法,user方法,admin方法,userMenu方法,adminMenu方法,checkBook方法,borrowBook方法,returnBook方法,addBook方法,deleteBook方法,updateBook方法。

首先main方法中创建一个ArrayList<Book>类型的变量array,然后调用allMenu方法显示登录界面。

选择身份,这里我们选择管理员,因为新建的array中还没有任何元素,如果选择普通用户将无法查看到任何信息及无法进行操作。

选择管理员,调用adminMenu方法显示管理员界面。

我们先选择查看图书列表,这里提示暂无可查看图书。

回到菜单界面,我们选择添加图书,输入图书的有关信息,这里我们输入两本书,都定义为空闲状态。

回到菜单界面选择查看图书列表,显示了我们刚才输入的图书信息。

我们再选择删除图书,根据编号把刚才输入的数学书删除。

再次查看图书列表,数学书的信息被删除了。

再回到菜单选择修改图书,把语文书的借阅状态修改为占用。

回到菜单查看图书列表,语文书的借阅状态被修改成功了。

import java.util.ArrayList;
import java.util.Scanner;

public class Logic {
    public static void main(String[] args) {
        ArrayList<Book> array = new ArrayList<>();
        allMenu(array);
    }

    public static void allMenu(ArrayList<Book> array) {
        while (true) {
            System.out.println("---------欢迎来到图书管理系统---------");
            System.out.println("1.普通用户");
            System.out.println("2.管理员");
            System.out.println("3.退出");
            System.out.println("请输入你的选择:");
            Scanner sc = new Scanner(System.in);
            int a = sc.nextInt();

            switch (a) {
                case 1:
                    user(array);
                    break;
                case 2:
                    admin(array);
                    break;
                case 3:
                    System.exit(0);
                default:
                    System.out.println("你输入的选择有误,请重新输入");
            }
        }
    }

    public static void user(ArrayList<Book> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入账号:");
        String account = sc.nextLine();
        System.out.println("请输入密码:");
        String pwd = sc.nextLine();

        User u = new User();
        if (account.equals(u.getAccount()) && pwd.equals(u.getPwd())) {
            userMenu(array);
        } else
            System.out.println("你输入的账号或密码有误,请重新操作");
    }

    public static void admin(ArrayList<Book> array) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入账号:");
        String account = sc.nextLine();
        System.out.println("请输入密码:");
        String pwd = sc.nextLine();

        Admin u = new Admin();
        if (account.equals(u.getAccount()) && pwd.equals(u.getPwd())) {
            adminMenu(array);
        } else
            System.out.println("你输入的账号或密码有误,请重新操作");
    }

    public static void userMenu(ArrayList<Book> array) {
        while (true) {
            System.out.println("1.查看图书列表");
            System.out.println("2.借阅书籍");
            System.out.println("3.归还图书");
            System.out.println("4.退出");
            System.out.println("请输入你的选择:");
            Scanner sc = new Scanner(System.in);
            int a = sc.nextInt();

            switch (a) {
                case 1:
                    checkBook(array);
                    break;
                case 2:
                    borrowBook(array);
                    break;
                case 3:
                    returnBook(array);
                    break;
                case 4:
                    allMenu(array);
                default:
                    System.out.println("你输入的选择有误,请重新输入");
            }
        }

    }

    public static void checkBook(ArrayList<Book> array) {
        if (array.size() == 0) {
            System.out.println("图书列表为空,请等待添加图书");
        } else {
            for (int i = 0; i < array.size(); i++) {
                Book s = array.get(i);
                System.out.println("(" + (i + 1) + ")" + s.getName() + "," + s.getSit());
            }
        }
    }

    public static void borrowBook(ArrayList<Book> array) {
        if (array.size() == 0)
            System.out.println("暂无可借阅图书");
        else {
            checkBook(array);
            while (true) {
                System.out.println("请输入借阅的图书编号:");
                Scanner sc = new Scanner(System.in);
                int i = sc.nextInt();
                if (array.get(i - 1).getSit().equals("占用"))
                    System.out.println("该书籍已被借阅,请选择其他书籍");
                else {
                    array.get(i - 1).setSit("占用");
                    System.out.println("恭喜你成功借阅");
                    break;
                }
            }
        }
    }

    public static void returnBook(ArrayList<Book> array) {
        while (true) {
            System.out.println("请输入归还图书的编号");
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();

            if (i > array.size())
                System.out.println("你输入的编号有误,请重新输入");
            else {
                if (array.get(i - 1).getSit().equals("空闲"))
                    System.out.println("你输入的编号有误,请重新输入");
                else {
                    array.get(i - 1).setSit("空闲");
                    System.out.println("恭喜你成功归还");
                    break;
                }
            }
        }
    }

    public static void adminMenu(ArrayList<Book> array) {
        while (true) {
            System.out.println("1.查看图书列表");
            System.out.println("2.添加图书");
            System.out.println("3.删除图书");
            System.out.println("4.修改图书");
            System.out.println("5.退出");
            System.out.println("请输入你的选择:");

            Scanner sc = new Scanner(System.in);
            int a = sc.nextInt();
            switch (a) {
                case 1:
                    checkBook(array);
                    break;
                case 2:
                    addBook(array);
                    break;
                case 3:
                    deleteBook(array);
                    break;
                case 4:
                    updateBook(array);
                    break;
                case 5:
                    allMenu(array);
                default:
                    System.out.println("你输入的选择有误,请重新输入:");
            }
        }
    }

    public static void addBook(ArrayList<Book> array) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入图书名称:");
            String name = sc.nextLine();
            System.out.println("请输入图书借阅状态(空闲/占用):");
            String sit = sc.nextLine();

            Book book = new Book(name, sit);
            array.add(book);
            System.out.println("添加成功,是否继续添加:");
            while (true) {
                System.out.println("1.继续添加");
                System.out.println("2.退出");
                System.out.println("请输入你的选择:");
                int a = sc.nextInt();

                switch (a) {
                    case 1:
                        addBook(array);
                        break;
                    case 2:
                        adminMenu(array);
                    default:
                        System.out.println("你的选择有误,请重新输入");
                }
            }
        }
    }

    public static void deleteBook(ArrayList<Book> array) {
        if (array.size() == 0)
            System.out.println("暂无可删除图书");
        else {
            checkBook(array);
            System.out.println("请输入需要删除的图书编号:");
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();

            array.remove(i - 1);
            System.out.println("成功删除,是否继续删除:");
            while (true) {
                System.out.println("1.继续删除");
                System.out.println("2.退出");
                System.out.println("请输入你的选择:");
                int a = sc.nextInt();

                switch (a) {
                    case 1:
                        deleteBook(array);
                        break;
                    case 2:
                        adminMenu(array);
                    default:
                        System.out.println("你的选择有误,请重新输入");
                }
            }
        }
    }

    public static void updateBook(ArrayList<Book> array) {
        if (array.size() == 0)
            System.out.println("暂无可修改图书");
        else {
            checkBook(array);
            Scanner sc = new Scanner(System.in);
            System.out.println("输入需要修改的图书编号:");
            int i = sc.nextInt();

            sc.nextLine();
            System.out.println("输入新的图书名称:");
            String name = sc.nextLine();
            System.out.println("输入新的图书状态:");
            String sit = sc.nextLine();

            array.get(i - 1).setName(name);
            array.get(i - 1).setSit(sit);
            System.out.println("修改成功,是否继续修改:");
            while (true) {
                System.out.println("1.继续修改");
                System.out.println("2.退出");
                System.out.println("请输入你的选择:");

                int a = sc.nextInt();
                switch (a) {
                    case 1:
                        updateBook(array);
                        break;
                    case 2:
                        adminMenu(array);
                    default:
                        System.out.println("你输入的选择有误,请重新输入");
                }
            }
        }
    }
}

运行程序的时候直接选择普通用户是查看不到任何信息的,因为初始化的时候没有给Book类中的变量赋值,先选择管理员添加一些图书再退出到登录界面选择普通用户继续操作。

另外程序有点漏洞,普通用户在归还书籍是显示了所有图书的信息,这时候不仅可以归还自己的图书,还能对其他的图书进行归还操作,大佬可以指点一下。

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值