您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页3 系统结构图

3 系统结构图

来源:筏尚旅游网
3 系统结构图

登录认证用户管理课程安排查询课程库管理课程安排课程信息库用户信息库启动系统班级课表查询教师课表课程安排库成绩库管理班级设置库班级成绩分析学生成绩查询 学生信息库

考试成绩库班级课表成绩单学生成绩单

2 系统主窗体的创建

1)、创建工程文件

启动Visual Basic 6.0,新建一个工程文件,为工程添加必要的引用对象和部件库。单击【工程】→【引用】菜单项,打开“引用”对话框,在“可用引用”列表框中勾选“Microsoft ActiveX Data Objects 2.5 Library”前面的方框,然后单击【确定】按钮,这样在工程中就可以使用ADO对象库了。各台机器上的配置可能略有不同,如果没有2.5版本对象库,也可以选择版本稍低的对象库。引用对话框界面如下图所示,其中前4项是系统创建工程时自动添加的。

系统中需要使用表格来显示数据,为此需要给工程添加表格部件。单击【工程】→【部件】菜单项,打开“部件”对话框,在“控件”选项卡的列表框中勾选“Microsoft DataGrid Control 6.0 (OLEDB)”前面的方框,然后单击【确定】按钮,相应的控件就会被添加到工具箱上。控件对话框和添加完成以后的工具箱窗口如图a、b所示。本章用到的数据表格控件和上一章的表格控件不同,请体会两者的区别。 保存工程,将窗体文件命名为Main,将工程文件命名为教学管理系统。数据库文件最好保存在相同的文件夹下。

DataGrid 2)、主窗体的界面设计

为操作方便,采用单文档界面(SDI)。打开主窗体(文件名为Main),设置窗体的部分属性。

属性名 名称 Caption BackColor WindowState

单击【工具】→【菜单编辑器】菜单项,打开菜单编辑器设计窗体的主菜单。为每个菜单项取一个比较有意义的名称。 菜单项结构 课程管理(&C) 课程库管理(&M) 课程安排(&A) 班级课表(&T) 成绩管理(&S) 成绩库管理(&M) - 菜单项名称 mntCourse mntCourseMaint mntCourseArrange mntCourseClass mntScore mntScoreManage mntScoreSP 说 明 一级菜单 二级菜单项 二级菜单项 二级菜单项 二级菜单项 一级菜单 二级菜单项 二级菜单项,分隔线 二级菜单项 二级菜单项 一级菜单 属性值 Main 课程管理系统 &H8000000C& 2 - Maximized 说 明 主窗体的名称 主窗体标题 主窗体背景颜色 主窗体启动后最大化 课程安排查询(&Q) mntCourseQeury 学生成绩查询(&Q) mntScoreStudent 班级成绩分析(&A) mntScoreClass 系统维护(&M) mntSystem 用户管理(&U) - 关于(&A) - 退出系统(&Q) mntSysUsers mntSysSP1 mntSysAbout mntSysSP2 mntSysQuit 二级菜单项 二级菜单项,分隔线 二级菜单项 二级菜单项,分隔线 二级菜单项 3)、部分程序的实现

主窗体中各菜单项的功能在后面介绍,这里先实现退出功能,单击主窗体的“退出系统”菜单项,系统自动生成相应事件的过程框架,并切换到代码窗口,添加代码,完整的过程事件代码如下。 Private Sub mntSysQuit_Click() End End Sub

为了提高系统的安全性,用户必须通过登录认证才能使用本系统。程序运行后首先显示的是登录窗体,用户输入正确的用户名和口令才能启动主窗体。为了实现这个功能,一种可选方案是将登录窗体设为启动模块,另一种方案是将启动模块设置为Main过程,在main过程中显示登录模块进行登录认证,根据认证结果确定是否显示主窗体。本章采用第二种方案。

单击【工程】→【添加模块】,为工程添加一个新模块,将“模块名称”属性设置为Main,并保存Main.bas。

5 课程管理模块

课程管理模块实现课程信息的输入、浏览、修改、删除等功能。 本节内容包括如下几个方面:

模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

课程信息保存在Course数据表中,通过ADO的Recordset对象从数据表中取出记录,并通过DataGrid表格将数据显示在数据表上,实现数据的浏览。由于是单表操作,可以通过Recordset对象的AddNew、Delete、Update等方法可以实现添加、删除和修改功能。 二、窗体的设计

单击【工程】→【添加窗体】,给工程添加一个新窗体,窗体的主要属性设置如下表所示: 将窗体保存为CourseManage.frm。 属性名 名称 ge Caption BorderStyle 课程管理 1 - Fixed Single 窗体标题 窗体为固定边界,禁止用户改变属性值 frmCourseMana说 明 窗体名称 大小 StartUpPosition 三、模块用户界面的设计

在窗体上添加若干标签、文本框、按钮、组合框,并添加一个日期选择框、一个数据表格控件、两个数据控件。 窗体布局如下图所示:

其中dtpBeginDate是日期选择框。数据表格dbgClass的设置可以参考“院系设置模块”中对dbgDepart的操作。

dgCourse cmdDeletecmdLastcmdModify

cmdNextcmdAdd

cmdPreviouscmdSave

cmdFirstcmdQuit

txtCourseID txtCourseNametxtDesc txtCredit txtPeriodtxtTeacher

三、模块用户界面的设计

4个导航按钮(cmdFirst、cmdPrevious、cmdNext、cmdLast)的字体比较特殊,采用Webdings字体在按钮上显示四种箭头图案。dgDepart是数据表格控件(DataGrid),该控件在工具箱窗口的图标为,如果看不到该控件,请前面所述相关操作。在该控件上单击右键,选择【属性】菜单项,打开属性对话框。在“通用”选项卡中设置表格标题,去掉AllowUpdate选项,如图13-12所示。去掉AllowUpdate选项的目的是禁止用户通过数据表格直接修改数据,从而通过程序更好地控制数据的有效性和数据库的完整性,其他各项的设置可以根据需要设置。和上一章不同,本章不需要将表格和数据控件绑定,表格中的数据显示用代码控制。 四、模块功能的实现

窗体卸载过程

在窗体的卸载过程中完成以下功能: 断开数据表格和数据集的绑定; 关闭打开的数据集;

断开模块和数据库的连接; 释放ADO对象实例。 代码如下:

1 - 所有者中心 窗体启动后居于主窗体

Private Sub Form_Unload(Cancel As Integer) Set dgCourse.DataSource = Nothing rs.Close Conn.Close Set rs = Nothing Set Conn = Nothing End Sub

数据浏览功能的实现

通过四个导航按钮实现对数据库的浏览。代码如下: Private Sub cmdFirst_Click()

If rs.RecordCount > 0 Then rs.MoveFirst End Sub

Private Sub cmdLast_Click()

If rs.RecordCount > 0 Then rs.MoveLast End Sub

Private Sub cmdNext_Click()

If Not rs.EOF Then rs.MoveNext

If rs.EOF And rs.RecordCount > 0 Then rs.MoveLast End If End Sub

Private Sub cmdPrevious_Click()

If Not rs.BOF Then rs.MovePrevious If rs.BOF And rs.RecordCount > 0 Then rs.MoveFirst End If End Sub

记录添加功能的实现

界面上的文本框没有和数据集绑定,在里面输入数据并不影响数据集里面的记录。当单击【添加】按钮时,利用Recordset对象的AddNew方法将文本框中的数据加到数据集中。添加前先对数据进行规格化处理,然后验证数据的合法性,并利用另一个Recordset对象检查课程编号的合法性。使用AddNew方法添加记录后,数据只保存在缓冲区中,需要调用UpdateBatch(或者Update)方法将数据写到数据库中。 注意,rsValid使用完毕后应该将其释放。

数据修改/保存功能的实现

当用户按下【修改】按钮时,请数据集中的字段信息取出放到文本框中供用户修改,使【保存】按钮能够被用户单击,以保存修改后的数据。Credit和Period是数值型字段,需要进行类型转化。

【保存】按钮功能的实现和【添加】按钮比较相似,不同的是如果课程编号被修改,为了保持数据库的完整性,其他数据表(包括选课数据表、成绩数据表)中的课程编号也应作相应的修改,也就是数据的“级联更新”。级联更新通过ADO的Command对象来实现,利用该对象执行一个更新数据的SQL语句实现对表中多条数据的一次性更新。使用Command对象时,注意Command对象属性的设置。

当用户单击导航按钮移动数据集指针后,为了防止单击【保存】按钮错误修改数据,应禁止

【保存】按钮。在代码编写窗口对象组合框中选择“rs”,从事件组合框中选择“MoveComplete”事件。

5.2 课程安排模块

课程安排模块实现各班级对课程的选择、上课教室的、上课时间的安排以及管理。 本节内容包括如下几个方面:

模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

可以列出所有班级和课程供用户选择安排,已经安排好的课程用表格显示出来供用户修改、删除。数据的显示通过ADO的Recordset对象实现,数据的添加、修改、删除通过ADO的Command对象完成。

二、窗体的设计

在工程中新建一个窗体,将窗体保存为FormCourseArrange.frm。 窗体的主要属性设置如下表所示: 属性名 名称 Caption BorderStyle StartUpPosition

三、模块用户界面的设计

在窗体上添加控件,各控件的属性参照前面各节,不再赘述(其中cmbClass的Style属性

设置为2 - Dropdown List)

属性值 CourseArrange 课程安排 1 - Fixed Single 1 - 所有者中心 说 明 窗体名称 窗体标题 窗体为固定边界,禁止用户改变大小 窗体启动后居于主窗体

四、模块功能的实现 通用变量定义

通用变量的定义同课程管理模块。在窗体加载时,需要将所有的班级编号填充到班级编号组合框中,将所有课程填充到课程列表框中,并激活班级编号组合框来初始化界面。添加组合框和列表框的操作通过两个自编过程FullClass、FullCourse完成。

FullClass和FullCourse两个过程分别从数据库中取出信息,填充到相应的列表项中。

窗体加载过程中调用组合框cmbClass的Click事件过程,用于初始化界面上的其他控件。 ClassInfo、FullGrid都是自定义过程,ClassInfo显示该班级的有关信息,FullGrid过程将该班级已经安排好的课程显示在表格中。

5.3 课程安排查询模块

课程安排模块实现对各门课程安排情况的查询。 本节内容包括如下几个方面: 模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

为了便于用户的操作,可以用组合框列出所有课程的编号供用户选择,当用户选择课程时,将该课程的基本信息显示出来,便于用户核对及了解课程情况。同时从选课数据表中查询该课程的安排情况,以表格形式直观地显示出来。 二、窗体的设计

在工程中新建一个窗体,将窗体保存为CourseQuery.frm 。 窗体的主要属性设置如下表所示:

属性名 名称 Caption BorderStyle StartUpPosition 属性值 CourseQuery 课程安排查询 1 - Fixed Single 小 1 - 所有者中心 说 明 窗体名称 窗体标题 窗体为固定边界,禁止用户改变大窗体启动后居于主窗体

三、模块用户界面的设计

在窗体上添加控件,各控件的属性(参照前面各节,不再赘述)。最终的窗体布局如下图所

示:

四、模块功能的实现

仿照前面的程序代码,不难实现本模块。这里只简要说明编程思路。 窗体加载时,需要将所有课程的编号填充到组合框中;

为了初始化界面,应在窗体加载过程中调用组合框的Click事件; 组合框被单击时,需要显示该课程的基本信息;

组合框被单击时,还需要将该课程被安排的情况显示在表格中。

具体的编程实现可参考“课程安排”模块。下图是课程安排查询的运行界面:

5.4 班级课表查询模块

课程课表查询模块实现对各班级的课程安排情况的查询 。 本节内容包括如下几个方面:

模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

本模块和“课程安排查询”模块都是查询选课数据表(CourseSelect),不同之处在于本模块是按照班级查询选课课表,而“课程安排查询”模块是按照课程查询。 二、窗体的设计

在工程中新建一个窗体,将窗体保存为CourseClass.frm。 窗体的主要属性设置如下表所示: 属性名 名称 Caption BorderStyle StartUpPosition 属性值 CourseClass 班级课表查询 1 - Fixed Single 1 - 所有者中心 说 明 窗体名称 窗体标题 窗体为固定边界,禁止用户改变大小 窗体启动后居于主窗体

三、模块用户界面的设计

本模块的窗体布局如下图所示:

四、模块功能的实现 具体见附录8

6 考试成绩管理设计

6.1 成绩管理模块

成绩管理模块实现课程考试成绩的输入、修改和删除。 本节内容包括如下几个方面:

模块分析;

窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

为方便用户的使用,将所有课程的课程编号填充到组合框中供用户选择。当用户选择某门课程时,显示该课程的基本信息,同时在列表框中列出选择了该课程的所有班级的编号。用户选中某个班级后,将该班级的基本信息显示出来,便于用户了解情况,同时将该班级中已经录入的该课程的成绩显示出来。 考试成绩录入、修改、删除采用和“课程管理”、“课程安排”模块类似的处理方法。 二、窗体的设计

在工程中新建一个窗体,将窗体保存为ScoreManage.frm,窗体的主要属性设置如下表所示: 属性名 名称 Caption BorderStyle StartUpPosition 属性值 ScoreManage 成绩管理 1 - Fixed Single 1 - 所有者中心 说 明 窗体名称 窗体标题 窗体为固定边界,禁止用户改变大小 窗体启动后居于主窗体

三、模块用户界面的设计

四、模块功能的实现 具体见附录10

6.2 班级成绩分析模块

班级成绩分析模块分析各个班级所安排的各门课程的考试情况,包括课程考试成绩单、参加考试人数、不及格人数、及格率、最高分、最低分、平均分等 。 本节内容包括如下几个方面:

模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。

一、模块功能分析

实现思路

考试成绩单通过ADO的RecordSet对象查询Score数据表得到,考试成绩的分析通过SQL语句利用统计函数得到。 二、窗体的设计

在工程中新建一个窗体,将窗体保存为ScoreClass.frm,窗体的主要属性设置如下表所示: 属性名 名称 Caption BorderStyle StartUpPosition 属性值 ScoreClass 班级成绩分析 1 - Fixed Single 1 - 所有者中心 说 明 窗体名称 窗体标题 窗体为固定边界,禁止用户改变大小 窗体启动后居于主窗体

三、模块用户界面的设计

四、模块功能的实现 具体见附录11

6.3 学生成绩查询模块

学生成绩查询模块显示学生各门课程的考试成绩,统计不及格课程门数以及最高分、最低分和平均分。

本节内容包括如下几个方面:

模块分析; 窗体的创建;

模块用户界面的设计; 模块功能的实现。 一、模块功能分析

实现思路

要查询的学生的学号由用户直接输入,通过SQL语句查询该学生的各门课程的考试信息,考试成绩库中只包含课程编号,需要从课程库中查询该课程的名称、学分、任课老师等信息。 二、窗体的设计

在工程中新建一个窗体,将窗体保存为FormScoreStudent.frm ,窗体的主要属性设置如下表所示: 属性名 Caption BorderStyle BorderStyle StartUpPosition 属性值 学生成绩查询 1 - Fixed Single 1 - Fixed Single 1 - 所有者中心 说 明 窗体标题 窗体为固定边界,禁止用户改变大小 窗体为固定边界,禁止用户改变大小 窗体启动后居于主窗体 三、模块用户界面的设计

四、模块功能的实现 具体见附录12

四 系统的编译和发行

一、系统的编译

所有模块设计完成以后,系统的工程窗口应该如右图所示。单击【运行】→【启动】菜单项(或者按F5功能键),运行程序,输入实验数据,测试系统的功能,如果有任何问题请检查、修改各项设置和程序代码。单击【文件】→【生成教学管理系统.exe】菜单项,Visual Basic编译生成一个可执行文件教学管理系统.exe。

二、系统的运行测试

将教学管理系统.exe和教学管理系统.mdb复制到任意一个文件夹或者其他的机器上,双击教学管理系统.exe,进行运行测试。

五 总结与提高

本章采用ADO方式设计开发了一套课程管理系统。和数据控件方式相比,ADO方式的编

程难度更大,但ADO方式灵活性更高。在实际的开发中,ADO方式比数据控件方式的应用要广泛得多。

在系统开发中,在实现系统功能的前提下,开发者应尽可能使系统便于用户的操作,对某些细节问题进行适当的处理。

ADO对象库中,部分对象的功能重叠,例如,Recordset对象、Command对象、Connection对象都可以实现数据的添加、修改和删除,但不同对象处理的相同功能的方式是不一样的,以添加数据为例,使用Command对象效率更高,而使用Recordset对象操作更加方便一些。在学习ADO编程时应仔细体会它们的区别,以便更好地掌握它们 。

六 参考文献

[1]萨师煊、王珊.《数据库系统概论》.北京高等教育出版社.2000.2 [2]李政.《通用学生成绩管理系统的设计与实现》.计算机系统应用.1994.1 [3]陈禹、方蔓琪.主编《软件开发工具》.经济科学出版社 1999.5

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务