《数据库课程设计-图书馆管理信息系统(共22页).doc》由会员分享,可在线阅读,更多相关《数据库课程设计-图书馆管理信息系统(共22页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数据库课程设计报告 -图书馆管理信息系统专心-专注-专业目 录一、系统开发平台 题目:图书馆管理信息系统 图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息。现有的人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。开发工具: eclipse数据库: SQL Server 2000操作系统: Windows XP二、数据库规划2.1 任务陈述图书馆管理信息系统的主要任务是对馆内的书籍资源,读者资源,借书信息,还书信息
2、进行管理,便于及时的了解各个环节信息的变更。2.2 任务目标 维护(添加,删除,修改)管理员信息 维护(添加,删除,修改)读者信息 添加新书种信息 添加书刊新副本 删除书刊 删除书刊副本 维护借阅信息 维护借阅历史 书刊挂失 缴纳违章欠款 读者续借图书 查询管理员信息 查询读者信息 查询书刊信息 查询借阅信息 查询借阅历史 查询赔偿情况三、系统定义应付工资总额3.1 系统边界图书管理员书刊借阅/归还教职工,学生信息管理书刊采购库存管理读 者3.2 用户视图 用户视图需求管理员 维护(添加,修改,删除)管理员信息添加读者信息删除读者信息添加新书信息添加新副本信息删除书刊删除副本维护(添加,删除)
3、借阅信息书刊挂失违章缴款统计(如平均借阅时间,书的受欢迎程度)读者查询,修改自身某些信息查询书籍信息查询已借阅书刊及相关信息查询借阅历史记录查询违章记录查询缴款记录续借图书四、需求分析4.1 用户需求说明4.1.1 数据需求一个图书馆有若干个图书管理员,每个管理员用唯一的编号标识,并作为其身份验证的用户名,管理员的其他信息主要包括密码、姓名、联系方式等。一个图书馆有若干书籍由国标书号(ISBN)或国际刊号(ISSN)惟一标识。书籍需要记录的其他主要信息有书名、作者、出版社、出版年限、价格、图书类型、索书号、副本数和可借副本数等。每一本书又有可能包含若干副本,这些副本通过条码号唯一标识,并且要记
4、录副本书的书号及是否在馆。在从图书馆借阅图书之前,读者必须进行有效的注册,包括读者编号、类型、姓名、性别、最大借阅数、当前借阅数和登陆密码等。读者编号惟一标识读者身份。读者类型包括本科生,研究生和教师。合法读者可以借阅图书,一次可借阅的最大的图书数由其类型决定,本科生一次最大借阅数为8册,研究生和教师一次最大借阅数为10册。借阅业务数据包括图书条码号、读者编号、借阅日期和归还日期。图书一次借阅时间默认为30天,续借外加30天,所有书刊均只可续借一次。存在违章罚款未交的读者,暂无法借阅图书,缴款后可正常借阅。读者归还图书后需保留一段时间内的借阅历史记录,其中包括的信息有图书条码号、读者编号、借阅
5、日期、归还日期、赔偿情况、应赔金额和实赔金额等。每条记录由图书条码号、读者编号、借阅日期进行惟一标识(归还的图书不可当天外借)。借阅超期需缴纳罚款,从应还时间开始计算,每天0.1元。读者遗失书刊可进行挂失,挂失后需按遗失书刊的原价进行赔偿。所有读者的缴款将记录进账目,账目的信息包括票据号,缴款时间,缴纳罚款的读者编号,罚款类型,罚款金额。4.1.2 事务需求1.数据录入a录入新管理员的相关信息b录入新入馆的图书的详细信息c录入新入馆的某本图书副本的详细信息d录入新读者的详细信息e录入读者借阅图书的详细信息f录入读者借阅图书的历史信息g. 录入读者缴纳罚款的详细信息2.数据更新/删除h更新/删除
6、某图书管理员的信息i删除给定图书的信息j删除给定图书的某个副本的信息k更新/删除给定读者的信息m更新/删除某读者借阅某本图书的详细信息n更新/删除借阅历史详细信息3.数据查询系统需要支持下列查询:o. 列出图书管理员的信息p. 按某些查询条件列出馆内相应图书的详细信息和可租借情况q. 列出某种图书副本的信息和可租借情况r. 按某些查询条件列出相应读者的详细信息s. 列出某个读者当前图书借阅信息及借阅历史t. 列出某个读者违章缴款的记录u. 列出某个读者的账目清单v. 生成某些使用报表,如平均借阅时间,热门借阅的图书。4.2 系统需求说明 初始数据库大小:a大约有上万种,几万本图书可供借阅。b大
7、约有30名图书管理员管理相关业务。c大约有6万读者可借阅图书馆图书。数据增长速度:a每月大约有100本新书入馆,每本新书大约有5本副本加到数据库中。b一旦某图书的一本副本不能再借出去(如破损严重、丢失、被偷),则相应的记录从数据库中删除,每月大约有10个这样的记录。c每月有2名图书管理员加入或离开。离开一年的员工记录从数据库中删除。每月大约删除1条管理员记录。d每年大约有1万名新读者加入。如果一个读者四年没有借阅任何图书,将删除该读者记录。每月大约有100条会员记录被删除。e每天大约有200条新的借阅记录。借阅记录在借出两年后删除。记录查找的类型和平均数量:a查询图书管理员详细情况-每天约5次
8、。b查询指定图书的情况-每天约300次。c查询某本图书的某个副本的情况-每天约500次。d查询指定读者的详细情况-每天约100次。e查询读者借阅的详细情况-每天约 3000次。安全性:a数据库必须有口令保护。b图书管理员和读者只能在适合他们完成工作的需要的窗口中看到需要的数据。备份和恢复:每天24点备份。用户界面:菜单驱动,联机帮助。法律问题:对员工和读者信息管理,遵守法律。类型性别五、数据库逻辑设计姓名密码姓名编号密码5.1 ER图注册年份编号读者管理员类型编号时间缴费借出时间编号类型名图书类型类型金额账目归还时间借阅赔偿类型分类在馆数索书号应赔金额类型编号实赔金额所属书刊副本副本数ISBN
9、价格条码号状态作者出版社书名5.2 数据字典实体属性描述数据类型及长度是否为空是否多值librarianidnamepasswordtel管理员编号管理员姓名密码联系电话char(5)varchar(30)varchar(30)varchar(11)NoNoNoYesNoNoNoNoreaderidnamepasswordsextypeentermax_nocur_no读者编号姓名密码性别读者类型注册年份最大借阅数当前借阅数char(5)varchar(30)varchar(30)char(2)varchar(6)int(4)int(4)int(4)NoNoNoYesYesYesNoNoNoN
10、oNoNoNoNoNoNobookisbntitleauthorpublisherpricetypesuocopy_noin_copy书号书名作者出版社价格图书类型索书号副本数在馆副本数varchar(20)varchar(50)varchar(50)varchar(50)float(8)char(1)varchar(50)int(4)int(4)NoNoYesYesYesYesNoNoNoNoNoNoNoNoNoNoNoNocopycopy_idisbnon_loan条码号书号当前是否可借char(10)varchar(20)int(4)NoNoNoNoNoNotypetype_not_na
11、me类型编号类型名称char(1)varchar(50)NoNoNoNoloancopy_idreader_idout_datedue_date条码号读者编号借出日期应还日期char(10)char(5)datetime(8)datetime(8)NoNoNoNoNoNoNoNohistorycopy_idreader_idout_datein_datefine_typefine_payfine_paid条码号读者编号借出日期实还日期赔偿类型应赔金额实赔金额char(10)char(5)datetime(8)datetime(8)int(4)float(8)float(8)NoNoNoYesY
12、esYesYesNoNoNoNoNoNoNoaccountidreader_idtimetypemoney票据号缴费读者编号缴费时间缴费类型缴费金额char(5)char(5)datetime(8)varchar(8)float(8)NoNoNoNoNoNoNoNoNoNo5.3 关系表librarian (id, name, tel, password)Primary Key idreader (id, name, sex, enter, type, max_no, cur_no, password)Primary Key idbook (isbn, title, author, publi
13、sher, price, type, copy_no, in_copy)Primary Key isbnForeign Key type references type (type_no)copy (copy_id, isbn, on_loan)Primary Key copy_idForeign Key isbn references book (isbn)loan (copy_id, reader_id, out_date, due_date)Primary Key (copy_id)Foreign Key copy_id references copy (copy_id)Foreign
14、Key reader_id references reader (id)history (copy_id, reader_id, out_date, in_date, fine_type, fine_pay, fine_paid)Primary Key (copy_id, reader_id, out_date)Foreign Key copy_id references copy (copy_id)Foreign Key reader_id references reader (id)type (type_no, t_name)Primary Key type_noaccount (id,
15、reader_id, time, type, money)Primary Key (id)Foreign Key reader_id references reader (id)六、数据库物理设计6.1 索引表建立索引的列事务原因librarianida, h, o搜索条件readeridd, e, f, g, k, m, n, r, s, t, u搜索条件bookisbnb, c, i , g, q搜索条件p, v分组copycopy_idc, j, q搜索条件loancopy_ide, m, s, t搜索条件reader_ide, m, s, t搜索条件historycopy_id, re
16、ader_idf, n, s, v 搜索条件accountidt, u排序reader_idt, u搜索条件typetype_nop搜索条件6.2 视图1.该系统需经常查询某个读者当前借阅书刊的详细信息,为简化多表查询,故建立视图OnloanView,该视图定义如下:CREATE view OnloanViewasselect book.isbn,title,author,publisher,enter,reader_id,out_date,due_datefrom book,copy,loanwhere book.isbn=copy.isbn and copy.copy_id=loan.co
17、py_id2.该系统需经常查询某个读者历史借阅的详细信息,为简化多表查询,故建立视图HistoryView,该视图定义如下:CREATE view HistoryViewasselect book.isbn,title,author,reader_id,out_date,in_datefrom book,copy,historywhere book.isbn=copy.isbn and history.copy_id=copy.copy_id6.3 安全机制1.系统安全并没有给每个数据库用户分配一个认证标识,均使用超级用户sa连接数据库,数据库用户所能做的操作在应用程序中加以控制,来保证系统安
18、全。2.数据安全基本上没有用户对基本表和视图操作的权限控制,这些均在应用程序中加以控制,来保证数据安全。6.4 触发器1.当有读者借阅书刊时,应向表loan中插入一个新元祖,同时还应及时更新其他相关表中的某些数据,包括更新表book相应元祖的可借副本数减一,更新读者信息表中该读者当前借阅量加一,更新表copy相应副本的状态为借出。触发器定义如下:CREATE trigger LoanInsert on loan for insertas update copy set on_loan=0 from copy c inner join inserted i on c.copy_id=i.copy
19、_idupdate book set in_copy=in_copy-1 from book , copy, inserted where book.isbn=copy.isbn and copy.copy_id=inserted.copy_idupdate reader set cur_no=cur_no+1 from reader r inner join inserted i on r.id=i.reader_id2.当某本书刊有新的副本入馆时,应向表copy中插入一个新元组,同时应及时更新表book中副本数加一,在馆副本数加一。触发器定义如下:CREATE trigger copy_i
20、nserton copy for insertas update book set copy=copy+1 from book b inner join inserted i on b.isbn=i.isbnupdate book set in_copy=in_copy+1 from book b inner join inserted i on b.isbn=i.isbn七、应用程序设计7.1 功能模块7.1.1.管理员业务模块管理员业务模块系统管理模块还书业务模块借书业务模块统计报表模块读者管理模块库存管理模块1.系统管理模块。功能包括查看,修改管理员个人信息;添加,删除管理员信息;修改个
21、人密码;退出系统。添加新管理员,管理员编号自动生成,初始密码为编号。2.借阅者信息管理模块。功能包括检索读者详细信息;添加新读者,删除读者等。检索读者详细信息包括多条目精确检索和模糊检索。模糊检索时,只需输入关键字,即可检索得到对应读者。添加新读者时,系统自动生成读者编号,初始密码为该编号,输入读者的相关信息,提交即可添加新读者。删除读者时,若该读者存在借阅图书未还的情况,则系统提示暂无法删除。输入读者编号,可查询核实读者的相关信息,提交即可删除该读者,同时删除其相关记录的所有信息。3.借/还书业务模块。功能包括检索借书登记,还书登记,违章缴款和书刊挂失。1)借书登记读者借阅图书时,管理员输入
22、读者编号,可查询读者及其当前借阅书刊的详细信息;输入要借阅书刊的条码号,可核实该书的详细信息;点击提交提交借书请求。结束成功后,该读者当前借阅信息将添加新借阅书刊,令管理员方便的核实提交是否成功。以下几种情况任意一种情况发生,读者都暂时无法借书:该读者当前借阅量已达最大借阅量;该读者有借阅图书已超期未归还;该读者有违章罚款未缴纳。2)还书登记读者归还书刊时,只需输入书刊的条码号,可查询该书的详细信息,点击还书提交提交还书请求。若借阅超期,系统提示超期信息并询问是否缴费,若缴费则核实缴费金额和操作,若暂不缴费,则该未缴罚款将被记录,可供读者查询。3)罚款缴费有罚款记录的读者进行缴费时,只需输入读
23、者编号,便可查询到该读者所有的罚款未缴的记录,每条记录后面附有缴款条目,确认缴款只需点击相应的条目即可完成,缴款成功后,原“缴款”字样变为“已缴费”,简化了管理员的工作,显示信息简单明了,具体见界面设计。4)书刊挂失借阅书刊遗失,读者可进行挂失。挂失操作时,只需输入读者编号,即可查询读者当前借阅书刊的详细信息,每条记录后附有挂失一栏,读者确认挂失某本书刊,管理员只需点击挂失一栏,若“挂失”字样变为“已挂失”,则挂失成功。4.库存管理模块功能包括检索书刊详细信息,添加书刊,删除书刊。检索书刊详细信息包括多条目精确检索,模糊检索和检索副本信息。模糊检索时,只需输入关键字,即可检索得到相应图书详细信
24、息。该信息还包括图书是否可借的情况。添加书刊包括添加新书和添加新副本。添加新书时,输入书刊的相关信息和副本数,新副本号系统自动生成,添加成功后,显示副本号范围。添加新副本时,输入书号和副本数,可查询核实书刊详细信息,新副本号系统自动生成,添加成功后,显示副本号范围。删除书刊包括删除指定书刊和删除指定副本。删除指定书刊时,输入书号可查询书刊详细信息,若当前书刊有外借副本,则系统提示暂无法删除;点击提交提交删除请求,则删除该书刊及所有副本的相关信息。删除指定副本时,输入书号可查询书刊详细信息,若当前副本外借,则系统提示暂无法删除;点击提交提交删除请求,则修改该副本相关信息并修改书刊的相关信息。5.
25、统计报表模块有时,图书管理员需要搜集使用信息,主要是为管理层提供参考。通常需要了解一些关于流通量,各种书的受欢迎程度,归还可靠度以及平均借阅时间等信息。由于其中某些信息的衡量标准不容易确定,所以本模块只选取了两个衡量标准相对明确的统计功能,分别是热门借阅和平均借阅时间。热门借阅可查询所有书刊以及各类书刊近30天内借阅情况,按借阅次数排行,显示前20本书刊详细信息以及借阅次数。此类数据也可供读者对书刊的借阅进行参考。平均借阅时间功能可统计某段时间内借阅以还的图书的平均借阅时间,对时间的输入有良好的校验。7.1.2.读者模块1.读者信息管理模块读者可查看个人信息,并修改个人密码。2.书刊借阅模块列
26、出读者当前的借阅信息和历史借阅信息。当前借阅书刊的每个条目后有一栏续借,读者只需在需要续借的书刊后点击续借,即可实现书刊的续借。若续借成功,显示“续借成功字样”;若已续借,则提示超过最大借阅次数无法续借。3.违章缴款模块列出读者当前所有违章信息和缴款记录。违章信息及所有未缴罚款项,提示读者缴纳罚款及罚款详细情况。4.账目清单模块列出读者所有缴款的相关记录。包括票据的流水号,缴款的具体时间,罚款类型及金额,简单明了。5.书目检索模块同管理员业务库存管理业务查询功能。6.热门借阅模块同管理员业务统计报表业务查询热门借阅功能。7.2 界面设计界面设计风格简单明了,朴实自然,便于操作。尽可能列表直接显
27、示查询结果,避免数据的输入,方便用户使用。图1 .管理员登录主界面图2 读者登录主界面图3 读者查看书刊借阅界面注:读者要想续借某本图书,只需点击续借即可借阅。方便了读者用户的使用。7.3 事务设计图书馆管理信息系统涉及的最关键的部分就是读者借还书刊,下面对这两个事务的设计做简单阐述。1.借阅书刊 读者身份及借阅情况核实后,提交读者借阅请求,此时需向表loan中插入该读者借阅的相关信息,同时更新表book,copy,reader。为保持数据库数据的完整性,用触发器实现以上操作,详见6.4.1.2.归还书刊 读者归还书刊,核实书刊的相关信息后,需删除表loan中的相应元祖,并在表history中
28、插入一个新元组,同时更新表book,copy,reader。由于从表loan中删除元祖有两种情况,一种是读者归还书刊,一种是借阅书刊的挂失,两种情况所作操作有所不同,所以该部分未用触发器实现,具体sql如下:sql = delete from loan where copy_id= + isbn.getText()+ ;sql = update copy set on_loan=1 where copy_id=+ isbn.getText() + ;sql = update book set in_copy=in_copy+1 where book.isbn in (select isbn f
29、rom copy where copy_id=+ isbn.getText() + );if (pareTo(duecal)=0) sql = insert into history(copy_id,reader_id,out_date,in_date,fine_type,fine_pay,fine_paid) values(+ isbn.getText() + , + reader_id + , + out_date + , + in_date + ,正常,0,0);else money=0.1*val;df=new DecimalFormat(#0.0);money = 0.1 * val
30、;sql = insert into history(copy_id,reader_id,out_date,in_date,fine_type,fine_pay,fine_paid) values(+ isbn.getText() + , + reader_id + , + out_date + , + in_date + ,借阅超期, + df.format(money)+ ,0);八、测试和运行分别用管理员用户00000,密码00000和读者用户00000,密码00000登录图书馆管理信息系统。登录成功后,分别进入管理员业务界面和读者我的图书馆界面。管理员可查询修改个人信息,添加删除管理员
31、。管理员查询借阅者信息,多条目精确检索,选择读者类型本科,查询得到所有本科借阅者详细信息。模糊检索,输入关键字“赵”,查询得到所有姓赵的借阅者信息。借阅书刊。输入读者编号00000,书刊条码号00004,查询得到读者00000的详细信息和当前已借阅书刊的详细信息,点击提交,系统提示“该读者有罚款尚未缴纳,暂无法借阅”。管理员进入罚款缴费界面,输入读者编号00000,查询该读者所有违章未交款记录,读者00000也可通过违章缴款界面得知违章缴款情况。管理员点击具体条目后已交款一栏,缴款成功。读者00000当前违章情况为空,账目清单加入已经缴款的票据号,时间,类型以及金额。归还书刊。输入读者0000
32、0在借书刊编号00005,点击还书提交,系统提示“借阅超期,是否缴款”,点击缴款,弹出缴款界面,缴款金额0.5元,确认是否缴款,点击“是”确认缴款,缴款成功。读者00000账目清单加入新的信息,借阅历史加入归还书刊信息,当前借阅删除已还书信息。管理员进行库存管理,增加删除书刊。管理员进入统计下热门借阅界面,图书类型选择所有书刊,列出近期借阅次数最多的前20种书刊的详细信息和借阅次数。管理员进入平均借阅时间界面,输入起始时间,终止时间,点击查询,系统提示“日期输入不合法,请重新输入!”。重新输入起始时间2009-1-1,终止时间2009-9-1,点击查询,列出这段时间内借阅并归还所有图书的借阅信
33、息和借阅天数,并显示平均借阅时间。管理员和读者分别点击退出系统,测试结束。九、总结1.经验与体会 在这段相对集中的时间内做数据库课程设计,确实有很多收获。且不说最后做出系统的好坏,从数据库的设计到编码实现,这个过程中还是学到了不少东西。在数据库设计方面更正了以前先建表,然后根据表化E-R图的习惯;进行完需求分析后,根据E-R图建表,建出的表更合理,也基本能满足需求。总之,这几天的疲惫和辛苦还是值得的。2.系统的特色与不足 图书馆管理信息系统是日常生活中经常接触到的一个系统。系统除了基本功能外,不足之处就是对图书预约功能的处理还有待完善,另外就是对图书馆删除图书的相关借阅信息是否需要保存还有待考虑。附. 参考文献1 杨正洪等.中文SQL Server 2000关系数据库系统管理和开发指南M.北京:机械工业出版社,2001.92 刘大玮,马传宝,孙颖洁.SQL Server 数据库项目案例导航M.北京:清华大学出版社,2005.73(美)吉瑞(Greary,D.M.).Java2图形设计:卷.AWT M.北京:机械工业出版社,2000.1