[项目] Java 图书管理系统 CMD 版 (附源码)

📔这里是一个喜欢编程的小程序员,KSaMar

📕如果此文章对您有些许帮助,您可以选择赞助本作作者,让作者有更强的更新文章动力!
📒如果您喜欢此文章,您可以 点赞👍 收藏⭐ 一下,这将对我书写有很大的帮助!
📘如果您通过阅读此文章发现了BUG,请及时私信联系我,非常感谢!
📗原创不易,允许搬运,请标注源地址
📙爱发电链接 点此访问

前言

这是一个 Java 图书管理系统 CMD 版

说明:Java 面向对象编程设计,适合初学Java的同学开始模仿制作,阅读的第一个程序项目,功能可能并不是那么完美,感兴趣的同学可以参考

开发环境
Windows 10
Java IDE: IDEA 2021.3

技术栈
Java JDK 1.8

开始时间:2023-3-15
结束时间:2023-3-23

项目结构

Library
└── src
     └── com.ksamar.library						---------- 项目包
          ├── controllers						---------- 控制器包
          │   ├── book							---------- 图书控制器包
          │   │   ├── BookController.java		---------- 图书控制器
          │   │   └── BorrowController.java		---------- 借阅控制器
          │   ├── login							---------- 登录控制器包
          │   │   └── LoginController.java		---------- 登录控制器
          │   ├── operate						---------- 日志控制器包
          │   │   └── OperateController.java	---------- 日志控制器
          │   └── user							---------- 用户控制器包
          │        └── UserController.java		---------- 用户控制器
          ├── entity							---------- 实体包
          │   ├── Book.java						---------- 图书信息实体
          │   ├── Borrow.java					---------- 借阅信息实体
          │   ├── Operation.java				---------- 日志信息实体
          │   └── User.java						---------- 用户信息实体
          ├── tools								---------- 工具包
          │   ├── HorizontaRule.java			---------- 水平线工具
          │   ├── Initialization.java			---------- 数据初始化
          │   ├── SqlList.java					---------- 数据库
          │   └── TimeConversion.java			---------- 时间转换器
          ├── views								---------- 视图包
          │   ├── admin							---------- 管理员视图包
          │   │   ├── AdminView.java			---------- 管理员视图
          │   │   ├── BookManageView.java		---------- 图书管理视图
          │   │   ├── BorrowView.java			---------- 借阅图书视图
          │   │   └── UserManageView.java		---------- 用户管理视图
          │   ├── login							---------- 登录视图包
          │   │   └── LoginView.java			---------- 登录视图
          │   ├── share							---------- 共享包
          │   │   └── SearchBookView.java		---------- 搜索图书包
          │   ├── user							---------- 用户视图包
          │   │   └── UserView.java				---------- 用户视图
          │   └── View.java						---------- 默认视图
          └── Main.java							---------- 主方法

什么是 MVC 模式?

在这里插入图片描述

引用runoob对MVC的介绍 源地址


✒️一、项目图片

1.管理员界面

在这里插入图片描述

2.图书管理界面

在这里插入图片描述

3.用户管理界面

在这里插入图片描述

4.图书借阅界面

在这里插入图片描述

5.用户界面

在这里插入图片描述

6.图书搜索界面

在这里插入图片描述

✒️二、项目部分代码

1.图书管理

	/**
	 * 操作面板
	 */
	@Override
	public void options() {
	    while (visible) {
	        System.out.println("==================================================");
	        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("6.归还图书");
	        System.out.println("7.查询借阅图书");
	        System.out.println("8.超时未归还图书查询");
	        System.out.println("0.返回");
	        System.out.println("==================================================");
	
	        operation = scanner.nextInt();
	
	        switch (operation) {
	            case 1:
	                new SearchBookView().searchBook(); break;
	            case 2:
	                addBook(); break;
	            case 3:
	                deleteBook(); break;
	            case 4:
	                editBook(); break;
	            case 5:
	                new BorrowView().borrowBook(); break;
	            case 6:
	                new BorrowView().returnBook(); break;
	            case 7:
	                new BorrowView().searchBorrowBook(); break;
	            case 8:
	                new BorrowView().searchOverTimeBook(); break;
	            case 0:
	                visible = false; break;
	            default:
	                break;
	        }
	    }
	}

2.搜索图书

	/**
	 * 搜索图书
	 */
	public void searchBook() {
	    System.out.println("==================================================");
	    System.out.println("1.查询所有");
	    System.out.println("2.指定查询");
	    System.out.println("0.返回");
	    System.out.println("==================================================");
	
	    operation = scanner.nextInt();
	    switch (operation) {
	        case 1:
	            searchAll(); break;
	        case 2:
	            bookType();
	            String[] searchType = {"id", "groups", "name", "author", "press", "isbn"};
	            System.out.print("请选择搜索类型:");
	            int type = scanner.nextInt();
	            System.out.print("请输入信息:");
	            String text = scanner.next();
	            search(searchType[type - 1], text);
	            break;
	        default:
	            break;
	    }
	}

3.借阅图书

	/**
	 * 借阅图书
	 */
	public void borrowBook() {
	
	    boolean borrowState = true;
	
	    while (borrowState) {
	        System.out.println("==================================================");
	        System.out.println("借阅图书");
	        System.out.println("==================================================");
	        System.out.print("请输入要借阅的图书ISBN号码:");
	        String isbn = scanner.next();
	
	        Book book = bookController.searchIsbn(isbn);
	
	        if (book != null) {
	            System.out.println("==================================================");
	            System.out.println(book);
	            System.out.println("==================================================");
	            System.out.println("1.确定借阅");
	            System.out.println("0.重新输入");
	            System.out.println("==================================================");
	
	            operation = scanner.nextInt();
	
	            if (operation == 1) {
	                System.out.print("请输入要借阅的用户身份卡号:");
	                String idCard = scanner.next();
	
	                User user = userController.searchIdCard(idCard);
	
	                if (user != null) {
	                    ArrayList<Object> borrowArrayList = borrowController.borrowBook(book, user);
	
	                    if (borrowArrayList.get(0).equals(true)) {
	                        System.out.println("借阅成功");
	                    }
	                    else if (borrowArrayList.get(1).equals(-1)) {
	                        System.out.println("此账户已被冻结,无法借阅");
	                    }
	                    else if (borrowArrayList.get(1).equals(1)) {
	                        System.out.println("此书数量为 0 无法借阅");
	                    }
	                    else if (borrowArrayList.get(1).equals(2)) {
	                        System.out.println("当前账户已超过借阅上限");
	                    }
	                    else {
	                        System.out.println("借阅失败");
	                    }
	                    borrowState = false;
	                }
	                else {
	                    System.out.println("此用户不存在,请重新输入");
	                }
	            }
	        }
	        else {
	            System.out.println("此书不存在,请重新输入");
	        }
	    }
	}

3.归还图书

	/**
	 * 归还图书
	 */
	public void returnBook() {
	    boolean returnState = true;
	
	    while (returnState) {
	        System.out.println("==================================================");
	        System.out.println("归还图书");
	        System.out.println("==================================================");
	        System.out.print("请输入要归还图书的身份卡号码:");
	        String idCard = scanner.next();
	
	        User user = userController.searchIdCard(idCard);
	
	        if (user != null) {
	            ArrayList<Borrow> borrowArrayList = borrowController.searchBorrowBook(user.getUsername());
	            int index = 1;
	            System.out.println("==================================================");
	            for (Borrow borrow : borrowArrayList) {
	                System.out.println(index++ + ". " + borrow);
	            }
	            System.out.println("==================================================");
	            System.out.print("请输入要归还的图书编号:");
	
	            operation = scanner.nextInt();
	
	            ArrayList<Object> returnArrayList = borrowController.returnBook(borrowArrayList.get(operation - 1), user);
	
	            if (returnArrayList.get(0).equals(true)) {
	                System.out.println("归还成功");
	                returnState = false;
	            }
	            else {
	                System.out.println("归还失败");
	            }
	        }
	        else {
	            System.out.println("此用户不存在,请重新输入");
	        }
	    }
	}

4.添加图书

	/**
	 * 添加图书
	 */
	public void addBook() {
	    System.out.println("==================================================");
	    System.out.print("请输入组别:");
	    String groups = scanner.next();
	    System.out.print("请输入书名:");
	    String name = scanner.next();
	    System.out.print("请输入作者:");
	    String author = scanner.next();
	    System.out.print("请输入出版社:");
	    String press = scanner.next();
	    System.out.print("请输入价格:");
	    double price = scanner.nextDouble();
	    System.out.print("请输入数量:");
	    int quantity = scanner.nextInt();
	    System.out.print("请输入ISBN号码:");
	    String isbn = scanner.next();
	    System.out.println("==================================================");
	
	    ArrayList<Object> objectArrayList = bookController.addBook(groups, name, author, press, price, quantity, isbn);
	
	    if (objectArrayList.get(0).equals(true)) {
	        System.out.println("添加成功");
	    }
	    else {
	        System.out.println("ISBN重复,添加失败");
	    }
	}

5.编辑图书

	/**
	 * 编辑图书
	 */
	public void editBook() {
	    System.out.println("==================================================");
	    System.out.print("请输入要编辑的图书ID:");
	    int id = scanner.nextInt();
	    System.out.println("==================================================");
	
	    Book book = bookController.searchId(String.valueOf(id));
	    if (book != null) {
	        boolean editState = true;
	        while (editState) {
	            System.out.println("==================================================");
	            System.out.println(book);
	            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("6.编辑数量");
	            System.out.println("7.编辑ISBN");
	            System.out.println("0.退出编辑");
	            System.out.println("==================================================");
	            System.out.print("请输入操作选项:");
	            int options = scanner.nextInt();
	
	            if (options > 0 && options < 8) {
	                String[] editType = {"groups", "name", "author", "press", "price", "quantity", "isbn"};
	
	                System.out.print("请输入编辑信息:");
	                String text = scanner.next();
	
	                ArrayList<Object> objectArrayList = bookController.editBook(book, editType[options - 1], text);
	                if (objectArrayList.get(0).equals(false)) {
	                    System.out.println("编辑失败,ISBN已存在");
	                }
	            }
	            else if (options == 0) {
	                editState = false;
	            }
	        }
	    }
	    else {
	        System.out.println("此书不存在,无法编辑");
	    }
	}

6.删除图书

	/**
	 * 删除图书
	 */
	public void deleteBook() {
	    System.out.println("==================================================");
	    System.out.print("请输入要删除的图书ID:");
	    int id = scanner.nextInt();
	    System.out.println("==================================================");
	
	    int delete = bookController.deleteBook(id);
	
	    if (delete == 1) {
	        System.out.println("删除成功");
	    }
	    else {
	        System.out.println("删除失败");
	    }
	}

✒️项目源码

↓↓↓
微信公众号搜索:筱原空的编程小屋 点击资源获取,获取此项目源码文件
微信公众号搜索:筱原空的编程小屋 点击资源获取,获取此项目源码文件
微信公众号搜索:筱原空的编程小屋 点击资源获取,获取此项目源码文件
在这里插入图片描述

↑↑↑

内附项目文档

✒️项目操作展示地址

Bilibili bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值