图书管理系统具有图书信息管理、读者信息管理和借阅信息管理三大功能模块,本小节将从软件功能、数据库系统设计和项目结构几个方面介绍该软件系统的设计方案。
25.1.1系统功能简介
图书管理系统第一大功能模块是图书信息管理,这个模块的软件界面如图25-1所示。
图25-1图书信息管理界面
从图25-1可以看出:图书信息管理模块能够完成图书的新增、修改、删除、借阅登记等常规的信息管理工作,并且还能以多种方式对图书进行检索。
新增图书信息对话框如图25-2所示。
图25-2新增图书信息对话框
在这个对话框中,用户正确填写关于图书的各项信息,之后单击“确定”按钮就可以完成新增图书的操作。从图25-2可以看出:图书类型和出版社这两项信息并不是由用户手动填写的,而是从下拉框中选择的。这两个下拉框中的选项也是可以编辑和维护的,在图25-1所示的界面中单击“图书类型设置”和“出版社管理”按钮即可打开维护这两个下拉框选项的对话框,图书类型设置对话框如图25-3所示。
图25-3图书类型设置对话框
在这个对话框中可以对图书类型进行新增、修改、删除的操作。用户所设置的图书类型都会出现在图24-2所示窗体的图书类型下拉框中。同样,用户所设置的出版社信息,这些出版社信息也都会出现在图24-2所示窗体的出版社下拉框中。
当用户在图书列表中选中一条图书信息后单击“借阅”按钮,即可打开借阅登记对话框,这个对话框如图24-4所示。
图24-4借阅登记对话框
在图24-4所示的借阅登记对话框中会自动显示出读者所选定图书的编号和书名,并且还会显示出借书日期和最晚归还日期。借书日期就是当前日期,而最晚归还日期是当前日期后的第60天。操作人员只需要在这个对话框中填写读者编号,并单击“确定”按钮即可完成图书借阅操作。当完成图书借阅操作后,在借阅信息管理界面中就会出现一条借阅信息。
图书管理系统的第二个模块是读者信息管理,该模块的界面如图24-5所示。
图25-5读者信息管理界面
在读者信息管理界面中显示了读者的各项信息,其中读者编号与他的图书证编号是一致的,因此每条读者信息与其图书证上的信息也是一致的。在这个界面中可以完成读者信息的查询、新增、修改等操作,此外,如果有读者出现多次逾期未还图书、丢失图书等情况,还可以对其进行停用操作,只需要在列表中选中一个读者,然后单击“停用”按钮即可,处于停用状态的读者不能再次借阅本系统中的图书,但可以进行归还图书的操作。被停用的读者还可以被恢复正常状态,只需要从列表中选定被停用的读者后单击“恢复”按钮即可。读者信息不能被删除,这是为了在系统中保留所有注册过的读者信息。
图书管理系统的第三个模块是借阅信息管理,这个模块的界面如图25-6所示。
图25-6借阅信息管理界面
在借阅信息管理模块中显示出了图书的借阅信息,这些信息的最后一列显示出了图书的归还状态,每条借阅信息根据图书是否归还以及是否超过归还日期分为未还、逾期未还、按时归还和逾期归还4种状态。每次打开该模块时,系统都会自动更新状态,并且界面左下角还设置了“刷新”按钮用来手动更新状态,例如登录图书管理系统时是2022年10月5日,但一直到10月6日还没有退出系统,在这种情况下可能某些图书在10月5日还属于“未还”状态,但到了10月6日就变成了“逾期未还”状态,而单击“刷新”按钮就能够即时更新状态。
当操作人员选定一条借阅信息并单击“还书”按钮后,能够完成还书操作,但在真正还书之前系统会弹出确认对话框让操作人员确认图书信息和读者信息以避免出现操作错误的情况,还书确认对话框如图25-7所示。
图25-7还书确认对话框
25.1.2数据库表设计
图书管理系统包含多种信息,它们分别是:图书类型、出版社、图书、读者、借阅记录,因此本系统总共有5张数据表,它们分别是:
- book_type:存储图书类型信息。
- publisher:存储出版社信息。
- book:存储图书信息。
- reader:存储读者信息。
- record:存储借阅信息。
在以上5张表中,book_type表和publisher表的结构完全相同,它们如表25-1所示。
表25-1 book_type表和publisher表结构
字段 | 类型 | 长度 | 意义 |
id | varchar | 20 | 编号 |
name | varchar | 20 | 名称 |
book表的结构如表25-2所示。
表25-2 book表结构
字段 | 类型 | 长度 | 意义 |
id | varchar | 20 | 图书编号 |
book_type_id | varchar | 20 | 图书类型编号 |
name | varchar | 60 | 书名 |
author | varchar | 20 | 作者 |
price | varchar | 20 | 价格 |
publisher_id | varchar | 20 | 出版社编号 |
position | varchar | 20 | 所在位置(书架) |
total_num | int | 图书总数 | |
lend_num | int | 外借数量 | |
info | varchar | 100 | 图书简介 |
在表25-2中,表示价格的price字段被定义为varchar类型而不是decimal类型,这是因为在本系统中价格只需要记录而不需要计算,所以使用varchar类型更加方便操作。
reader表的结构如表25-3所示。
表25-3 reader表结构
字段 | 类型 | 长度 | 意义 |
id | varchar | 20 | 读者编号 |
name | varchar | 20 | 读者姓名 |
sex | char | 2 | 读者性别 |
phone | char | 11 | 读者手机号 |
card_date | varchar | 10 | 办卡日期 |
state | varchar | 10 | 状态 |
record表的结构如表25-4所示。
表25-4record表结构
字段 | 类型 | 长度 | 意义 |
id | varchar | 20 | 借阅信息流水号 |
reader_id | varchar | 20 | 读者编号 |
book_id | varchar | 20 | 所借图书编号 |
lend_date | char | 10 | 借书日期 |
reg_return_date | char | 10 | 系统规定的最后归还日期 |
act_return_date | char | 10 | 读者实际归还图书的日期 |
state | varchar | 10 | 状态 |
25.1.3项目结构简介
图书管理系统的源代码所涉及的类更多,为了代码结构能更加清晰,本项目把类分成了多个包,这些包有以下几个:
- model:模型包,表示图书、读者等实体的类都在这个包下。
- dao:数据访问对象包,用以访问数据库的类都在这个包下。
- view:界面包,所有窗体类和自定义对话框都在这个包下。
- util:工具类包,访问数据库的工具类、处理日期时间的工具类都放在这个包下
下面的表25-5展示了各个包下类的意义和作用。
表25-5 图书管理系统所有类
所在包 | 类名称 | 意义 |
model | BookType | 图书类型 |
model | Publisher | 出版社 |
model | Book | 图书 |
model | Reader | 读者 |
model | Record | 借阅记录 |
dao | BookTypeDao | 操作book_type表的类 |
dao | PublisherDao | 操作publisher表的类 |
dao | BookDao | 操作book表的类 |
dao | ReaderDao | 操作reader表的类 |
dao | RecordDao | 操作record表的类 |
view | LoginFrame | 登录窗体类 |
view | MainFrame | 主窗体类 |
view | BookPanel | 图书信息面板 |
view | BookTypeDailog | 图书详情对话框 |
view | BookTypeDailog | 图书类型管理对话框 |
view | PublisherDailog | 出版社管理对话框 |
view | ReaderPanel | 读者信息面板 |
view | ReaderDialog | 读者详情对话框 |
view | RecordPanel | 借阅信息面板 |
view | LendDialog | 登记借阅对话框 |
util | DBUtil | 数据库工具类 |
util | DateUtil | 日期处理工具类 |
util | IDGenerator | 借阅流水号生成类 |
Main | 系统启动类,包含main()方法 |
本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。