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

上传人:啊飒飒 文档编号:11771910 上传时间:2021-09-06 格式:DOC 页数:28 大小:264.68KB
返回 下载 相关 举报
图书管理系统数据库课程设计报告.doc_第1页
第1页 / 共28页
图书管理系统数据库课程设计报告.doc_第2页
第2页 / 共28页
图书管理系统数据库课程设计报告.doc_第3页
第3页 / 共28页
图书管理系统数据库课程设计报告.doc_第4页
第4页 / 共28页
图书管理系统数据库课程设计报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《图书管理系统数据库课程设计报告.doc》由会员分享,可在线阅读,更多相关《图书管理系统数据库课程设计报告.doc(28页珍藏版)》请在三一文库上搜索。

1、图书管理系统 1、需求分析需求分析 (1 1)图书管理系统的开题分析:图书管理系统的开题分析: 图书馆有图书管理员若干名,他们负责已购图书的编目和借还工作,每名图书管理 员的信息包括账号和密码。 读者可在阅览室读书,也可以通过图书流通室借还书,读者的信息包括读者 ID, 姓名,借书数目,班级,专业。系统为不同读者生成不同读者 ID。 每部书在系统中对应唯一的一条图书在版编目数据,书目的基本信息包括书号,书 名,作者,出版商, ,以及本资料室拥有该书的册数,不同书目的书号不相同。 图书馆对于同一书目的图书可拥有多册,图书信息包括图书 ID,书号,当前状态。 每一本书在系统中被赋予唯一的图书 ID

2、。 一名读者最多只能借 5 本图书,且每本图书最多只能借一个月。读者借书是需由图 书管理员登记读者 ID,所借图书 ID,借阅时间和应还时间,读者还书时图书管理 员在对应的借书信息中记录归还时间。 当书目的可借图书的数量为零时,读者可以对其进行预约登记,即记录读者 ID, 需要借阅的图书书号,预约时间 (2 2)图书馆管理信息系统需要完成功能主要有:图书馆管理信息系统需要完成功能主要有: 1. 读者基本信息的输入,包括借书证编号、读者姓名、班级、专业。 2读者基本信息的查询、修改,包括读者借书证编号、读者姓名、班级、专业等。 3书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。 4书

3、籍类别信息的查询、修改,包括类别编号、类别名称。 5书籍库存信息的输入,包括书号、书名、著者、出版社、出版日期、登记日期。 6书籍库存信息的查询,修改,包括书籍编号、书籍名称、等。 7借书信息的输入,包括读者借书证编号、书籍编号、借书日期。 8借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书 籍名称、借书日期等。 9还书信息的输入,包括借书证编号、书籍编号、还书日期。 10还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书 籍名称、借书日期、还书日期等。 11查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称等 (3 3)关系模式:关系模式:

4、(一)管理员(账号,密码) (二)读者(借书证编号,读者姓名,专业,班级,借书数目) (三)书籍(书籍编号,书籍名称,著者,出版社名称,标注) (四)借阅(借书证编号,书籍编号,书名,读者借书时间) (五)还书(借书证编号,书籍编号,书名,读者还书时间) (注:关系模式四和五,在数据表设计中将合并成一张表实 现) 2、概念设计概念设计 (1)图书管理系统流程图:图书管理系统流程图: 图书管理系统 用户登陆 管理员 读者信息 借书信息 还书信息 修改密码 查询操作 编辑图书信息 编辑学生信息 添加用户 查询操作 (2 2) E-RE-R 图:图: 根据 1)所要实现的功能设计,可能建立它们之间的

5、关系,进而实现逻辑结构功能。 图书管理信息系统可以划分的实体有:书籍信息实体、读者信息实体、借还记录信息实体, 管理员实体。用 E-R 图一一描述这些实体(其中矩形代表实体,椭圆代表属性,菱形代表 联系) 。 管理员信息实体 E-R 图 读者信息实体 E-R 图 书籍信息实体 E-R 图 借还信息实体 E-R 图 管理员 UsernamePW 读者 学号 姓名 专业 班级 借书数 量 书籍信息实 体 书名 书号 是否被 借 出版社 著者 书名 书号 借阅日期 隔隔 借还信息实体实体 学号 应还日期 借 管理 读者读者 图书图书 管理员管理员 还 借书数量 还书时间 图书管理系统 E-R 图 (

6、3 3)数据字典:数据字典: 数据项 数据项名数据项名数据类型数据类型长度长度值域范围值域范围说明说明 读者编号字符型 10 学生学号或教职工编号 姓名字符型 20 年龄数值型 性别字符型 10 男,女 院系字符型 20 读者所在的院系 班级字符型 20 教职工不填此项 读者类别字符型 20 本科生,硕博生 或在校教职工 图书编号字符型 50 书名字符型 100 图书种类字符型 10 文艺书,科技书, 工具书 图书状态字符型 10 未借,已借 图书已被预约或借阅均属 于已借状态,其他状态未 借状态 作者字符型 20 出版社字符型 50 出版日期日期型 预约号数值型 预约完成系统自动生成的 编号

7、 预约时间日期型 预约数目数值型 借阅号数值型 借阅完成系统自动生成的 编号 借阅日期日期型 借阅天数数值型可以借阅的天数 借阅数目数值型 借阅完成系统自动统计的 数目 续借日期日期型 还书号数值型 还书完成系统自动生成的 编号 还书日期日期型 数据结构 编号:D01 名称:读者 别名: 简述:读者的基本信息 组成:读者编号,姓名,年龄,性别,院系,班级,读者类别,电话 编号:D02 名称:图书 别名: 简述:图书的基本信息 组成:书号,书名,作者,出版社,出版日期 编号:D03 名称:预约 别名: 简述:读者预约图书的相关信息 组成:预约号,预约日期,预约数目,书号 编号:D04 名称:借阅

8、 别名: 简述:读者借阅图书生成的记录信息 组成:借阅号,借阅日期,书号,借阅数目 编号:D05 名称:续借 别名: 简述:读者续借图书生成的记录信息 组成:续借号,续借日期,书号 编号:D06 名称:还书 别名: 简述:读者还书图书生成的记录信息 组成:还书号,还书日期,书号 数据流 编号:F101 名称:读者相关信息 别名: 简述:读者的基本信息 组成:D01 D02 D03 若为数据流来源:读者相关信息去向:预约处理 编号:F102 名称:预约相关信息 别名: 简述:预约的基本信息 组成:D01 D02 D03 若为数据流来源:预约处理去向:预约记录的相关信息 编号:F103 名称:预约

9、记录相关信息 别名: 简述:预约完成形成的基本信息 组成:D01 D03 DO2 若为数据流 来源:预约记录的相关信 息 去向:借书处理 编号:F104 名称:借书处理相关信息 别名: 简述:借书的基本信息 组成:D01 D03 DO2 D04 若为数据流 来源:预约记录的相关信 息 去向:借书处理 编号:F105 名称:读者相关信息 别名: 简述:读者的基本信息 组成:D01 D03 D04 若为数据流来源:读者相关信息去向:借书处理 编号:F106 名称:借书相关信息 别名: 简述:借书的基本信息 组成:D01 D02 D03 D04 若为数据流来源:借书处理去向:续借处理 编号:F107

10、 名称:续借过程的相关信息 别名: 简述:续借的基本信息 组成:D01 D02 D04 若为数据流来源:续借处理去向:借书记录 编号:F108 名称:续借的相关信息 别名: 简述:续借的基本信息 组成:D01 D02 D03 D04 若为数据流来源:续借处理去向:还书处理 编号:F109 名称:续借形成的相关信息 别名: 简述:续借完成形成的基本信息 组成:D01 D02 D04 若为数据流来源:还书处理去向:借书记录 编号:F110 名称:还书相关信息 别名: 简述:还书的基本信息 组成:D01 D02 D04 D06 若为数据流来源:图书去向:还书处理 编号:F111 名称:还书形成相关信

11、息 别名: 简述:还书完成形成的基本信息 组成:D01 D02 D03 D04 若为数据流来源:还书处理去向:借书记录 编号:F112 名称:已有借书记录后再借书信息 别名: 简述:借书形成的基本信息 组成:D01 D04 若为数据流来源:借书记录去向:借书处理 编号:F113 名称:已有借书记录后续借书信息 别名: 简述:借书形成的基本信息 组成:D01 D04 D05 若为数据流来源:借书记录去向:续借处理 编号:F114 名称:预约图书信息 别名: 简述:预约图书的基本信息 组成:D01 D02 D03 若为数据流来源:图书基本信息去向:预约处理 编号:F115 名称:借阅图书信息 别名

12、: 简述:借书图书的基本信息 组成: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.20

13、 P2.11 P2.12 记录长度:记录数:数据量: 处 理 编号:P1.0 名称:预约 输入信息:读者信息,图书信息 数据存储:预约记录 输出信息:预约记录 激发条件: 简要说明:读者预约要借的图书,输入读者信息和图书信息,生成预约记录 编号:P2.0 名称:借阅 输入信息:读者信息,预约记录,图书信息 数据存储:图书记录 输出信息:图书记录 激发条件: 简要说明:读者借阅图书,输入读者信息和图书信息,若有预约,依据预约记录借书 编号:P3.0 名称:续借 输入信息:读者信息或图书信息 数据存储:借书记录 输出信息:借书记录 激发条件: 简要说明:读者续借图书,输入读者信息或图书信息,由系统

14、判断是否能够续借 编号:P4.0 名称:还书 输入信息:图书信息 数据存储:借书记录 输出信息:借书记录 激发条件: 简要说明:读者还书,输入图书信息判断是否超过期限,是否需要罚款,还书是否成功 编号:P2.10 名称:是否允许借阅 输入信息:借书记录,预约记录 数据存储:借书记录 输出信息:借书记录 激发条件: 简要说明:读者确定要借的图书,由系统根据读者的借阅记录判断读者是否允许借阅 编号:P3.10 名称:是否允许续借 输入信息:借书记录 数据存储:借书记录 输出信息:借书记录 激发条件: 简要说明:读者所借图书是否能够续借 编号:P4.10 名称:是否超过期限 输入信息:借书记录 数据

15、存储:借书记录 输出信息:借书记录 激发条件: 简要说明:读者是借阅的图书是否超过了借书期限 编号:P4.20 名称:罚款 输入信息:借书记录 数据存储:借书记录,罚款金额 输出信息:借书记录 激发条件: 简要说明:读者是借阅的图书超过了借书期限需要罚款 (4 4)数据流图数据流图 处理过程 代表传递 代表参与 代表存储 代表报表 代表人员或部门 图例: 续借流程: 读者条码 图书条码 读者管理员 是否可以续借 续借 不能续借续借成功 是否 过程流程图: 表示存储表示处理 表示数据流 图例: 表示外部实体 图书读者 P2.0 借书 预约记录 P3.0 续借 P4.0 还书 借书记录 P1.0

16、预约 借书记录 图书条码 读者条码 是否超过期限 读者 管理员 管理员 还书 罚款 罚款金额 还书成功 否是 还书流程: 图书 读者 P2.10 是否允许借阅 管理员 借书记录 预约记录 图 2.借书管理子系统第一层数据 流程图图 图 1.借阅系统顶层数据流程 图 借书记录 图书 P3.10 是否允许续借 允许 不允许 P4.0 还书 管理员 P2.0 借书 D2.2 图 3.续借管理子系统第一层数据 流程图图 罚款金额 管理员 借书记录 P4.10 是否超过期限 P4.20 罚款 过期 图书 没有过期 图 4.还书管理子系统第一层数据 流程图图 P2.12 已借书数是否超过允许数额种类 图书

17、 读者 管理员 借书记录 预约记录 P2.11 是否有过期书 否 是 否 是 图 5.借书管理子系统第二层数 据流程图 4、物理设计、物理设计 (1 1)确定数据库的存储结构)确定数据库的存储结构 1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和 存取频率较低部分分开存放。 2、DBMS 产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这 些参数值,并且在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。 (2 2) 评价物理结构评价物理结构 根据所选用的 DBMS,如 SQL Server 2000,从定量估算各种方案的存储空间、存取时

18、 间和维护代价入手,对估算结果进行权衡、比较,选择一个较优的合理的物理结构。 5、系统实施系统实施 实现过程实现过程 数据库设计 (1)根据系统的功能要求,建立数据库Library。 CREATE DATABASE Library (2)建立数据表 CREATE TABLE Library 的各个列表,包括借书,还书和查看图书借阅记录和删除记录 a.借书 借书: long Is_bookid,Is_cert_id,Il_i,Il_m,Il_n,Il_v date Is_returndates datetime Is_loandates,Il_j,Il_k integer Is_flag,Il_

19、a,Il_b,Il_d,Il_f,Il_w if sle_cert_id.text=or iSNull(sle_cert_id.text)then messagebox(缺少数据,请输入借书证书 ID) sle_cert_id.setfocus() return elseif sle_bookid.text=or iSNull(sle_bookid.text)then messagebox(缺少数据,请输入图书编号) sle_bookid.setfocus() return end if Is_bookid=long(sle_bookid.text) Is_cert_id=long(sle_c

20、ert_id.text) Is_loandates=datetime(today() Is_returndates=relativedate (today(),30) Is_flag=0/自定义为 0 select loan.returndates into:Il_j from loan where loan.cert_id=:Is_cert_id and loan.returndates:Is_loandates and loan.flag=0; if Il_jIl_k then messagebox(提示信息,所借书在+string(datetime(Il_j)+ 已超期,请你 还书!)

21、sle_cert_id.setfocus() return end if select CertificateInfo.flag into:Il_a from CertificateInfo where CertificateInfo.cert_id=:Is_cert_id; select count(flag) into: Il_i from loan where loan.cert_id=:Is_cert_id and flag=0; if Il_a=1 and Il_i=10 then /说明:如果 Il_a=1 时则可以借 10 本书。 messagebox(信息错误,所借书已超 10

22、 本,请先还书!) sle_cert_id.setfocus() elseif Il_a1 and Il_i=6 then /说明:Il_a1 则可以借 6 本书。 messagebox(信息错误,所借书已超 6 本,请先还书!) sle_cert_id.setfocus() return end if select bookinfo.bookid into:Il_m from bookinfo where bookinfo.bookid=:Is_bookid; if Il_m Is_bookid then messagebox(信息错误,数据库内没有此图书信息!) sle_cert_id.s

23、etfocus() return end if select CertificateInfo.cert_id into:Il_n from CertificateInfo where CertificateInfo.cert_id=:Is_cert_id; if Il_n Is_cert_id then messagebox(信息错误,数据库内不存在此证!) sle_cert_id.setfocus() return end if /说明如果 flags=2 时则此证已被挂失,如果 flags=0 则没有挂失 select certificateinfo.flags into:Il_d fro

24、m certificateinfo where certificateinfo.cert_id=:Is_cert_id; if Il_d=2 then messagebox(信息错误,此证已被挂失!) return end if /说明如果 flag=1 时则此书已被借出,如 flag=0 则没有借出 select bookinfo.flag1 into:Il_b from bookinfo where bookinfo.bookid=:Is_bookid; if Il_b=1 then messagebox(信息错误,此书已被借出!) return end if insert into lo

25、an values(:Is_bookid, :Is_cert_id, :Is_loandates, :Is_returndates, :Is_flag); select loan.cert_id into:Il_v from loan where loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; select loan.flag into:Il_f from loan where loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; if Il_f=0 and Il_v=Is_cert_id then

26、dw_1.retrieve(Is_cert_id,Is_flag) end if messagebox(提示信息,图书编号为+string(long(Is_bookid)+的图书已借成功 ) update bookinfo set flag1=1 where bookinfo.bookid=:Is_bookid;/借书后将本书的 flag1 置 1 sle_bookid.text= sle_cert_id.text= sle_cert_id.setfocus() 查看借书记录: long Is_cert_id,Il_d,Il_a,Il_b,Il_v datetime Is_loandates,

27、Is_returndates,Il_j,Il_k integer Is_flag,Il_f Is_loandates=datetime(today() Is_cert_id=long(sle_1.text) /Is_returndates=relativedate(today(),30) select loan.returndates into:Il_j from loan where loan.cert_id=:Is_cert_id and loan.returndates:Is_loandates and loan.flag=0; if Il_jIl_k then messagebox(提

28、示信息,所借书在+string(datetime(Il_j)+ 已超期,请你 还书!) sle_cert_id.setfocus() end if if sle_1.text= then messageBox(数据不全,请输入借书证号) return end if select certificateinfo.flags into:Il_d from certificateinfo where certificateinfo.cert_id=:Is_cert_id; if Il_d=2 then messagebox(信息错误,此证已被挂失!) end if select certificat

29、einfo.cert_id into:Il_a from certificateinfo where certificateinfo.cert_id=:Is_cert_id; if Il_a=0 then messagebox(信息错误,不存在此证件!) return end if select loan.cert_id into:Il_b from loan where loan.cert_id=:Is_cert_id; if Il_b=0 then messagebox(信息错误,此证件无借书信息!) return end if select loan.cert_id into:Il_v

30、from loan where loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; select loan.flag into:Il_f from loan where loan.cert_id=:Is_cert_id and loan.flag=:Is_flag; if Il_f=0 and Il_v=Is_cert_id then dw_1.retrieve(Is_cert_id,Is_flag) end if b.还书: long Is_cert_id,Is_bookid,Il_a,Il_n datetime Is_loandates1,Il

31、_j,Il_k,Il_d long Il_e,Il_h,Il_l,Il_f,Il_b double Il_m integer Il_flag1,Il_w Is_bookid=long(sle_6.text) Is_loandates1=datetime(today() Il_h=0 Il_l=0 if sle_6.text= then messageBox(数据不全,请输入图书编号) end if select loan.returndates into:Il_j from loan where loan.bookid=:Is_bookid and loan.returndates:Is_lo

32、andates1 and loan.flag=0; select loan.loandates into:Il_d from loan where 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 then messagebox(提示信息,所借书在+string(datetime(Il_j)+ 已超期,罚款 +stri

33、ng(double(Il_m)+元,请交罚款!) end if select loan.flag into:Il_w from loan where loan.bookid=:Is_bookid ; select bookinfo.flag1 into:Il_b from bookinfo where bookinfo.bookid=:Is_bookid ; if Il_b =0 then messagebox(信息错误,此图书编号的书未被借出!) return end if if Il_jIl_k then insert into momey values(:Is_bookid, :Il_e

34、 , :Il_m ); else insert into momey values(:Is_bookid, :Il_h, :Il_l); end if dw_2.retrieve(Is_bookid) update bookinfo set flag1=0 where bookinfo.bookid=:Is_bookid;/还书后将本书的 flag1 置 0 update loan set flag=1 where loan.bookid=:Is_bookid ; delete from momey where momey.bookid=:Is_bookid ; select loan.fla

35、g into:Il_a from loan where loan.bookid=:Is_bookid; if Il_a=1 then messageBox(提示信息,图书编号为+string(long(Is_bookid)+的图书已还借成 功) end if sle_6.text= sle_6.setfocus() c.查看图书借阅记录和删除记录 查看图书借阅记录: string Is_title integer Il_b Is_title=trim(sle_2.text) if not sle_2.text= then dw_3.retrieve(Is_title ) else messag

36、eBox(数据不全,请输入书名) return end if select count(*) into:Il_b from loan,bookinfo where loan.bookid=bookinfo.bookid and bookinfo.title=:Is_title; messagebox(提示信息,此书的借阅次数为+string(integer(Il_b)+次!) 删除记录: integer Il_a delete from loan where loan.flag=1; select count(*) into:Il_a from loan where loan.flag=1;

37、if Il_a=0 then messageBox(提示信息,删除成功) end if 6、运行维护、运行维护 1、针对不同的应用要求制定不同的转储计划,一旦发生故障尽快将数据库恢复到某种 一致的状态,并尽可能减少对数据库的破坏; 2、根据实际情况修改数据库原有的安全性、完整性控制; 3、在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的 方法; 4、数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变 坏,降低数据的存取效率,数据库性能下降。这时应按原设计要求重新安排存储位置、回 收垃圾、减少指针链等,提高系统性能。当原有的数据库设计不能满足新的需求

38、,需要重 构造数据库,调整数据库的模式和内模式。 7、用户手册用户手册 说明 借书:当借一本书时将此的在 bookinfo 表中的标记 flag1 置为 1,其他人再借此书时先 判断 flag1 是否为 1,如果为 1 则不可再借此书。并把此书的借阅记录录入到 loan 表中, 此书在 loan 表中的 flag 标记置为 0,表示此书未还,在查看借书记录时查看的是未还书 的记录,要对 flag1 标记进行判断。同时还需要判断证件是否被挂失,所借的书是否有超 期的。 还书:还书时将此书 bookinfo 表中的 flag 标记置为 0(表示已还) ,然后再将 loan 表 中的 flag 标记

39、置为 1。并判断是否超期以及计算超期天数和罚款金额,并将其输入 money 表中,当显示其记录以后将 money 表中的信息删除。 查看借阅信息:在查看借阅信息直接从 loan 表中读出,需要把 bookinfo 表和 loan 表相 连(按书名查阅) ,查看借阅信息主要是为了判断什么书是热门图书。 8、总结总结 这次的课程设计是我进入大学接触的第一个有关于数据库的课程设计,好多东西都不 会。不过大家在确定了选题之后,就开始积极的准备当中,我也开始了图书管理系统的课 程设计。按照书上介绍的数据库设计的步骤,我首先进行需求分析,得到了图书管理员详 细的回答后,我想的是这些细节的东西应该应用到我们

40、具体哪些步骤中。开始时没有头绪 的,思路渐渐有所清晰后,我就进行概念结构设计。在画数据流程图和完成数据字典的时 候,其实遇到很多困难,主要集中在数据字典中,数据项的填写很乱,我们觉得我们完成 的结果中应该存在很多问题。在画 E-R 图时,按自己大脑的过期思维去想,应该是我们所 体现出来的上述 E-R 图,但是预约和借阅,借阅和续借,和还书之间的关系没有体现,这 又是一大漏洞。再以后 SQL 建表时也不确定。总之,我们认为这个系统需要改进的地方还 有很多很多。 通过这次的数据库课程设计,开始对数据库的应用有了初步的了解,知道了怎么通过 编程建立一个具有一定功能的系统。在设计的期间,遇到的问题很多,好多知识根本就不 懂,然后经过查书没上网搜索和问老师和同学,最后终于慢慢的完成了这个课程设计。在 此谢谢老师和同学的帮忙,顺利完成了我大学的第一个课程设计。谢谢大家!谢谢老师! !

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1