1 / 200

数据库应用程序设计方法

数据库应用程序设计方法. 第 7 章. 7.1 成绩查询程序设计 7.1.1 任务概述 要编写一个实用的数据库程序,必须系统地学习过数据库原理的知识,并首先设计出符合用户业务需求的数据库体系,然后才能利用某种语言,开发出针对这个数据库的交互程序:数据库应用程序。. 下面以一个简化的数据库设计为例: 1. 进行数据库设计 建立一个名为 “ 成绩 ” 的数据库,其中包含三张数据表,即学习成绩表、学生情况表、课程情况表。. 创建数据库. 创建表结构. 2. 程序的主要功能

Download Presentation

数据库应用程序设计方法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库应用程序设计方法 第7章

  2. 7.1 成绩查询程序设计 7.1.1 任务概述 要编写一个实用的数据库程序,必须系统地学习过数据库原理的知识,并首先设计出符合用户业务需求的数据库体系,然后才能利用某种语言,开发出针对这个数据库的交互程序:数据库应用程序。

  3. 下面以一个简化的数据库设计为例: 1.进行数据库设计 建立一个名为“成绩”的数据库,其中包含三张数据表,即学习成绩表、学生情况表、课程情况表。 创建数据库

  4. 创建表结构

  5. 2. 程序的主要功能 利用SQL语句完成对学生成绩表的插入、修改、删除和查询操作。比如: (1)插入记录: Insert Into 学生成绩表(学号,课程号,成绩) Values(‘001’,’001’,85) (2)删除记录 Delete From 学生成绩表 Where 学号=‘001’ And 课程号=‘001’ (3)修改记录 Update 学生成绩表 set 成绩 =90 Where 学号=‘001’ And 课程号=‘001’ (4)按学号查询 Select * From 学生成绩表 Where 学号=‘001’

  6. 在完成用户界面设计的基础上,只要将上述SQL语句“嵌入”到VB程序中,即可完成成绩查询程序的开发,这种范式通常称为嵌入式开发.在完成用户界面设计的基础上,只要将上述SQL语句“嵌入”到VB程序中,即可完成成绩查询程序的开发,这种范式通常称为嵌入式开发.

  7. 7.1.2 界面设计 1.创建工程 新建一“标准EXE”工程.工程名为“成绩查询”. 2.创建主窗体(frmMain) 设计菜单: 增加 删除 修改 查询 退出 增加学生记录 删除学生记录 增加课程记录 删除课程记录 增加成绩 删除成绩记录 增加用户 删除用户

  8. 3.创建新增学生记录窗体(frmAddStudent)

  9. 4.创建新增课程记录窗体(frmAddCourse)

  10. 5.创建新增成绩记录窗体(frmAdd)

  11. 6.创建新增用户记录窗体(frmAdd)

  12. 7. 创建修改记录窗体( frmUpdate)

  13. 8.创建删除学生记录窗体(frmDelete)

  14. 9.创建删除课程记录窗体(frmDelete)

  15. 10.创建删除成绩记录窗体(frmDelete)

  16. 11.创建删除用户窗体(frmDelete)

  17. 12.创建查询记录窗体(frmQuery)

  18. 13.创建身份验证窗体

  19. 7.1.3 代码设计 1. 连接数据库代码 步骤: (1)通过“工程—引用”菜单添加对象库: Microsoft Activex Data Objects 2.7 Library (Ado数据对象)。 (2)通过工程菜单添加一个模块(Module), 并设计以下代码。 (3)通过“工程—工程1属性”菜单,将窗体frmText过程设计设置为启动对象。

  20. 添加模块代码: '声明全局对象变量ABOcn,用于创建于数据库的连接 Public ADDcn As Connection Public Sub main() '定义数据库连接字符串 Dim strSQLServer As String '用于连接SQL Server数据库,其中: 'Server为服务器名称 'User ID为登录账号 'Password为登录口令 'Database为具体的数据库名

  21. strSQLServer = strSQLServer = "Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=成绩;Data Source=lg" '如果还没有建立于数据库的连接,则用以下代码创建. If ADDcn Is Nothing Then Set ADDcn = New Connection AdDDcn.Open strSQLServer End If End Sub

  22. 完成本项工作后,就创建了一个全局变量ADDcn,但它是一个特殊的变量,其数据类型是数据连接对象(Connection对象)。可以把ADDcn理解成是一个虚拟的数据库。或者称为VB程序中的逻辑数据库,通过它可以非常方便地访问其中的数据。换句话说,ADDcn是VB程序的后台数据库交互的通道。完成本项工作后,就创建了一个全局变量ADDcn,但它是一个特殊的变量,其数据类型是数据连接对象(Connection对象)。可以把ADDcn理解成是一个虚拟的数据库。或者称为VB程序中的逻辑数据库,通过它可以非常方便地访问其中的数据。换句话说,ADDcn是VB程序的后台数据库交互的通道。

  23. 2.设置窗体间的调用关系

  24. 2.设置窗体间的调用关系 ’调用增加课程窗体 Private Sub AddCourse_Click(Index As Integer) frmAddCourse.Show End Sub ’调用增加成绩窗体 Private Sub AddGrade_Click(Index As Integer) FrmAdd.Show End Sub ’调用增加学生窗体 Private Sub AddStudent_Click(Index As Integer) FrmAddStudent.Show End Sub

  25. 2.设置窗体间的调用关系 ’调用增加用户窗体 Private Sub AddUser_Click() FrmAddUser.Show End Sub ’调用删除课程窗体 Private Sub DeleteCourse_Click() frmDeleteCourse.Show End Sub ’调用删除成绩窗体 Private Sub DeleteGrade_Click() frmDelete.Show End Sub

  26. 2.设置窗体间的调用关系 ’调用删除学生窗体 Private Sub DeleteStudent_Click() frmDeleteStudent.Show End Sub ’调用删除用户窗体 Private Sub DeleteUser_Click() frmDeleteUser.Show End Sub ’调用成绩查询窗体 Private Sub Query_Click() frmQuery.Show End Sub

  27. 2.设置窗体间的调用关系 ’调用修改成绩窗体 Private Sub Update_Click() FrmUpdate.Show End Sub 调用退出程序 Private Sub Exit_Click() End End Sub

  28. 3.frmAddStudent窗体的代码设计:

  29. 3.frmAddStusent窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() Main '声明一个记录集对象 Dim ADOrs As New Recordset '初始化文本框控件 Text1.Text = "" Text2.Text = "" End Sub

  30. 3.frmAddStusent窗体的代码设计: (2)’Command1_Click()(”确定”按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String '声明一个记录集对象 Dim ADOrs As New Recordset '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn If Text1.Text = "" Then MsgBox "未输入学号,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If

  31. 3.frmAddStusent窗体的代码设计: ’Command1_Click()(”确定”按钮)事件代码 If Text2.Text = "" Then MsgBox “未输入姓名,请重新输入数据!”, vbCritical + vbOKOnly Exit Sub End If '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生情况表" strSQL = strSQL & " Where 学号='" + Text1.Text + " '" strSQL = strSQL & " and 姓名='" + Text2.Text + "'" ADOrs.Open strSQL

  32. 3.frmAddStusent窗体的代码设计: ’Command1_Click()(”确定”按钮)事件代码 '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If

  33. 3.frmAddStusent窗体的代码设计: ’Command1_Click()(”确定”按钮)事件代码 '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" '执行Insert语句 ADOcn.Execute strSQL MsgBox "已成功添加新记录", vbQuestion + vbOKOnly End Sub

  34. 3.frmAddStusent窗体的代码设计: (3)’Command2_Click()(”返回”按钮)事件代码 Private Sub Command2_Click() Unload Me frmMain.Show End Sub

  35. 4.frmAddCourse窗体的代码设计:

  36. frmAddCourse窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() Main '声明一个记录集对象 Dim ADOrs As New Recordset '初始化文本框控件 Text1.Text = "" Text2.Text = "" End Sub

  37. frmAddCourse窗体的代码设计: (1)在Load事件中代码 Dim strSQL As String '声明一个记录集对象 Dim ADOrs As New Recordset '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn If Text1.Text = "" Then MsgBox “未输入课程号,请重新输入数据!”, vbCritical + vbOKOnly Exit Sub End If

  38. frmAddCourse窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: If Text2.Text = "" Then MsgBox "未输入课程名,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If '首先查询课程情况表中是否存在关键字相同的记录 strSQL = "select * from 课程情况表" strSQL=strSQL &" Where 课程号='" + Text1.Text + " '" strSQL=strSQL & " and 课程名='" + Text2.Text + "'" ADOrs.Open strSQL

  39. (1)在Load事件代码 '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 课程情况表" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" '执行Insert语句 ADOcn.Execute strSQL MsgBox "已成功添加新记录", vbQuestion + vbOKOnly End Sub

  40. frmAddCourse窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 课程情况表" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" '执行Insert语句 ADOcn.Execute strSQL MsgBox "已成功添加新记录", vbQuestion + vbOKOnly End Sub Private Sub Command2_Click() Unload Me frmMain.Show End Sub

  41. (2)双击“确认”按钮后,添加如下代码: Private Sub Command1_Click() Dim strSQL As String '声明一个记录集对象 Dim ADOrs As New Recordset '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生情况表" strSQL = strSQL & " Where 学号='" + Text1.Text + " '" strSQL = strSQL & " and 姓名='" + Text2.Text + "'" ADOrs.Open strSQL

  42. '如果关键字重复,则退出 If Not ADOrs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")" '执行Insert语句 ADOcn.Execute strSQL MsgBox "已成功添加新记录", vbQuestion + vbOKOnly End Sub

  43. 双击“返回”按钮后,添加如下代码: Private Sub Command2_Click() Unload Me frmMain.Show End Sub

  44. 5.frmAdd(增加成绩)窗体的代码设计:

  45. 5.frmAdd(增加成绩)窗体的代码设计: (1)在Load事件中,进行初始化工作,代码如下: Private Sub Form_Load() Main '声明一个记录集对象 Dim ADOrs As New Recordset Dim ADOrs1 As New Recordset '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn ADOrs1.ActiveConnection = ADOcn '对Combo1组合框进行初始化 ADOrs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not ADOrs.EOF '添加"学号"字段值 Combo1.AddItem Trim(ADOrs.Fields("学号")) '取下一条记录 ADOrs.MoveNext Loop

  46. 5.frmAdd(增加成绩)窗体的代码设计: (1)Load事件代码 '对Combo2组合框进行初始化 ADOrs.Close ADOrs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not ADOrs.EOF '添加"课程号"字段值 Combo2.AddItem Trim(ADOrs.Fields("课程号")) '取下一条记录 ADOrs.MoveNext Loop ADOrs.Close '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" End Sub

  47. 5.frmAdd(增加成绩)窗体的代码设计: (2) Command3_Click 事件代码 Private Sub Command3_Click() '声明一个记录集对象 Dim ADOrs As New Recordset '与ADOcn连接对象关联 ’如果输入了学号,则把姓名显示在Text1.Text ADOrs.ActiveConnection = ADOcn strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '" ADOrs.Open strSQL Text1.Text = ADOrs.Fields("姓名")

  48. 5.frmAdd(增加成绩)窗体的代码设计: (2) Command3_Click 事件代码 ‘如果输入了课程号,则把课程名显示在Text2.text '声明一个记录集对象 Dim ADOrs1 As New Recordset '与ADOcn连接对象关联 ADOrs1.ActiveConnection = ADOcn strSQL = "select * from 课程情况表" strSQL=strSQL+" Where 课程号='" + Combo2.Text + " '" ADOrs1.Open strSQL Text2.Text = ADOrs1.Fields("课程名") End Sub

  49. 5.frmAdd(增加成绩)窗体的代码设计: (3) Command1_Click(确认) 事件代码 Private Sub Command1_Click() Dim strSQL As String '声明一个记录集对象 Dim ADOrs As New Recordset '与ADOcn连接对象关联 ADOrs.ActiveConnection = ADOcn If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "输入数据不全,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If

More Related