图书管理系统数据库.docx
- 文档编号:12795551
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:25
- 大小:331.83KB
图书管理系统数据库.docx
《图书管理系统数据库.docx》由会员分享,可在线阅读,更多相关《图书管理系统数据库.docx(25页珍藏版)》请在冰豆网上搜索。
图书管理系统数据库
《数据库原理与应用教程》实验报告
数据库分析与设计
……图书管理系统
一、需求说明
要实现一个简化的图书管理系统,在此图书管理系统中只涉及学生信息、借阅信息和管理者信息的管理。
此系统要求能够记住书籍的基本信息、学生的信息和管理者的信息。
该系统的业务要求为:
♦一名学生可以在不同的日期多次借阅同一本书。
♦一名学生可以同时借阅多本不同的图书。
♦一本书可以在不同的时间借给不同的学生。
♦一名学生不能在同一天对同一本书借阅多次。
♦一名管理员可以同时管理多本图书。
该系统的基本信息包括:
♦学生信息:
姓名,学号,学院,专业,年级。
♦图书信息:
图书名称,图书编号,出版社名称,出版日期,作者,是否可借。
♦管理员信息:
管理员姓名,管理员编号。
除上述要求外,该系统还需产生如下报表:
♦学生借阅图书信息表:
学号,图书编号,图书名称,借阅日期,应归还日期。
♦图书管理表:
管理日期,管理员编号,管理员姓名。
二、数据库结构设计
2.1概念结构设计
概念结构设讣是根据需求分析的结果产生概念结构设讣的E-R模型。
山于这个系统比较简单,因此这里采用自顶向下的设计方法。
自顶向下设计的关键是首先要确定系统的核心活动。
所谓核心活动就是系统中的其他活动都要围绕这个活动展开或与此活动密切相关。
确定了核心活动之后,系统就有了可扩展的余地。
对于这个图书管理系统,其核心活动是图书,学生与图书之间是通过学生借阅图书发生联系的,管理员与图书之间是通过管理员管理图书发生联系的。
至此,此系统包含的实体有:
♦图书:
用于描述课程的基本信息,用图书编号标识。
♦学生:
用于描述学生的基本信息,用学号标识。
♦管理员:
用于描述管理员的基本信息,用管理员编号标识。
由于一名学生可以借阅多本图书,并且一本书可以在不同时间借给不同的学生。
因此,学生与图书之间是多对多的联系。
乂由于一本图书可以由多名管理员管理,而且一名管理员可以管理多本图书。
因此,管理员与图书之间也是多对多的联系。
其基本E-R模型如图1所示:
根据需求分析的结果,该E-R模型模型中个实体所包含的属性如下:
♦学生:
姓名,学号,学院,专业,年级。
♦图书:
图书名称,图书编号,出版社名称,出版日期,作者,是否可借。
♦管理员:
管理员姓名,管理员编号。
各联系本身应具有的属性为:
♦借阅:
学号,图书编号,图书名称,借阅日期,应归还日期。
♦管理:
管理日期,管理员编号,管理员姓名。
2.2逻辑结果设计
这个E-R模型转换出的关系模式如下,其中主码用下划线标识:
♦学生(学号,姓名,学院,专业,年级)
♦图书(图书编号,图书名称,出版社名称,出版日期,作者,是否可借)
♦管理员(管理员编号,管理员姓名)
♦借阅(学号,图书标号,图书名称,借阅日期,应归还日期),其中图书
编号为引用''图书”关系模式的外码;学号为引用''学生”关系模式的外码。
♦管理(管理日期,管理员编号,管理员姓名),其中管理员编号为引用“管理员”关系模式的外码。
(1)确定各管是模式是否属于第三范式
经过分析发现,“学生”、“图书”、“管理员”、“借阅”和“管理”5个关系模式中,都不存在部分依赖和传递依赖关系,因此都属于第三范式。
(2)确定信息的完整性
该教学管理系统要产生:
学生借阅图书信息、图书管理2个报表,分别分析如下:
♦“学生借阅图书信息表”包括学号、图书编号、图书名称、借阅日期、应归还日期。
其中“学号”可由“学生”关系模式得到,“图书编号”、“图书名称”、“借阅日期”、“应归还日期”可由“借阅”关系模式得到,因此可以满足学生借阅图书信息表的要求。
♦“图书管理表”包括管理日期、管理员编号、管理员姓名。
其中“管理日期”可由"管理”关系模式得到,“管理员编号”,"管理员姓名”可由'‘管理员”关系模式得到。
因此,所有关系模式满足所有报表的信息要求。
至此,关系模式设计完毕。
下面给出创建这些关系表的SQL语句示例,其中的数据类型可根据实际情况调整,为方便理解,表名、列名均用中文表示。
CREATETABLE学生表(
号名院业级学姓学专年
Char(IO)PRIMARYKEY,
Char(IO)NOTNULL,
char(20)NOTNULL,
char(20)NOTNULL,
char(8)NOTNULL
)
CREATETABLE图书表(
图书编号
char(20)
PRIMARYKEY,
图书名称
char(20)
NOTNULL,
出版社名称
char(20)
NOTNULL,
岀版日期
datetime
NOTNULL,
作者)
Char(IO)
NOTNULL
CREATETABLE管理员表(
管理员编号Char(IO)PRIMARYKEY,管理员姓名Char(IO)NOTNULL
)
CREATETABLE借阅表(
学号
Char(IO)
NOTNULL,
姓名
Char(IO)
NOTNULL,
图书编号
char(20)
NOTNULL,
图书名称
char(20)
NOTNULL,
借阅日期
datetime
NOTNULL,
应归还日期datetimeNOTNULL,
PRIMARYKEY(学号,图书编号),
FOREIGNKEY(学号)REFERENCES学生表(学号),
FOREIGNKEY(图书编号)REFERENCES图胡表(图书编号)
)
CREATETABLE管理表(
管理日期datetimeNOTNULL,
管理员编号Char(IO)NOTNULL,
管理员姓名Char(IO)NOTNULL,
PRIMARYKEY(管理日期,管理员编号),
FOREIGNKEY(管理员编号)REFERENCES管理员表(管理员编号)
)
2.2.2设计外模式
(1)学生借阅图书信息表
我们将该报表直接用查询语句的形式生成,将动态查询条件作为查询语句中
的数据筛选条件。
例如,假设要为大三学生生成借阅图书情况的报表,则语句如下:
SELECT学号,姓名,图书名称
FROM借阅表WHERE年级=C大三,
(2)图书管理表
该表可以查询出在哪一天由哪位管理员借出了哪些图书,因此,直接用查询
语句生成。
SELECT图书编号,图书名称,管理日期,管理员编号,管理员姓名
FROM借阅表JOIN管理表ON借阅表.借阅日期=管理表.管理日期
三、数据库行为设计
对于数据库应用系统来说,最常用的功能是安全控制功能,数据的增、删、
改、查功能以及生成报表的功能。
本系统也应包括这些基本的操作。
3.1安全控件
任何数据库应用系统都需要安全控件功能,这个图书管理系统也不例外。
假
设将系统的用户分为如下儿类:
♦图书馆系统管理人员:
具有系统的全部操作权限。
♦教务部门:
具有对学生基本信息、图书信息和管理员信息的维护权。
♦学生:
具有对图书信息的查询权。
在实现时,可将每一类用户定义为一个角色,这样在授权时只需对角色授权,而无需对每个具体的用户授权。
3.2数据操作功能
数据操作功能包括对这些数据的录入、删除、修改功能。
具体如下:
(1)数据录入
包括对这5张表的录入。
只有具有相应权限的用户才能录入相应表中的数据。
(2)数据删除
包括对这5张表的删除。
只有具有相应权限的用户才能删除相应表中的数据。
数据的删除要注意表之间的关联关系。
比如在删除"学生表”中的数据之前,应先删除该学生在"借阅表”中的信息,然后再学生表中删除该学生,以保证不违反参照完整性约束。
另外,在实际执行删除操作之前应该提醒用户是否真的要删除数据,以免发生误操作。
(3)数据修改
当某些数据发生变化或某些数据录入不正确时,应该允许用户对数据库中的数据进行修改,修改数据的操作一般是先根据一定的条件查询出要修改的记录,然后在对其中的某些记录进行修改,修改完成后再回到数据库中。
同数据的录入与删除一样,只有具有相应权限的用户才能修改相应表中的数据。
(4)数据查询
在数据库应用系统中,数据查询是最常用的功能。
数据查询应根据用户提出的查询条件进行,在设计系统时应首先征求用户的查询需求,然后根据这些需求整理出系统应具有的查询功能。
一般允许所有使用数据库的人都具有查询数据的权限。
本系统提出的查询要求有:
♦根据学号、学院、专业等信息查询学生的基本信息。
♦根据图书编号查询图书的基本信息。
♦根据管理员编号查询管理员的基本信息。
♦统计各个年级学生借书的总数量。
等等。
3.3应用程序实现
3.31语言及DBMS的选择
制作这5个表的数据库使用DBMS的是ACCESS,然后用VB语言编写程序代码,实现程序的各个功能。
其中用到了ADo数据控件和DataGrid控件。
3.32应用程丿了的编写
(1)学生表VB代码
PriVateSUbCOmmandI-CIiCkO1”添加”命令按钮
AdodcStudent-Recordset-AddNew
■使"添加"和”删除"按钮成为不可用状态
COmmandI.Enabled=FalSe
COmmand3.Enabled=FalSe
使"更新"按钮成为可用状态
COmmand4.Enabled=TrUC
淸空文本框中显示的内容
TextLText=,m,
Text2.Text=mι
Text3.Text=mι
Text4.Text=m,
Text5.Text=m'
EndSUb
PriVateSUbCOmmand2_CliCkO'"退出"命令按钮
End
EndSUb
PriVateSUbCOmmand3-Click(),■'删除”命令按钮
DinlresASInteger
res=MSgBOX(H确实要删除此行记录吗?
”,VbEXCIamatiOn+VbYeSNO+VbDefaUItBUttOn2),提示用户
Ifres=VbYeSThen,如确实要删除
AdOdCStUdent.Recordset-DcIete
AdOdCStUdent.Recordset-MoveNcxt
IfAdOdCStUdent.Recordset.EOF=TnlCThen
AdodCStUdent.Recordset-MoveLast
EndIf
EndIf
EndSUb
PriVateSUbCOmnland4_CIiCko,”更新"命令按钮
■将文本框中的当前值写入结果集中相应字段中
≡4rz-20-
AdOdCStUdent.Recordset.Fields(π学号,l)=Trim(TeXtl.Text)
AdOdCStUdent.Recordset.Fields(u姓名")=Trim(TeXt2.Text)
AdOdCStUdent.Recordset.Fields(u学院,,)=Trim(TeXt3.Text)
AdOdCSlUdCm.Rccordsct.Fields(”专业”)=Trim(TeXt4.Text)
AdodCStUdent.Recordset.Fields(υ年级,,)=Trim(TeXt5.Text)
'使更新生效
AdOdCStUdent.Recordset-Update
'使"添加"和”删除“按钮成为可用状态
COmmandLEnabled=TrUC
COmmand3.Enabled=TrUC
EndSUb
PriVateSUbCOmmand5-Click(),”上一条”命令按钮
AdOdCStUdent.Recordset-MovePrevious
EndSUb
PriVateSUbCOmmand6_CIiCkO,"下一条"命令按钮
AdodCStUdent.Recordset-MoveNext
EndSUb
(2)图书表VB代码
PriVateSUbCOmnland2_CIiCko,”添加"命令按钮
AdOdCBOOk.Recordset-AddNew
■使”添加"和”删除"按钮成为不可用状态
COmmand2.Enabled=FalSe
COmmand3.Enabled=FalSe
使"更新"和"取消"按钮成为可用状态
COmmand4.Enabled=TrllC
COmmand5.Enabled=TrUe
'淸空文本框中显示的内容
TextLText=,m,
Text2.Text=m'
Text3.Text=m'
Text4.Text=mι
Text5.Text=mι
EndSub
PriVateSUbCOmmand3_CliCkOE删除'命令按钮
DimresASInteger
res=MSgBOX(,确定要删除此行记录7,∖VbEXClamatiOn+VbYeSNO+VbDefaUItBUUOn2)1提示用户
Ifres=VbYeSThen,如确实要删除
AdOdCBOOk.RecordseteDelete
AdodCBOOk.RecordsetAloveNext
IfAdOdCBOOk.Recordset-EOF=TrUeThen
AdOdCBOOk.Recordset-MoveLast
EndIf
EndIf
EndSUb
PriVateSUbCOmmand4_CIiCko'"更新"命令按钮
■将文本框中的当前值写入结果集中相应字段中
AdOdCBOOk.Recordset.Fields(π图书编号J=TriIn(TeXtl.Text)AdOdCBOOk.Recordset.Fields(π图书名称J=TriIn(TeXt2.Text)AdOdCBOOk.Recordset-FieldS(H出版社名称”)=Trim(TeXt3.Text)Ad(XiCBOOk.Recordset.Fields(π出版日MoH)=Triln(TeXt4.Text)Ad(XiCBOOk.Recordset.FieldS(H作者”)=Trim(TeXt5.Text)'使更新生效
AdOdCBOOk.Recordset-Update
■使"添加"和”删除"按钮成为可用状态
COmmand2.Enablcd=TrUC
COmmand3.Enabled=TrUC
'使"取消"按钮成为不可用状态
COmmand5.Enabled=FalSe
EndSUb
PriVateSUbCOmnland5_CliCko
COmmand2.Enabled=TrUe
COmmand3.Enabled=TrUe
COmmand5.Enabled=FalSe
EndSUb
PriVateSUbCOmmand6_CIiCkO八‘上一条"命令按钮AdOdCBOOk.RecordseteMovePrevious
EndSUb
PriVateSUbCOmmand7-Click()'11T一条"命令按钮AdOdCBOOk.Recordset-MoveNext
EndSUb
(3)管理员表VB代码
PriVateSUbCOmmandI_CliCko,”退岀"命令按钮
End
EndSUb
PriVateSUbCOmmand2_CIiCko,"添加"命令按钮
AdOdCManager.RecordseteAddNew
使■'添加“和”删除”按钮成为不可用状态
COmmand2.Enabled=FalSe
COmnIand3.Enabled=FalSe
使"更新"按钮成为可用状态
COmmand4.Enablcd=TrUC
'淸空文本框中现实的内容
Textl.Text=,m,
Text2.Text=mι
EndSUb
PriVateSUbCOmmand3-Click(),■'删除”命令按钮
DinlresASInteger
res=MSgBOX(H确实要删除此行记录吗?
∖VbEXClamatiOn+VbYeSNO+VbDefaUItBUttOn2)提示用户
Ifres=VbYeSThen,如确实要删除
AdOdCManager.RecordseteDelete
AdOdCManager.RecordseteMoveNext
IfAdOdCManager.Recordset.EOF=TrUeThen
AdodCManage匚ReCOrdset.MovcLasl
EndIf
EndIf
EndSUb
PriVateSUbCOmmand4_CIiCkO,”更新”命令按钮
■将文本框中的当前值写入结果集中相应字段中
AdodCManager.Rccordset.FicldsC管理员编号”)=Trim(TeXtLTeXt)
AdOdCManager.Recordset.FieldS(H管理员姓名”)=Trim(TeXt2.Text)'使更新生效
AdodcManager-RecordseteUpdate
■使"添加"和”删除"按钮成为可用状态
COmmand2.Enablcd=TrUC
COmmand3.Enabled=TrUC
EndSUb
PriVateSUbCOmmand5_CIiCko'吐一条"命令按钮
AdOdCManager.Rccordsct.MovcPrcvious
EndSub
PriVateSUbCOmmand6-Click()…下一条,'命令按钮
Ad(XiCManager.RecordseteMoveNext
EndSUb
(4)借阅表VB代码
PriVateSUbCOmmandI_CliCko,”退出”命令按钮
End
EndSUb
PriVateSUbCOmmand2_CIiCkO,"上一条"命令按钮
AdodCBOrrOWn.Recorclset-MovePrevious
EndSUb
PriVateSUbCOmmand3_CliCkoZ下一条"命令按钮
AdOdCBOrrOWn.Recordset-MoveNext
EndSlIb
PriVateSUbCOmmand4_CliCko,"添力Ir命令按钮
Ad(XiCBOrrOWn.Recordset-AddNew
使"添加"和"删除"按钮成为不可用状态
COmmand4.Enabled=FalSe
COmnland5.Enabled=FalSe
■使"更新"按钮成为可用状态
COmmand6.Enablcd=TrUC
'淸空文本框中现实的内容
Textl.Text=,m,
Text2.Text=mι
Text3.Text=m'
Text4.Text=m'
Text5.Text=mι
Text6.Text=mι
EndSUb
PriVateSUbCOmmand5_CIiCko,”删除'命令按钮
DinlresASInteger
res=MSgBOX(H确实要删除此行记录吗?
”,VbEXClamatiOn+VbYeSNO+VbDefaUltBUttOn2)提示用户
IfreS=VbYeSThen,如确实要删除
AdodCBOrrOWn.Recordset-Delete
AdOdCBOrrOWn.Recordset-MoveNext
IfAdOdCBOrrOWn.Recordset.EOF=TrUeThCn
AdOdCBOrrOWn.Recordset-MoveLast
EndIf
EndIf
EndSUb
PriVateSUbCOmmand6_CIiCko,"更新”命令按钮
■将文本框中的当前值写入结果集中相应字段中
AdOdCBOrrOWn.Recordset.Fields(π学号”)=Trim(TeXtI.Text)
AdodCBOrrOWn.Recordset.Fields(π姓名")=Trim(TeXt2.Text)
AdOdCBOrrOWn.Recordset.Fields(π图书编号")=TrinI(TeXt3.Text)
AdOdCBOrrOWn.Recordset.Fields(π图书名称")=TriIn(TeXt4.Text)
AdOdCBOrrOWn.Recordset-FieldsC*借阅日期”)=TriIn(TeXt5.Text)
AdodCBOrrOWn.Recordset.Fields(π应归还日期”)=Trim(TeXt6.Text)
'使更新生效
AdodCBOrrOWn.Recordset-Update
'使"添加"和”删除"按钮成为可用状态
COmnland4.Enabled=TrUC
COmmand5.Enabled=TrUC
EndSub
(5)管理表VB代码
PriVateSUbCOmmandI-CIiCko,”退出”命令按钮
End
EndSUb
PriVateSUbCOmmand2_CliCko,”添加”命令按钮
AdodCManagCmCnt.Recordset.AddNcw
'使"添加"和"删除"按钮成为不可用状态
COmmand2.Enabled=FalSe
COmnland3.Enabled=FalSe
使"更新"按钮成为可用状态
COmmand4.Enabled=TrUC
'淸空文本框中现实的内容
TextLText=,m,
Text2.Text=mι
Text3.Text=m'
EndSUb
PriVateSUbCOmmand3_CIiCko,”删除'命令按钮
DimresASInteger
res=MSgBOX(H确实要删除此行记录吗?
”,VbEXClamatiOn+VbYeSNO+VbDefaUltBUttOn2)'提示用户
IfreS=VbYeSThen,如确实要删除
AdOdCManagement.RecordseteDeIete
AdOdCManagemCnt.RecordsetAIoveNext
IfAdOdCManagement.Recordset.EOF=TrUeThen
AdOdCManagemCnt.Recordset-MoveLast
EndIf
EndIf
EndSUb
PriVateSUbCOmmand4_CIiCko,"更新”命令按钮
■将文本框中的当前值写入结果集中相应字段中
≡4rz-20-
AdodCManagemCnLRCCordSeLFiCIdS(”管理日期”)=TriIn(TeXtl.Text)AdOdCManagement.Recordset.Fields(n管理员编号,r)=TnnI(TeXt2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 数据库