数据库应用系统设计案例.ppt_第1页
数据库应用系统设计案例.ppt_第2页
数据库应用系统设计案例.ppt_第3页
数据库应用系统设计案例.ppt_第4页
数据库应用系统设计案例.ppt_第5页
免费预览已结束,剩余76页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 String str = select 密码 from 密码表 whe

4、re 用户名= 但在“初选表”中,综合评分=(计算机能力+业务能力)/2,“初选状态”也由“综合评分”来定,与“图书馆管理系统”案例中的分析类似。“初选表”属于2NF,其中的“综合评分”和“初选状态”两个属性值是冗余数据,但评委往往既关心“计算机能力”和“业务能力”,又关心“综合评分”和“初选状态”,所以“综合评分”和“初选状态”是必要的冗余。在“面试表”和“录用表”中也有类似的情况。,11.2.5 在SQL Server 2000 中创建数据库,各表格的结构如下:,字段名数据类型 长度 姓名char 10 密码char 6,字段名 数据类型 长度 评委编号char 4 评委姓名varchar

5、 20 部门 varcha 20,1招聘管理系统的功能模块,招聘管理系统,2配置数据源。 利用ODBC数据源管理器配置一个连接到“招聘管理”数据库的数据源,名为zhpgl。,3设计各个窗体。 1)设计主窗体。从主窗体中可以打开各个功能的窗口。,菜单的结构,标题及位置名称 标题及位置 名称 文件 m_file 面试情况 m_qmianshi 登录 m_login 录用情况 m_qluyong 退出 m_exitt 统计报表 m_baobiao 数据管理m_data 初选名单 m_pchuxuan 招聘管理m_zhaopin 面试通过名单 m_pmianshi 查询信息m_chaxun 录用名单

6、m_pluyong 初选情况m_qchuxuan,2)设计登录窗体,(2)编写程序如下: 在“通用”和“声明” 栏内,编写代码如下: Dim cn As New ADODB.Connection Dim rst As New ADODB.Recordset Private Sub Form_Load() 窗体装载代码 Dim s As String s = DSN=zhpgl;uid=sa;pwd=sa cn.Open s cn.CursorLocation = adUseClient End Sub,Private Sub cmdOk_Click() “确定”按钮单击事件的代码 rst.Op

7、en select * from 系统表 where 姓名= uid=sa;pwd=sa cn.CursorLocation = adUseClient rst0.LockType = adLockPessimistic 允许更新记录集 rst1.LockType = adLockPessimistic rst2.LockType = adLockPessimistic rst3.LockType = adLockPessimistic rst0.Open select * from 登记表, cn Set DataGrid1.DataSource = rst0 设置DataGrid1的数据源

8、,rst1.Open select * from 初选表, cn Set DataGrid2.DataSource = rst1 If rst1.RecordCount 0 Then 如果初选表中有记录,就不能从登记表中导入数据 Cmd1Import.Enabled = False End If rst2.Open select * from 面试表, cn Set DataGrid3.DataSource = rst2 If rst2.RecordCount 0 Then Cmd2Import.Enabled = False End If rst3.Open select * from 录用

9、表, cn Set DataGrid4.DataSource = rst3 If rst3.RecordCount 0 Then Cmd3Import.Enabled = False End If End Sub,Private Sub Cmd0Add_Click() “登记”选项卡中“添加”按钮单击事件的代码 rst0.AddNew End Sub Private Sub Cmd0Ok_Click()“登记”选项卡中“确定”按钮单击事件的代码 rst0.Update rst0.Sort = 应聘人编号 End Sub Private Sub Cmd0Del_Click()“登记”选项卡中“删

10、除”按钮单击事件的代码 x = MsgBox(确定要删除吗?, vbYesNoCancel + vbQuestion, 确认) If x = vbYes Then rst0.Delete End If End Sub,Private Sub Cmd1Import_Click()“初选”选项卡中“导入数据”按钮单击事件的代码 把登记表中的应聘人编号转到初选表中来 rst0.MoveFirst For i = 1 To rst0.RecordCount rst1.AddNew rst1.Fields(应聘人编号) = rst0.Fields(应聘人编号) rst0.MoveNext rst1.Mo

11、veNext Next i Cmd1Import.Enabled = False 只能导一次数据 End Sub,Private Sub Cmd1Ok_Click()“初选”选项卡中“确定”按钮单击事件的代码 rst1.Fields(综合评分) = (Val(rst1.Fields(计算机能力) + rst1.Fields(业务能力) * 0.5 If rst1.Fields(综合评分) = 6 Then rst1.Fields(初选状态) = 通过 Else rst1.Fields(初选状态) = 未通过 End If rst1.Update rst1.Sort = 应聘人编号 End Su

12、b,Private Sub Cmd2Import_Click()“面试”选项卡中“导入数据”按钮单击事件的代码 把初选表中通过的应聘人编号、初选评分转到面试表中来 rst1.Close rst1.Open select * from 初选表 where 初选状态=通过, cn rst1.MoveFirst For i = 1 To rst1.RecordCount rst2.AddNew rst2.Fields(应聘人编号) = rst1.Fields(应聘人编号) rst2.Fields(初选评分) = rst1.Fields(综合评分) rst1.MoveNext Next i rst2.

13、Update Cmd2Import.Enabled = False End Sub,Private Sub Cmd2Ok_Click()“面试”选项卡中“确定”按钮单击事件的代码 rst2.Fields(综合评分) = (rst2.Fields(初选评分) + rst2.Fields(外表形象) + rst2.Fields(领悟反应能力) / 3 If rst2.Fields(综合评分) = 6 Then rst2.Fields(录用情况) = 通过 Else rst2.Fields(录用情况) = 未通过 End If rst2.Update rst2.Sort = 应聘人编号 rst2.M

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

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

16、.MoveLast End 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 面试表, cn Set DataGrid3.DataSource = rst2 ElseIf SSTab1.Tab

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

18、=sa;pwd=sa cn.CursorLocation = adUseClient rst.LockType = adLockPessimistic Combo1.AddItem 应聘人编号 Combo1.AddItem 初选状态 End Sub,Private Sub cmdquery_Click() “查询”代码 Dim s As String s = select * from 初选表 where & Combo1.Text & like & Text1 & % rst.Open s, cn Set DataGrid1.DataSource = rst End Sub Private Sub cmdexit_Click() “返回”代码 Unload Me End Sub,5)报表的设计,在数据环境设计器中添加一个连接“招聘管理”,连接数据源名为zhpgl。然后添加三个命令:“初选通过名单”、“面试通过名单”和“录用名单”。 用于设置“初选通过名单”命令对象的SQL语句如下: SELECT 初选表.应聘人编号,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论