oper borrownum
varchar int
30 4
否 否
操作员 被借次数
表4-8 tb_bookkifo(图书信息)表
图书借阅和归还信息表tb_borrowandback,如表4-9所示。
字段名 id readid bookcode borrowTime ygbackTime sjbackTime borrowoper backoper isback
数据类型 varchar varchar varchar smalldatetime smalldatetime smalldatetime varchar varchar bit
长度 30 20 30 4 4 4 30 30 1
主键 是 否 否 否 否 否 否 否 否
描述 借书编号 读者编号 图书条形码 借书时间 应该还书时间 实际还书时间 借书操作 还书操作 是否归还
表4-9 tb_borrowandback(图书借阅和归还信息)表
权限信息表tb_purview,如表4-10所示。
字段名 id syset readset bookset borrowback syaquery
数据类型 varchar bit bit bit bit bit
长度 50 1 1 1 1 1
主键 是 否 否 否 否 否
描述 用户编号 系统设置 读者管理 图书管理 图书借还 系统查询
表4-10 tb_purview(权限信息)表
22
第五节 图书管理系统详细设计
5.1 系统流程分析
根据开发图书管理系统的需求分析,本系统设计了三种用户,分别为系统管理员、教师和学生。
系统要求有系统管理员用户,我们设定系统管理员,当系统管理员使用帐户登录后,需要查看有关图书的一系列的信息,管理员可以通过系统导航菜单进入读者管理界面、图书管理界面、图书借还界面、系统查询界面、排行榜界面,在读者界面中,管理员添加和修改学生或教师信息、用户可以查看自己信息,在图书管理界面管理员可以添加和修改图书信息、用户可查看图书,在图书借还界面完成读者借书还书的操作,系统查询界面管理员可以查看借出去的图书信息及库存的信息、用户可以查找自己的所需的图书,排行榜界面主要是可以让用户知道哪些图书受到读者的喜爱。读者(老师和学生)使用读者帐号登陆系统后,可以查询自己所需要的图书的信息、也可以查询自己个人的基本信息及图书的借还信息,还能查看排行榜的信息。读者的借书和还书过程是通过管理员完成的。
5.2 主要模块的运行 5.2.1 登陆界面
当用户输入用户名、密码,系统自动将输入的信息和相关数据表中的内容进行比较,如果该用户输入的内容和数据表中的内容相符,则通过验证,此次登录成功;否则登录失败。比较的过程是由浏览器将指令,数据发送到Web服务器,Web服务器通过对数据库进行查询将结果返回到浏览器,从而端显示成功的消息,用户只有成功登陆系统后才能进行一系列的操作,如下图5-1所示。
23
5-1 图书管理系统登陆界面
5.2.2 图书信息管理模块
图书信息管理模块主要分为查看图书信息页面和添加修改图书信息页面,用户可以在查看图书信息页面查看图书的基本信息,管理员也可以看这些信息,并且可以通过单击“添加图书信息”这个超级链接或集合列表中的“详情”超级链接转到添加或删除图书信息界面,并在该页中添加或修改图书信息,如图5-2与5-3所示。
图5-2 查看图书信息界面
24
图5-3 添加或修改图书信息界面
图书信息管理模块的实现,主要是使用了Hibernate框架操作数据库技术。
Hibernate,通过对jdbc进行封装,对 java类和关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式,从而使开发人员可以话更多精力进行对象方面的开发。其优点并不只是简化了数据库操作,更有价值的是对不同的数据库提供了统一操作的接口,使应用程序的跨数据库开发成为可能。
5.2.3 图书借还信息模块
图书借还管理模块主要分为图书借阅页面和图书归还页面,用户可以在通过这个模块查看图书的借阅和归还信息。管理员可以在图书通过这个模块来完成读者借和还书的操作,如图5-4与5-5所示。
图5-4 图书的借阅管理
25
图5-5 图书归还管理
5.3 系统开发的遇到的相关问题及解决 5.3.1 图书管理系统索引
图书管理系统开发中存在大量的数据和信息检索,怎样更好的检索数据和信息操作是保证检索速度的提高和数据的分页显示,主要考虑了以下几个方面:
(1)设计逻辑结构时充分考虑冗余量和可处理性两方面的要求,在接受冗余量的提下,尽量减少表的连接操作。
(2)关系的大小对查询的影响也是很大的,因此为了提高数据库的查询速度,减小系的大小和数据量也是必要的。
(3)建立合理的索引结构。索引相当于一个映射机构,将键值转换成相对应的
记录地址,形成索引文件。
索引设计是数据库物理设计的基本问题,也是较困难的问题,建立索引可以极大地提高系统的查询速度,但是同时做Insert、Update、Delete操作时会降低速度,因为做这些操作的同时需要更新索引,所以不能对数据库中所有的表都建立索引。比如满足下列条件之一的不易建立索引:不出现或很少出现的属性或表、属性分布严重不均的属性、经常更新的属性或表、过长的属性、太小的表等。
满足下列条件之一的可以考虑建立索引:主键和外键都建立索引、对于以读为主或只读的表,只要需要,且存储空间允许,可以减少连接开销、对于等值查询(即查询条件以等号为比较符),最好建立索引、对查询范围(即查询条件>,<,≤,≥为比较符),最好建立索引、有些查询可以由检索直接得到结果,不必访问数据块。
根据实际需要,读者信息表,图书信息表,图书借还信息表,权限信息,
26