Java项目:图书管理系统思路分享(重构版Mysql)
当当当当~~~~欢迎大家阅读,今天分享项目三图书管理系统重构版
项目功能流程结构图
项目的整体功能流程图如下:我们可以看到里面两个最主要的功能是管理员功能和操作员功能。

项目处理流程
操作员功能下的主要功能又有图书信息管理、读者注册管理、图书借阅管理、基本信息维护。
操作员

管理员功能下的主要功能又有员工工作日志记录、图书借阅金额设定、员工信息管理、图书逾期罚金账单查询。
管理员

文档设计
建议大家在做此项目前最好先做好以下几个文档,文档可以帮我们理清项目的基本思路,在开始做项目后我们可以按照文档中的步骤进行代码编程,不至于毫无头绪。而且我们可以在文档的原有基础上对功能进行改进和增添。

接下来我们就来进行项目的第一步:数据库的设计~~~~
第一步:数据库设计

以下数据表中的约束类型除主键(用于保证该字段的值具有唯一性,并且非空)外,其余的约束类型可以按照自己的需求设置,每个约束类型的含义可以在我以前的博客常见的约束和标识列中查找。
管理员数据表设计

图书数据表设计
图书类型数据表设计
主键不一定自增,但是自增一定要是主键,这个可以用自增,但是我选择了不自增,只是想看一下自增和不自增的区别,此处建议大家自增,这样写的代码会少一点,哈哈哈当然不会少很多。
借阅图书数据表设计
这里的非空本来设置的时候我全都选了,但是后期用的时候才注意到,一开始借阅图书的时候是没法填入归还日期、借阅天数和罚金的,所以选非空的时候要注意一下这点,不然后期改的时候所有和借书有关的模块可能都要改。

罚金账单数据表设计

操作员数据表设计
读者数据表设计

读者类型数据表设计

以上就是所有的数据库设计啦,接下来要说的实体类和数据库的字段名注意字母的大小写要一样,这样比起别名方便。为了方便我的数据库和实体类里的字段名都是第一个单词的首字母小写,其余单词首字母都大写。由于实体类和数据库的字段名都一样而且比较简单,我就不一一列出来啦。
接下来我们开始进入代码阶段。整体代码我们一共分了六个模块~~~~
第二步:代码阶段
工具类

实体类

记得在写接口前,导入与数据库相关的jar包

接口

数据库连接层

逻辑层

实现层

大家可以按照这个步骤来编写代码,目前我们运用的是三层架构,把各个功能模块划分为UI(表现层)、BLL:(业务逻辑层)、DAL:(数据访问层)三层架构。额外的还有一层实体类(Model),作为数据传递的载体,在各层之间传递数据。具体的大家可以看我以前的博客三层架构知识点。
最终呈现结果图



项目中遇到的问题
git工具报错
由于是双人项目,所以我们需要用到git工具把代码传入远程仓库,供项目成员一起使用
遇到的报错问题

解决方法如下:
1、切换到自己项目所在的目录,右键选择 GIT BASH Here
2、在terminl窗口依次输入命令:
git pullgit pull origin mastergit pull origin master --allow-unrelated-histories
3、在idea中重新push自己的项目
项目中需要注意的细节
1、由于我们的读者类型编号和图书类型编号没有设置自增,所以在添加的时候不仅要注意类型名称是否重复,还要注意类型编号是否重复,以下是和我一起做项目的同学给的解决方案。
public static int checkBookTypeId(int bookTypeId) {List bookTypes = bookTypeDaoo.selectAllBookType();for (int i = 0; i < bookTypes.size(); i++) {if (bookTypeId == bookTypes.get(i).getBookTypeId()) {System.out.println("该读者类型的编号重复,请重新添加!");return 0;}}return 1;}public static int checkBookTypeName(String bookTypeName) {List bookTypes = bookTypeDaoo.selectAllBookType();for (int i = 0; i < bookTypes.size(); i++) {if (bookTypeName.equals(bookTypes.get(i).getBookTypeName())) {System.out.println("该读者类型的名称重复,请重新添加!");return 0;}}return 1;}
2、在添加读者时注意读者的年龄、性别、电话号码位数,需要给出限制
System.out.println("请输入读者性别:");String readerSex;for (; ; ) {readerSex = TSUtility.readKeyBoard(1, false);if (readerSex.equals("男")||readerSex.equals("女")) {break;} else {System.out.println("输入的性别有误,请重新输入!!!");}}
System.out.println("请输入读者电话:");String readerPhone;for (; ; ) {readerPhone = TSUtility.readKeyBoard(11, false);if (readerPhone.length() == 11) {break;} else {System.out.println("输入的电话号码长度有误,请输入11位电话号码!");}}
3、图书借阅和归还时记得修改图书和读者可借阅图书的数量
借阅时:
readerDao.updateMaxBorrowNumByReaderId(reader.getMaxBorrowNum()-1,readerId);
bookDao.updateBookCountByISBN(book.getCount()-1,ISBN);
return borrowBookDao.insertBorrowInfo(readerId,ISBN,borrowDate);
归还时:
readerDao.updateMaxBorrowNumByReaderId(reader.getMaxBorrowNum() + 1, borrowBook.getReaderId());
bookDao.updateBookCountByISBN(book.getCount() + 1, borrowBook.getISBN());
borrowBookDao.updateBorrowInfo(returnDate,days,fine,borrowBookId);
以上就是项目三:图书管理系统重构版的内容啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读!

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!


