3 系统结构图.doc_第1页
3 系统结构图.doc_第2页
3 系统结构图.doc_第3页
3 系统结构图.doc_第4页
3 系统结构图.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

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,将工程文件命名为教学管理系统。数据库文件最好保存在相同的文件夹下。 2)、主窗体的界面设计 为操作方便,采用单文档界面(SDI)。打开主窗体(文件名为Main),设置窗体的部分属性。属性名属性值说 明名称Main主窗体的名称Caption课程管理系统主窗体标题BackColor&H8000000C&主窗体背景颜色WindowState2 - Maximized主窗体启动后最大化单击【工具】【菜单编辑器】菜单项,打开菜单编辑器设计窗体的主菜单。为每个菜单项取一个比较有意义的名称。菜单项结构菜单项名称说 明课程管理(&C)mntCourse一级菜单课程库管理(&M)mntCourseMaint二级菜单项课程安排(&A)mntCourseArrange二级菜单项课程安排查询(&Q)mntCourseQeury二级菜单项班级课表(&T)mntCourseClass二级菜单项成绩管理(&S)mntScore一级菜单成绩库管理(&M)mntScoreManage二级菜单项-mntScoreSP二级菜单项,分隔线学生成绩查询(&Q)mntScoreStudent二级菜单项班级成绩分析(&A)mntScoreClass二级菜单项系统维护(&M)mntSystem一级菜单用户管理(&U)mntSysUsers二级菜单项-mntSysSP1二级菜单项,分隔线关于(&A)mntSysAbout二级菜单项-mntSysSP2二级菜单项,分隔线退出系统(&Q)mntSysQuit二级菜单项3)、部分程序的实现 主窗体中各菜单项的功能在后面介绍,这里先实现退出功能,单击主窗体的“退出系统”菜单项,系统自动生成相应事件的过程框架,并切换到代码窗口,添加代码,完整的过程事件代码如下。Private Sub mntSysQuit_Click() EndEnd Sub为了提高系统的安全性,用户必须通过登录认证才能使用本系统。程序运行后首先显示的是登录窗体,用户输入正确的用户名和口令才能启动主窗体。为了实现这个功能,一种可选方案是将登录窗体设为启动模块,另一种方案是将启动模块设置为Main过程,在main过程中显示登录模块进行登录认证,根据认证结果确定是否显示主窗体。本章采用第二种方案。单击【工程】【添加模块】,为工程添加一个新模块,将“模块名称”属性设置为Main,并保存Main.bas。 5 课程管理模块课程管理模块实现课程信息的输入、浏览、修改、删除等功能。 本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路课程信息保存在Course数据表中,通过ADO的Recordset对象从数据表中取出记录,并通过DataGrid表格将数据显示在数据表上,实现数据的浏览。由于是单表操作,可以通过Recordset对象的AddNew、Delete、Update等方法可以实现添加、删除和修改功能。 二、窗体的设计 单击【工程】【添加窗体】,给工程添加一个新窗体,窗体的主要属性设置如下表所示:将窗体保存为CourseManage.frm。 属性名属性值说 明名称frmCourseManage窗体名称Caption课程管理窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计在窗体上添加若干标签、文本框、按钮、组合框,并添加一个日期选择框、一个数据表格控件、两个数据控件。 窗体布局如下图所示:其中dtpBeginDate是日期选择框。数据表格dbgClass的设置可以参考“院系设置模块”中对dbgDepart的操作。 三、模块用户界面的设计4个导航按钮(cmdFirst、cmdPrevious、cmdNext、cmdLast)的字体比较特殊,采用Webdings字体在按钮上显示四种箭头图案。dgDepart是数据表格控件(DataGrid),该控件在工具箱窗口的图标为,如果看不到该控件,请前面所述相关操作。在该控件上单击右键,选择【属性】菜单项,打开属性对话框。在“通用”选项卡中设置表格标题,去掉AllowUpdate选项,如图13-12所示。去掉AllowUpdate选项的目的是禁止用户通过数据表格直接修改数据,从而通过程序更好地控制数据的有效性和数据库的完整性,其他各项的设置可以根据需要设置。和上一章不同,本章不需要将表格和数据控件绑定,表格中的数据显示用代码控制。 四、模块功能的实现 窗体卸载过程在窗体的卸载过程中完成以下功能:断开数据表格和数据集的绑定; 关闭打开的数据集; 断开模块和数据库的连接; 释放ADO对象实例。代码如下:Private Sub Form_Unload(Cancel As Integer)Set dgCourse.DataSource = Nothingrs.CloseConn.CloseSet rs = NothingSet Conn = NothingEnd Sub数据浏览功能的实现通过四个导航按钮实现对数据库的浏览。代码如下:Private Sub cmdFirst_Click()If rs.RecordCount 0 Then rs.MoveFirstEnd SubPrivate Sub cmdLast_Click()If rs.RecordCount 0 Then rs.MoveLastEnd SubPrivate Sub cmdNext_Click()If Not rs.EOF Then rs.MoveNextIf rs.EOF And rs.RecordCount 0 Thenrs.MoveLastEnd IfEnd SubPrivate Sub cmdPrevious_Click()If Not rs.BOF Then rs.MovePreviousIf rs.BOF And rs.RecordCount 0 Thenrs.MoveFirstEnd IfEnd 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。窗体的主要属性设置如下表所示: 属性名属性值说 明名称CourseArrange窗体名称Caption课程安排窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计在窗体上添加控件,各控件的属性参照前面各节,不再赘述(其中cmbClass的Style属性设置为2 - Dropdown List) 四、模块功能的实现 通用变量定义通用变量的定义同课程管理模块。在窗体加载时,需要将所有的班级编号填充到班级编号组合框中,将所有课程填充到课程列表框中,并激活班级编号组合框来初始化界面。添加组合框和列表框的操作通过两个自编过程FullClass、FullCourse完成。FullClass和FullCourse两个过程分别从数据库中取出信息,填充到相应的列表项中。窗体加载过程中调用组合框cmbClass的Click事件过程,用于初始化界面上的其他控件。ClassInfo、FullGrid都是自定义过程,ClassInfo显示该班级的有关信息,FullGrid过程将该班级已经安排好的课程显示在表格中。 5.3 课程安排查询模块课程安排模块实现对各门课程安排情况的查询。 本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路为了便于用户的操作,可以用组合框列出所有课程的编号供用户选择,当用户选择课程时,将该课程的基本信息显示出来,便于用户核对及了解课程情况。同时从选课数据表中查询该课程的安排情况,以表格形式直观地显示出来。 二、窗体的设计 在工程中新建一个窗体,将窗体保存为CourseQuery.frm 。窗体的主要属性设置如下表所示: 属性名属性值说 明名称CourseQuery窗体名称Caption课程安排查询窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计在窗体上添加控件,各控件的属性(参照前面各节,不再赘述)。最终的窗体布局如下图所示: 四、模块功能的实现 仿照前面的程序代码,不难实现本模块。这里只简要说明编程思路。 窗体加载时,需要将所有课程的编号填充到组合框中;为了初始化界面,应在窗体加载过程中调用组合框的Click事件;组合框被单击时,需要显示该课程的基本信息;组合框被单击时,还需要将该课程被安排的情况显示在表格中。具体的编程实现可参考“课程安排”模块。下图是课程安排查询的运行界面: 5.4 班级课表查询模块课程课表查询模块实现对各班级的课程安排情况的查询 。 本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路本模块和“课程安排查询”模块都是查询选课数据表(CourseSelect),不同之处在于本模块是按照班级查询选课课表,而“课程安排查询”模块是按照课程查询。 二、窗体的设计 在工程中新建一个窗体,将窗体保存为CourseClass.frm。窗体的主要属性设置如下表所示: 属性名属性值说 明名称CourseClass窗体名称Caption班级课表查询窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计本模块的窗体布局如下图所示: 四、模块功能的实现 具体见附录86 考试成绩管理设计6.1 成绩管理模块成绩管理模块实现课程考试成绩的输入、修改和删除。 本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路为方便用户的使用,将所有课程的课程编号填充到组合框中供用户选择。当用户选择某门课程时,显示该课程的基本信息,同时在列表框中列出选择了该课程的所有班级的编号。用户选中某个班级后,将该班级的基本信息显示出来,便于用户了解情况,同时将该班级中已经录入的该课程的成绩显示出来。 考试成绩录入、修改、删除采用和“课程管理”、“课程安排”模块类似的处理方法。 二、窗体的设计 在工程中新建一个窗体,将窗体保存为ScoreManage.frm,窗体的主要属性设置如下表所示:属性名属性值说 明名称ScoreManage窗体名称Caption成绩管理窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计四、模块功能的实现 具体见附录106.2 班级成绩分析模块班级成绩分析模块分析各个班级所安排的各门课程的考试情况,包括课程考试成绩单、参加考试人数、不及格人数、及格率、最高分、最低分、平均分等 。 本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路考试成绩单通过ADO的RecordSet对象查询Score数据表得到,考试成绩的分析通过SQL语句利用统计函数得到。 二、窗体的设计 在工程中新建一个窗体,将窗体保存为ScoreClass.frm,窗体的主要属性设置如下表所示:属性名属性值说 明名称ScoreClass窗体名称Caption班级成绩分析窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小StartUpPosition1 - 所有者中心窗体启动后居于主窗体中央三、模块用户界面的设计四、模块功能的实现 具体见附录116.3 学生成绩查询模块学生成绩查询模块显示学生各门课程的考试成绩,统计不及格课程门数以及最高分、最低分和平均分。本节内容包括如下几个方面: 模块分析;窗体的创建;模块用户界面的设计;模块功能的实现。一、模块功能分析实现思路要查询的学生的学号由用户直接输入,通过SQL语句查询该学生的各门课程的考试信息,考试成绩库中只包含课程编号,需要从课程库中查询该课程的名称、学分、任课老师等信息。 二、窗体的设计 在工程中新建一个窗体,将窗体保存为FormScoreStudent.frm ,窗体的主要属性设置如下表所示:属性名属性值说 明Caption学生成绩查询窗体标题BorderStyle1 - Fixed Single窗体为固定边界,禁止用户改变大小BorderStyle1 - Fixed Single窗

温馨提示

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

评论

0/150

提交评论