数据库课程设计 图书音像管理系统.docx
《数据库课程设计 图书音像管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 图书音像管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
![数据库课程设计 图书音像管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/10/e9b9f98e-ca78-4960-a354-5c49982313eb/e9b9f98e-ca78-4960-a354-5c49982313eb1.gif)
数据库课程设计图书音像管理系统
第一章系统功能概述
1.1系统功能
每个人都有一些书、光盘、磁带、影碟等,这些东西信息量也不少。
现在建立一个管理系统对个人的图书音像资料进行管理,主要包括图书信息的管理、光盘信息的管理以及磁带信息的管理。
个人图书音像管理系统主要有以下功能:
(1)图书信息的管理:
对个人图书的管理,主要包括信息的浏览、查询和修改。
浏览时可以逐条显示每个图书的信息;查询时可以按照图书所有的属性进行查询,并且都支持模糊查询,按照作者查询时可以统计查询到信息的数量,按照类别查询时可以统计信息的数量以及同一类别图书的总价格;修改主要包括删除、添加和修改某条信息。
(2)音像信息的管理,包括光盘和磁带:
①光盘信息的管理:
对个人光盘的管理,主要包括信息的浏览、查询和修改。
浏览时可以逐条全属性的显示详细的光盘信息;查询可以按照光盘所有的属性进行查询,并且支持模糊查询,可以统计查询到的信息的数量;修改包括记录的删除、添加以及修改。
②磁带信息的管理:
对个人磁带的管理,同样主要包括信息的浏览、查询和修改。
浏览时可以逐条全属性显示磁带详细的信息;查询时可以按照不同的属性进行查询,并且支持模糊查询,统计查询到的记录的数量;修改包括记录的添加、修改和修改。
1.2系统功能模块图
第二章数据库设计
2.1需求分析
该系统主要实现对个人的大量的图书音像资料进行规范化的管理,通过辅助数据库的使用来完成一系列的功能。
首先根据需要在数据库中建立以下表:
密码表(用户名,密码),图书(书名,作者,价格,购买日期,类别,状态),光盘(光盘名,出版社,价格,购买时间,类别,状态),磁带(供磁带名,磁带作者,价格,购买时间,类别,状态)。
启动欢迎窗体时显示背景和欢迎文字,点击文字可以显示MDI主控窗体,利用主控窗体管理所有图书音像信息。
主控窗体主要包含文件、图书管理、音像管理和系统四个部分,起初只有文件和系统可用,图书管理和音像管理两部分不可用。
(1)打开系统下的“登录”子菜单会打开登录界面,需要正确填写用户名和密码才可以使用图书管理和音像管理,假如3次输入的用户名或密码有误,系统关闭。
从登录界面点击“注册”按钮可以打开注册界面进行新用户的注册。
(2)图书管理:
主要包含对图书信息的浏览、查询、修改,浏览时显示详细信息可以逐条浏览,查询可以根据图书的不同属性进行查询,并且支持模糊查询,查询完可以统计查询到记录的数量可总价格,修改包括单个记录的添加、删除以及属性的修改。
(3)音像管理:
包括音像信息的浏览、查询和修改。
音像信息的浏览分为光盘信息的浏览和磁带信息的浏览;音像信息的查询分为光盘信息的查询和磁带信息的查询,查询时都可以进行模糊查询;修改同样包含光盘信息的修改和磁带信息的修改。
(4)系统菜单只包含“退出”子菜单,点击可以结束程序。
2.2E-R模型
该管理系统中主要包含4个实体:
密码表、图书信息、光盘信息和磁带信息。
由于所有的实体之间不存在明显的联系,所以在这里只给出了单个实体及其属性图,没有完整的实体联系图。
单个实体及其属性图如下:
图a:
密码表及其属性图图b:
图书实体及其属性图
图c:
光盘实体及其属性图图d:
磁带实体及其属性图
2.3关系模型
(1)密码表(用户名,密码)
(2)图书信息(书名,作者,价格,购买日期,类别,状态)
(3)光盘信息(光盘名,出版社,价格,购买时间,类别,状态)
(4)磁带信息(磁带名,磁带作者,价格,购买时间,类别,状态)
2.4表结构设计
启动SQLServer2000建立数据库课程设计,在该数据库中,用可视化的方法进行建表,要建的表有密码表、图书信息、光盘信息和磁带信息四个表,所建各表的表信息如下:
表1:
密码表:
表2:
图书信息:
表3:
光盘信息:
表4:
磁带信息:
第三章系统各功能模块的详细设计
3.1欢迎界面的设计
点击欢迎界面上的欢迎词“欢迎进入个人图书音像管理系统”时即可跳转到MDIForm1主界面,欢迎词用Label控件进行添加,程序运行时欢迎界面最大化。
控件属性值表:
控件名
属性名
属性值
Label1
Caption
欢迎进入个人图书音像管理系统
Font
宋体、二号
ForeColor
红色
欢迎界面如下图所示:
对应代码如下:
PrivateSubLabel1_Click()
MDIForm1.Show
EndSub
3.2主控界面
主控界面是MDI窗体,含有的主菜单包含:
文件、图书管理、音像管理和系统。
在未登录之前只有文件和系统两菜单可用,成功登录之后图书管理和音像管理两个主菜单变为可用的。
主控界面的详细情况如下:
[文件]包含以下子菜单和功能:
[登录]菜单:
打开登录界面
[图书管理]菜单包含以下子菜单和功能:
[图书信息的浏览]菜单:
显示图书信息的浏览窗体
[图书信息的查询]菜单:
显示图书信息的查询窗体
[图书信息的修改]菜单:
显示图书信息的修改窗体
[音像管理]菜单包含以下子菜单和功能:
[音像信息的浏览]菜单:
包括[光盘信息的浏览]和[磁带信息的浏览]两个子菜单
[光盘信息的浏览]菜单:
显示光盘信息的浏览窗体
[磁带信息的浏览]菜单:
显示磁带信息的浏览窗体
[音像信息的查询]菜单:
包括[光盘信息的查询]和[磁带信息的查询]两个子菜单
[光盘信息的查询]菜单:
显示光盘信息的查询窗体
[磁带信息的查询]菜单:
显示图书信息的查询窗体
[音像信息的修改]菜单:
包括[光盘信息的修改]和[磁带信息的修改]两个子菜单
[光盘信息的修改]菜单:
显示光盘信息的修改窗体
[磁带信息的修改]菜单:
显示磁带信息的修改窗体
[系统]菜单包含以下子菜单和功能:
[退出]菜单:
关闭程序
主控界面的设计如下图所示:
对应代码如下:
PrivateSubCchaxun_Click()
fcchaxun.Show
EndSub
PrivateSubCliulan_Click()
fcliulan.Show
EndSub
PrivateSubCxiugai_Click()
fcxiugai.Show
EndSub
PrivateSubdenglu_Click()
fdenglu.Show
EndSub
PrivateSubGchaxun_Click()
fgchaxun.Show
EndSub
PrivateSubGliulan_Click()
fgliulan.Show
EndSub
PrivateSubGxiugai_Click()
fgxiugai.Show
EndSub
PrivateSubMDIForm_Load()
tushuguanli.Enabled=False
yinxiangguanli.Enabled=False
EndSub
PrivateSubTchazhao_Click()
ftchaxun.Show
EndSub
PrivateSubTchaxun_Click()
ftchaxun.Show
EndSub
PrivateSubTliulan_Click()
ftliulan.Show
EndSub
PrivateSubtuichu_Click()
End
EndSub
PrivateSubTxiugai_Click()
ftxiugai.Show
EndSub
3.3登录和注册界面
(1)登录界面的设计
用Label控件添加“用户名”和“密码”显示在界面上,并在后面用TextBox控件添加练个输入区,三个按钮则由CommandButton控件进行添加,最后由Adodc控件与数据库相连。
控件属性值表:
控件名
属性名
属性值
控件名
属性名
属性值
Label1
Caption
用户名
Command2
Caption
取消
Font
楷体、小四
Font
楷体、小四
Label2
Caption
密码
Command3
Caption
注册
Font
楷体、小四
Font
楷体、小四
Command1
Caption
登录
Font
楷体、小四
登录界面如下:
当输入的用户名不存在或者密码错误时系统会给出警告:
对应的代码如下:
DimmiCountAsInteger
PrivateSubCommand1_Click()
StaticmiCountAsInteger
DimsqlstrAsString
sqlstr="Select*from密码表Where用户名='"&Text1&"'"
Adodc1.RecordSource=sqlstr
Adodc1.Refresh
IfAdodc1.Recordset.BOFThen
MsgBox"用户名错误,重新输入",vbExclamation,"警告"
Text1.Text="":
Text1.SetFocus
Else
IfAdodc1.Recordset.Fields("密码")=Text2Then
MDIForm1.tushuguanli.Enabled=True
MDIForm1.yinxiangguanli.Enabled=True
UnloadMe
Else
MsgBox"密码错误,重新输入",vbExclamation,"警告"
Text2.Text="":
Text2.SetFocus
EndIf
EndIf
miCount=miCount+1
IfmiCount=3ThenUnloadMe
EndSub
PrivateSubCmdCancel_Click()
UnloadMe
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubCommand3_Click()
fzhuce.Show
EndSub
(2)注册界面的设计
该界面主要有CommandButton控件添加两个按钮“确认”和“取消”,Label控件添加的四个标签以及TextBox控件添加的三个输入区,最后由Adodc控件和“密码表”连接。
控件属性值表:
控件名
属性名
属性值
控件名
属性名
属性值
Label1
Caption
注册新用户
Label4
Caption
确认密码
Font
宋体、小四
Font
楷体、五号
Label2
Caption
输入用户名
Command1
Caption
确认
Font
楷体、五号
Font
楷体、小四
Label3
Caption
输入密码
Command2
Caption
取消
Font
楷体、五号
Font
楷体、小四
注册界面如下:
当两次输入的密码不同和注册成功时都会给出提示:
对应代码如下:
PrivateSubCommand1_Click()
DimsqlstrAsString
IfText1=""Then
MsgBox"请输入用户名!
",vbExclamation,"确认用户名"
Text1.SetFocus
ExitSub
Else
sqlstr="Select*from密码表where用户名='"&Text1&"'"
Adodc1.RecordSource=sqlstr
Adodc1.Refresh
IfAdodc1.Recordset.EOF=FalseThen
MsgBox"用户名已存在,请重新输入!
",vbExclamation,"检验用户名"
Text1=""
Text1.SetFocus
ExitSub
EndIf
EndIf
IfText2<>Text3Then
MsgBox"二次输入的密码不一致,请重新输入",vbExclamation,"检验密码"
Text2="":
Text3=""
Text2.SetFocus
ExitSub
ElseIfText2=""Then
MsgBox"密码不能为空!
",vbExclamation,"检验密码"
Text2.SetFocus
Else
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("用户名")=Trim(Text1)
Adodc1.Recordset.Fields("密码")=Trim(Text2)
Adodc1.Recordset.Update
Me.Hide
MsgBox"成功注册新用户!
",vbInformation,"添加用户"
EndIf
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
3.4浏览界面
(1)图书信息浏览界面
该界面浏览时支持向前或者向后逐条浏览记录,但是到达首记录时“前移”按钮失效,到达末记录时“后移”按钮失效。
另外,还可以根据需求进行跳跃式浏览,在界面上还可以显示你当前浏览的记录在表中的位置。
控件属性值表:
控件名
属性名
属性值
控件名
属性名
属性值
Text1
DataSource
Adodc1
Text4
DataSource
Adodc1
DataField
书名
DataField
购买日期
Locked
True
Locked
True
Text2
DataSource
Adodc1
Text5
DataSource
Adodc1
DataField
作者
DataField
类别
Locked
True
Locked
True
Text3
DataSource
Adodc1
Text6
DataSource
Adodc1
DataField
价格
DataField
状态
Locked
True
Locked
True
控件名
属性名
属性值
作用
CmdFirst
Caption
首记录
将指针移动到第一条记录
CmdPre
Caption
前移
指针向前移动一个记录
CmdNext
Caption
后移
指针向后移动一条记录
CmdLast
Caption
末记录
指针移动到最后一条记录
CmdN
Caption
移动记录数
一次移动n条记录
Text7
Text
空
输入要移动的记录数
Label7
Caption
空
显示当前记录数和记录总数
图书浏览界面如下(首记录):
输入移动记录数:
对应的代码如下:
PrivateSubCmdFirst_Click()
Adodc1.Recordset.MoveFirst
CmdFirst.Enabled=False
CmdPre.Enabled=False
CmdNext.Enabled=True
CmdLast.Enabled=True
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdPre_Click()
Adodc1.Recordset.MovePrevious
CmdNext.Enabled=True
CmdLast.Enabled=True
IfAdodc1.Recordset.BOFThen
Adodc1.Recordset.MoveFirst
CmdFirst.Enabled=False
CmdPre.Enabled=False
EndIf
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdNext_Click()
Adodc1.Recordset.MoveNext
CmdFirst.Enabled=True
CmdPre.Enabled=True
IfAdodc1.Recordset.EOFThen
Adodc1.Recordset.MoveLast
CmdNext.Enabled=False
CmdLast.Enabled=False
EndIf
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdLast_Click()
Adodc1.Recordset.MoveLast
CmdFirst.Enabled=True
CmdPre.Enabled=True
CmdNext.Enabled=False
CmdLast.Enabled=False
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCmdN_Click()
DimnAsInteger
n=Text7.Text
Adodc1.Recordset.Moven
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubForm1_Load()
CmdFirst.Enabled=False
CmdPre.Enabled=False
CmdNext.Enabled=True
CmdLast.Enabled=True
Label7.Caption="记录:
"&Adodc1.Recordset.AbsolutePosition&"/"&Adodc1.Recordset.RecordCount
EndSub
(2)光盘信息浏览界面
由于光盘信息的浏览和图书信息的浏览及其类似,所以在这里不再赘述。
(3)磁带信息浏览界面和图书浏览的功能和界面都类似,所以也不再给出。
3.5查询界面
(1)图书信息查询界面
查询时分为两种情况的查询,一种是按“书名”、“作者”、“价格”查询,由Combo控件控制,可以按需求选择,查询时都可以进行模糊查询,并可以显示出查询到的记录的数量。
第二种,按“购买日期”、“状态”和“类别”查询,此时添加了一个“统计”按钮,可以把查询到的所有记录的总价格统计出来。
①第一种查询条件
控件属性值表:
控件名
属性名
属性值
控件名
属性名
属性值
Label1
Caption
查询条件
Command2
Caption
统计
Font
宋体、小四
Font
宋体、小四
Label2
Caption
查询信息
Command3
Caption
其他条件查询
Font
宋体、小四
Font
宋体、小四
Command1
Caption
查询
DataGrid1
DataSource
Adodc1
Font
宋体、小四
图书查询界面如下:
对应的代码如下:
PrivateSubCommand1_Click()
DimstrAsString
str="Select*From图书信息"
str=str&"Where图书信息."&Combo1.Text&"Like'"&Text1&"%'"
Adodc1.RecordSource=str
Adodc1.Refresh
EndSub
PrivateSubCommand2_Click()
Label3.Caption="找到相关信息的数量:
"&Adodc1.Recordset.RecordCount
EndSub
PrivateSubCommand3_Click()
fttongji.Show
EndSub
PrivateSubForm_Load()
Combo1.AddItem"书名"
Combo1.AddItem"作者"
Combo1.AddItem"价格"
Text1.Text=""
EndSub
②第二种查询条件
控件属性值表:
控件名
属性名
属性值
控件名
属性名
属性值
Label1
Caption
按购买日期查询
Command1
Caption
查询
Font
宋体、小四
Font
宋体、小四
Label2
Caption
按类别查询
Command2
Caption
统计
Font
宋体、小四
Font
宋体、小四
Label3
Caption
按状态查询
DataGrid1
DataSource
Adodc1
Font
宋体、小四
Text1
DataSource
Adodc2
查询界面如下:
对应代码如下:
PrivateSubCommand1_Click()
IfOption1=TrueThen
DimstrAsString
str="Select*From图书信息"
str=str&"Where图书信息.购买日期like'"&Combo1.Text&"%'"
Adodc1.RecordSource=str
Adodc1.Refresh
EndIf
IfOption2=TrueThen
Dimstr1AsString
str1="Select*From图书信息"
str1=str1&"Where图书信息.类别like'"&Combo2.Text&"%'"
Adodc1.RecordSource=str1
Adodc1.Refresh
EndIf
IfOption4=TrueThen
Dimstr2AsString
str2="Select*From图书信息"
str2=str2&"Where图书信息.状态like'"&Combo3.Text&"%'"