




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理与应用教程实验报告数据库分析与设计-图书管理系统- 1 - 一、需求说明要实现一个简化的图书管理系统,在此图书管理系统中只涉及学生信息、借阅信息和管理者信息的管理。 此系统要求能够记住书籍的基本信息、学生的信息和管理者的信息。该系统的业务要求为:一名学生可以在不同的日期多次借阅同一本书。一名学生可以同时借阅多本不同的图书。一本书可以在不同的时间借给不同的学生。一名学生不能在同一天对同一本书借阅多次。一名管理员可以同时管理多本图书。该系统的基本信息包括:学生信息:姓名,学号,学院,专业,年级。图书信息:图书名称,图书编号,出版社名称,出版日期,作者,是否可借。管理员信息:管理员姓名,管
2、理员编号。除上述要求外,该系统还需产生如下报表:学生借阅图书信息表: 学号,图书编号, 图书名称, 借阅日期,应归还日期。图书管理表:管理日期,管理员编号,管理员姓名。二、数据库结构设计2.1 概念结构设计概念结构设计是根据需求分析的结果产生概念结构设计的e-r 模型。由于这个系统比较简单, 因此这里采用自顶向下的设计方法。自顶向下设计的关键是首先要确定系统的核心活动。 所谓核心活动就是系统中的其他活动都要围绕这个活动展开或与此活动密切相关。 确定了核心活动之后, 系统就有了可扩展的余地。对于这个图书管理系统, 其核心活动是图书, 学生与图书之间是通过学生借阅图书发生联系的, 管理员与图书之间
3、是通过管理员管理图书发生联系的。至此,此系统包含的实体有:图书:用于描述课程的基本信息,用图书编号标识。学生:用于描述学生的基本信息,用学号标识。管理员:用于描述管理员的基本信息,用管理员编号标识。由于一名学生可以借阅多本图书, 并且一本书可以在不同时间借给不同的学- 2 - 生。因此,学生与图书之间是多对多的联系。又由于一本图书可以由多名管理员管理,而且一名管理员可以管理多本图书。因此,管理员与图书之间也是多对多的联系。其基本 e-r 模型如图 1 所示:m n m n 根据需求分析的结果,该e-r 模型模型中个实体所包含的属性如下:学生:姓名,学号,学院,专业,年级。图书:图书名称,图书编
4、号,出版社名称,出版日期,作者,是否可借。管理员:管理员姓名,管理员编号。各联系本身应具有的属性为:借阅:学号,图书编号,图书名称,借阅日期,应归还日期。管理:管理日期,管理员编号,管理员姓名。2.2 逻辑结果设计这个 e-r 模型转换出的关系模式如下,其中主码用下划线标识:学生(学号,姓名,学院,专业,年级)图书(图书编号,图书名称,出版社名称,出版日期,作者,是否可借)管理员 (管理员编号,管理员姓名)借阅(学号,图书标号,图书名称,借阅日期,应归还日期),其中图书编号为引用 “图书”关系模式的外码; 学号为引用 “学生”关系模式的外码。管理(管理日期,管理员编号, 管理员姓名),其中管理
5、员编号为引用 “管理员”关系模式的外码。(1)确定各管是模式是否属于第三范式经过分析发现,“学生” 、 “图书” 、 “管理员”、 “借阅”和“管理” 5 个关系模式中,都不存在部分依赖和传递依赖关系,因此都属于第三范式。(2)确定信息的完整性该教学管理系统要产生: 学生借阅图书信息、 图书管理 2 个报表,分别分析如下:学生借阅图书管理管理员- 3 - “学生借阅图书信息表”包括学号、图书编号、图书名称、借阅日期、应归还日期。其中“学号”可由“学生”关系模式得到,“图书编号”、 “图书名称” 、 “借阅日期”、 “应归还日期”可由“借阅”关系模式得到,因此可以满足学生借阅图书信息表的要求。“
6、图书管理表” 包括管理日期、 管理员编号、 管理员姓名。 其中“管理日期”可由“管理”关系模式得到, “管理员编号”, “管理员姓名”可由“管理员”关系模式得到。因此,所有关系模式满足所有报表的信息要求。至此,关系模式设计完毕。下面给出创建这些关系表的sql 语句示例,其中的数据类型可根据实际情况调整,为方便理解,表名、列名均用中文表示。create table 学生表 ( 学号char(10) primary key , 姓名char(10) not null , 学院char(20) not null , 专业char(20) not null , 年级char(8) not null )
7、 create table 图书表 ( 图书编号char(20) primary key , 图书名称char(20) not null , 出版社名称char(20) not null , 出版日期datetime not null , 作者char(10) not null ) create table 管理员表 ( 管理员编号char(10) primary key , 管理员姓名char(10) not null ) create table 借阅表 ( 学号char(10) not null , 姓名char(10) not null , 图书编号char(20) not null
8、, 图书名称char(20) not null , 借阅日期datetime not null , - 4 - 应归还日期datetime not null , primary key ( 学号,图书编号 ), foreign key ( 学号) references 学生表 (学号), foreign key ( 图书编号 ) references 图书表 (图书编号 ) ) create table 管理表 ( 管理日期datetime not null , 管理员编号char(10) not null , 管理员姓名char(10) not null , primary key ( 管理
9、日期 ,管理员编号 ), foreign key ( 管理员编号 ) references 管理员表(管理员编号 ) ) 2.2.2设计外模式(1)学生借阅图书信息表我们将该报表直接用查询语句的形式生成,将动态查询条件作为查询语句中的数据筛选条件。例如,假设要为大三学生生成借阅图书情况的报表,则语句如下:select 学号,姓名,图书名称from 借阅表 where 年级 = 大三(2)图书管理表该表可以查询出在哪一天由哪位管理员借出了哪些图书,因此,直接用查询语句生成。select 图书编号,图书名称,管理日期,管理员编号,管理员姓名from 借阅表 join 管理表 on 借阅表 .借阅日
10、期= 管理表 .管理日期三、 数据库行为设计对于数据库应用系统来说,最常用的功能是安全控制功能,数据的增、删、改、查功能以及生成报表的功能。本系统也应包括这些基本的操作。3.1 安全控件任何数据库应用系统都需要安全控件功能,这个图书管理系统也不例外。 假设将系统的用户分为如下几类:图书馆系统管理人员:具有系统的全部操作权限。- 5 - 教务部门:具有对学生基本信息、图书信息和管理员信息的维护权。学生:具有对图书信息的查询权。在实现时,可将每一类用户定义为一个角色, 这样在授权时只需对角色授权,而无需对每个具体的用户授权。3.2 数据操作功能数据操作功能包括对这些数据的录入、删除、修改功能。具体
11、如下:(1)数据录入包括对这5 张表的录入。只有具有相应权限的用户才能录入相应表中的数据。(2)数据删除包括对这5 张表的删除。只有具有相应权限的用户才能删除相应表中的数据。数据的删除要注意表之间的关联关系。比如在删除“学生表”中的数据之前,应先删除该学生在“借阅表”中的信息,然后再学生表中删除该学生,以保证不违反参照完整性约束。 另外,在实际执行删除操作之前应该提醒用户是否真的要删除数据,以免发生误操作。(3)数据修改当某些数据发生变化或某些数据录入不正确时,应该允许用户对数据库中的数据进行修改,修改数据的操作一般是先根据一定的条件查询出要修改的记录,然后在对其中的某些记录进行修改,修改完成
12、后再回到数据库中。 同数据的录入与删除一样,只有具有相应权限的用户才能修改相应表中的数据。(4)数据查询在数据库应用系统中, 数据查询是最常用的功能。 数据查询应根据用户提出的查询条件进行, 在设计系统时应首先征求用户的查询需求,然后根据这些需求整理出系统应具有的查询功能。 一般允许所有使用数据库的人都具有查询数据的权限。本系统提出的查询要求有:根据学号、学院、专业等信息查询学生的基本信息。根据图书编号查询图书的基本信息。根据管理员编号查询管理员的基本信息。统计各个年级学生借书的总数量。等等。- 6 - 3.3 应用程序实现3.31 语言及 dbms 的选择制作这 5 个表的数据库使用dbms
13、 的是 access,然后用 vb 语言编写程序代码,实现程序的各个功能。其中用到了ado 数据控件和 datagrid 控件。3.32 应用程序的编写(1)学生表vb 代码private sub command1_click() 添加 命令按钮adodcstudent.recordset.addnew 使添加 和删除 按钮成为不可用状态command1.enabled = false command3.enabled = false 使更新 按钮成为可用状态command4.enabled = true 清空文本框中显示的内容text1.text = text2.text = text3.t
14、ext = text4.text = text5.text = end sub private sub command2_click() 退出 命令按钮end end sub private sub command3_click() 删除 命令按钮dim res as integer res = msgbox( 确实要删除此行记录吗?, vbexclamation + vbyesno + vbdefaultbutton2) 提示用户if res = vbyes then 如确实要删除adodcstudent.recordset.delete adodcstudent.recordset.mov
15、enext if adodcstudent.recordset.eof = true then adodcstudent.recordset.movelast end if end if end sub private sub command4_click() 更新 命令按钮 将文本框中的当前值写入结果集中相应字段中- 7 - adodcstudent.recordset.fields( 学号 ) = trim(text1.text) adodcstudent.recordset.fields( 姓名 ) = trim(text2.text) adodcstudent.recordset.fi
16、elds( 学院 ) = trim(text3.text) adodcstudent.recordset.fields( 专业 ) = trim(text4.text) adodcstudent.recordset.fields( 年级 ) = trim(text5.text) 使更新生效adodcstudent.recordset.update 使添加 和删除 按钮成为可用状态command1.enabled = true command3.enabled = true end sub private sub command5_click() 上一条 命令按钮adodcstudent.rec
17、ordset.moveprevious end sub private sub command6_click() 下一条 命令按钮adodcstudent.recordset.movenext end sub (2)图书表vb 代码private sub command2_click() 添加 命令按钮adodcbook.recordset.addnew 使添加 和删除 按钮成为不可用状态command2.enabled = false command3.enabled = false 使更新 和取消 按钮成为可用状态command4.enabled = true command5.enabl
18、ed = true 清空文本框中显示的内容text1.text = text2.text = text3.text = text4.text = text5.text = end sub private sub command3_click() 删除 命令按钮dim res as integer res = msgbox( 确定要删除此行记录?, vbexclamation + vbyesno + vbdefaultbutton2) 提示用户if res = vbyes then 如确实要删除adodcbook.recordset.delete adodcbook.recordset.move
19、next - 8 - if adodcbook.recordset.eof = true then adodcbook.recordset.movelast end if end if end sub private sub command4_click() 更新 命令按钮 将文本框中的当前值写入结果集中相应字段中adodcbook.recordset.fields( 图书编号 ) = trim(text1.text) adodcbook.recordset.fields( 图书名称 ) = trim(text2.text) adodcbook.recordset.fields( 出版社名称
20、) = trim(text3.text) adodcbook.recordset.fields( 出版日期 ) = trim(text4.text) adodcbook.recordset.fields( 作者 ) = trim(text5.text) 使更新生效adodcbook.recordset.update 使添加 和删除 按钮成为可用状态command2.enabled = true command3.enabled = true 使取消 按钮成为不可用状态command5.enabled = false end sub private sub command5_click() co
21、mmand2.enabled = true command3.enabled = true command5.enabled = false end sub private sub command6_click() 上一条 命令按钮adodcbook.recordset.moveprevious end sub private sub command7_click() 下一条 命令按钮adodcbook.recordset.movenext end sub (3)管理员表vb 代码private sub command1_click() 退出 命令按钮end end sub private s
22、ub command2_click() 添加 命令按钮adodcmanager.recordset.addnew 使添加 和删除 按钮成为不可用状态- 9 - command2.enabled = false command3.enabled = false 使更新 按钮成为可用状态command4.enabled = true 清空文本框中现实的内容text1.text = text2.text = end sub private sub command3_click() 删除 命令按钮dim res as integer res = msgbox( 确实要删除此行记录吗?, vbexcla
23、mation + vbyesno + vbdefaultbutton2) 提示用户if res = vbyes then 如确实要删除adodcmanager.recordset.delete adodcmanager.recordset.movenext if adodcmanager.recordset.eof = true then adodcmanager.recordset.movelast end if end if end sub private sub command4_click() 更新 命令按钮 将文本框中的当前值写入结果集中相应字段中adodcmanager.recor
24、dset.fields( 管理员编号 ) = trim(text1.text) adodcmanager.recordset.fields( 管理员姓名 ) = trim(text2.text) 使更新生效adodcmanager.recordset.update 使添加 和删除 按钮成为可用状态command2.enabled = true command3.enabled = true end sub private sub command5_click() 上一条 命令按钮adodcmanager.recordset.moveprevious end sub private sub co
25、mmand6_click() 下一条 命令按钮adodcmanager.recordset.movenext end sub (4)借阅表vb 代码private sub command1_click() 退出 命令按钮- 10 - end end sub private sub command2_click() 上一条 命令按钮adodcborrown.recordset.moveprevious end sub private sub command3_click() 下一条 命令按钮adodcborrown.recordset.movenext end sub private sub c
26、ommand4_click() 添加 命令按钮adodcborrown.recordset.addnew 使添加 和删除 按钮成为不可用状态command4.enabled = false command5.enabled = false 使更新 按钮成为可用状态command6.enabled = true 清空文本框中现实的内容text1.text = text2.text = text3.text = text4.text = text5.text = text6.text = end sub private sub command5_click() 删除 命令按钮dim res as
27、integer res = msgbox( 确实要删除此行记录吗?, vbexclamation + vbyesno + vbdefaultbutton2) 提示用户if res = vbyes then 如确实要删除adodcborrown.recordset.delete adodcborrown.recordset.movenext if adodcborrown.recordset.eof = true then adodcborrown.recordset.movelast end if end if end sub private sub command6_click() 更新 命
28、令按钮 将文本框中的当前值写入结果集中相应字段中adodcborrown.recordset.fields( 学号 ) = trim(text1.text) adodcborrown.recordset.fields( 姓名 ) = trim(text2.text) - 11 - adodcborrown.recordset.fields( 图书编号 ) = trim(text3.text) adodcborrown.recordset.fields( 图书名称 ) = trim(text4.text) adodcborrown.recordset.fields( 借阅日期 ) = trim(
29、text5.text) adodcborrown.recordset.fields( 应归还日期 ) = trim(text6.text) 使更新生效adodcborrown.recordset.update 使添加 和删除 按钮成为可用状态command4.enabled = true command5.enabled = true end sub (5)管理表vb 代码private sub command1_click() 退出 命令按钮end end sub private sub command2_click() 添加 命令按钮adodcmanagement.recordset.ad
30、dnew 使添加 和删除 按钮成为不可用状态command2.enabled = false command3.enabled = false 使更新 按钮成为可用状态command4.enabled = true 清空文本框中现实的内容text1.text = text2.text = text3.text = end sub private sub command3_click() 删除 命令按钮dim res as integer res = msgbox( 确实要删除此行记录吗?, vbexclamation + vbyesno + vbdefaultbutton2) 提示用户if r
31、es = vbyes then 如确实要删除adodcmanagement.recordset.delete adodcmanagement.recordset.movenext if adodcmanagement.recordset.eof = true then adodcmanagement.recordset.movelast end if end if end sub private sub command4_click() 更新 命令按钮 将文本框中的当前值写入结果集中相应字段中- 12 - adodcmanagement.recordset.fields( 管理日期 ) = t
32、rim(text1.text) adodcmanagement.recordset.fields( 管理员编号 ) = trim(text2.text) adodcmanagement.recordset.fields( 管理员姓名 ) = trim(text3.text) 使更新生效adodcmanagement.recordset.update 使添加 和删除 按钮成为可用状态command2.enabled = true command3.enabled = true end sub private sub command5_click() 上一条 命令按钮adodcmanagement
33、.recordset.moveprevious end sub private sub command6_click() 下一条 命令按钮adodcmanagement.recordset.movenext end sub 3.33 应用程序的使用说明为数据库中 5 个表设计的 vb 工程中,其基本类型相似, 由于涉及到参照完整性约束,因此这里将重点说明“学生表”和“借阅表”的使用说明,“图书表”和“管理员表”参照“学生表” , “管理表”参照“借阅表” 。(1) 学生表使用说明启动 vb 程序,打开“学生表”的工程文件,并运行该程序。- 13 - 1) 单击“上一条”“下一条”按钮,移动指针将上下移动到相应的条目。2) 单击“添加”按钮,窗体上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在“学生表”的最后一行条目中。- 14 - 3) 单击“更新”按钮,数据将完整地添加到“学生表”中。4) 要删除更新的数据时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年住宅租赁协议取代合同
- 2025年养殖专业合作社鱼类购销合同
- 2025年古典园林建造合同样本
- 建筑业企业劳动合同范本8篇
- 2025年分销合作合同模板
- 2025年专业清洁员雇佣合同样本
- 2025年二手推土机销售合同模板
- 2025年企业电力互相供应合同
- 2025年专利风险评估合同
- 商业门店租赁合同样本
- GB/T 22919.2-2008水产配合饲料第2部分:军曹鱼配合饲料
- 数字化转型中数据底座湖仓一体化
- 典范英语8-1-刺猬女孩艾蜜
- 《教育管理学》课件
- 水平井套内不动管柱滑套多段压裂工艺技术全解课件
- 净水设备技术参数要求
- 脑血管造影护理课件
- 称呼礼仪精品课件
- 课题申报讲座课件
- 系统科学与系统工程的理论基础
- 思想道德与法治课件:第四章 第二节 社会主义核心价值观的显著特征
评论
0/150
提交评论