数据库应用系统设计案例课件.ppt

上传人:小飞机 文档编号:3488765 上传时间:2023-03-13 格式:PPT 页数:81 大小:415.50KB
返回 下载 相关 举报
数据库应用系统设计案例课件.ppt_第1页
第1页 / 共81页
数据库应用系统设计案例课件.ppt_第2页
第2页 / 共81页
数据库应用系统设计案例课件.ppt_第3页
第3页 / 共81页
数据库应用系统设计案例课件.ppt_第4页
第4页 / 共81页
数据库应用系统设计案例课件.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《数据库应用系统设计案例课件.ppt》由会员分享,可在线阅读,更多相关《数据库应用系统设计案例课件.ppt(81页珍藏版)》请在三一办公上搜索。

1、第11章数据库应用系统设计案例,11.1 图书馆管理系统的设计,本例以图书馆管理系统为例说明如何开发数据库应用程序。,11.1.1 需求分析,图书馆是这样的部门,馆中收藏大量图书供读者借阅,其中图书可分成不同的类别,如自然科学类,社会科学类等;借阅者可分为老师和学生。不同的借阅者最多可借的书的数量和期限不同,如教师最多可借10本,期限为3个月,学生最多可借2本,期限为1个月,无论老师和学生借阅超期还要进行罚款处理。,11.1.2 概念结构设计,11.1.3 逻辑结构设计,读者(借书证号,读者姓名,性别,读者类别,是否有超期)图书(条形码号,图书编号,书名,作者,出版社,出版日期,书的类别,借阅

2、状态,借阅次数)借阅(借书证号,条形码号,借出日期,归还日期)罚款(借书证号,条形码号,处罚日期,超期天数,罚款金额)另外,为了保证系统的安全性,采用了登录的措施,用户名和密码存放在密码表中。密码表(用户名,密码),11.1.4 规范化分析,除罚款关系外,其它4个关系模式中主码是本模式的唯一决定因素,所以这4个关系模式都属于BCNF.但是在罚款关系中,罚款金额=日罚款额超期天数,所以 超期天数罚款金额,而 超期天数(借书证号,条形码号,处罚日期),所以(借书证号,条形码号,处罚日期)罚款金额,存在传递函数依赖,所以罚款关系属于2NF,存在冗余现象。读者往往既关心超期天数,又关心罚款金额,所以“

3、罚款金额”是必要的冗余。,11.1.5 在SQL Server 2000 中创建数据库,图书表的结构,读者表的结构,借阅表的结构,罚款表的结构,密码表的结构,11.1.6 用VB6.0 开发应用程序,1图书馆管理系统的功能,2配置数据源用前面介绍的方法,利用ODBC数据源管理器配置一个连接到“图书馆”数据库的数据源,名为“图书管理”,,1)设计MDI主窗体。,3设计各个窗体,其中菜单的结构如下表所示,2)设计登录窗体,Dim miCount As Integer用于记录输入密码次数Dim str As Stringstr=select 密码 from 密码表 where 用户名=&Text1.

4、Text&Adodc1.RecordSource=strAdodc1.RefreshIf Adodc1.Recordset.EOF=True ThenMsgBox 用户名错误,请重新输入,vbExlamation,警告Text1.Text=Text1.SetFocusElse If Adodc1.Recordset.Fields(密码)=Text2.Text Then MDIForm1.Show Unload Me Else MsgBox 密码错误,请重新输入,vbExlamation,警告 Text2.Text=Text2.SetFocus End IfEnd IfmiCount=miCou

5、nt+1If miCount=3 Then Unload Me,3)设计读者管理窗体,(1)设计界面,Private Sub Form_Load()CmdFirst.Enabled=FalseCmdPre.Enabled=FalseCmdNext.Enabled=TrueCmdLast.Enabled=TrueCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdCancel.Enabled=FalseEnd Sub,Private Sub CmdAdd_Click()Adodc1.Recordset.AddNewCmdAdd.

6、Enabled=FalseCmdDel.Enabled=FalseCmdOk.Enabled=TrueCmdCancel.Enabled=TrueEnd SubPrivate Sub CmdOk_Click()Adodc1.Recordset.UpdateCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdCancel.Enabled=FalseEnd Sub,Private Sub CmdDel_Click()x=MsgBox(确实要删除当前记录吗?,vbYesNo+vbQuestion)If x=vbYes Then Ad

7、odc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF=True Then Adodc1.Recordset.MoveLast End IfElse Adodc1.RefreshEnd IfEnd Sub,Private Sub CmdCancel_Click()Adodc1.RefreshCmdAdd.Enabled=TrueCmdDel.Enabled=TrueCmdOk.Enabled=FalseCmdCancel.Enabled=FalseEnd Sub,Private Sub CmdFirst_C

8、lick()Adodc1.Recordset.MoveFirstCmdFirst.Enabled=FalseCmdPre.Enabled=FalseCmdNext.Enabled=TrueCmdLast.Enabled=TrueEnd SubPrivate Sub CmdPre_Click()Adodc1.Recordset.MovePreviousCmdNext.Enabled=TrueCmdLast.Enabled=TrueIf Adodc1.Recordset.BOF=True Then Adodc1.Recordset.MoveFirst CmdFirst.Enabled=False

9、CmdPre.Enabled=False End IfEnd Sub,Private Sub CmdNext_Click()Adodc1.Recordset.MoveNextCmdFirst.Enabled=TrueCmdPre.Enabled=TrueIf Adodc1.Recordset.EOF=True Then Adodc1.Recordset.MoveLast CmdLast.Enabled=False CmdNext.Enabled=False End IfEnd SubPrivate Sub CmdLast_Click()Adodc1.Recordset.MoveLastCmdF

10、irst.Enabled=TrueCmdPre.Enabled=TrueCmdNext.Enabled=FalseCmdLast.Enabled=FalseEnd Sub,4)设计读者查询窗体,(1)设计界面,其中Adodc1连接到读者表,在“记录源”选项卡中,选择命令类型。1-adCmdText,在“命令文本”文本框中输入SQL语句select*from 读者表。(2)编写代码Private Sub Form_Load()窗体装载代码Combo1.AddItem 借书证号Combo1.AddItem 读者姓名Combo1.AddItem 是否有超期Combo1.Text=借书证号Text1.

11、Text=End Sub,Private Sub Command1_Click()“查询”按钮代码Dim str As Stringstr=select*from 读者表 where 读者表.&Combo1.Text&like&Text1.Text&%“Adodc1.RecordSource=strAdodc1.RefreshEnd Sub“返回”按钮代码Private Sub Command2_Click()Unload MeEnd Sub,5)设计图书管理窗体、图书查询窗体图书管理与查询窗体与读者管理与查询窗体功能类似。不再赘述6)设计借阅管理窗体(1)设计界面,借书时需输入读者的借书证号

12、及书的条形码号,然后单击“借书”按钮,实现借书功能;还书时单击“还书”按钮,实现还书功能。借书时首先看读者是否有超期书,如果有则不允许再借书,然后根据读者是学生还是教师,判断所借书数是否达到最多,如果已达到最多,给出提示:“借书数量达到最多,不能再借!”,两个条件都允许,则可以借书,借书时先在图书表中根据条形码号写入该书的借阅状态值为“借出”,同时将“借阅次数”加1,然后在借阅表中添加借阅记录。单击“还书”铵钮,先还书,再判断是否超期。还书时,在借阅表中写上“归还日期”,同时在图书表中把该书的“借阅状态”值改为“在库”。如果超期,则显示罚款窗口,进行罚款处理。,(2)代码参考教材:,7)设计罚

13、款管理窗体(1)设计窗体,(2)代码参考教材,8)设计图书借阅排行报表首先,在数据环境设计器中添加一个连接“图书管理”.,然后添加三个命令对象“借阅管理”“罚款管理”“图书借阅排行”。,设置“借阅管理”命令对象的SQL语句如下:SELECT 读者表.借书证号,读者表.读者姓名,图书表.书名,借阅表.借出日期,借阅表.归还日期 FROM 读者表 INNER JOIN 借阅表 ON 读者表.借书证号=借阅表.借书证号 INNER JOIN 图书表 ON 借阅表.条形码号=图书表.条形码号,设置“罚款管理”命令对象的SQL语句如下:SELECT 读者表.借书证号,读者表.读者姓名,图书表.书名,罚款

14、表.超期天数,罚款表.罚款金额,罚款表.处罚日期 FROM 读者表 INNER JOIN 罚款表 ON 读者表.借书证号=罚款表.借书证号 INNER JOIN 图书表 ON 罚款表.条形码号=图书表.条形码号。,设置“图书借阅排行”语句如下:SELECT 图书编号,书名,SUM(借阅次数)AS 次数FROM 图书表GROUP BY 图书编号,书名ORDER BY 次数 DESC,“图书借阅排行”报表运行结果,11.2 招聘管理系统的设计,本例以招聘管理系统为例说明如何用ADO对象编写应用程序。,11.2.1 需求分析招聘管理用于管理企业招聘新员工的全过程,主要功能包括应聘人员登记、应聘人员初

15、选、应聘人员面试和应聘人员录用。,11.2.2 概念结构设计经分析,此系统涉及到的主体只有应聘人员和评委两个实体集之间存在初选、面试和录用的联系,据此可画出此系统的E-R图,1,面试地点,应聘人员,开始录用日期,m,1,p,r,1,评委,其中应聘人员与其属性关系如图所示,姓名,应聘人员,评委与其属性关系如图所示,评委,11.2.3 逻辑结构设计,登记表(应聘人编号,姓名,性别,电话,外语水平)评委表(评委编号,评委姓名,部门)初选表(应聘人编号,计算机能力,业务能力,综合评分,初选状态),根据实际情况,去掉了评委编号属性。面试表(应聘人编号,初选评分,外表形象,领悟反应能力,综合评分,面试地点

16、,面试人号,录用情况).面试时,往往要参考应聘人的初选评分,所以增加了一个“初选评分”属性。录用表(应聘人编号,面试分,笔试分,综合考核分,开始录用日期,是否录用),为了保证系统的安全性,采用了登录的措施,用户名和密码存放在系统表中。系统表(姓名,密码),11.2.4 规范化分析其中的“登记表”、“评委表”和“系统表”三个关系模式中的主码是本模式的唯一决定因素,所以这三个关系模式都属于BCNF;但在“初选表”中,综合评分=(计算机能力+业务能力)/2,“初选状态”也由“综合评分”来定,与“图书馆管理系统”案例中的分析类似。“初选表”属于2NF,其中的“综合评分”和“初选状态”两个属性值是冗余数

17、据,但评委往往既关心“计算机能力”和“业务能力”,又关心“综合评分”和“初选状态”,所以“综合评分”和“初选状态”是必要的冗余。在“面试表”和“录用表”中也有类似的情况。,11.2.5 在SQL Server 2000 中创建数据库,各表格的结构如下:,字段名数据类型 长度姓名char 10密码char 6,字段名 数据类型 长度评委编号char 4评委姓名varchar 20部门 varcha 20,1招聘管理系统的功能模块,招聘管理系统,2配置数据源。利用ODBC数据源管理器配置一个连接到“招聘管理”数据库的数据源,名为zhpgl。,3设计各个窗体。1)设计主窗体。从主窗体中可以打开各个功

18、能的窗口。,菜单的结构,标题及位置名称 标题及位置 名称文件 m_file 面试情况 m_qmianshi 登录 m_login 录用情况 m_qluyong 退出 m_exitt 统计报表 m_baobiao数据管理m_data 初选名单 m_pchuxuan 招聘管理m_zhaopin 面试通过名单 m_pmianshi查询信息m_chaxun 录用名单 m_pluyong 初选情况m_qchuxuan,2)设计登录窗体,(2)编写程序如下:在“通用”和“声明”栏内,编写代码如下:Dim cn As New ADODB.ConnectionDim rst As New ADODB.Reco

19、rdsetPrivate Sub Form_Load()窗体装载代码Dim s As Strings=DSN=zhpgl;uid=sa;pwd=sacn.Open scn.CursorLocation=adUseClientEnd Sub,Private Sub cmdOk_Click()“确定”按钮单击事件的代码 rst.Open select*from 系统表 where 姓名=&Text1&,cn If rst.BOF And rst.EOF Then MsgBox 无效用户名,请重新输入。,vbCritical,错误 Text1=Text1.SetFocus ElseIf Text2=

20、rst.Fields(密码)Then MsgBox 登录成功!,vbInformation MDIzhaopin.m_zhaopin.Enabled=True MDIzhaopin.m_chaxun.Enabled=True MDIzhaopin.m_baobiao.Enabled=True Me.Hide Else MsgBox 密码错误,请重新输入,vbCritical,错误 Text2.Text=Text2.SetFocus End If rst.CloseEnd Sub,3)设计招聘管理窗体,招聘管理窗体用SSTab控件实现登记管理、初选管理、面试管理和录用管理4个功能,在登记管理选项

21、卡中有4个命令按扭:“添加”(Cmd0Add)、“确定”(Cmd0Ok)、“删除”(Cmd0Del)和“退出”(Cmd0Exit),分别实现添加记录、存入数据库、删除记录和退出本窗体的功能。在“初选”、“面试”和“录用”选项卡中都有“导入数据”、“确定”和“退出”4个命令按钮,分别实现从其他表中导入数据、存入数据库和退出本窗体的功能。例如,在“初选”选项卡中单击“导入数据”(Cmd1Import)命令按钮就从登记表中把登记人员的编号导入初选表中来,单击“确定”(Cmd1Ok)命令按钮就可以计算当前受聘者的“综合评分”和“初选状态”并存入数据库中。,(2)编写程序在“通用”“声明”段内,声明如下

22、对象变量:Dim cn As New ADODB.ConnectionDim rst0 As New ADODB.Recordset 定义用于存放登记表的记录集Dim rst1 As New ADODB.Recordset 定义用于存放初选表的记录集Dim rst2 As New ADODB.Recordset 定义用于存放面试表的记录集Dim rst3 As New ADODB.Recordset 定义用于存放录用表的记录集,Private Sub Form_Load()cn.Open DSN=zhpgl;uid=sa;pwd=sacn.CursorLocation=adUseClientr

23、st0.LockType=adLockPessimistic 允许更新记录集rst1.LockType=adLockPessimisticrst2.LockType=adLockPessimisticrst3.LockType=adLockPessimisticrst0.Open select*from 登记表,cnSet DataGrid1.DataSource=rst0 设置DataGrid1的数据源,rst1.Open select*from 初选表,cnSet DataGrid2.DataSource=rst1If rst1.RecordCount 0 Then 如果初选表中有记录,就

24、不能从登记表中导入数据 Cmd1Import.Enabled=FalseEnd Ifrst2.Open select*from 面试表,cnSet DataGrid3.DataSource=rst2If rst2.RecordCount 0 Then Cmd2Import.Enabled=FalseEnd If rst3.Open select*from 录用表,cnSet DataGrid4.DataSource=rst3If rst3.RecordCount 0 Then Cmd3Import.Enabled=FalseEnd IfEnd Sub,Private Sub Cmd0Add_C

25、lick()“登记”选项卡中“添加”按钮单击事件的代码 rst0.AddNewEnd SubPrivate Sub Cmd0Ok_Click()“登记”选项卡中“确定”按钮单击事件的代码 rst0.Update rst0.Sort=应聘人编号End SubPrivate Sub Cmd0Del_Click()“登记”选项卡中“删除”按钮单击事件的代码 x=MsgBox(确定要删除吗?,vbYesNoCancel+vbQuestion,确认)If x=vbYes Then rst0.Delete End If End Sub,Private Sub Cmd1Import_Click()“初选”选

26、项卡中“导入数据”按钮单击事件的代码 把登记表中的应聘人编号转到初选表中来 rst0.MoveFirst For i=1 To rst0.RecordCount rst1.AddNew rst1.Fields(应聘人编号)=rst0.Fields(应聘人编号)rst0.MoveNext rst1.MoveNext Next i Cmd1Import.Enabled=False 只能导一次数据End Sub,Private Sub Cmd1Ok_Click()“初选”选项卡中“确定”按钮单击事件的代码 rst1.Fields(综合评分)=(Val(rst1.Fields(计算机能力)+rst1.

27、Fields(业务能力)*0.5 If rst1.Fields(综合评分)=6 Then rst1.Fields(初选状态)=通过 Else rst1.Fields(初选状态)=未通过 End If rst1.Update rst1.Sort=应聘人编号End Sub,Private Sub Cmd2Import_Click()“面试”选项卡中“导入数据”按钮单击事件的代码 把初选表中通过的应聘人编号、初选评分转到面试表中来 rst1.Close rst1.Open select*from 初选表 where 初选状态=通过,cn rst1.MoveFirst For i=1 To rst1.

28、RecordCount rst2.AddNew rst2.Fields(应聘人编号)=rst1.Fields(应聘人编号)rst2.Fields(初选评分)=rst1.Fields(综合评分)rst1.MoveNext Next i rst2.Update Cmd2Import.Enabled=FalseEnd Sub,Private Sub Cmd2Ok_Click()“面试”选项卡中“确定”按钮单击事件的代码 rst2.Fields(综合评分)=(rst2.Fields(初选评分)+rst2.Fields(外表形象)+rst2.Fields(领悟反应能力)/3 If rst2.Fields

29、(综合评分)=6 Then rst2.Fields(录用情况)=通过 Else rst2.Fields(录用情况)=未通过 End If rst2.Update rst2.Sort=应聘人编号 rst2.MoveLastEnd Sub,Private Sub Cmd3Import_Click()“录用”选项卡中“导入数据”按钮单击事件的代码把面试表中通过的应聘人编号、面试分转到录用表中来 rst2.Close rst2.Open select*from 面试表 where 录用情况=通过,cn rst2.MoveFirst For i=1 To rst2.RecordCount rst3.Ad

30、dNew rst3.Fields(应聘人编号)=rst2.Fields(应聘人编号)rst3.Fields(面试分)=rst2.Fields(综合评分)rst3.Fields(开始录用日期)=Date rst2.MoveNext Next i Cmd3Import.Enabled=FalseEnd Sub,Private Sub Cmd3Ok_Click()“录用”选项卡中“确定”按钮单击事件的代码 rst3.Fields(综合考核分)=(rst3.Fields(面试分)+rst3.Fields(笔试分)/2 If rst3.Fields(综合考核分)=6 Then rst3.Fields(是

31、否录用)=是 Else rst3.Fields(是否录用)=否 End If rst3.Update rst3.Sort=应聘人编号 rst3.MoveLastEnd Sub,选项卡的单击事件过程代码如下Private Sub SSTab1_Click(PreviousTab As Integer)If SSTab1.Tab=1 Then rst1.Close rst1.Open select*from 初选表,cn Set DataGrid2.DataSource=rst1 ElseIf SSTab1.Tab=2 Then rst2.Close rst2.Open select*from 面

32、试表,cn Set DataGrid3.DataSource=rst2 ElseIf SSTab1.Tab=3 Then rst3.Close rst3.Open select*from 录用表,cn Set DataGrid4.DataSource=rst3 End IfEnd Sub,4)设计查询初选情况窗体(1)设计窗体,此窗体能按照一定的条件查询初选的情况,如某个人的综合评分是多少,是否通过了初选等信息。,(2)编写程序Dim cn As New ADODB.Connection 在“通用”和“声明”段内,声明对象变量Dim rst As New ADODB.RecordsetPriv

33、ate Sub Form_Load()cn.Open DSN=zhpgl;uid=sa;pwd=sacn.CursorLocation=adUseClientrst.LockType=adLockPessimisticCombo1.AddItem 应聘人编号Combo1.AddItem 初选状态End Sub,Private Sub cmdquery_Click()“查询”代码Dim s As Strings=select*from 初选表 where&Combo1.Text&like&Text1&%rst.Open s,cnSet DataGrid1.DataSource=rstEnd Su

34、bPrivate Sub cmdexit_Click()“返回”代码Unload MeEnd Sub,5)报表的设计,在数据环境设计器中添加一个连接“招聘管理”,连接数据源名为zhpgl。然后添加三个命令:“初选通过名单”、“面试通过名单”和“录用名单”。用于设置“初选通过名单”命令对象的SQL语句如下:SELECT 初选表.应聘人编号,登记表.姓名,初选表.计算机能力,初选表.业务能力,初选表.综合评分,初选表.初选状态 FROM 初选表 INNER JOIN 登记表 ON 初选表.应聘人编号=登记表.应聘人编号 WHERE(初选表.初选状态=通过),属性设置如图所示,用于设置“面试通过名单”命令对象的SQL语句如下:SELECT*FROM面试表 WHERE 录用情况=通过用于设置“录用名单”命令对象的SQL语句如下:SELECT*FROM 录用表 WHERE 是否录用=是,“初选通过名单”报表运行结果如图所示:,至此,一个用VB的ADO对象开发的数据库应用程序就完成了。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号