图书管理系统数据库课程设计报告

上传人:少*** 文档编号:65745907 上传时间:2022-03-25 格式:DOC 页数:28 大小:264.68KB
返回 下载 相关 举报
图书管理系统数据库课程设计报告_第1页
第1页 / 共28页
图书管理系统数据库课程设计报告_第2页
第2页 / 共28页
图书管理系统数据库课程设计报告_第3页
第3页 / 共28页
点击查看更多>>
资源描述
图书管理系统1、 需求分析(1) 图书管理系统的开题分析:v 图书馆有图书管理员若干名,他们负责已购图书的编目和借还工作,每名图书管理员的信息包括账号和密码。v 读者可在阅览室读书,也可以通过图书流通室借还书,读者的信息包括读者ID,姓名,借书数目,班级,专业。系统为不同读者生成不同读者ID。v 每部书在系统中对应唯一的一条图书在版编目数据,书目的基本信息包括书号,书名,作者,出版商,以及本资料室拥有该书的册数,不同书目的书号不相同。v 图书馆对于同一书目的图书可拥有多册,图书信息包括图书ID,书号,当前状态。每一本书在系统中被赋予唯一的图书ID。v 一名读者最多只能借5本图书,且每本图书最多只能借一个月。读者借书是需由图书管理员登记读者ID,所借图书ID,借阅时间和应还时间,读者还书时图书管理员在对应的借书信息中记录归还时间。v 当书目的可借图书的数量为零时,读者可以对其进行预约登记,即记录读者ID,需要借阅的图书书号,预约时间(2) 图书馆管理信息系统需要完成功能主要有:1. 读者基本信息的输入,包括借书证编号、读者姓名、班级、专业。2读者基本信息的查询、修改,包括读者借书证编号、读者姓名、班级、专业等。3书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。4书籍类别信息的查询、修改,包括类别编号、类别名称。5书籍库存信息的输入,包括书号、书名、著者、出版社、出版日期、登记日期。6书籍库存信息的查询,修改,包括书籍编号、书籍名称、等。7借书信息的输入,包括读者借书证编号、书籍编号、借书日期。8借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。9还书信息的输入,包括借书证编号、书籍编号、还书日期。 10还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。11查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称等(3) 关系模式:(一) 管理员(账号,密码)(二) 读者(借书证编号,读者姓名,专业,班级,借书数目)(三) 书籍(书籍编号,书籍名称,著者,出版社名称,标注)(四) 借阅(借书证编号,书籍编号,书名,读者借书时间)(五) 还书(借书证编号,书籍编号,书名,读者还书时间)(注:关系模式四和五,在数据表设计中将合并成一张表实现)2、概念设计(1) 图书管理系统流程图:图书管理系统用户登陆管理员读者信息借书信息还书信息修改密码查询操作编辑图书信息编辑学生信息添加用户查询操作(2) E-R图: 根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。图书管理信息系统可以划分的实体有:书籍信息实体、读者信息实体、借还记录信息实体,管理员实体。用E-R图一一描述这些实体(其中矩形代表实体,椭圆代表属性,菱形代表联系)。管理员UsernamePW 管理员信息实体E-R图读者学号姓名专业班级借书数量 读者信息实体E-R图书籍信息实体书名书号是否被借出版社著者 书籍信息实体E-R图书名书号借阅日期隔借还信息实体实体学号应还日期 借还信息实体E-R图 借管理读者图书管理员还借书数量还书时间 图书管理系统E-R图(3)数据字典:数据项数据项名数据类型长度值域范围说明读者编号字符型10学生学号或教职工编号姓名字符型20年龄数值型性别字符型10男,女院系字符型20读者所在的院系班级字符型20教职工不填此项读者类别字符型20本科生,硕博生或在校教职工图书编号字符型50书名字符型100图书种类字符型10文艺书,科技书,工具书图书状态字符型10未借,已借图书已被预约或借阅均属于已借状态,其他状态未借状态作者字符型20出版社字符型50出版日期日期型预约号数值型预约完成系统自动生成的编号预约时间日期型预约数目数值型借阅号数值型借阅完成系统自动生成的编号借阅日期日期型借阅天数数值型可以借阅的天数借阅数目数值型借阅完成系统自动统计的数目续借日期日期型还书号数值型还书完成系统自动生成的编号还书日期日期型数据结构 编号:D01 名称:读者 别名:简述:读者的基本信息组成:读者编号,姓名,年龄,性别,院系,班级,读者类别,电话编号:D02 名称:图书 别名:简述:图书的基本信息组成:书号,书名,作者,出版社,出版日期编号:D03 名称:预约 别名:简述:读者预约图书的相关信息组成:预约号,预约日期,预约数目,书号编号:D04 名称:借阅 别名:简述:读者借阅图书生成的记录信息组成:借阅号,借阅日期,书号,借阅数目编号:D05 名称:续借 别名:简述:读者续借图书生成的记录信息组成:续借号,续借日期,书号编号:D06 名称:还书 别名:简述:读者还书图书生成的记录信息组成:还书号,还书日期,书号数据流编号:F101 名称:读者相关信息 别名:简述:读者的基本信息组成:D01 D02 D03若为数据流来源:读者相关信息去向:预约处理编号:F102 名称:预约相关信息 别名:简述:预约的基本信息组成:D01 D02 D03若为数据流来源:预约处理去向:预约记录的相关信息编号:F103 名称:预约记录相关信息 别名:简述:预约完成形成的基本信息组成:D01 D03 DO2若为数据流来源:预约记录的相关信息去向:借书处理编号:F104 名称:借书处理相关信息 别名:简述:借书的基本信息组成:D01 D03 DO2 D04若为数据流来源:预约记录的相关信息去向:借书处理编号:F105 名称:读者相关信息 别名:简述:读者的基本信息组成:D01 D03 D04若为数据流来源:读者相关信息去向:借书处理编号:F106 名称:借书相关信息 别名:简述:借书的基本信息组成:D01 D02 D03 D04若为数据流来源:借书处理去向:续借处理编号:F107 名称:续借过程的相关信息 别名:简述:续借的基本信息组成:D01 D02 D04若为数据流来源:续借处理去向:借书记录编号:F108 名称:续借的相关信息 别名:简述:续借的基本信息组成:D01 D02 D03 D04若为数据流来源:续借处理去向:还书处理编号:F109 名称:续借形成的相关信息 别名:简述:续借完成形成的基本信息组成:D01 D02 D04若为数据流来源:还书处理去向:借书记录编号:F110 名称:还书相关信息 别名:简述:还书的基本信息组成:D01 D02 D04 D06若为数据流来源:图书去向:还书处理编号:F111 名称:还书形成相关信息 别名:简述:还书完成形成的基本信息组成:D01 D02 D03 D04若为数据流来源:还书处理去向:借书记录编号:F112 名称:已有借书记录后再借书信息 别名:简述:借书形成的基本信息组成:D01 D04若为数据流来源:借书记录去向:借书处理编号:F113 名称:已有借书记录后续借书信息 别名:简述:借书形成的基本信息组成:D01 D04 D05若为数据流来源:借书记录去向:续借处理编号:F114 名称:预约图书信息 别名:简述:预约图书的基本信息组成:D01 D02 D03若为数据流来源:图书基本信息去向:预约处理编号:F115 名称:借阅图书信息 别名:简述:借书图书的基本信息组成:D01 D02 D04若为数据流来源:图书基本信息去向:借书处理编号:F116 名称:续借图书信息 别名:简述:续借图书的基本信息组成:D01 D02 D05若为数据流来源:图书基本信息去向:续借处理数据存储编号:S1 名称:预约记录 别名:简述:读者预约图书形成的记录组成:D01关键字:相关处理:P1.0 P2.0 P2.10记录长度:记录数:数据量:编号:S2 名称:借书记录 别名:简述:读者借书,续借,还书形成的记录组成:D01关键字:相关处理:P2.0 P3.0 P4.0 P2.10 P3.10 P4.10 P4.20P2.11 P2.12 记录长度:记录数:数据量:处 理编号:P1.0 名称:预约 输入信息:读者信息,图书信息数据存储:预约记录输出信息:预约记录 激发条件:简要说明:读者预约要借的图书,输入读者信息和图书信息,生成预约记录编号:P2.0 名称:借阅 输入信息:读者信息,预约记录,图书信息数据存储:图书记录输出信息:图书记录 激发条件:简要说明:读者借阅图书,输入读者信息和图书信息,若有预约,依据预约记录借书编号:P3.0 名称:续借 输入信息:读者信息或图书信息数据存储:借书记录输出信息:借书记录 激发条件:简要说明:读者续借图书,输入读者信息或图书信息,由系统判断是否能够续借编号:P4.0 名称:还书 输入信息:图书信息数据存储:借书记录输出信息:借书记录 激发条件:简要说明:读者还书,输入图书信息判断是否超过期限,是否需要罚款,还书是否成功编号:P2.10 名称:是否允许借阅 输入信息:借书记录,预约记录数据存储:借书记录输出信息:借书记录 激发条件:简要说明:读者确定要借的图书,由系统根据读者的借阅记录判断读者是否允许借阅编号:P3.10 名称:是否允许续借 输入信息:借书记录数据存储:借书记录输出信息:借书记录 激发条件:简要说明:读者所借图书是否能够续借编号:P4.10 名称:是否超过期限 输入信息:借书记录数据存储:借书记录输出信息:借书记录 激发条件:简要说明:读者是借阅的图书是否超过了借书期限编号:P4.20 名称:罚款 输入信息:借书记录数据存储:借书记录,罚款金额输出信息:借书记录 激发条件:简要说明:读者是借阅的图书超过了借书期限需要罚款(4) 数据流图处理过程代表传递代表参与代表存储代表报表代表人员或部门图例:续借流程:读者条码图书条码读者管理员是否可以续借续借不能续借续借成功是否图书条码读者条码是否超过期限读者管理员管理员还书罚款罚款金额还书成功否是还书流程:过程流程图:表示存储表示处理表示数据流图例:表示外部实体图书读者P2.0借书预约记录P3.0续借P4.0还书借书记录P1.0预约借书记录图书读者P2.10是否允许借阅管理员借书记录预约记录图 2.借书管理子系统第一层数据流程图图 1.借阅系统顶层数据流程图借书记录图书P3.10是否允许续借允许不允许P4.0还书管理员P2.0借书D2.2图 3.续借管理子系统第一层数据流程图罚款金额管理员借书记录P4.10是否超过期限P4.20罚款过期图书没有过期图 4.还书管理子系统第一层数据流程图P2.12已借书数是否超过允许数额种类图书读者管理员借书记录预约记录P2.11是否有过期书否是 否 是 图 5.借书管理子系统第二层数据流程图4、物理设计(1)确定数据库的存储结构1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。2、DBMS产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这些参数值,并且在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。(2) 评价物理结构根据所选用的DBMS,如SQL Server 2000,从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择一个较优的合理的物理结构。5、 系统实施实现过程数据库设计(1)根据系统的功能要求,建立数据库Library。CREATE DATABASE Library(2)建立数据表CREATE TABLE Library的各个列表,包括借书,还书和查看图书借阅记录和删除记录a.借书借书: long Is_bookid,Is_cert_id,Il_i,Il_m,Il_n,Il_vdate Is_returndates datetime Is_loandates,Il_j,Il_kinteger Is_flag,Il_a,Il_b,Il_d,Il_f,Il_wif sle_cert_id.text=or iSNull(sle_cert_id.text)thenmessagebox(缺少数据,请输入借书证书ID) sle_cert_id.setfocus() returnelseif sle_bookid.text=or iSNull(sle_bookid.text)thenmessagebox(缺少数据,请输入图书编号) sle_bookid.setfocus() returnend ifIs_bookid=long(sle_bookid.text)Is_cert_id=long(sle_cert_id.text)Is_loandates=datetime(today()Is_returndates=relativedate (today(),30)Is_flag=0/自定义为0select loan.returndatesinto:Il_jfrom loanwhere loan.cert_id=:Is_cert_id and loan.returndates:Is_loandates and loan.flag=0;if Il_jIl_k thenmessagebox(提示信息,所借书在+string(datetime(Il_j)+ 已超期,请你还书!) sle_cert_id.setfocus()returnend ifselect CertificateInfo.flaginto:Il_afrom CertificateInfowhere CertificateInfo.cert_id=:Is_cert_id;select count(flag)into: Il_ifrom loanwhere loan.cert_id=:Is_cert_id and flag=0;if Il_a=1 and Il_i=10 then /说明:如果Il_a=1时则可以借10本书。messagebox(信息错误,所借书已超10本,请先还书!) sle_cert_id.setfocus()elseif Il_a1 and Il_i=6 then /说明:Il_a1则可以借6本书。messagebox(信息错误,所借书已超6本,请先还书!) sle_cert_id.setfocus()returnend ifselect bookinfo.bookidinto:Il_mfrom bookinfowhere bookinfo.bookid=:Is_bookid;if Il_m Is_bookid thenmessagebox(信息错误,数据库内没有此图书信息!) sle_cert_id.setfocus()returnend ifselect CertificateInfo.cert_idinto:Il_nfrom CertificateInfowhere CertificateInfo.cert_id=:Is_cert_id;if Il_n Is_cert_id thenmessagebox(信息错误,数据库内不存在此证!) sle_cert_id.setfocus()returnend if/说明如果flags=2时则此证已被挂失,如果flags=0则没有挂失select certificateinfo.flagsinto:Il_dfrom certificateinfowhere certificateinfo.cert_id=:Is_cert_id;if Il_d=2 thenmessagebox(信息错误,此证已被挂失!)returnend if/说明如果flag=1时则此书已被借出,如flag=0则没有借出select bookinfo.flag1into:Il_bfrom bookinfowhere bookinfo.bookid=:Is_bookid;if Il_b=1 thenmessagebox(信息错误,此书已被借出!)returnend ifinsert into loanvalues(:Is_bookid, :Is_cert_id, :Is_loandates, :Is_returndates, :Is_flag);select loan.cert_idinto:Il_vfrom loanwhere loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; select loan.flaginto:Il_ffrom loanwhere loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; if Il_f=0 and Il_v=Is_cert_id thendw_1.retrieve(Is_cert_id,Is_flag)end ifmessagebox(提示信息,图书编号为+string(long(Is_bookid)+的图书已借成功)update bookinfoset flag1=1where bookinfo.bookid=:Is_bookid;/借书后将本书的flag1置1sle_bookid.text=sle_cert_id.text=sle_cert_id.setfocus()查看借书记录:long Is_cert_id,Il_d,Il_a,Il_b,Il_vdatetime Is_loandates,Is_returndates,Il_j,Il_kinteger Is_flag,Il_fIs_loandates=datetime(today()Is_cert_id=long(sle_1.text)/Is_returndates=relativedate(today(),30)select loan.returndatesinto:Il_jfrom loanwhere loan.cert_id=:Is_cert_id and loan.returndates:Is_loandates and loan.flag=0;if Il_jIl_k thenmessagebox(提示信息,所借书在+string(datetime(Il_j)+ 已超期,请你还书!) sle_cert_id.setfocus()end ifif sle_1.text= thenmessageBox(数据不全,请输入借书证号)returnend ifselect certificateinfo.flagsinto:Il_dfrom certificateinfowhere certificateinfo.cert_id=:Is_cert_id;if Il_d=2 thenmessagebox(信息错误,此证已被挂失!)end ifselect certificateinfo.cert_idinto:Il_afrom certificateinfowhere certificateinfo.cert_id=:Is_cert_id;if Il_a=0 thenmessagebox(信息错误,不存在此证件!)returnend ifselect loan.cert_idinto:Il_bfrom loanwhere loan.cert_id=:Is_cert_id;if Il_b=0 thenmessagebox(信息错误,此证件无借书信息!)returnend ifselect loan.cert_idinto:Il_vfrom loanwhere loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; select loan.flaginto:Il_ffrom loanwhere loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; if Il_f=0 and Il_v=Is_cert_id thendw_1.retrieve(Is_cert_id,Is_flag)end ifb.还书:long Is_cert_id,Is_bookid,Il_a,Il_ndatetime Is_loandates1,Il_j,Il_k,Il_dlong Il_e,Il_h,Il_l,Il_f,Il_bdouble Il_minteger Il_flag1,Il_wIs_bookid=long(sle_6.text) Is_loandates1=datetime(today() Il_h=0 Il_l=0 if sle_6.text= thenmessageBox(数据不全,请输入图书编号)end ifselect loan.returndatesinto:Il_jfrom loanwhere loan.bookid=:Is_bookid and loan.returndates:Is_loandates1 and loan.flag=0;select loan.loandatesinto:Il_dfrom loanwhere loan.bookid=:Is_bookid and loan.returndates:Is_loandates1;Il_e=abs(DaysAfter(date(datetime(Il_d),date(datetime(Is_loandates1)-30)Il_m=double(Il_e*0.1)if Il_jIl_k thenmessagebox(提示信息,所借书在+string(datetime(Il_j)+ 已超期,罚款+string(double(Il_m)+元,请交罚款!) end ifselect loan.flaginto:Il_wfrom loanwhere loan.bookid=:Is_bookid ;select bookinfo.flag1into:Il_bfrom bookinfowhere bookinfo.bookid=:Is_bookid ;if Il_b =0 thenmessagebox(信息错误,此图书编号的书未被借出!) returnend ifif Il_jIl_k theninsert into momey values(:Is_bookid, :Il_e , :Il_m );elseinsert into momey values(:Is_bookid, :Il_h, :Il_l);end ifdw_2.retrieve(Is_bookid)update bookinfoset flag1=0where bookinfo.bookid=:Is_bookid;/还书后将本书的flag1置0update loanset flag=1 where loan.bookid=:Is_bookid ;delete from momeywhere momey.bookid=:Is_bookid ;select loan.flaginto:Il_afrom loanwhere loan.bookid=:Is_bookid;if Il_a=1 thenmessageBox(提示信息,图书编号为+string(long(Is_bookid)+的图书已还借成功)end ifsle_6.text=sle_6.setfocus()c.查看图书借阅记录和删除记录查看图书借阅记录:string Is_titleinteger Il_b Is_title=trim(sle_2.text)if not sle_2.text= thendw_3.retrieve(Is_title )elsemessageBox(数据不全,请输入书名)returnend ifselect count(*)into:Il_bfrom loan,bookinfowhere loan.bookid=bookinfo.bookid and bookinfo.title=:Is_title;messagebox(提示信息,此书的借阅次数为+string(integer(Il_b)+次!)删除记录:integer Il_adelete from loanwhere loan.flag=1;select count(*)into:Il_afrom loanwhere loan.flag=1;if Il_a=0 thenmessageBox(提示信息,删除成功)end if6、运行维护1、针对不同的应用要求制定不同的转储计划,一旦发生故障尽快将数据库恢复到某种一致的状态,并尽可能减少对数据库的破坏;2、根据实际情况修改数据库原有的安全性、完整性控制;3、在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的方法;4、数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低数据的存取效率,数据库性能下降。这时应按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系统性能。当原有的数据库设计不能满足新的需求,需要重构造数据库,调整数据库的模式和内模式。7、 用户手册说明 借书:当借一本书时将此的在bookinfo表中的标记flag1置为1,其他人再借此书时先判断flag1是否为1,如果为1则不可再借此书。并把此书的借阅记录录入到loan表中,此书在loan表中的flag标记置为0,表示此书未还,在查看借书记录时查看的是未还书的记录,要对flag1标记进行判断。同时还需要判断证件是否被挂失,所借的书是否有超期的。 还书:还书时将此书bookinfo表中的flag标记置为0(表示已还),然后再将loan表中的flag标记置为1。并判断是否超期以及计算超期天数和罚款金额,并将其输入money表中,当显示其记录以后将money表中的信息删除。 查看借阅信息:在查看借阅信息直接从loan表中读出,需要把bookinfo表和loan表相连(按书名查阅),查看借阅信息主要是为了判断什么书是热门图书。8、 总结这次的课程设计是我进入大学接触的第一个有关于数据库的课程设计,好多东西都不会。不过大家在确定了选题之后,就开始积极的准备当中,我也开始了图书管理系统的课程设计。按照书上介绍的数据库设计的步骤,我首先进行需求分析,得到了图书管理员详细的回答后,我想的是这些细节的东西应该应用到我们具体哪些步骤中。开始时没有头绪的,思路渐渐有所清晰后,我就进行概念结构设计。在画数据流程图和完成数据字典的时候,其实遇到很多困难,主要集中在数据字典中,数据项的填写很乱,我们觉得我们完成的结果中应该存在很多问题。在画E-R图时,按自己大脑的过期思维去想,应该是我们所体现出来的上述E-R图,但是预约和借阅,借阅和续借,和还书之间的关系没有体现,这又是一大漏洞。再以后SQL建表时也不确定。总之,我们认为这个系统需要改进的地方还有很多很多。通过这次的数据库课程设计,开始对数据库的应用有了初步的了解,知道了怎么通过编程建立一个具有一定功能的系统。在设计的期间,遇到的问题很多,好多知识根本就不懂,然后经过查书没上网搜索和问老师和同学,最后终于慢慢的完成了这个课程设计。在此谢谢老师和同学的帮忙,顺利完成了我大学的第一个课程设计。谢谢大家!谢谢老师!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!