数据库课程设计报告-------图书馆管理系统学院:软件学院专业:软件工程专业班级:09级8班姓名:赵亚南学号:200900301340一、概述1.使用范围在学校图书馆内部的现有局域网这个网络环境下,信息由各用户在规定的权限下在各自的工作站上录入,信息上网后各用户可查询,调用,达到信息共享。2.背景图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息。现有的人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。3.功能分析(1)读者信息的制定、输入、修改、查询,包括种类、性别、借书数量、借书期限、备注。(2)书籍基本信息制定、输入、修改、查询,包括书籍编号、类别、关键词、备注。(3)借书信息制定、输入、修改、查询,包括书籍编号、读者编号、借书日期、借书期限、备注。(4)还书信息制定、输入、修改、查询,包括书籍编号、读者编号、还书日期、还书期限、备注。(5)有条件、多条件查询各种信息.二、业务流程1.图书管理信息系统数据流图如下:读者种类设置基本信息录入读者种类信息管理基本信息录入读者登记读者信息管理书籍类别设置基本信息录入书籍种类信息管理书籍登记基本信息录入书籍信息管理基本信息录入基本信息录入基本信息录入2.信息采集与各部门的使用权限对于网上信息的使用权限和责任规定如下:库修改库浏览图书管理员0?0?读者??注:0、登录,修改,处理权。?、查询权。三、数据结构设计针对一般图书馆管理信息系统的需求,通过对图书馆管理工作过程的内容和数据流流程分析,设计如下面所示的数据项和数据结构:●读者种类信息包括:种类编号、种类名称、借书数量、借书期限、有效期限、备注等。●读者信息包括:读者编号、读者姓名、读者种类、读者种类、读者性别、读者班级或科室、办证日期。●书籍类别信息包括:类别编号、关键词、备注。●书籍信息包括:书籍编号、类别编号、书籍名称、作者姓名、出版社、关键词、登记日期、备注。用户平台要求软件运行在企业内部局域网与广域网组成的网络环境中,各个仓库自己拥有独立的局域网,仓库之间通过广域网连接起来。需要一台服务器,基于WINDOWS2000平台、DBMS设计为SQLSERVER2000等。需要至少一名系统管理人员,由于本系统的易用性,并不需要受过专业训练人员。四、数据库逻辑设计1.E-R图为了清晰明确地将用户的数据表达出来,首先要建立一个概念性的数学模型。它是一种面向问题的数学模型,按用户的观点来对数据和信息建模。最常用的表示概念性数据模型的方法是实体—联系方法。这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型。E-R图共有三种符号:实体、属性和联系。通常实体用矩形表示,属性用椭圆或圆角矩形表示,联系用菱形表示。联系又分为一对一、一队多和多对多三种类型。图书馆信息管理系统的E-R图如下图所示:属于班级管理员学生图书管理管理管理借阅1n111nnmnm2.数据字典把得到的关系转化为特定的数据库管理系统下的数据表。根据前面得到的各个关系,现把它们转化为数据表。manages(管理员资料表)class,学生班级资料记录表,books(图书资料表)student(学生资料表)borrow(图书借阅登记资料表)punishment(罚款表)数据库的逻辑设计完成后,就可开始进行数据库的物理设计。基于上述的数据库的逻辑设计,再考虑到程序设计的简易性及通用性,本图书馆信息管理系统采用SQLServer2000数据库,并在其下创建8个数据表,结构分别如下:manages,管理员资料记录表,共有6个字段,分别为:id,name,age,psw见表1表1manages,管理员资料记录表的结构字段名称数据类型说明长度id自动编号管理员标识号长整型name文本登陆名20age文本年龄20psw文本登陆密码20books,图书资料记录表,共有10个字段,分别为:id、name、classify、author、bookconcern、addtime、amount、remain、loandegree、display,见表3表2books,图书资料记录表的结构字段名称数据类型说明长度id自动编号图书标识号长整型name文本图书名20classify文本图书分类整型author文本图书作者20bookconcern文本图书出版社25addtime日期/时间进馆时间,默认:now()\amount数字图书数量整型remain数字剩余数量整型display数字是否显示,是:0,否:1字节class,学生班级资料记录表,共有2个字段,分别为:id、name,见表3表3class,学生班级资料记录表的结构字段名称数据类型说明长度id自动编号班级标识号长整型name文本班级名20landinfo,图书借阅登记资料记录表,共有8个字段,分别为:id、bookid、studentid、landtime、returntime、shouldreturntime、hadreturn、canreland,见表4表4borrow,图书借阅登记资料记录表的结构字段名称数据类型说明长度id自动编号借出图书标识号长整型bookid数字借出的图书标识号长整型studentid数字借书的学生标识号长整型landtime日期/时间借出时间,默认:Now()\returntime日期/时间实际还书的时间\shouldreturntime日期/时间应该还书的时间\hadreturn数字标识是否已经归还,是:1,否:0字节canreland数字续借次数长整型students,学生资料记录表,共有10个字段,分别为:studentid、name、lpassword、learnid、class、phone、lands、logins、lastlogin、islock,见表5表5students,学生资料记录表的结构字段名称数据类型说明长度studentid自动编号学生标识号长整型name文本学生名20Age文本年龄10lpassword文本学生登陆密码20class数字班级标识号整型phone文本联系电话20islock数字是否超时锁定是:1否:0字节Punishment罚款表,共有10个字段,分别为studentid,bookid,bday,money见表6表6punishment,罚款记录表的结构字段名称数据类型说明长度studentid文本学生标识号长整型bookid文本学生名20bday数字超期天数长整型moneyFloat罚款数8五.系统安全为学生和管理员用户在数据库中存储登录口令,登录时必须经验证一致才可进入系统;由于管理员用户有频繁的插入删除操作且该类用户数量有限,所以为每一个管理员用户在数据库中建立单独的登录名和用户名,并为他们指定已建立的Manager角色(具有表的全部权限)。在管理员登录时,其密码由SQLSever实现验证,由于SQLSever的登录密码是经加密保存的,所以具有较高的安全性。数据安全在该系统中,任何有关删除或添加数据的操作都需要确认才可以在数据库中真正执行。通过高级语言应用程序的限制,不同的用户只能查询修改其有权访问的数据。六、应用程序设计计算功能(1)统计具有指定属性的群体所含个体的总量;(2)自动计算超期书的超期天数,被计算相应的罚款金额;(3)书库内存储书的数目随着借书、还书,自动更新存储功能存储学生,图书具体信息及借书,还书,罚款的相应信息,并能方便快速地实现对以上信息的删除增加等操作。输入及输出功能输入的限定信息等数据经处理后,可以在显示器上按事先定义的格式显示。6交互功能本系统具有仿Windows窗口交互界面,会在工作人员进行输入等操作时给予必要的提示,或者在操作发生错误时给予必要的提示和帮助。七、界面设计1.登陆界面2.主界面3.图书信息录入界面4、读者注册界面.5图书信息查询界面6、读者查寻界面7、借阅查询界面8、罚款界面9、图书催还界面10、借书界面11、还书界面12、续借界面13、挂失界面八、测试和运行图书馆管理系统测试被分为了单元测试,集成测试和系统测试三个阶段:(1)单元测试:该阶段主要是针对界面中各控件的监听操作和程序所需SQL语句进行的。在编码阶段完成后就着手进行的单元测试主要是为了快速定位错误以降低修改缺陷的成本。(2)集成测试:该阶段主要是将本系统的各个部件的联合测试,以决定它们能否在一起共同工作。本阶段的测试工作包括:测试通过不同的用户身份是否可以正确登录相应用户界面;模拟不同的错误操作检验是否可以给出准确的提示;各种报表的存储位置和格式是否可以按要求实现等内容。(3)系统测试:本阶段是在几名同学的帮助下完成的。首先向他们讲述了系统需求和所需操作方法;然后请他们使用该系统,测试尽可能多的情况;最后根据同学的测试感受主要对系统提示方式和内容方面作出了改进。九、总结本系统的特色主要是图书信息的管理,这一方面是考虑到在学校中借书是常见的事,需要用到该系统;另一方面是为了实现对借书和还书过程的细节化。二者在系统中的具体功能体现已在上文中进行了描述。由本次系统的开发过程经历了改进阶段,所以得到了很多的经验和教训。首先,本次开发的初期花费了很多时间做需求分析等准备工作,在数据库建立和程序编写阶段不但没有感觉时间紧,反而各项任务都能较有序进行。其次,不得不承认,虽然初期准备工作做得很多,在数据库ER图编制和建表阶段还是遇到了障碍。现在分析一下,觉得一方面是因为数据库课程该部分内容掌握的不是很熟练,另一方面应该是经验不足造成了需求分析做得不够精准,特别是系统规模定位过大,使得最初设想的个别功能几经努力也没能实现。另外,和前几次系统开发过程相比,不细心的毛病虽然有所减轻,但还是因此浪费了不少时间,特别是SQL语句的where后所跟信息中“=”和“like”的使用,在刚刚开始时未能注意到区别。最后,由于程序编写过程中,各变量、方法、类的命名都基本与自然语意一致,在方法调用和错误修改时感觉非常方便。本系统最终提交的版本与前面版本的一个明显区别是界面有所扩大。以前一直认为小界面可以使各控件比较紧凑,经修改以后感觉其实较大的界面会操作起来更方便,看着更舒服。另外,最终版本在功能选择方式实现方面不再使用JTable提示方式,而是改用多个JPanel经选择有效实现的,这使得本系统操作更加简洁易懂。总而言之,我很珍惜这次开发经历,因为在首次尝试的系统改进过程后,对界面,数据库等方面的内容有了新的认识,这对我以后的程序开发将会非常有帮助。