您的当前位置:首页学生信息管理系统

学生信息管理系统

2022-08-24 来源:乌哈旅游


学生信息管理系统

摘 要

本系统主要论述了学生信息管理系统的日常工作,了解学生的基本情况,包

括学号、班级、学生姓名、出生日期、性别、家庭住址、电话、照片等。通过学生管理信息系统,你可以对在校的每一个学生进行简单快速的查找及登记学生信息,并通过打印报表输出你所要查找的学生信息。

该系统主要应用于各大院校,方便有效的管理和掌握每个学生的基本情况,本系统主要通过信息查看、浏览、查找、学生信息管理和报表这五个功能来实现对学生信息的管理。

通过这几个功能可使教务管理人员方便的管理所有学生信息。教务管理人员通过本系统可以查看某个系、某个班级所有学生信息,对学生信息进行模糊和精确查找。教务管理人员还可以对学生信息进行变动管理,对学生信息进行添加、编辑和删除等操作。教务管理人员也可以对学生的基本信息生成报表并打印。十分方便。而学生用户可以输入自己的用户名和密码,对自己的信息进行浏览。

本系统是作用于计算机,教务管理人员只要在计算机上对所有学生的基本情况进行相应的管理,而不需要花费精力去投入到下层去调查。这不仅节省了时间,也提高了工作效率,简单便捷,可靠实用,安全性高。

关键词:学生信息管理系统,教务管理人员,学生用户,变动管理

I

STUDENT INFORMATION MANAGEMENT SYSTEM

Abstract

The system focuses on the student information management system for day-to-day work, students learn the basic situation, including the school, classes, students name, date of birth, gender, home address, telephone, photographs and so on. Students through the management information system, you can be in every school students looking for quick and simple registration of students, and through print output statements you want to find information on the students.

The system is mainly used in the various tertiary institutions to facilitate the effective management and every student to master the basic situation of the system through the main view, browse, find, students and information management functions of the five statements to the students to achieve information management .

The adoption of these features will enable the Senate to facilitate the management of management information for all students. Senate passage of this system, managers can see a line, a class for all students, the students accurate information and fuzzy look. Academic managers can also change the management of student information, student information to add, edit and delete operations, and so on. Academic managers can be on the students to generate basic information and print statements. Very convenient. Students and users can enter their user name and password to view their own information.

The system is the role of computers in the Senate as long as managers on the computer for all students in the basic situation of the management, without having to spend energy to go lower into the investigation. This not only saves time and improves efficiency, simple and convenient, reliable and practical, safe.

KEYWORDS: Student Information Management System, educational administration,

student users, change management

II

目 录

中文摘要 ................................................. I 英文摘要 ................................................ II 1序 言 ................................................. 1 2系统概述 ............................................... 2 2.1需求分析 .......................................... 2 2.2可行性分析 ........................................ 2 2.3 系统功能描述 ...................................... 2 2.4系统结构图 ........................................ 4 3 系统总体设计 ........................................... 5 3.1 系统模块 .......................................... 5 3.2系统流程 .......................................... 7 3.3数据库设计 ........................................ 9 4系统的具体设计与实现 ................................... 14 4.1启动窗体 ......................................... 14 4.2 登录窗体 ......................................... 16 4.3 MDI主窗体 ....................................... 19 4.4信息查看窗体 ...................................... 21 4.5 学生信息管理窗体 ................................. 22 4.6 自定义查询窗体 ................................... 30

I

4.7报表设计 ......................................... 31 致 谢 ................................................. 33 参考文献 ................................................ 34

II

1序 言

本系统是一个运行于Windows 2000/XP 环境下的可视化数据库管理系统。它继承了以往的手工方式管理学生信息的管理工作的所有功能,并进一步强化了计算机信息管理的功能,使它的操作不仅简便、功能更强大、而且采用计算机进行管理使操作更方便快捷。

本系统采用的是Visual Basic,是利用Visual Basic开发的一个运用计算机对学生进行管理的系统。通过该系统可以实现各大院校的学生信息管理,免除了由于学生人数过多而造成数据的存储及检索复杂化等问题 ,使学校的管理体制更具规范化。利用可视化的设计工具和向导,用户可以快速创建窗体、查询和打印报表。

本系统具有很强的操作性和实用性,并具有以下鲜明特点:

叙述清晰,图文并茂。系统从系统分析、数据库和功能模块的实现,直至系统编译发布都有清晰的说明,并将重点内容用图片和提示列出,便于读者操作。

切合实际,实用方便。基于社会不断发展,人们的生活要求越来越高,计算机逐渐成为家庭的一个小成员,起着重要的作用。在工作中更是得力的帮手,极其方便,对于企业管理来说,系统利用计算机操作省时、省力、效率高而且方便。

用VB,提供各种各样的可视化控件、数据访问对象,使用他们可以很方便的访问当前以及过去的数据文件、数据库系统。

由于本人水平有限,时间紧张,疏露之处在所难免,敬请读者指正。

1

2系统概述

2.1需求分析

根据高校学生信息管理的实际要求,结合学生信息管理的实际流程,“学生信息管理系统“需要满足以下需求。

⑴ 掌握全校每个学生的基本情况。其中包括学号、班级、学生姓名、出生

日期、性别、家庭住址、电话、简历、照片等。

⑵ 基于权限的管理。本系统可同时提供给教务管理人员或学生使用。但对于学生类用户而言,只能查看其本人信息。而对于教务人员而用户而言,其可管理所有的学生信息。

⑶ 为教务管理人员提供灵活的浏览和查找功能。可以查看某个系、某个班级所有学生信息;可以对学生信息提供模糊和精确的查找。

⑷ 教务管理人员可以对学生信息进行变动管理,对学生信息进行添加、编辑和删除等操作。教务管理人员可以对学生的基本信息生成报表,并打印。

2.2可行性分析

由于本系统管理的对象单一,都是学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。

2.3 系统功能描述

本系统的主要任务是实现对学校教导处的学生信息管理、成绩管理、课程管理及相关查询。其主要功能包括:

1、学生信息管理功能

2

班级管理。提供给班主任进行本班学生的信息更新、删除。

添加学生。以班级为单位,进行学生入库。其中分为单个添加和成批添加。单个添加学生供数量较少的学生信息入库;成批添加可以从现存的学生信息EXCEL文件中成批录入到数据库中。

删除学生。当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。该功能主要进行成批地删除学生信息,如连续学号区段的多位学生信息删除,整个班级的删除,所有学生信息的删除。

新生管理。本部分的功能主要有新生导入、分班、及设置学号。新生导入实现从现存的EXCEL新生名单中录入学生信息。分班功能实现按新生的报考专业、成绩及性别进行分班。设置学号实现自动为各班学生编发学号。

学生信息备份。在学生信息删除前,将其按班级为单位保存到备份数据库。 2.学生成绩管理功能

分数录入。以班级为单位,录入各科目的期中、期末、总评成绩。 总分及名次。计算指定班级学生的总分及名次。 补考成绩录入。修改总评成绩,以决定最终补考人数。

成绩备份。为指定班级及指定的学期数的学生成绩保存到备份数据库中。 3、课程信息管理功能

课程管理。提供本学期各年级各专业所开课程名称的录入、修改、删除。它是学生成绩管理的基础。用以保证数据库中一致性原则。

4、查询功能。

学生信息查询。根据用户的要求,查询学生数据库的所有可能的信息,其中包括成绩查询。

备份成绩查询。按班级为单位查询备份数据库的学生信息,补考情况。

3

2.4系统结构图

教务管理员 成绩管理 打印报表 成绩查询 成绩浏览 成绩添加 课程管理 班级课程设置 基本课程设置 学生交费查询 交费管理 学生交费添加 基本学费设置 班级查询 班级管理 添加班级 班级浏览 档案查询 学生档案管理 信息管系统管理 理 系统 成绩管理 档案浏览 修改密码 添加用户 考试浏览 考试类型 班级课程 基本课程 交费查询 交费浏览 档案查询 档案浏览 班级浏览 档案添加

学生 课程管理 交费管理 档案管理

班级管理 系统结构图 图2.1

4

3 系统总体设计

3.1 系统模块

根据系统需求,结合实际情况,经过模块分析,系统应该具有以下几个功能模块。

 用户类型

本系统的用户将分为两类:学生和教务管理人员。学生类的用户是指当前系统中所有的学生,其用户名为学生的姓名,而密码为学生的学号,该类用户只能对自己的信息进行浏览,不具有浏览和查找他人信息的权限,也不能对自身和他人的信息进行管理。

而对于教务管理人员类用户,即整个系统的管理人员,有特定的权限对系统中所有学生信息进行浏览、查找,而且可添加、编辑和删除学生记录,也可以使用相应的报表功能。

 信息查看和浏览模块

对于学生类用户而言,只能浏览自身的信息,而且其信息具有只读功能,学生在浏览过程中如果对自身信息有问题,不能自行修改其中有误的信息,必须向教务管理人员报告,只有教务管理人员才能对其信息进行修改。

对于教务管理人员而言,可以查看所有的学生信息,而且系统中提供了多种浏览方式:逐条记录浏览、按所在班级浏览和按所在系浏览。

 查找模块

此部分功能只对教务管理人员开放。如果浏览部分所提供的浏览方式不能满足教务管理人员的要求,那么教务管理人员可在现有的信息中进行查找,以便找到满足条件的学生信息,以便进行浏览或者管理。该部分的功能提供了对所有的字段进行精确查找或模糊查找的功能。

 学生信息管理模块

此部分功能只对教务管理人员开放。如果学生基本信息改变,或学生有所变更,那么教务管理人员可根据具体情况,对学生进行管理或者修改某个用户的

5

信息。

 报表模块

此功能只对教务管理人员开放。教务管理人员在查看学生信息的同时,可对学生基本信息进行报表输出和打印。

6

3.2系统操作流程

根据学校的学生信息管理流程,结合上述的各功能模块,设计出学生信息管理系统的整体流程图,如图3.1所示。

整体流程图

通过单击显示登录表单 登录表单(用户可以分别以学生或者管理员身份登录) 通过验证 重新登录 MD主窗 (系统主窗口) 查看学生

Splash表单 (用以显示版本信息和系统信息)

浏览用户信息(根据用户的不同所具有的浏览方式也不 对用户信息

管理学籍信息(学生基本信息管理、学籍变更等) 报表表单(生成有关学籍信息的报表,并可打印) 整体流程图 图3.1

7

数据流程图: 顶级:

教务管理人员学生信息管理系/学生 统 登录 学生信息 报表

教务管理人员/学生 一级细化图:

教务管理人员/学生 学生信息管理登录 P1 教务管理人员/学生 F1学生信息 学生信息查询P2 F2 学生信息报表 二级细化图:

登录 教务管理人员 /学生 学生信息管理P1 教务管理人员/学生 F1 学生信息

学生信息查询P2 学生信息管理F3 F2 学生信息报表

学生信息设置P3 数据流程图 图3.2

8

3.3数据库设计

3.31创建数据库

根据系统功能需求,数据库采用Microsoft access2000,它完全可适合工作需求,并且它所支持的数据类型十分丰富,维护简便,费用比较低,人员素质要求不是很高,容易升级。

根据以上的模块分析和流程设计,可以分析出,在学生信息管理系统的数据库中需要包含以下几个表:学生信息表、学生所在班级的表、班级所在系的表、包含教务管理人员账号的表。其中,表1用来存储学生信息,表2用来存储学生所在的班级信息,表3用来存储班级所在的系,表4用来存储教务管理人员的账号。

表1 学生表(student) 字段名 字段说明 类型 宽度 Serial Name Class 学号 姓名 所属的班级 文本 文本 文本 7 10 5 主关键字 不能为空 不能为空,对应于class表的name字段 Birthday Address Sex Tel Resume Photo

生日 家庭地址 性别 电话 简历 照片 日期/时间 文本 文本 文本 备注 OLE对象 30 2 15 500 不能为空 可以为空 默认为“男” 可以为空 可以为空 备注 9

表2 班级表(Class) 字段名 Dept_id 字段说明 班级所属的系的编号 Name 班级名 文本 5 类型 数字 宽度 长整型 备注 不能为空,对应于Department表的id字段 主关键字 表3 系表(Department) 字段名 id Name 字段说明 部门编号 部门名 类型 数字 文本 宽度 长整型 10 主关键字 不能为空 备注 表4 教务管理人员表(Admin) 字段名 pwd Name 字段说明 密码 姓名 类型 文本 文本 宽度 10 8 主关键字 不能为空 备注 从实际的学生信息管理来说,每个学生都隶属于某个班级,而每个班级又隶属,某个系。因此建立Student表、Class表和Department表相应字段间的关系,定义下列两组参照完整性:

 Class表的Name字段与Student表的class字段为一对多的关系。  Department表的id字段与Class表的dept_id字段为一对多的关系。 各个表之间的关系如图3.3所示。

图3.3

创建工程

10

在Visual Basic中创建一个工程,命名为“Student.vbp”,将创建的Student数据库拷贝到工程目录中,以便建立数据库。 3.32建立数据连接

本系统将采取ADO作为数据连接的手段,所以需要在工程中添加对ADO的引用,具体发法如下:选择菜单中的“工程》引用”,在出现的表单中选择“Microsoft ActiveX Data Objects 2.0 Library”,并单击“确定”按钮。如图3.4所示。

图3.4

3.33数据环境设计器

本系统将采取ADO作为数据连接的手段,同时采取“数据环境设计器“作为数据连接ADO的载体。在工程中添加一个数据环境,并命名为DataEnv。

所谓“数据环境(Data E打开或修改一nvironment),是指在个表单或报表时需要打开的全部表、视图和关系。随窗体或报表一起保存的数据环境可用“数据环境设计器”进行修改。

11

在添加一个数据环境设计器以前,需要引用数据环境设计器,应按照以下步骤执行:

 在“工程”菜单中,单击“引用...”按钮。

 从“引用...”对话框中,选择“MicrosoftData Environmen t Instance1.0然后单击“确定”按钮。

在引用了数据环境设计器之后,就可想工程中添加一个数据环境设计器。添加数据环境设计器,应按照以下步骤执行:

 从“工程”菜单中,选择“添加Data Environment”。

 一旦数据环境设计器被添加到Visual Basic工程中,数据环境设计器窗口出现,并且将一个Connection对象添加到数据环境。

将一个Connection对象添加到数据环境。

在数据环境设计器中将已添加的Connection对象,,命名为Con,设置conn属性。在“提供者”选项卡中选择“Microsoft4.0LE DB Provider”,并单击“下一步”。

在“数据库名称”文本框中,选择Student.mdb,并选中“空白密码”和“允许保存密码”前面的单选框,单击“测试连接”,如果出现“连接成功”提示框,则表示设置成功;否则的话,需要检查数据库连接的设置。如图

注意:如果用户在Student数据库中设置了密码,必须取消“空白密码”前的单选 框,并在密码文本框中输入相应的密码。 经过以上两步设置,数据环境设计器的Con数据连接属性如表所示。

数据连接Con的属性

对象 DEConnection 属性 Name ConnectionString Con Provider=Microsoft.Jet.OLEDB.4.0;Password=””;Data Source=D:\\Tutorial\\WritingBook\\Education\\student\\student.mdb; Persist Security Info=True 设置 12

CursorLocation 3-adUseClient 3.4数据连接的初始化代码

在系统实际运行时,所处的位置是变化的。而默认情况下,数据环境设计器的连接中使用的数据库的位置是固定的,所以需要在数据环境的初始化(Initialize)事中,将动态改变数据连接Con的连接字段(ConnectionString)。

13

4系统的具体设计与实现

4.1启动窗体

4.1.1窗体模块的功能

运行本系统,首先出现启动窗体(frmSplash),通常来说,Splash窗体用来向用户展示有关系统的版本信息、开发情况和版本信息等;同时,它还可以用来对应用程序系统的参数初始化或者初始化数据连接。在本系统中,没有初始化工作需要做,Splash窗体只起展示屏幕的作用。 窗体界面的设计:

在工程中添加类型为“展示屏幕”的窗体,命名为frmsplash。

该窗体上的控件及其属性如表所示。为了方便起见,将该窗体中所有的Label控件都设计为名称为lblInfo的控件数组。

启动窗体的主要控件的属性设置以及功能表

控件 Form 名称 frmSplash 属性 BorderStyle属性设为3,caption属性设为空,KeyPreview属性设为True Frame Image Label Label Label Label Label Label fraEdge imgLogo lblInfo lblInfo lblInfo lblInfo lblInfo lblInfo Caption属性设为空 DataFormat设为“图片” Caption属性设为“学生信息管理系统” Caption属性设为“1.0.0” Caption 属性设为“开发环境:Visual Basic 6.0” Caption 属性设为“数据环境:Access” Caption 属性设为“版权所有,违者必究!” Caption 属性设为“授权给:任何给本系统提出宝贵意见的人” 整个窗体界面示意如图4.1所示

14

窗体界面示意图 图4.1

4.1.2窗体的工作流程/方式

frmSplash窗体具有两个作用,其一为系统启动时的窗体,其二为系统运行时的“关于„”窗体。

 当作为系统启动时的窗体,如果用户单击了窗体或按下了键盘上的某个键,则将会退出启动窗体,同时显示登录窗口。

 当作为系统运行时的“关于„”窗体时,如果用户单击窗体或者按下了键盘上的某个键,则也将退出启动窗体,但是此时不会显示登录窗体,而是返回到MDI主窗体。 4.1.3编写窗体代码

frmSplash窗体具有两个作用,其一为系统启动时的窗体,其二为系统运行时的“关于„”窗体,所以在代码页的“通用”部分定义模块级的公共变量mbAbout,以区别这两个作用的标识。

变量mbAbout的具体含义如下:

 若mbAbout为True,则表示为系统启动时的Splash窗体。  若mbAbout为false,则表示为系统运行时的“关于„”窗体。

有鉴于Splash窗体的特点,如果单击窗体上的任何部分,或者按下任一个键,都将调用UnloadForm子过程,以退出本窗体。

15

UnloadForm子过程中,首先退出Splash窗体,然后如果mbAbout为False,即表示此时窗体为Splash窗体,需要显示登录窗体;否则就不需要显示登录窗体。

在下列各控件的Click事件中,均调用了UnloadForm子过程,根据mbAbout的状态来判断在退出Splash窗体之后,是否需要加载登录窗体。

在Form 的KeyPress事件,也调用了UnloadForm子过程。

4.2 登录窗体

4.2.1窗体模块的功能

使用本系统的用户分为两类:教务管理人员和学生。所以在设计登录窗体时,要比普通的登录窗体增加选项框数组,用来表示用户身份。选项框数组由两个选项框组成,其中下标0的选项框表示教务管理人员的身份,而下标1的选项框则表示学生类用户,同时为了避免非法用户的干扰,对于用户登录窗口,如果在用户连续输错3次密码,则系统将会自动退出。 4.2.2添加数据命令

根据用户选择的身份不同,在不同的表里查询数据:如果用户选择了“教务管理人员”身份,则在admin中针对name和pwd字段进行搜索;如果选择了“学生”身份,则在Student表中针对name 和serial字段进行搜索。

因为用户在在查询时需要进行使用数据库的表连接,所以需要在数据环境设计器DataEnv的数据连接对象Con中单击右键,选择添加一个数据命令,取名为sqlSeek。本窗体将根据用户所选择的身份的不同,动态改变sqlSeek的SQL内容。

在打开刚刚添加的数据命令sqlSeek的属性对话框,在通过选项卡上选择“SQL语句”,并输入“select serial,name from student order by serial”。 4.2.3窗体界面的设计

在工程中添加类型为“登录对话框”的类型,命名为frmLogin,窗体的界

16

面如下图4.2所示。

窗体的界面图 图4.2

该窗体上的控件及其属性如表所示。

登录窗体的主要控件的属性设置以及功能表

控件 Form 名称 frmLogin 属性 BorderStyle属性设置为3,Caption属性设为“请登录” Frame OptionButton fraUser Caption属性设为“选择身份” 功能 用来显示登录窗体 optUserType Caption属性设为“教务管理人员”,表示教务管理人Index设为0 员用户 Optionbutton optUserType Caption属性设为“学生”,Index设为1 Frame Label TextBox Label TextBox fraLogin lblLabels txtUser lblLabels txtPwd Caption属性设为“登录” Caption属性设为“用户名:” Text设为空 Caption属性设为“口令:” Text属性设为空,将PasswordChar属性设为“*” 用来输入用户名 用来输入密码 CommandButton cmdOK CommandButton cmdCancel Caption属性设为“确定” Caption属性设为“取消” 17

4.2.4窗体的工作流程/方式

在验证用户时,如果用户选择了管理员身份,则系统将会在数据库中的Admi表进行查询,以确定是否存在相应的用户名和口令:如果用户选择了学生身份,则系统将会在数据库中的Student表进行查询,以确定是否存在相应的用户名和口令。

如果用户所选择的身份,以其输入的用户名口令,和数据库中对应的用户名和密码吻合,则用户登陆成功,此时会系统自动退出登陆窗体,并进入到MDI主窗体。

如果用户所输入的用户名和口令,没有通过数据库验证,则用户登陆失败。用户需要重新输入用户名和口令,如果用户登陆失败超过3次,则系统自动退出登陆窗体,并提示用户“无权使用该系统”。 4.2.5编写窗体代码

(1)定义模块级变量mnUserType,用来表示当前用户在身份下拉列表中所选的类型(教务管理人员或者学生)。

如果用户改变了optUserType的内容,则通过optUserType的Click事件响应,将mnUserType的值更新。

在Form的Load事件中,将下标为0的optUserType设为True,即表示默认情况下,选择教务管理人员作为登陆的用户身份。

在“取消”按钮中退出整个登陆窗体。

(2)相应的“确定”按钮的Click事件,用来校对输入的用户名和密码。用户输入了用户名和密码,并且选择了对应的身份之后,可以单击“确定”来验证,即激活cmdOK控件的Click事件。

(3)响应“取消”按钮Click事件,在该事件中调用Unload方法来退出当前的誊录窗体。

18

4.3 MDI主窗体

4.3.1窗体模块的功能

本系统采取多文当界面(Multi Document Lnterface,MDI)来组织系统中各个窗体。多文档界面是一种Windows用户界面标准。它有一个父窗口,在典型情况下,父窗口应来显示程序菜单以及包含子窗口。

在工程中一个MDI窗口,并取名为“MDIMain.frm”,并为MDI窗体,进行菜单的设计和代码的设计。 4.3.2窗体的工作流程/方式

MDI主窗体的作用很明确。它主要作为整个系统中的各个管理窗体的父窗体。对于不同身份的用户(管理员和学生),MDI主窗体显示出不同的菜单项。

对于管理员拥护,由于管理员用户具有系统中所有的权限,因此MDI主窗体将会显示所有的菜单项,可以通过单击菜单项来管理学生用户、查找学生用户或重新登陆等。

对于学生用户,由于学生用户的权限受到了一定的限制,所以MDI住窗体不会显示所有的菜单项,其中mnuFind菜单项隐藏。学生类型的用户可以通过单击菜单项来查看自身的信息,并进行重新登陆等操作。  定义模块级变量

本系统采取了分权限访问,所以必须取得当前用户的类型和用户名,并储存到MDI湖窗体中,以进一步的访问所有。在代码窗口的“通用”部分,定义两个模块级的公共变量mnUserType和mnUserName。

MnUserType表示当前登陆的用户类型,其中O代表教务管理人员类型用户,而1代表学生类型的用户;mnUserName代表当前登陆的用户名,对于教务管理人员类型的用户,用户名为Admin表中的name字段;对于学生类型的用户,用户名为Student表的Serial字段。

 处理窗体的Activate事件

如果登陆的为学生类型的用户,则用户只能查看自己的信息,不能使用“学

19

生查询”这一子菜单,而对于教务管理人员类型的用户,则没有此限制。所以在MDIForm的Activte事件中,需要判断用户类型。诺为学生类型的用户,则隐藏mnuFind;诺为教务管理远类型的用户,则显示mnuFind窗口。

 处理Form的QueryUnload

当用户退出MDI窗体时,需要在QueryUnload事件中进行询问,询问用户是否真的要推出本系统;如果用户不要退出,则将Cancel置为1,来取消整个退出过程。

 编写菜单项mnuStudent的响应代码

作为学生类型的用户,只能查看本声的信息,所以当单击“学生信息管理”子菜单时,将会出现frmView窗体;而作为教务管理人员的用户,可以对所有的学生信息进行查找和管理,当单击“学生信息管理”子菜单时,将会出现frmStudent窗体。

 编写菜单项mnuFind的响应代码

教务管理人员类型 用户单击“学生查询”菜单项,或按下“F6”键,显示“学生信息管理”窗体,并自动弹出自定义查找框,供用户查找满足特定条件的学生信息。

 编写菜单项mnuExit的响应代码

单击mnuExit菜单项,将会调用窗体的Unload方法来退出整个窗体。  编写菜单项mnulogin的响应代码

单击“重新登陆”或者按下“F2”键,给出提示,如果用户在提示框中按下“确定”按纽,则退出整个MDI主窗体,并显示登陆窗体。

 处理菜单项mnuAdout的响应代码

单击“关于”子菜单,显示frmSplash窗体。此处要显示的splash窗体所起的作用为第2种。所以需要在显示frmSplash窗体之前,改变frmSplash中的模块级变量mbAbout,将mbAbout置为True,以表示当前frmSplash窗体所起的为第2个作用。

20

4.4信息查看窗体

添加数据命令:

用户使用数据库的表。在数据环境设计器DataEnv中淡季数据连接对象con,在右键菜单中选折“添加命令”项,向con数据连接对象添加一个名为Student的命令。

在这个命令中代表了数据库中的Student表中的所有的记录,查看Student属性。

在默认情况下,数据环境里数据连接中的数据是只具有只读属性的。而在本系统中,以后教务管理人员用户可以对Student表进行添加、删除、编辑等操作,所以Student表必须是可写的。为了能够更改数据库中Student表的内容,需要对Student数据连接的锁定类型改为开放式。

如果Reordset对象的CursorLocation属性(即游标位置)被设置为adUseClient(即使用客户端游标),将不支持adlockPessimistic设置。设置不支持的植不会产生误会,因为此时将使用最接近的LockType的值。

通过上述两个步骤设置Student数据连接的属性。

在一个数据设计器中,一个数据命令就对应与一个记录集(Recordset)添加了数据命令并设置属性之后,数据环境设计器就自动运行行营的SQL语句进行查询,以获得响应的字段。可以展开数据命令进行查询,图上显示了数据所添加的sqlseek和Student展开之后,所能产看到的字段。 窗体界面的设计:

在工程中添加一个窗体命名为“frmView”,该窗体将被用来实现学生类型用户产看自己的信息的功能。在该窗体中,用户只能查信息,而不能多信息进行修改,所以将显示各项数据的控件的父控件fralnfo的Enabled置为False,从而是各个子控件不可访问,使各项数据不能修改。FrmView窗体的控件属性。 窗体的工作流程/方式:

本窗体只被用来查看当前学生的信息,当窗体被显示时,首先通过DataEnv数据环境中的rsStudent记录集find方法来定位当前的学生记录。由于窗体上

21

的各个控件已经和DataEnv数据环境中的Student进行了捆绑,因此当定位到相应的学生记录时,各个控件就自动显示出数据库中相应数据的内容。 编写窗体代码:

当前窗体初始化时,需要在DataEnv.rsStudent中使用Find方法找到学号为当前用户名的记录,因为窗体上的各个控件与DataEnv.rsStudent的各个字段已经建立了绑定关系,所以当DataEnv.rsStudent定位到相应的记录时,窗体上的控件将会自动显示各个字段的值。

单击“关闭”按钮,退出当前的信息显示窗口,代码如下所示。

4.5 学生信息管理窗体

4.5.1窗体模块的功能

如果一个教务管理人员登陆本系统,教务管理人员具有系统所有的权限,所以本窗体应该具有下列功能。

 导航:由于一个学校信心的量是很大的,所以为了 方便用户的浏览,给用户提供一个导航条,通过网络形式显示当前的满足条件的学生的学号和姓名字段。

 浏览:提供能够在导航条中移动记录的基本按钮,通过该功能,用户可以移动导航条的当前记录。

 查询:提供一个能够进行精确和迷糊查询的“自定义查询”;同时,考虑到大部分对学生进行查询都是分班级进行的,所以在系统中增加一个产看各个班级的所有学生信息的简易查询。

 详细信息:一旦导航条的当前记录发生改变。则要显示当前记录的学生的详细信息,而且提供一系列的管理按钮,用户可以通过它,来对记录进行添加、修改个删除,并生成相应的报表。

根据提供的4个功能,窗体被相应的分为4个区:导航条、浏览、查询、详细信息框。 4.5.2添加数据命令

22

在窗体的实体的代码中,需要提取的数据的Department表和Class表中的记录,对查询框中的“所在系”组合框(cboDep)和“所在班”组合框(cboClass)进行填充。因此,必须首先在Department数据环境中对数据连接Con中添加两个数据命令,命令为“Department”和“Class”数据命令Department的设计。

设计Department和Class数据命令的属性。

在“工程”菜单项下的“部件”子菜单中,选中“Microsoft DataGrid 6.0(OLEDB)”,将DataGrid控件加入到了部件栏中;选中“Microsoft DataGrid 6.0(OLEDB)”,将DataCombo和DataList这两个控件加入到了部件栏中;选中“Microsoft DataGrid 6.0(OLEDB)”将CommonDialog控件加入到部件栏中,将会使用它来选择学生信息中的照片字段。

设置FrmStudent窗口及控件的属性。 4.5.3窗体的工作流程/方式

本部分所介绍的窗体是整个系统中最主要的窗体,只有具有管理员身份的用户才能够使用该窗体。管理员可以通过该窗体进行以下的工作:

 选择学生所在的系,然后学生所在的班级,并单击“列出”按钮,可以列出所属选班级的所有学生的记录。

 单击“查询”按钮,在弹出的查询对话框中、输入查询条件,即可以查找到符合条件的学生的记录。

 单击各个浏览按钮,可以在当前的学生记录集中进行向前、向后移动到第一条、移动到最后一条这几个操作。

 用户也可以对当前的记录进行操作,可以删除当前记录,添加一个新记录,或者编辑当前记录,也可以以报表的形式查看当前的学生记录。 4.5.4编写窗体代码

 添加模块级变量

当教务管理人员正在添加一条记录或者修改当前记录,诺没有执行更新操作,此时的记录是处于锁定状态的,如果这时用户退出了整个系统,那么当前用户对记录所作出的变更将会全部丢失。考虑带数据库 完整性和安全性,系

23

统需要设计一种机制,用得当记录正在被修改或者添加时,用户不能够退出当前系统。

为了达到这个目的,在代码业的“通过”部分,添加一个模块级的变量声明mbClose,用来表示当前窗口是否可以退出。在Load时间中,将mbClose初始化时用户可以退出窗体。

 处理Form的Load事件

在Form的Load事件中,要执行cboDep和cboClass的初始化,具体方法如下:

 从Department表中读取数据,并填充到cboDep复合框中,并将各个系的id号作为列表中的,没一相对的ItemData附加到复合框中。

 从Cilss表中读取数据,并奖Class表中的Name字段填充到cboDep复合框中。

在此处,cboDep的List中列出了各个系的名字,而对应的ItemData则对应与各个系的id 号。这样,当用户选择某一个系,可以取得响应的系的id号,这样就可以根据这个id获得对应的所有该下属班级号,并将其列表与cboClass。

 处理grdScan的Change时间和Click事件

在grdScan的Change时间中,如果grdScan所列的内容发生变动,且新的grdScan的内容不为空,即grdScan.ApproxCount>0,需要调用SeekStudent()子过程,其中grdScan.Columns(0).Celltext(grdscan.bookmark)表示当前行的第一列的单元格的值。

在grdscan的Rowcolchange事件响应中,借助grdscan.bookmark,通过celltext方法来取得当前行的第一列的单元格的值,即grdScan.Columns(0).Celltext(grdscan.bookmark)。

如果grdscan的当前行发生变化,即lastrow<>grdscan.bookmark  处理cbodep的click事件

在学生信息管理中,所进行的浏览方式大多是按照班级进行,所以系统特意设置了这种浏览方式。Class表的name字段与student表的class字段为一

24

对多的关系,而department表的id字段与class表的dept_id字段为一对多的关系。所以在查询框中,设定两个combobox,一个用以填充系的内容,另一个用以填充班级的内容。

有鉴于department和class表的关系,当用户选择某一个特定的系时,在cbodep的click事件中,将会动态的改变cboclass的内容,将属于该系的所有班级的名称填充到cboclass内容中。注意当改变所选的系时,cbodep中对应的itemdata会自动返回对应的系id号,这样就可以通过这一个id号,在class表中查寻dept_id等于这一系id的记录。

 处理cmdlist的click事件

用户可以单击“列出>>”来列出对应班级的学生信息,根据用户在cboclass中所选的内容不同,将会采取不同的SQL语句。

 如果用户在班级组合框中没有选择相应的班级,而是选择了“全部”,此时单击“列出>>”按钮,那么将会列出所有班级的学生的信息。此时使用的SQL语句为:“select * from student order by serial”。

 当用户在班级组合框中选择了相应的班级时,可以单击“列出>>”按钮,将会显示出所选班级的学生的信息。此时使用的SQL语句为:“select * from student where class=‘“ & cboclass & ”’order by serial”。

根据上述两者情况,分别对dataenv中的rsstudent和rssqlseek进行重新查询。

 由于根据改变了dataenv.rssqlseek的数据集的内容,因此需要调用refreshgrid子过程来刷新用于导航的grdscan的内容。

 同时,还需要根据dataenv.rssqlseek的数据集的状态来调用changebrowsestate以改变窗体中各个按钮的状态。

 编写cmdFind的Click时间

当按照班级浏览不能满足用户需求的时候,用户也可单击“自定义查询„”按钮,里进行查询。在该查询中可对Student表中的所有字段进行各种运算符的查询。

4.5.5实现步骤如下

25

 载入自定义查询窗体frmfind,但是不要显示该窗体,因为需要对窗体进行

初始化。

 从DataEnv.rsStudent(代表了数据库中的Student表)中取得Studentd

的结构,被将各个字段的名称填充到frmFind的lstFields。  在frmFind窗体中,将查询所需字段的值写入到frmFind窗体的

msFindfield中;将查询所需要的运算符号写入到frmFind窗体的msFindop中;将查询所需字段的值写入到frmFind的msFindExpr中。

 通过frmFind窗体的msFindfield、msFindop和msFindExpr,就可以根据

这三者组成一个合法的表达式,通过此表达式在DataEnv.rssqlseek中搜索符合条件的记录。如果没有找到符合条件的记录,则给出提示。

 在DataEnv.rssqlseek中查找记录之后,需要刷新用做导航条的网络控件的

内容,刷新网络控件这一操作通过自定义的子过程RefreshGrid来实现。

 处理dcdClass的 Click事件

在本系统默认情况下,班级编号将作为学号的前几位。为了体现这一关系,需要在dcdClass控件Click事件中,判断若显示学号的文本框为空,则将班级编号赋给该文本框。

 处理cmdselectPhoto的 Click事件

当用户单击“添加”或者“编辑”按钮时,当前的学生记录就会进入编辑状态。由于学生信息包含图象显示在imgPhoto中。

 实现用于浏览的各个按钮的Click事件

在用于浏览的按钮的Click事件中,调用DataEnv.rssqlSeek的MoveFirst、MovePrevious、MoveNext、MoveLast将来记录移动到第一条、上一条、下一条和最后一条,在调用自定义过程ChangeBrowseState()来改变各个按钮的状态。

 处理记录添加、修改和更新等操作

(1) 处理cmdAdd的Click事件

添加按钮(cmdAdd)的Click事件的设计思路如下:

 用户单击“添加”按钮时,将针对DataEnv.rsStudent使用AddNew,

26

并对txtBirthday的Text属性赋初值为“1980-01-01”。

 同时,将使frainfo的Enabled置为True,使用户能够对各个控件进

行输入;但记录集处于新添加状态时,不能移动当前的记录,故fraBrowse的False

 同时将“编辑”、“删除”按钮置为无效,在添加状态下,不能够对记录

进行编辑或者删除:使“更新”按钮有效,以便能够对记录集进行更新;使“报表”按钮的caption改为“取消”。使该按钮能取消对记录的更新。

 将mbClose置为,表示当前窗口不能退出。

(2)处理cmdEdit的Click事件

编辑按钮(cmdEdit)的Click事件的设计思路和cmdAdd的设计思路类似,但是以为只是对记录进行编辑,所以不需要调用DataEnv.rsStudent的AddNew操作。

(3)处理cmdDelete的Click事件

删除按钮(cmdDelete)的设计思路如下:

 如果在删除过程中出现错误,则显示Err.Description中的出错代码。  在删除记录之前弹出问话框,确认用户是否真的要删除当前记录,如果

用户选择了“是”,则删除当前记录后,否则就不执行任何操作。  在删除当前记录后,需要移动当前记录:因为改变了当前记录集内容,

需要调用RefreshGrid子过程,来刷新导航条网络控件中的内容。 (4)处理cmdUpdate的Click事件

用户在添加了新记录后者对当前记录进行编辑之后,如果需要保存作出的变动,就需要单击“更新”按钮。更新按钮(cmdUpdate)的Click时间的设计思路如下:

 首先将各个控件的值赋给DatEanv.rsStudent中对应的字段,并调用

DataEnv.rsStudent的Update来对记录集更新。

 将各个按钮的值设为初始值,将cmdUpdate的Enabled属性设为False,

将fraEnabled的Enabled设为False,使这些数据对应的文本框不可

27

用。

 由于改变了dataenv.rssqlseek数据集的内容,因此需要调用

refreshgrid子过程来更新作为导航条的网格控件grdscan的内容;同时,需要调用changebrowsestate子过程,从而根据dataenv.rssqlseek中记录的多少来改变各个按钮的状态。

 通过刚刚添加或者修改的学号在dtaenv.rssqlseek中定位到该记录。

(5)处理cmdreport的click事件 cmdreport按钮有两个作用:

 如果其caption为“取消”,则用户通过单击该按钮来取消对当前记录

集所进行的添加或者编辑操作,并将窗体状态恢复到进行添加或者编辑操作之前的状态。

 如果其Caption为“报表”,则用户可以单击该按钮,针对当前学生的

详细信息生成报表(调用rptStudent的Show方法,详见以后有关rptStudent的设计)。  编写自定义过程

(1)编写自定义的SeekStudent过程

SeekStudent子过程的定义如下所示,入口参数为sSerial,表示所需要定位的学生信息的字号。该子过程的作用在于:在DataEnv.rsStudent中定位到学号为sSerial的记录,并调用自定义的RefreshBinding()子过程,将该记录的各个字段显示在详细列表框的各个控件内。

(2)编写自定义的RefreshBinding过程

RefreshBinding子过程的作用在于将DataEnv.rsStudent的当前记录的各个字段的值显示在详细列表框的各个控件中。如果DataEnv.rsStudent中没有合法的当前记录,则要将详细列表框的各个控件的值清空。

(3)编写自定义的ChangeBrowseState过程

当移动记录后,再根据记录的数目和当前记录所处的位置,即判断记录集的BOF和EOF来改变各个按钮的状态。其机制如下:

 若DataEnv.rssqlSeek中没有记录,即BOF和EOF都为True,则只允许

28

用户添加记录,但是不允许用户进行删除和修改操作,也不能生成报表,此时整个浏览框是不可用的(fraBrowse.Enabled=True),不能进行记录的移动;若当前存在记录,则不仅可以添加记录,而且可以对当前记录进行修改、删除,也可以生成有关当前记录的报表,此时浏览框是可用的。

 如果DataEnv.rssqlSeek中有记录,但游标处于整个记录的头部,即BOF为True,EOF为Flase,那么当前记录不能再往前移动了,即要使cmdPrevious和cmdFirst按钮的Enabled属性为True,并且要将记录的游标移动到第一条记录处;否则的话,就将这两个按钮的Enabled属性设为Flase。

 如果DataEnv.rssqlSeek中有记录,但游标处于整个记录的尾部,即BOF为True,那么当前记录不能再往后移动了,即要使cmdNext和cmdLast按钮的Enabled属性为True,并且要将记录的游标移动到最后一条记录;否则的话,就将这两个按钮的Enabled属性设为Flase。

(4)编写自定义的RefreshGrid子过程

刷新导航的网络控件grdScan的子过程RefreshGrid的实现机制如下:  首先将grdScan的DataMember赋为空,并调用Refresh方法,这样就可以将grdScan的内容清空,并且同时保留grdScan的布局。

 调用DataEnv.rssqlSeek的Requery,刷新DataEnv.rssqlSeek的内容。  令grdScan的DataMember为sqlSeek,并调用Refresh方法,这样就能以新的rssqlSeek中的内容来填充grdScan的内容。到此时,就完成了grdScan控件的刷新工作。

 由于改变了grdScan的内容,因此需要调用grdScan的Change事件,动态刷新详细信息框中的各个控件的内容,(详见以前关于grdScan的Change事件的讨论)。

 编写处理图象数据的自定义过程 (1)自定义的ReadImage过程

在RefreshBinding过程中,调用了ReadImage过程,用来将数据库中的图象数据读出到一个临时文件中,然后用LoadPicture方法将这个临时文件所存储的图象显示在imgPhoto中。

29

(2)自定义的WriteImage过程

在cmdUpdate的Click事件响应中,调用了自定义的WriteImage过程。该过程的作用是将所选择的图象写入到数据库中对应的字段中。

4.6 自定义查询窗体

4.6.1窗体模块的功能

在学生信息管理窗体中,单击“自定义查询„”按钮,将会出现“自定义查询”窗体。在该窗体中用户可以选择自定义查询所需要的字段、运算符和表达式的值。

在工程中添加一个类型为“查找对话框”的窗体,并命名为“frmFind”。 窗体界面的设计:

单击“自定义查询”按钮,将会出现自定义查询窗体frmFind。窗体的设计界面如图4.3所示。

窗体的设计界面图 图4.3

窗体的工作流程/方式:

本窗体用来作为通用的查询窗体,当用户在学生信息管理窗体中,单击“自定义查询”窗体时,将会首先载入frmFind窗体,然后在该窗体的lstFields列表框中显示出数据库中Student表的各个字段;在frmFind的Load事件中,向lstOperators列表框中添加进行查询所需要的运算符。

用户在进行查询时,在frmFind窗体中的lstFields中选择查询的字段,在

30

lstOperators中选择查询所使用的运算符,在txtValue文本框中输入查询值,如果用户单击了“确定”按钮,将会在学生用户信息窗体中返回查询记录所使用的条件语句。 4.6.2编写窗体代码

1.设置公用变量

学生信息管理窗体调用了frmFind之后,需要返回查询所需的字段、运算符号和对应的值,所以需要在frmFind的代码段的“通用”部分定义模块级的公共变量msFindField、msFindOp和msFindExpr。

如果用户单击“取消”按钮,则在学生信息管理窗体中不需要采取任何操作。所以在frmFind“通用”部分定义各个模块级的公共变量mbFindFailed。

2.“取消”按钮的Click事件

如果用户单击“取消”,则将mbFindFailed设置为True。表示在学生信息管理窗体中,不需要对查询结果进行任何处理。

3.“确定”按钮的Click事件 4.Form的Load事件

在Load事件中要对运算符进行初始化,将查询用到的运算符号填充到lstOperaors中。

5.动态改变“确定”按钮的可用性

当frmFind登陆时,“确定”按钮为无效的,只有当lsFields、lstOperators和txtExpression中的值均不为空,“确定”按钮才会变成有效;一旦其中的某一个控件的值为空,则“确定”按钮将变成无效的。

4.7报表设计

4.7.1窗体模块的功能

当教务管理人员在查看当前记录的详细信息时,有时需要将学生信息作成报表的形成,以便浏览或者打印。在工程中添加一个DataReport,命名为“rtpStudent”。

31

DataReport对象是一个可编程对象,代表数据报表设计器(Data Report designer)。使用DataReport对象通过更改每一个Section对象的布局,来编程改变数据报表的外观和行为。

要想使用Data Repor根据数据库中的记录来生成报表,需要完成以下步骤。 (1) 配置一个数据源,例如Microsoft数据环境,以访问数据库。 (2)设定DataReport对象的DataSource属性为数据源。 (3)设定DataReport对象的DataMember属性为数据成员。 (4)右键单击设计器,并单击“检索结构”。 (5)向相应的节添加相应的控件。

(6)为每一个控件设定DataMember和DataField属性。 (7)运行时,使用Show方法显示数据报表。 以下部分将会实现上述步骤。 4.7.2添加数据命令

由于报表的设计和实现,需要有一个对应的数据源,所以在DataEnv数据环境中添加数据命令,并命名为“rptStudent”。报表界面的设计:如图4.4所示

报表界面图 图4.4

32

致 谢

在论文即将完成之际,回顾紧张但又充实的学习和开发过程,本人在此向所有关心我的及帮助我的老师和同学们致以最真诚的感谢。

在本次毕业设计中,我从指导老师身上学到了很多东西。他认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写论文阶段,老师几次审阅我们的论文,提出了许多宝贵意见,没有他的指导,我们就不能较好的完成课题设计的任务。

另外,我还要感谢在这几年来对我有所教导的老师,他们孜孜不倦的教诲不但让我学到了很多知识,而且让我掌握了学习的方法,更教会了我做人处事的道理,在此表示感谢。同时,在系统开发过程中还有同组的同学也给了我不少帮助,这里一并表示感谢。

33

参考文献

1..张跃平编著,<>,清华大学出版社。2004年3月第1次印刷

2.伍俊良主编,<>,清华大学出版社。 3.王利主编,<<二级教程——Visual Basic 程序设计>>,高等教育出版社。2003年第2次印刷

4.易荣华,孟力强<<管理信息系统>>高等教育出版社,2001年3月第1次印刷

5.骞,袁名敦,肖明编著<<信息系统分析与设计>>。高等教育出版社。2003年第2次印刷

34

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