《图书管理系统数据库.pdf》由会员分享,可在线阅读,更多相关《图书管理系统数据库.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、- 数据库原理与应用教程数据库原理与应用教程 实验报告实验报告数据库分析与设计数据库分析与设计-图书管理系统一、需求说明一、需求说明要实现一个简化的图书管理系统, 在此图书管理系统中只涉及学生信息、借阅信息和管理者信息的管理。此系统要求能够记住书籍的根本信息、学生的信息和管理者的信息。该系统的业务要求为: 一名学生可以在不同的日期屡次借阅同一本书。 一名学生可以同时借阅多本不同的图书。 一本书可以在不同的时间借给不同的学生。 一名学生不能在同一天对同一本书借阅屡次。 一名管理员可以同时管理多本图书。该系统的根本信息包括: 学生信息: ,*,学院,专业,年级。 图书信息:图书名称,图书编号,出版
2、社名称,出版日期,作者,是否可借。 管理员信息:管理员姓名,管理员编号。除上述要求外,该系统还需产生如下报表: 学生借阅图书信息表:*,图书编号,图书名称,借阅日期,应归还日期。 图书管理表:管理日期,管理员编号,管理员姓名。二、数据库构造设计二、数据库构造设计2.12.1 概念构造设计概念构造设计概念构造设计是根据需求分析的结果产生概念构造设计的 E-R 模型。 由于这-专业资料-个系统比拟简单,因此这里采用自顶向下的设计方法。自顶向下设计的关键是首先要确定系统的核心活动。 所谓核心活动就是系统中的其他活动都要围绕这个活动展开或与此活动密切相关。确定了核心活动之后,系统就有了可扩展的余地。对
3、于这个图书管理系统,其核心活动是图书,学生与图书之间是通过学生借阅图书发生联系的,管理员与图书之间是通过管理员管理图书发生联系的。至此,此系统包含的实体有: 图书:用于描述课程的根本信息,用图书编号标识。 学生:用于描述学生的根本信息,用*标识。 管理员:用于描述管理员的根本信息,用管理员编号标识。由于一名学生可以借阅多本图书, 并且一本书可以在不同时间借给不同的学生。因此,学生与图书之间是多对多的联系。又由于一本图书可以由多名管理员管理,而且一名管理员可以管理多本图书。因此,管理员与图书之间也是多对多的联系。其根本 E-R 模型如图 1 所示:mnmn管理管理借阅借阅图书图书学生学生根据需求
4、分析的结果,该 E-R 模型模型中个实体所包含的属性如下: 学生: ,*,学院,专业,年级。管理员管理员 图书:图书名称,图书编号,出版社名称,出版日期,作者,是否可借。 管理员:管理员姓名,管理员编号。各联系本身应具有的属性为: 借阅:*,图书编号,图书名称,借阅日期,应归还日期。 管理:管理日期,管理员编号,管理员姓名。这个 E-R 模型转换出的关系模式如下,其中主码用下划线标识:.z.- 学生*, ,学院,专业,年级 图书图书编号,图书名称,出版社名称,出版日期,作者,是否可借 管理员 管理员编号,管理员姓名 借阅*,图书标号,图书名称,借阅日期,应归还日期 ,其中图书编号为引用图书关系
5、模式的外码;*为引用学生关系模式的外码。 管理管理日期,管理员编号,管理员姓名 ,其中管理员编号为引用管理员关系模式的外码。(1)确定各管是模式是否属于第三范式经过分析发现,学生、图书、管理员、借阅和管理5 个关系模式中,都不存在局部依赖和传递依赖关系,因此都属于第三范式。(2)确定信息的完整性该教学管理系统要产生:学生借阅图书信息、图书管理2 个报表,分别分析如下: 学生借阅图书信息表包括*、图书编号、图书名称、借阅日期、应归还日期。其中*可由学生关系模式得到,图书编号、图书名称、借阅日期、应归还日期可由借阅关系模式得到,因此可以满足学生借阅图书信息表的要求。 图书管理表包括管理日期、管理员
6、编号、管理员姓名。其中管理日期可由管理关系模式得到,管理员编号,管理员姓名可由管理员关系模式得到。因此,所有关系模式满足所有报表的信息要求。至此,关系模式设计完毕。.z.-下面给出创立这些关系表的 SQL 语句例如,其中的数据类型可根据实际情况调整,为方便理解,表名、列名均用中文表示。CREATE TABLE 学生表(*char(10)PRIMARY KEY,char(10)NOT NULL ,学院char(20)NOT NULL ,专业char(20)NOT NULL ,年级char(8)NOT NULL)CREATE TABLE 图书表(图书编号char(20)PRIMARY KEY,图书
7、名称char(20)NOT NULL ,出版社名称 char(20)NOT NULL ,出版日期datetimeNOT NULL ,作者char(10)NOT NULL)CREATE TABLE 管理员表(管理员编号char(10)PRIMARY KEY,管理员姓名char(10)NOT NULL)CREATE TABLE 借阅表(*char(10)NOT NULL ,.z.-char(10)NOT NULL ,图书编号char(20)NOT NULL ,图书名称char(20)NOT NULL ,借阅日期datetimeNOT NULL ,应归还日期 datetimeNOT NULL ,PR
8、IMARY KEY (*,图书编号),FOREIGN KEY (*) REFERENCES 学生表 (*),FOREIGN KEY (图书编号) REFERENCES 图书表 (图书编号)CREATE TABLE 管理表(管理日期datetimeNOT NULL ,管理员编号 char(10)NOT NULL ,管理员姓名 char(10)NOT NULL ,PRIMARY KEY (管理日期,管理员编号),FOREIGN KEY (管理员编号) REFERENCES 管理员表 (管理员编号)(1)学生借阅图书信息表我们将该报表直接用查询语句的形式生成, 将动态查询条件作为查询语句中的数据筛选
9、条件。例如,假设要为大三学生生成借阅图书情况的报表,则语句如下:SELECT *, ,图书名称FROM 借阅表 WHERE 年级 = 大三.z.-(2)图书管理表该表可以查询出在哪一天由哪位管理员借出了哪些图书, 因此,直接用查询语句生成。SELECT 图书编号,图书名称,管理日期,管理员编号,管理员姓名三、三、 数据库行为设计数据库行为设计对于数据库应用系统来说,最常用的功能是平安控制功能,数据的增、删、改、查功能以及生成报表的功能。本系统也应包括这些根本的操作。3.13.1 平安控件平安控件任何数据库应用系统都需要平安控件功能, 这个图书管理系统也不例外。假设将系统的用户分为如下几类: 图
10、书馆系统管理人员:具有系统的全部操作权限。 教务部门:具有对学生根本信息、图书信息和管理员信息的维护权。 学生:具有对图书信息的查询权。在实现时, 可将每一类用户定义为一个角色, 这样在授权时只需对角色授权,而无需对每个具体的用户授权。3.23.2 数据操作功能数据操作功能数据操作功能包括对这些数据的录入、删除、修改功能。具体如下:(1)数据录入包括对这 5 张表的录入。只有具有相应权限的用户才能录入相应表中的数据。(2)数据删除包括对这 5 张表的删除。只有具有相应权限的用户才能删除相应表中的数.z.-据。数据的删除要注意表之间的关联关系。比方在删除学生表中的数据之前,应先删除该学生在借阅表
11、中的信息,然后再学生表中删除该学生,以保证不违反参照完整性约束。另外, 在实际执行删除操作之前应该提醒用户是否真的要删除数据,以免发生误操作。(3)数据修改当*些数据发生变化或*些数据录入不正确时, 应该允许用户对数据库中的数据进展修改, 修改数据的操作一般是先根据一定的条件查询出要修改的记录,然后在对其中的*些记录进展修改,修改完成后再回到数据库中。同数据的录入与删除一样,只有具有相应权限的用户才能修改相应表中的数据。(4)数据查询在数据库应用系统中, 数据查询是最常用的功能。数据查询应根据用户提出的查询条件进展,在设计系统时应首先征求用户的查询需求,然后根据这些需求整理出系统应具有的查询功
12、能。 一般允许所有使用数据库的人都具有查询数据的权限。本系统提出的查询要求有: 根据*、学院、专业等信息查询学生的根本信息。 根据图书编号查询图书的根本信息。 根据管理员编号查询管理员的根本信息。 统计各个年级学生借书的总数量。等等。制作这 5 个表的数据库使用 DBMS 的是 ACCESS, 然后用 VB 语言编写程序代码,实现程序的各个功能。其中用到了 ADO 数据控件和 DataGrid 控件。1 1学生表学生表 VBVB 代码代码Private Sub Command1_Click()添加命令按钮使添加和删除按钮成为不可用状态Command1.Enabled = False.z.-Co
13、mmand3.Enabled = False使更新按钮成为可用状态Command4.Enabled = True清空文本框中显示的内容Te*t1.Te*t = Te*t2.Te*t = Te*t3.Te*t = Te*t4.Te*t = Te*t5.Te*t = End SubPrivate Sub Command2_Click() 退出命令按钮EndEnd SubPrivate Sub Command3_Click() 删除命令按钮Dim res As Integerres = MsgBo*(确实要删除此行记录吗?, vbE*clamation + vbYesNo + vbDefaultBu
14、tton2)提示用户If res = vbYes Then 如确实要删除If AdodcStudent.Recordset.EOF = True ThenEnd IfEnd IfEnd SubPrivate Sub Command4_Click() 更新命令按钮 将文本框中的当前值写入结果集中相应字段中AdodcStudent.Recordset.Fields(*) = Trim(Te*t1.Te*t)AdodcStudent.Recordset.Fields() = Trim(Te*t2.Te*t)AdodcStudent.Recordset.Fields(学院) = Trim(Te*t3.
15、Te*t)AdodcStudent.Recordset.Fields(专业) = Trim(Te*t4.Te*t)AdodcStudent.Recordset.Fields(年级) = Trim(Te*t5.Te*t) 使更新生效使添加和删除按钮成为可用状态Command1.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command5_Click() 上一条命令按钮End SubPrivate Sub Command6_Click() 下一条命令按钮End Sub2 2图书表图书表 VBVB 代码代码Private Sub C
16、ommand2_Click()添加命令按钮使添加和删除按钮成为不可用状态Command2.Enabled = FalseCommand3.Enabled = False使更新和取消按钮成为可用状态.z.-Command4.Enabled = TrueCommand5.Enabled = True清空文本框中显示的内容Te*t1.Te*t = Te*t2.Te*t = Te*t3.Te*t = Te*t4.Te*t = Te*t5.Te*t = End SubPrivate Sub Command3_Click() 删除命令按钮Dim res As Integerres = MsgBo*(确定要
17、删除此行记录, vbE*clamation + vbYesNo + vbDefaultButton2)用户If res = vbYes Then 如确实要删除If AdodcBook.Recordset.EOF = True ThenEnd IfEnd IfEnd SubPrivate Sub Command4_Click() 更新命令按钮 将文本框中的当前值写入结果集中相应字段中AdodcBook.Recordset.Fields(图书编号) = Trim(Te*t1.Te*t)AdodcBook.Recordset.Fields(图书名称) = Trim(Te*t2.Te*t)AdodcB
18、ook.Recordset.Fields(出版社名称) = Trim(Te*t3.Te*t)AdodcBook.Recordset.Fields(出版日期) = Trim(Te*t4.Te*t)AdodcBook.Recordset.Fields(作者) = Trim(Te*t5.Te*t) 使更新生效使添加和删除按钮成为可用状态Command2.Enabled = TrueCommand3.Enabled = True使取消按钮成为不可用状态Command5.Enabled = FalseEnd SubPrivate Sub Command5_Click()Command2.Enabled
19、= TrueCommand3.Enabled = TrueCommand5.Enabled = FalseEnd SubPrivate Sub Command6_Click() 上一条命令按钮End SubPrivate Sub Command7_Click() 下一条命令按钮End Sub3 3管理员表管理员表 VBVB 代码代码Private Sub Command1_Click() 退出命令按钮End. 提示z.-End SubPrivate Sub Command2_Click() 添加命令按钮使添加和删除按钮成为不可用状态Command2.Enabled = FalseCommand
20、3.Enabled = False使更新按钮成为可用状态Command4.Enabled = True清空文本框中现实的内容Te*t1.Te*t = Te*t2.Te*t = End SubPrivate Sub Command3_Click() 删除命令按钮Dim res As Integerres = MsgBo*(确实要删除此行记录吗?, vbE*clamation + vbYesNo + vbDefaultButton2)提示用户If res = vbYes Then 如确实要删除If AdodcManager.Recordset.EOF = True ThenEnd IfEnd If
21、End SubPrivate Sub Command4_Click() 更新命令按钮 将文本框中的当前值写入结果集中相应字段中AdodcManager.Recordset.Fields(管理员编号) = Trim(Te*t1.Te*t)AdodcManager.Recordset.Fields(管理员姓名) = Trim(Te*t2.Te*t) 使更新生效使添加和删除按钮成为可用状态Command2.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command5_Click() 上一条命令按钮End SubPrivate Sub
22、 Command6_Click() 下一条命令按钮End Sub4 4借阅表借阅表 VBVB 代码代码Private Sub Command1_Click() 退出命令按钮EndEnd SubPrivate Sub Command2_Click() 上一条命令按钮End SubPrivate Sub Command3_Click() 下一条命令按钮End SubPrivate Sub Command4_Click() 添加命令按钮使添加和删除按钮成为不可用状态Command4.Enabled = False.z.-Command5.Enabled = False使更新按钮成为可用状态Comma
23、nd6.Enabled = True清空文本框中现实的内容Te*t1.Te*t = Te*t2.Te*t = Te*t3.Te*t = Te*t4.Te*t = Te*t5.Te*t = Te*t6.Te*t = End SubPrivate Sub Command5_Click() 删除命令按钮Dim res As Integerres = MsgBo*(确实要删除此行记录吗?, vbE*clamation + vbYesNo + vbDefaultButton2) 提示用户If res = vbYes Then 如确实要删除If AdodcBorrown.Recordset.EOF = T
24、rue ThenEnd IfEnd IfEnd SubPrivate Sub Command6_Click() 更新命令按钮 将文本框中的当前值写入结果集中相应字段中AdodcBorrown.Recordset.Fields(*) = Trim(Te*t1.Te*t)AdodcBorrown.Recordset.Fields() = Trim(Te*t2.Te*t)AdodcBorrown.Recordset.Fields(图书编号) = Trim(Te*t3.Te*t)AdodcBorrown.Recordset.Fields(图书名称) = Trim(Te*t4.Te*t)AdodcBor
25、rown.Recordset.Fields(借阅日期) = Trim(Te*t5.Te*t)AdodcBorrown.Recordset.Fields(应归还日期) = Trim(Te*t6.Te*t) 使更新生效使添加和删除按钮成为可用状态Command4.Enabled = TrueCommand5.Enabled = TrueEnd Sub5 5管理表管理表 VBVB 代码代码Private Sub Command1_Click() 退出命令按钮EndEnd SubPrivate Sub Command2_Click() 添加命令按钮使添加和删除按钮成为不可用状态Command2.Ena
26、bled = FalseCommand3.Enabled = False使更新按钮成为可用状态Command4.Enabled = True清空文本框中现实的内容.z.-Te*t1.Te*t = Te*t2.Te*t = Te*t3.Te*t = End SubPrivate Sub Command3_Click() 删除命令按钮Dim res As Integerres = MsgBo*(确实要删除此行记录吗?, vbE*clamation + vbYesNo + vbDefaultButton2) 提示用户If res = vbYes Then 如确实要删除If AdodcManageme
27、nt.Recordset.EOF = True ThenEnd IfEnd IfEnd SubPrivate Sub Command4_Click() 更新命令按钮 将文本框中的当前值写入结果集中相应字段中AdodcManagement.Recordset.Fields(管理日期) = Trim(Te*t1.Te*t)AdodcManagement.Recordset.Fields(管理员编号) = Trim(Te*t2.Te*t)AdodcManagement.Recordset.Fields(管理员姓名) = Trim(Te*t3.Te*t) 使更新生效使添加和删除按钮成为可用状态Comm
28、and2.Enabled = TrueCommand3.Enabled = TrueEnd SubPrivate Sub Command5_Click() 上一条命令按钮End SubPrivate Sub Command6_Click() 下一条命令按钮End Sub为数据库中 5 个表设计的 VB 工程中,其根本类型相似,由于涉及到参照完整性约束,因此这里将重点说明学生表和借阅表的使用说明,图书表和管理员表参照学生表,管理表参照借阅表。(1) 学生表使用说明启动 VB 程序,翻开学生表的工程文件,并运行该程序。1)单击上一条下一条按钮,移动指针将上下移动到相应的条目。2)单击添加按钮,窗体
29、上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在学生表的最后一行条目中。3)单击更新按钮,数据将完整地添加到学生表中。.z.-4)要删除更新的数据时,先将移动指针指向要删除的条目,然后单击 删除按钮,新添加的数据将从学生表中删除。5单击退出按钮,完毕程序代码,退出运行界面。(2) 图书表使用说明启动 VB 程序,翻开图书表的工程文件,并运行该程序。1单击上一条下一条按钮,移动指针将上下移动到相应的条目。2单击添加按钮,窗体上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在图书表的最后一行条目中。3单击更新按钮,数据将完整地添加到图书表中。4要删除更新的数据时,先将移动
30、指针指向要删除的条目,然后单击 删除按钮,新添加的数据将从图书表中删除。5单击退出按钮,完毕程序代码,退出运行界面。3管理员表使用说明启动 VB 程序,翻开管理员表的工程文件,并运行该程序。1单击上一条下一条按钮,移动指针将上下移动到相应的条目。2单击添加按钮,窗体上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在管理员表的最后一行条目中。3单击更新按钮,数据将完整地添加到管理员表中。4要删除更新的数据时,先将移动指针指向要删除的条目,然后单击 删除按钮,新添加的数据将从管理员表中删除。5单击退出按钮,完毕程序代码,退出运行界面。4借阅表使用说明.z.-启动 VB 程序,翻开借阅表
31、的工程文件,并运行该程序。1)单击上一条下一条按钮,移动指针将上下移动到相应的条目。2)单击添加按钮,窗体上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在借阅表的最后一行条目中。3)注意,根据参照完整性约束,借阅表与图书表相连接,当图书表中没有添加并更新新的数据时,单击更新按钮后,添加的数据将无法更新到借阅表中。4无法更新数据,也就不存在删除更新条目的操作。5单击退出按钮,完毕程序代码,退出运行界面。5管理表使用说明启动 VB 程序,翻开管理表的工程文件,并运行该程序。1单击上一条下一条按钮,移动指针将上下移动到相应的条目。2单击添加按钮,窗体上的文本框控件将清空,可以在文本框中输入数据,数据将同时显示在管理表的最后一行条目中。3 注意, 根据参照完整性约束, 管理表与管理员表相连接, 当管理员表中没有添加并更新新的数据时,单击更新按钮后,添加的数据将无法更新到管理表中。4无法更新数据,也就不存在删除更新条目的操作。5单击退出按钮,完毕程序代码,退出运行界面。.z.