您的当前位置:首页正文

计算机课程设计 -- 学生成绩管理系统的设计和实现

2022-01-21 来源:九壹网
目录

摘要 ..................................................................... 1 关键词 ................................................................... 1 一 绪论 ................................................................. 2 1、项目开发背景 ......................................................... 2 2、项目开发目的 ......................................................... 2 3、本文研究路线 ......................................................... 2 二 管理信息系统研究概述 ................................................. 4 1、管理信息系统的发展历史 ............................................... 4 2、管理信息系统的特点 ................................................... 4 3、管理信息系统的开发方式 ............................................... 5 4、管理信息系统的开发过程 ............................................... 5 三 需求分析 ............................................................. 8 1、系统可行性分析 ....................................................... 8 2、学生成绩管理系统功能需求简介 ......................................... 9 3、功能需求描述 ......................................................... 9 4、目标系统要求 ........................................................ 11 5、系统平台选择 ........................................................ 11 四 数据库设计 .......................................................... 12 1、数据库介绍 .......................................................... 12 2、数据流程图 .......................................................... 13 3、数据字典 ............................................................ 14 4、数据库概念结构设计 .................................................. 14 5、数据词典设计 ........................................................ 16 6、使用ADO数据控件访问数据库 .......................................... 18 五 系统详细设计 ........................................................ 20 1、登陆界面编码设计 .................................................... 20 2、主界面 .............................................................. 21 3、学生基本信息表界面 .................................................. 21 4、修改界面 ............................................................ 22

5、分配用户界面 ........................................................ 23 6、 查询输出 ........................................................... 24 六 系统测试 ............................................................ 26 1、测试概要 ............................................................ 26 2、测试过程 ............................................................ 27 七 系统运行及维护 ...................................................... 28 1、系统的配置 .......................................................... 28 2、系统的维护 .......................................................... 28 八 结论及体会 .......................................................... 30 致 谢 .................................................. 错误!未定义书签。 参考文献 ................................................................ 31 附录 .................................................................... 32

潼南一中学生成绩管理系统设计与实现

西南大学 计算机信息管理 黄鸿

指导教师 王华

摘要:随着学校规模的不断扩大,学生数量的急剧增加,有关学生的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有学生成绩管理系统来提高学生管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。

本系统以MS Access 2007数据库作为后台数据库支撑,采用VB 6.0作为前台界面开发,完全遵循C/S模式进行设计。核心是添加、修改和删除学生成绩信息,每一个表的修改都将联动的影响其它的表。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。1章提出问题和研究的路线,2—3章是对管理信息系统和学生成绩系统的分析,4-5章是数据库设计和学生成绩管理系统的功能实现,6章结论及体会。 关键词:学生成绩管理系统 MS Access 2000数据库 VB6.0 C/S模式

一 绪论

1、项目开发背景

随着学校规模的不断扩大,学生数量的急剧增加,有关学生的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有学生成绩管理系统来提高学生成绩管理工作的效率.

传统手工的学生成绩管理,管理过程繁琐而复杂,执行效率低,并且易于出错.通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了学生成绩管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本.

本论文结合普通高校图书馆管理系统的实际情况,经过可行性研究和深入的需求分析,采用最新的开发平台Visual Basic 6.0与MS Access 2007结合作为开发工具而开发出来的基于C/S结构的学院管理系统.在设计与开发过程中也形成了本系统的一些特色:

(1)通用性:系统适用于普通高校,普通高校可使用本系统进行读者管理、图书管理等一些功能。

(2)易用性:整个系统采用功能相对独立的体系,系统界面友好、操作简便,不需要专业人员操作。

(3)安全性:系统采用数据加密技术.

2、项目开发目的

本系统是为方便提供的图书借阅管理系统。本系统应能结合当前管理手工作业的流程以及将来业务发展的需要,对管理业务中的查询、维护提供完全的计算机管理。它不但可以提高工作效率,而且能够合理高效地利用图书的资源,使图书借阅与管理更科学和合理化。

3、本文研究路线

本文的研究路线如下图1。1所示。

图1。1 本文的研究路线

二 管理信息系统研究概述

1、管理信息系统的发展历史

信息作为生产力中最活跃的因素,很早就在人类经济生活中发挥着不可替代的作用,但把信息纳入企业经营管理系统中高效处理和应用是在计算机发明以后的60年代末。

目前人们所提到的管理信息系统,通常是指以计算机为工具,对管理信息进行收集、存贮、检索、加工和传递,使其应用于组织机构及企业管理领域的“人-机系统”,该系统是70年代初“后工业经济”时代的产物,在企业管理信息系统在其发展的初期,是单一的人—机系统,系统功能简单,效率低,对管理的作用有限.

进入20世纪80年代末,随着计算机网络和通信技术的大力发展,企业管理信息系统进入网络化的发展时期。世界发达国家已建立起了完善的先进的管理信息系统体系,在其社会经济发展领域中发挥着巨大的作用。

我国的管理信息系统大发展是在80年代末90年代初,国家相继建立起了“金卡\"、“金关”、金桥“工程,多数企事业单位建立了局域网和广域网管理信息系统。随着世界经济和我国经济逐步向知识经济迈进,无论是基于工业经济的管理信息系统,还是面向少数专家和管理人员的专家系统 (ES)或决策支持系统 (DSS),其处理对象和服务对象,自身的系统结构,处理能力,都有了进一步的发展。

2、管理信息系统的特点

(1)管理信息系统的组成

管理信息系统在企业中的应用存在三个要素,这就是人、计算机和数据。 人是指企业领导者、管理人员、技术人员,以及MIS建设的领导机构和实施机构,他们在系统中起主导作用。MIS是一项系统工程,不是只靠一些计算机开发人员就可以完成的,必须有企业管理人员,尤其是企业领导的积极参与。

计算机技术是MIS(管理信息系统)得以实施的主要技术。在这些技术中,软件开发是MIS开发的重点.

第三个因素也不能忽视.企业的管理数据是MIS正常运行的基础。广义地说,各项管理制度是MIS建设成功的基础.试想要计算一台机床的成本,需要按时输入每个部件、

每个零件以及每个螺钉螺帽的费用,涉及企业的生产车间、采购、库房、工艺设计和财务等多个部门,必须有一整套管理制度作保证。

(2)管理信息系统的界面特点

在计算机软件技术中,人机界面已经发展成为一个重要的分支。MIS人机界面设计一般遵循以下一些基本原则:

1)以通信功能作为界面设计的核心

人机界面设计的关键是使人与计算机之间能够准确地交流信息。一方面,人向计算机输入信息时应当尽量采取自然的方式:另一方面,计算机向人传递的信息必须准确,不致引起误解或混乱。另外,不要把内部的处理、加工与人机界面混在一起(人机界面程序只是通信),以免互相干扰,影响速度。

设计MIS时,针对每一个功能,都要按照模块化思想,使输入、处理与输出“泾渭分明”,充分体现人机界面的通信功能。这样设计出来的程序不易出错,而且易于维护。

报表打印是MIS必备的功能之一,而且打印之前常常需要计算。计算与打印分开设计,虽然消耗时间,但易于整个MIS系统的维护.

2)界面必须始终一致

统一的人机界面不至于会增加用户的负担,让用户始终用同一种方式思考与操作。最忌讳的是每换一个屏幕用户就要换一套操作命令与操作方法。

例如在整个系统可以以问号图标表示帮助,以磁盘图标表示存盘,以打印机图标表示打印等.

3、管理信息系统的开发方式

管理信息系统的开发方式主要有独立开发方式、委托开发方式、合作开发方式、购买现成软件方式等4种.这4种开发方式各有优点和不足,需要根据使用单位的技术力量、资金情况、外部环境等各种因素进行综合考虑和选择。不论哪种开放方式都需要有单位的领导和业务人员参加,并在管理信息系统的整个开发过程中培养、锻炼、壮大该系统的维护队伍。

总之,不同的开发方式有不同的长处和短处,需要根据使用单位的实际情况进行选择也可综合使用各种开发方式。

4、管理信息系统的开发过程

管理信息系统的开发过程一般包括系统开发准备、系统调查、系统分析、系统设计、

系统实现、系统转换、系统运行与维护、系统评价等步骤。根据开发系统的大小、复杂、投入、方式、方法等因素的不问,各步骤的要求和内容也不同,用户需要根据实际情况进行取舍和计划。

(1)系统开发准备

系统开发准备工作主要包括提出系统开发要求、成立系统开发小组、制订系统开发计划等工作.

(2)系统调查

新系统的系统分析与系统设计工作都要建立在对现行系统调查的基础上,即必须调查现行系统的运行情况、问题等,明确用户的需求,特别是合作开发和委托开发方式。

调查的主要内容有:

1) 现行系统概况:该组织的发展历史、目前组织的规模、工作状况、管理水平、与外界的主要联系等。调查该项内容的目的主要是为了划分系统界限、系统与外界的输入输出接口等.

2) 组织机构:画出组织的组织结构图,弄清组织的行政关系、人员编制、工作范围、地理位置等,发现不合理问题及新系统启动后可能对现有组织的影响.

3) 业务流程:按照业务种类的不同和处理时间的先后不同,深入了解现行系统的业务流程,画出现行系统业务流柞图,并与业务人员反复讨论,得到认可。调查中要注意定性与定量相结合,注意人、财、物、信息的流向、规格、频率、要求以及需要解决的问题等.

4) 报表、数据处理:了解各种统计报表、数据的格式、内容、处理时间及上报时间、频率、规律,存在的问题,对新系统的要求、希望等并收集各种报表。

5) 问题:现行系统中存在的主要问题和薄弱环节,可以按照严重程度分成不同的等级.新系统的建立应能解决大部分问题,并改善薄弱环节.

6) 新系统的功能和目标:了解各级领导和各类业务工作人员对新系统功能的要求, (4)系统设计

系统设计又称系统物理设计。系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可利用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做\"的问题。

(5)系统实施与转换

系统实施阶段的主要工作包括:系统硬件的购置与安装、程序的编写(购买)与调试、系统操作人员的培训、系统有关数据的准备和录入、系统调试和转换。

在系统实施阶段要成立系统实施工作量到小组,组织各专业小组组长和有关部门的领导共同编制新系统实施计划。可以应用各种项目管理的软件和方法进行管理,实行项目经理负责制,保证系统实施工作的顺利进行和成功。

硬件的购置和安装包括计算机硬件、外设、网络、电源、机房、环境等有关设备的购买、验收、安装与调试工作等,这些工作主要由专业技术人员完成.

数据准备与录入工作主要是指由手工操作转入计算机处理所需的各种数据的整理、录入及计算机系统中为新系统所用数据的转换工作。数据准备与录入工作要注意数据的准确性,在整理、录入、校验等各个环节把好关,为系统的顺利转换打好基础。

(6)系统维护和评价

管理信息系统是一个复杂的人机系统。系统外部环境与内部因素的变化,不断影响系统的运行,这时就需要不断地完善系统,以提高系统运行的效率与服务水平,这就需要从始至终地进行系统的维护工作。

系统评价主要是指系统建成后,经过一段时间的运行后,要对系统目标与功能的实现情况进行检查,并与系统开发中设立的系统预期目标进行对比,及时写出系统评价报告。

系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段 。

三 需求分析

1、系统可行性分析

可行性分析的任务是明确应用项目的开发的必要性与可行性,可行性取决于实现应用系统的资源和条件。系统的可行性主要包括三个方面:技术上的可行性;经济上的可行性;管理上的可行性;资源上的可行性。

(1)技术上的可行性

当今程序开发的语言和平台多种多样,其中Visual Basic 就是一种被越来越广泛应用的编程语言.它可用于开发动态网站和Web应用,是一种以面向对象方式创建web应用程序的方法。使用Visual Basic 开发的网站可以从数据库中抽取数据和内容,更容易管理读者、数据和内容。Visual Basic 提高了开发的效率和可靠性,同时也提高了可扩展性、安全性和性能。在开发平台和数据库系统选择方面Visual Basic 6。0是面向单个开发人员的用于构建部门客户端/服务器 Windows 应用程序和网站的高度集成的开发环境。通过 Visual Basic 6。0可以很容易地使用开发环境构建 Windows、Web 和客户设备应用程序.并整合了MS Access 2007数据库系统。校园已正常运行;开发人员已熟练掌握面向对象的开发工具;教务人员已实现计算机培训,技术上实现系统是可行的。

(2)经济可行性

本方案由于采用网络方式,因此投入比较多,但此系统建成后,可以实现资源共享,支持选课制,可以直接进行信息的查询以及修改,。本系统运行后可以节省不少人员,每个人的工资大概都在一万五左右,因此可以带来一些经济效益。另外,可以省去打印分析的时间,直接用系统进行分析就可以看到最直接的结果。从经济上说是可行的,另外使用此系统可以减少人为的失误,准确方便,还可带来其他方面的经济效益。 (3)管理可行性

学校规模的不断扩大,学生数量的急剧增加,学生的各种信息量也在不断增长。面对庞大的信息量,就需要有学生成绩管理系统来提高学生管理工作的效率.通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。

(4)系统运行可行性分析

本系统使用之后,组织机构上肯定有一定的变动,但这都是局部的,不会影响整个组织。此为网络系统,可以通过安装防火墙连接到校园网。由于本软件界面友好,易学易用,方便,因此,对现有人员基本不用进行培训.所以,具有系统的运行可行性.

结论:鉴于以上分析,所以我们项目小组决定做学生成绩管理系统。

2、学生成绩管理系统功能需求简介

学生成绩管理系统对学校加强学生成绩管理有着极其重要的作用。由于各个大学都在持续扩招,学生的数量日益庞大,传统的手工成绩管理不仅工作量大,而且容易出现问题。比如信息统计模块,报表设计模块,打印输出模块,模糊查询模块等等.

由于本软件主要是为我系定制开发的,因此针对我系学生成绩管理的实际工作而言,我们经过了反复地论证,最终确定了学生成绩管理系统的设计方案。该学生成绩管理系统的主要功能为:

(1)掌握每个学生每一门课的成绩信息,并记录在数据库中以便其他管理信息系统的使用;

(2)分权限的管理.在成绩管理中,系统管理员可以对任何一个学生的成绩进行查询和管理;但是对学生类用户,它只能对自己的成绩进行查看,而且不能对其进行更改。

(3)系统管理员类用户可以对成绩按照课程进行管理,可以对每一门课所修的学生进行添加、删除和修改;

(4)系统管理员类用户可以对成绩按照学生进行管理,可以对每一门课所修的学生进行添加、删除和修改;

(5)可以针对某一门课的学生列表及其成绩生成报表,并打印; (6)可以针对某一个学生所选课程及其对应的成绩生成报表,并打印。

3、功能需求描述

(1)用户管理功能

用户分为系统管理员用户和学生用户两类.不论是系统管理员用户,还是学生用户都需要通过用户名和口令进行登录。系统管理员用户可以对所有的学生成绩进行增加、删除和修改。

(2)系统管理员对成绩的管理功能

系统管理员对成绩的管理可以从两个角度管理:按照课程角度进行管理和按照学生角度进行管理.系统管理员登陆该系统以后,可以对这两种方式进行选择.

1)按照课程角度进行管理

按课程角度管理系统管理员可以看到课程信息和成绩信息。课程信息包括课程编号、课程名称、学时和课程类型。当系统管理员用鼠标双击某一课程时,可以自动显示

出该课程的所有学生的成绩信息,成绩信息包括选修这门课的学生的学号、姓名、班级和考试成绩.并同时自动计算出所有学生的人数,以及所有学生的平均成绩.在成绩信息中,系统管理员可以对学习成绩进行增加、修改和删除。并能够打印报表。

2)按照学生角度进行管理

按学生角度管理系统管理员可以看到学生信息和成绩信息.学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。当系统管理员用鼠标双击某一学生信息时,可以自动显示出该课程的这个学生所有课程的学习成绩,并同时自动计算出这个学生的总分和平均分。在成绩信息中,系统管理员可以对学习成绩进行增加、修改和删除.并能够打印报表.

(3)学生对成绩的查看功能

学生用户登录后,学生可以看到自己的学生信息和成绩信息。学生信息包括学号、姓名、班级、生日、性别、地址、电话和简历。成绩信息包括这个学生的所有课程的成绩信息、总分及平均分。学生可以打印成绩报表.

学生成绩管理系统功能模块图如图3。1所示。

学生成绩管理系统 管理员用户 学生用户 按课程角度进行增删改 按学生角度进行增删改 打 印 报 查询自己的考试成绩 打 印 报 表 图3.1 学生成绩管理系统功能模块图

4、目标系统要求

目标系统应该达到以下要求:

(1)时间经济性.优化逻辑设计与物理设计,使系统运行效率高,反映速度快。 (2)可靠性。能连续准确的处理业务,有较强的容错能力。 (3)可理解性。用户容易理解和使用该系统。

(4)可维护性和适应性。系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要.

(5)可用性。目标系统功能齐全,能够完全满足业务需求。

(6)安全保密性.保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。

5、系统平台选择

选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;另一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都非常容易,而且性能优越.

操作系统:Windows XP 数据库为:MS Access 2007

开发工具与语言: Visual Basic 6。0中文版

四 数据库设计

1、数据库介绍

所谓数据库(Database)就是指按一定组织方式存储再一起的,相互有关的若干个数据的结合,数据库管理系统(Database Management System)就是一种操纵和管理数据库的大型软件,简称DBMS,他们建立在操作系统的基础上,对数据库进行统一的管理和控制,其功能包括数据库定义,数据库管理,数据库建立和维护,于操作系统通信等。DBMS通常由数据字典,数据描述语言及其编译程序,数据操纵(查询)语言及其编译程序,数据库管理例行程序等部分组成。

一般而言,桌面数据库主要应用于小型的、单机的数据库应用程序.也是初学者常用的数据库类型。实现起来比较方便,但同时也只能提供数据的存取功能。它主要用于小型的、单机的、单用户的数据库管理系统。

该学生成绩管理系统的数据库选用Microsoft公司的Access产品作为数据库应用程序.目前的Access 2007是Microsoft强大的桌面数据库平台的第六代产品,是32位Access的第三个版本。Access有以下一些基本定义:

数据库是一个包含各种Access “对象”(表、查询、窗体、报表、宏和模块)的文件,Access中所有工作都是建立在此基础之上的。

表是存放数据的容器,被设计成行和列的格式,就像电子表中的那样。每一列叫做一个“字段\包含特定类型的信息,如姓名或学历。每一行称为一个“记录”,包含与单个实体有关的所有信息,如某个员工的姓名、性别、所在部门、学历等。对于像Access这样的关系数据库管理程序,一个数据库通常包含几个存放相关数据的不同表。

查询是一个Access对象,它询问数据库中有关数据的问题。根据设计方法的不同,查询能够在数据库中检索并组合来自不同表的数据。例如,可以设计一个查询来告知在公司中工作超过1年的职员有多少。查询还可以对一组数据执行操作,如更新或删除某组记录。

窗体是一个窗口,它提供一种很方便的途径来查看数据库中已有记录或向数据库中增添新记录.在Access中,可以创建一个窗体,用来同时查阅单个表或多个表中的数据,还可以打印和显示窗体。

报表是一个Access对象,设计来显示数据,其作用类似于窗体,但主要是用于数据打印,不能输入数据。

宏用来保存Access中的一系列操作。可自动执行一些日常的任务,以便简化在Access中的工作.

模块是用Visual Basic for Applications(VBA) 编写的过程,VBA是Access的基础程序设计语言。利用VBA可以编写程序代码来完成Access宏所不能完成的特定任务。

2、数据流程图

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响.

用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。

仔细分析调查有关学生成绩管理信息需求的基础上,将得到本系统所处理的数据流程。学生成绩管理系统数据流程图如图4.1所示.

图4。1 学生成绩管理系统数据流程图

针对一般学生成绩管理信息系统的需求,通过对成绩管理过程的内容和数据流程分析,可以设计出该系统的数据项和数据结构:

(1)“学生信息\"的数据项有:学号、姓名、班级、生日、性别、地址、电话和简历等;

(2)“课程信息”的数据项有:课程编号、课程名称、学时和课程类型等。

(3)“学生成绩信息”的数据项有:学号、姓名、班级、选修课程、考试成绩等。

3、数据字典

数据字典是一种描述数据内容的概念模式。它用表格的形式列出数据的基本属性以及相互关系,它的雏形是编写软件时的变量说明或标识符清单。当软件系统越来越大的时候,这项内容就变得十分重要、十分复杂了。当更适于记录各种细节,所以常常与其它描述工具相互补充、配合使用。

表4.1 管理员表

项 目 数据存储编号 数据存储名称 简述 数据存储组成 相关联的处理 项 目 数据存储编号 数据存储名称 简述 数据存储组成 相关联的处理

描 述 D1 管理员表 增加、修改、查询学生学籍 学号+身份证号+高考号+姓名+性别+家庭住址+系部班级 学籍管理,成绩管理,课程管理 表4.2 学生表

描 述 D2 学生表 登记学生信息 学号+姓名+性别+系部班级 成绩管理,课程管理 4、数据库概念结构设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的数据字典设计打下基础。

根据上面的设计可以规划出的实体有:学生实体、课程实体和学生成绩信息实体。各个实体具有的描述E-R图如4。2至图4.4所示。

(1)学生E-R图

图4。2 学生E—R图

学生的属性有:学号、改名、班级、简历等。 (2)课程E-R图

图4.3 课程E—R图

课程属性有:编号、名称、学时、类型等。 (3)学生成绩信息E-R图

图4。4 成绩信息E-R图

成绩信息的属性有:学号、姓名、课程、成绩等。

(4)总体E-R图

客观世界中的事物彼此之间往往都是有联系的。数据对象彼此之间相互连接的方式称为联系,也叫关系。从上面介绍我们来看一下本系统这些实体之间的关系:

学生实体与班级实体之间的关系是:一个班级可有多个学生,一个学生在一个班级里。因此,班级对学生是1:n,学生对班级是n:1;

班级实体与系实体之间的关系是:一个系有多个班级,多个班级对应一个系。因此,系对班级是1:n;班级对系的关系是n:1;

课程实体与学生实体之间的关系是:一门课程由多个学生学,一个学生可学多门课程。因此,课程对学生是1:n,学生对课程的关系是n:m。

班级实体与专业实体之间的关系是:一个专业有多个班级,多个班级对应一个专业。

因此,专业对班级是1:n;班级对专业的关系是n:1;故本系统的关系图如图4。5所示:

图4.5 总体E—R图

5、数据词典设计

该软件的数据库名称为“Score.mdb\",该数据库主要由下述三张表构成: score:成绩表 student:学生信息表 course:课程信息表 (1)score:成绩表

表4.3成绩管理表

字段名称 id studentID 内 容 ID 号 学 号 类 型 自动编号 文 本 长 度 长整型 整 型 student表的Serial字段 为主键之一,对应于CourseCourseID Score 课程编号 分 数 文 本 数 字 整 型 表的Serial字段 整 型 备注 为主键之一,对应于成绩管理它主要有ID号、学号、课程编号、分数等信息。它主要的属性有:ID、Studentid、CourseID、Score.学号是主键之一.

(2)student:学生信息表

表4.4学生的基本信息表

字段名称 Name Class Birthday Sex Address Tel Resume 内 容 姓名 所属班级 生日 性别 家庭住址 电话 简历 类 型 文本 文本 日期时间 文本 文本 文本 备注 长 度 10 5 2 30 15 500 备注 按姓名查询 按班级查询 按年月查查询 按性别查询 籍贯 联系方式 个人简介 学生基本信息主要有姓名、所属班级、生日、性别、家庭住址、电话、简历.并注明了其类型方便学生查询,它的主要属性表:Name、Class、Birthday、Sex、Address、Tel、Resume。

(3)course:课程信息表

表4.5课程管理表

字段名称 Serial Name Period typeid

内 容 课程编号 课程名称 学时数 课程类型 类 型 文 本 文 本 数 字 文本 长 度 50 50 长整型 50 备注 主关键字 按课程查询 学习时间 按分类查询

课程信息主要有课程编号、课程名称、学时数、课程类型.并注释了类型和长度的规范便于查询,它主要的属性有:Serial、Name、Period、typeid.

6、使用ADO数据控件访问数据库

ADO(Active Data Objects)是一种新的数据访问方式,具有以下特征: √有一个简化的对象模型。

√与其他Microsoft和非Microsoft技术更加紧密的集成。

√是一个本地和远程数据访问、远程和断开连接的记录集、用户可以访问的数据绑定接口以及层次化的记录集的通用接口.

学生成绩管理系统通过ADO这个数据控件来访问数据库,首先,安装ADO 控件要在简体中文VISUAL BASIC6。0企业版中注册后才能使用.ADO(ActiveX Data Object)是微软提出的数据访问接口,它实现了RDO的绝大多数功能,另外还增加了一些用户以前没有接触到的特征.Visual Basic 6.0可以很好地支持ADO和OLE DB数据访问模式.

ADO对象模型中包含了3个一般用途的对象:Connection、Command和Recordset.程序开发人员可以创建这些对象并且使用这些对象访问数据库。在ADO对象模型中还有其他几个对象,例如Field、Property、Error和Parameter,它们是作为前面3个对象的子对象进行访问的。

(1)ADO数据控件的功能

ADO data控件使用ActiveX数据对象(ADO)来快速建立数据约束控件和数据提供者之间的连接,并快速创建记录集,然后将数据通过数据约束控件提供给用户,其中数据约束控件可以是任何具有“数据源”属性的控件,而数据提供者可以是符合OLE DB规范的数据源。使用Visual Basic的类模块也可以很方便的创建子集的数据提供者。在Visual Basic6。0中,可以使用ADO数据控件实现下面一些功能:

1)连接一个本地数据库或远程数据库。

2)打开一个指定的数据库表,或定义一个基于结构化查询语言(SQL)的查询、存储过程或者是该数据库中表的视图的记录集合。

3)将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值.

4)添加新的记录,或者根据对显示在绑定的控件中的数据的任何更改来更新一个数据库。

(2)ADO数据控件的属性

ADO数据控件与Visual Basic的内部数据控件(Data)和远程数据控件(RDC)很相似,它允许使用ADO快速地创建与数据库的连接.

ADO支持Connection String属性的4个参数,而且这4个参数将不经过ADO的处理直接送到数据源。这四个参数的属性如下表4。6所示:

表4。6 Connection String参数表

参数 Provider File Name 指定数据源的名称 指定基于数据源的文件名称 描述 Remote Server 指定在打开一个客户端连接时使用的数据源名称 Remote Server 指定打开客户端连接时使用的服务器的路径与名称

Connection String属性:是一个字符串,可以包含进行一个连接所需的所有设置值,在该字符串中所传递的参数是与驱动程序相关的。例如,ODBC驱动程序允许该字符串包含驱动程序、提供者、默认的数据库、服务器、用户名称以及密码等.

五 系统详细设计

下面给出系统开发出来的详细界面以阐述学生成绩管理系统的具体功能.

1、登陆界面编码设计

首先是进入登陆界面,如图5.1所示

5。1 登陆界面

’’取得用户输入的用户名和密码 Dim user As String, pwd As String user = txtUser pwd = txtPwd

’’根据不同的身份,选择不同的表用以查询 Dim r As New ADODB。Recordset Dim strSQL As String Select Case gnUserType

Case 0: ’选择身份为系统管理员

strSQL = ”select * from teacher where name='” & user & \"' and serial=’” & pwd & ”’”

Case 1: ’选择身份为课程

strSQL = ”select * from student where name=’” & user & ”’ and serial=’\" & pwd & ”’”

End Select

Private Sub Form_Load()

cboUserType.ListIndex = 0 End Sub

2、主界面

该界面是用户登录成绩管理系统后的第一个界面,有一个菜单栏,菜单栏上有相应提示菜单,菜单项主要有修改密码、分配用户等只有系统管理员才能进行的操作,也可选择普通用户可以进行的操作。其界面如图5.2所示:

图5.2 主界面图

3、学生基本信息表界面

该界面可提供用户的基本信息和一些基本操作(如查询),其界面如图5.3所示:

图5。3 学生基本信息图

4、修改界面

该界面主要提供给系统管理给用户修改密码,其界面如图5.4所示:

图5。4 修改密码界面图

修改密码代码如下:

private void button1_Click(object sender, EventArgs e) {

if (textBox3。Text == textBox4.Text) {

data。conn。Open(); //打开连接 //写SQL代码update语句

string sestr=”select * from users where 用户名=’” + textBox1。Text; sestr+= ”’ and 密码='” + textBox2.Text + ”'\"; data。cmd=new SqlCommand(sestr,data.conn); data。dreader=data。cmd.ExecuteReader(); if(data。dreader。Read()) {

data。dreader.Close();

string upstr=”update users set 密码=’”+textBox3.Text+”' where 用户名=’”+textBox1.Text+\"’”;

data。cmd=new SqlCommand(upstr,data。conn); data。cmd。ExecuteNonQuery();

MessageBox。Show(”密码修改成功!”, \"消息提示\"); this。Close(); } } }

5、分配用户界面

该界面主要是用于系统管理员分配新的用户,其界面如图5。5所示:

图5。5 分配用户界面图

分配用户代码如下:

private void button1_Click(object sender, EventArgs e) {

string selsql = ”select * from users where 用户名=’” + textBox1。Text + ”’”; data。conn。Open();

data。cmd = new SqlCommand(selsql, data.conn); data。dreader = data。cmd。ExecuteReader(); if (data。dreader.Read()) {

MessageBox。Show(\"当前用户已经存在!”, \"消息提示\");

data.dreader.Close(); } else {

data。dreader.Close(); int qxjb = 0;

switch (comboBox1.SelectedItem。ToString()) {

case ”系统管理员”: qxjb = 1; breakk case \"普通用户”: qxjb =2; break; default: qxjb = 3; break; } try {

string insertsql = ”insert into users(用户名,密码,用户类别,权限级别) values(’\" + textBox1。Text + ”','” + textBox2。Text + \"',’” + comboBox1。SelectedItem。ToString() + ”',\"+qxjb+”)”;

data。cmd = new SqlCommand(insertsql, data.conn); data。cmd。ExecuteNonQuery();

MessageBox。Show(”用户分配成功!”, ”消息提示”); }

6、查询输出

该界面是用户经过查询之后输出来的学生成绩信息,其界面如5。6所示:

图5。6 查询输出图

此界面是为了方便学生和管理员对成绩的查询,能随时掌握成绩的分数.其中的的上部控键有班级、课程名称、最低分、最高分、查询、导出.下窗口中显示学生的编号、学号、姓名、课程、成绩等信息。

六 系统测试

1、测试概要

软件测试主要分为静态测试和动态测试,静态测试包括代码走查、技术评估、代码审查等,动态测试主要包括黑盒测试、白盒测试和回归测试。而主要用到的是黑盒测试和白盒测试,黑盒测试主要测试系统的功能是否达到预期结果,对整个系统的运行正确性、可靠性和稳定性进行测试,其中正确性最主要。总体测试的内容包括使用本系统进行大量数据的录入,特别是边缘数据的录入测试。而白盒测试主要是代码逻辑的测试,测试代码的接口是否运行正确。

软件所要实现的功能及程序的关系如下表:

功能 学需求 生 基 本 信 息程序 输入 学生基本 √ 信息√ 管理 学生成绩 管理 课程信息 管理 管理员信 息管理 系统 维护处理 表6。1功能和程序关系表

学生学生学生学学生管理管理信息成绩成绩生密码员基员信查询输入查询 成修改 本信息删修改 更新 绩息输除 单入 的打印 √ 课程信息输入修改 管理员密码修改 数据数据备份 恢复 √ √ √ √ √ √ √ √ √ 其中对输入输出的数据要求如下:

输入的成绩分数、课程号、学号、学年、学期的精度为整数,输入的学时,学分保留

一位小数。

输出成绩分数、课程号、学号、学年、学期精度仍为整数,输出学分、学时、绩点保留一位小数.

2、测试过程

学生在输入自己的学号及账号时可以查询自己的选修课与必修课的成绩及对自己账号的密码修改.

例如10001学号的同学输入:学号和密码 预期输出:他的基本信息与成绩单表。 实际输出:它的基本信息与成绩单.

管理员可以上传选修了自己课程的成绩:管理员登录进入上传成绩单界面后.可以直接上传成绩。

输入:管理员登录名与密码。

预期输出:他的基本信息与需上传的学生名单。 实际输出:他的基本信息与需上传的学生名单。上传成功 管理员可以管理学生基本信息。 输入:管理员登录名与密码。

预期输出:他的基本信息与修改与更新的信息(教师,学生,课程基本信息)。 实际输出:他的基本信息与修改与更新的信息(教师,学生,课程基本信息)并且添加成功。

而在这个系统中主要对其功能进行测试,测试输入数据是否达到了预期的结果。例如在对学生信息进行修改,当我输入数据后点击修改按钮,如果能正常运行,就会弹出对话框显示修改成功,否则显示不能进行更新(如图6。1)。又如在登录界面时,我输入错误的用户名或密码就会弹出用户名或密码错误的对话框。 (如图6。2).

图6。1 修改学生信息 图6.2 用户登录界面

通过多次测试,基本能满足预期结果.

七 系统运行及维护

管理信息系统在完成系统实施、投入正常运行之后,就进入了系统运行与维护阶段。

1、系统的配置

(1)硬件配置要求: CPU:PI1200以上。 内存:32MB以上.

硬盘:2。1GB以上(可用空间最好在160MB以上)。 打印机:推荐EPSON LQ-1600KII。 (2)软件配置要求:

WINDOWS XP 中文版操作系统。

本系统运行:首先启动WINDOWS XP ,将本系统拷贝到硬盘相应地目录下,运行“学生成绩管理系统.EXE”即可。

2、系统的维护

系统维护的目的是保证管理信息系统正常而可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用。换言之,系统维护就是为了保证系统中的各个要素随着环境的变化始终处于最新的,正确的工作状态.系统维护的工作量往往是很大的,其费用大约占整个生命周期的60%,所以我们必须对系统维护给予足够的重视。

(1)系统维护的内容 按照维护对象的不同,系统维护的内容可分为以下几类: 1)系统应用程序维护 2)数据维护 3)代码维护 4)硬件设备维护 (2)系统维护的类型

系统维护的重点是系统应用软件的维护工作,按照软件维护的不同性质,可以划分为下面四种类型:

1)纠错性维护 诊断和修正系统中遗留的错误。 2)适应性维护 使系统的环境的变化而进行的维护.

3)完善性维护 为满足服务设施的需求而进行的维护.

4)预防性维护 为将要发生的变化或调整而进行的主动性维护. (3)系统维护的组织与管理

系统维护工作,首先必须建立一个维护组织,确定进行维护工作所应遵循的原则和规范的过程,此外还应建立一套适用于具体系统维护过程的文档及管理措施,以及进行复审的标准。

(4)本系统的维护模块

本系统的维系统护功能主要是为保证系统能够正常运行.

八 结论及体会

随着学校规模的不断扩大,学生数量的急剧增加,有关学生的各种信息量也在不断成倍增长.面对庞大的信息量,就需要有学生成绩管理系统来提高学生管理工作的效率.

传统手工的学生成绩管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了学生成绩管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。

在软件的编写过程中,我充分体会了软件编程工作者的辛苦,因为每一个细微的细节都必须十分的注意,如果稍有不慎,就会全盘皆输,而且往往很多的时候,程序我自己觉得非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。

在开始编写程序的时候,我看到别人的软件功能非常的详细,而且界面非常的漂亮,总希望自己的软件也非常的完善,但是,经过二个月的学习,发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验,而这个方面又是我的弱项,因此,在朋友的帮助下,我终于认清自己的不足及劣势,不要贪图大而全,只要尽我所能,编制一个实用简单的软件也是件很不容易的事情.

在反反复复的学习及不耻下问之下,我的辛勤努力有了汇报,终于做出了一个简单的软件,虽然这个软件的功能非常的简单,而且我想,在实际的运用中,肯定会有所不足,因为学生成绩管理工作的内容非常的丰富,我涉及到的仅仅是学生管理的一部分简单内容,离实际的客户需求肯定还有一定的差距。但是,它毕竟代表了我二个月辛勤的结晶。

由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够醒目等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美.

在本系统的设计过程和论文编写过程中,很多系统管理员、同事和朋友都给与了我许多无私的帮助,尤其是我的导师给我的论文提出了很多宝贵的修改意见,在这里,我向这些无私帮助我的人表示衷心的感谢.

参考文献

[1]杨富国。visual basic程序开发案例分析。 北京:北方交通大学出版社,2006 [2]董翔英.SQL Server基础教程。 北京:科学出版社,2005

[3]武洪萍。Visual Basic 数据库应用。 北京:中国电力出版社,2006 [4]李桐.Visual Basic6.0程序设计基础与应用. 北京:海洋出版社,2004 [5]王珊,陈红。数据库系统原理教程。北京:清华大学出版社,2006 [6]董国平,陈艳华。信息系统开发实例精粹. 北京:中国电子工业出版社,2006 [7]张海藩。软件工程导论。 北京:清华大学出版社,2005

[8]汪星明,周山芙。管理系统中计算机应用。武汉:武汉大学出版社,2004 [9]刘炳文。Visual Basic程序设计教程(第二版)。北京:清华大学出版社,2003 [10]卢国俊。Microsoft Visual Basic 6.0数据库开发.北京:电子工业出版社,2002 [11]王华杰。VB。NET编程实例详解(含盘)。北京:中国铁道出版社,2002 [12]康博译。VB。NET高级编程。北京 : 清华大学出版社, 2002 [13]新智工作室。VB6.0中文版教程。 北京:电子工业出版社,2000

附录

学生成绩管理系统设计与实现源代码如下:

1。frmAddCourse。frm Option Explicit

'’表示用户是否点击“确定”,来添加一个课程信息 Public mbAdded As Boolean

Private Sub cboType_Click()

’'点击课程类型时,动态的改变对应的课程类型号 Dim strSQL

If cboType。ListIndex 〈〉 0 Then strSQL = ”Select * from course where typeid = ” & cboType.ItemData(cboType。ListIndex) Else

strSQL = \"Select * from course” End If

If DataEnv。rsAddCourse。State 〈〉 adStateClosed Then DataEnv。rsAddCourse。Close

DataEnv。rsAddCourse。Open strSQL ’’刷新dcbSerial所列的课程类型号 dcbSerial。RowMember = ”\" dcbSerial。Refresh dcbSerial。ReFill

dcbSerial.RowMember = ”AddCourse\" dcbSerial.Refresh dcbSerial。ReFill dcbSerial = \"\"

’'刷新dcbName所列的课程类型名 dcbName。RowMember = ”” dcbName。Refresh dcbSerial.ReFill

dcbName.RowMember = ”AddCourse” dcbName.Refresh dcbName.ReFill dcbName.Text = \"”

Call dcbName_Click(0) Call dcbSerial_Click(0)

cmdOK.Enabled = (dcbSerial.Text 〈> ””) End Sub

Private Sub cmdCancel_Click() mbAdded = False Me。Hide End Sub

Private Sub cmdOK_Click() mbAdded = True Me.Hide End Sub

Private Sub dcbName_Click(Area As Integer) ’'动态改变dcbSerial中的课程号 dcbSerial.Text = dcbName。BoundText

cmdOK。Enabled = (dcbSerial。Text 〈〉 \"\") End Sub

Private Sub dcbSerial_Click(Area As Integer) ’’动态改变dcbName中的课程名 dcbName。Text = dcbSerial.BoundText

cmdOK.Enabled = (dcbSerial。Text <〉 \"”) End Sub

'’如果输入的字符不属于数字或者顿号,则取消输入的字符 If (KeyAscii 〉 Asc(\"9”) Or KeyAscii 〈 Asc(\"0\")) And KeyAscii <> Asc(”。”) And KeyAscii 〈〉 vbKeyBack Then KeyAscii = 0 End Sub

2. frmAddStudent。frm Option Explicit ’’表示用户是否点击“确定”,来添加一个课程信息 Public mbAdded As Boolean

Private Sub cboClass_Click() ’’针对所选的班级,列出班级中所有的学籍信息 Dim strSQL

If cboClass.Text = ”全部” Then

strSQL = ” from student order by serial” Else

strSQL = ” from student where class=’” & cboClass & \"’ order by serial\" End If

DataEnv。rsAddStudent。Close

DataEnv.rsAddStudent。Open \"select * \" & strSQL

’'刷新dcbSerial所列的学号 dcbSerial。RowMember = \"” dcbSerial.ReFill dcbSerial.Refresh

dcbSerial.RowMember = ”AddStudent” dcbSerial。ReFill dcbSerial。Refresh dcbSerial.Text = \"” ’’刷新dcbName所列的学生姓名 dcbName。RowMember = \"” dcbName。Refresh dcbSerial。ReFill

dcbName。RowMember = \"AddStudent” dcbName。Refresh dcbName。ReFill dcbName。Text = ”” End Sub ’’通过当前课程的成绩,来得到该课程的总成绩和平均成绩 Sub Calculate(sSerial As String)

Dim rs As New ADODB。Recordset Dim str

str = ”select avg(score) as avg_score, count(*) as count_score from score where courseid=’” & sSerial & ”’”

rs。Open str, DataEnv.Con, adOpenStatic

If Not rs.EOF Then

txtSum。Text = FormatNumber(rs(”count_score\"), 0) txtAverage。Text = FormatNumber(rs(”avg_score\"), 2) End If End Sub

'’计算该课程的总成绩和平均成绩

Call Calculate(grdScan。Columns(0)。CellText(grdScan.Bookmark)) End Sub

Private Sub cmdAdd_Click() On Error GoTo errHandler

With frmAddStudent Load frmAddStudent

。Caption = ”添加成绩信息” .Show vbModal

''如果用户没有点击确认按钮,则退出处理过程 If Not .mbAdded Then Unload frmAddStudent Exit Sub End If

’'添加成绩记录 Dim str

str = ”insert into score(StudentID, CourseID, Score) values(’\" str = str & 。dcbSerial。Text & \"',’” & grdScan。Columns(0)。CellText(grdScan。Bookmark) & ”',’” & 。txtScore.Text str = str & \"')\"

DataEnv.Con。Execute str

Unload frmAddStudent End With

Unload frmAddStudent '’刷新整个网格控件

Call RefreshScore(grdScan。Columns(0).CellText(grdScan。Bookmark))

Exit Sub

errHandler:

MsgBox Err。Description, vbCritical, \"错误” End Sub

Private Sub cmdClose_Click() Unload Me End Sub

’'添加成绩记录 Dim str

str = \"update score set score=\" & 。txtScore。Text str = str & ” where courseid=’” & grdScan.Columns(0).CellText(grdScan.Bookmark) & \"'”

str = str & ” and StudentID=’\" & 。dcbSerial。Text & ”'\" DataEnv。Con。Execute str

Unload frmAddStudent End With

Private Sub cmdPrevious_Click()

DataEnv。rssqlCourse。MovePrevious Call ChangeBrowseState End Sub

Private Sub cmdReport_Click() On Error Resume Next

Dim rpt As New rptCourseScore Load rpt

rpt。Caption = ”课程\" & grdScan。Columns(1)。CellText(grdScan。Bookmark) & \"的成绩列表” rpt。Show 1 End Sub

Private Sub cmdSeek_Click() With frmFind

Dim i As Integer ’显示查找窗口 Load frmFind

’'填充查找窗体的字段列表框 .lstFields。Clear

For i = 0 To DataEnv。rsCourse。Fields。Count - 1

.lstFields。AddItem (DataEnv。rsCourse(i).Name) Next i

。lstFields。ListIndex = 0 。Show 1

If .mbFindFailed Then Exit Sub

Dim sTemp As String

If LCase(.msFindOp) = ”like” Then sTemp = 。msFindField & ” ” & .msFindOp & ” ’%” & 。msFindExpr & \"%'\" Else

sTemp = 。msFindField & ” \" & .msFindOp & ” ’” & .msFindExpr & ”'”

End If

sTemp = ”select * from course where \" & sTemp & ” order by serial\"

Unload frmFind End With ’’查找数据,并刷新用以导航的网格控件 DataEnv.rssqlCourse.Close

DataEnv.rssqlCourse.Open sTemp Call RefreshGrid Exit Sub

errHandler:

MsgBox \"没有符合条件的纪录!”, vbExclamation, ”确认” End Sub

Private Sub Form_Load()

With DataEnv。rsCourse_type

’'从CourseType表中读取数据,填充到cboType复合框中 cboType.Clear

cboType。AddItem ”全部”

cboType。ItemData(cboType.ListCount - 1) = 0 If 。State 〈> adStateOpen Then 。Open 。MoveFirst

While Not 。EOF

cboType.AddItem DataEnv.rsCourse_type(”Name”)

cboType。ItemData(cboType。ListCount — 1) = DataEnv.rsCourse_type(”id”) 。MoveNext Wend End With

cboType.ListIndex = 0

cmdList。Value = True ’’点击“列出>〉”

fraManage.Enabled = True fraBrowse。Enabled = True fraSeek。Enabled = True grdScan。Enabled = True

Call grdScan_Change End Sub

Private Sub grdScan_Change()

If grdScan。ApproxCount > 0 Then

Call RefreshScore(grdScan。Columns(0)。CellText(grdScan。Bookmark)) End If End Sub

Private Sub grdScan_DblClick() sstMain.Tab = 1 End Sub

Private Sub grdScan_RowColChange(LastRow As Variant, ByVal LastCol As Integer) ’’当前行改变,则动态改变所要显示的记录 If LastRow 〈> grdScan.Bookmark Then If grdScan。ApproxCount 〉 0 Then

Call RefreshScore(grdScan。Columns(0).CellText(grdScan.Bookmark)) End If End If End Sub

4. frmFind。frm Option Explicit

Public msFindField As String ’查找字段 Public msFindOp As String ’查找运算符 Public msFindExpr As String '查找表达式 Public mbFindFailed As Boolean '查找是否失败

Private Sub cmdCancel_Click() mbFindFailed = True Me.Hide End Sub

Private Sub txtExpression_Change()

cmdOK.Enabled = Len(lstFields。Text) 〉Len(txtExpression.Text) > 0 End Sub

Private Sub lstFields_Click()

cmdOK。Enabled = Len(lstFields。Text)Len(txtExpression。Text) > 0 End Sub

Private Sub lstOperators_Click()

cmdOK.Enabled = Len(lstFields。Text)Len(txtExpression.Text) 〉 0 End Sub

5. frmLogin。frm Option Explicit

Private Sub cboUserType_Change()

gnUserType = cboUserType。ListIndex End Sub

Private Sub cboUserType_Click()

gnUserType = cboUserType.ListIndex End Sub

Private Sub cmdCancel_Click() Unload Me End Sub

Private Sub cmdOK_Click()

'’取得用户输入的用户名和密码 Dim user As String, pwd As String user = txtUser

0 And Len(lstOperators。Text) 〉 0 And 0 And Len(lstOperators.Text) > 0 And 〉 0 And Len(lstOperators.Text) > 0 And 〉

pwd = txtPwd

'’根据不同的身份,选择不同的表用以查询 Dim r As New ADODB.Recordset Dim strSQL As String Select Case gnUserType

Case 0: '选择身份为系统管理员

strSQL = ”select * from teacher where name=’\" & user & ”' and serial='” & pwd & \"'”

Case 1: ’选择身份为课程

strSQL = ”select * from student where name=’\" & user & ”’ and serial=’” & pwd & \"'” End Select End Sub

6. frmStudentScore。frm Option Explicit '’’当改变记录集时,需要刷新整个网格控件 Sub RefreshGrid()

grdScan。DataMember = \"” grdScan。Refresh

If DataEnv.rssqlStudent.State <〉 adStateClosed Then DataEnv.rssqlStudent。Close DataEnv。rssqlStudent。Open

grdScan。DataMember = \"sqlStudent\" grdScan.Refresh

'’刷新各个绑定控件 Call grdScan_Change End Sub ’’通过当前学生的成绩,来得到该学生的总成绩和平均成绩 Sub Calculate(sSerial As String) Dim rs As New ADODB.Recordset Dim str

str = ”select avg(score) as avg_score, sum(score) as sum_score from score where studentid='” & sSerial & \"’\"

rs.Open str, DataEnv。Con, adOpenStatic

If Not rs。EOF Then

txtSum.Text = FormatNumber(rs(”sum_score”), 2) txtAverage。Text = FormatNumber(rs(”avg_score\"), 2) End If End Sub

’’计算该学生的总成绩和平均成绩

Call Calculate(grdScan。Columns(0)。CellText(grdScan。Bookmark)) End Sub

Private Sub cmdAdd_Click() On Error GoTo errHandler

With frmAddCourse Load frmAddCourse

。Caption = ”添加成绩信息” 。Show vbModal

'’如果用户没有点击确认按钮,则退出处理过程 If Not 。mbAdded Then Unload frmAddCourse Exit Sub End If

'’添加成绩记录 Dim str

str = ”insert into score(StudentID, CourseID, Score) values(’\" str = str & grdScan.Columns(0)。CellText(grdScan.Bookmark) & ”’,’” & 。dcbSerial。Text & ”',’” & 。txtScore.Text str = str & \"')\"

DataEnv.Con。Execute str

Unload frmAddCourse End With

Private Sub cmdDelete_Click() On Error GoTo errHandler

If MsgBox(”确实要删除此成绩记录?\", vbYesNo + vbQuestion + vbDefaultButton2, ”确认”) = vbYes Then Dim sSerial

sSerial = grdScore。Columns(0).CellText(grdScore.Bookmark) Dim stuSerial

stuSerial = grdScan。Columns(0)。CellText(grdScan.Bookmark) Dim str

str = \"delete from score where studentid = '\" & stuSerial & ”’ and courseid=’” & sSerial & \"'” ’’使用con来删除所选的记录 DataEnv。Con。Execute str DataEnv.rsOneScore.Requery ’’刷新grdScore控件

grdScore.DataMember = ”OneScore\" grdScore。Refresh

Call Calculate(grdScan。Columns(0)。CellText(grdScan。Bookmark)) End If Exit Sub

errHandler:

MsgBox Err。Description, vbCritical, \"错误\" End Sub

Private Sub cmdEdit_Click() ’’修改当前所选的成绩信息 On Error GoTo errHandler

With frmAddCourse Load frmAddCourse

.Caption = \"修改成绩信息” ’’将当前所定位的课程信息写入到frmAddCourse的dcbSerial和dcbName控件中

。dcbSerial。Text = grdScore。Columns(0).CellText(grdScore.Bookmark) .dcbName。Text = 。dcbSerial.BoundText

’'将当前所定位的课程的成绩写入到frsScore。txtScore中

.txtScore.Text = grdScore。Columns(grdScore.Columns。Count — 1).CellText(grdScore。Bookmark)

。cmdOK.Enabled = True 。Show vbModal

’'添加成绩记录 Dim str

str = ”update score set score=\" & .txtScore.Text str = str & \" where studentid=’” & grdScan。Columns(0)。CellText(grdScan.Bookmark) & \"’”

str = str & \" and courseID='” & 。dcbSerial。Text & \"'” DataEnv。Con。Execute str

Unload frmAddCourse End With

Unload frmAddCourse ’’刷新整个网格控件

Call RefreshScore(grdScan。Columns(0)。CellText(grdScan。Bookmark))

Exit Sub

errHandler:

MsgBox Err。Description, vbCritical, ”错误” End Sub

Private Sub cmdFirst_Click()

DataEnv。rssqlStudent.MoveFirst

Call ChangeBrowseState End Sub

Private Sub cmdLast_Click() DataEnv.rssqlStudent.MoveLast Call ChangeBrowseState End Sub

Private Sub cmdList_Click() ’ On Error Resume Next ’’针对所选的班级,列出班级中所有的学籍信息 Dim strSQL

If cboClass。Text = \"全部\" Then

strSQL = ” from student order by serial\" Else

strSQL = ” from student where class='” & cboClass & ”' order by serial” End If

DataEnv。rssqlStudent.Close

DataEnv.rssqlStudent.Open ”select * ” & strSQL ’’刷新网格控件 Call RefreshGrid

Call ChangeBrowseState

Call grdScan_Change End Sub

Private Sub cmdSeek_Click() With frmFind

Dim i As Integer '显示查找窗口 Load frmFind ’’查找数据,并刷新用以导航的网格控件 DataEnv.rssqlStudent。Close

DataEnv。rssqlStudent.Open sTemp Call RefreshGrid Exit Sub

errHandler:

MsgBox \"没有符合条件的纪录!”, vbExclamation, ”确认\" End Sub

Private Sub Form_Load() ' On Error Resume Next

Dim rsDep As New ADODB。Recordset, rsClass As New ADODB.Recordset Set rsDep = DataEnv。rsDepartment Set rsClass = DataEnv。rsClass

'’'从class中读取数据,填充到cboClass复合框中 If rsClass。State = adStateClosed Then rsClass。Open cboClass.Clear

cboClass。AddItem ”全部” While Not rsClass.EOF

cboClass。AddItem rsClass(\"Name”) rsClass.MoveNext Wend

cboClass.ListIndex = 0

cmdList。Value = True

If gnUserType = 0 Then ’'系统管理员身份登录 fraManage.Enabled = True fraBrowse。Enabled = True fraSeek。Enabled = True grdScan。Enabled = True

Else ’’学生身份登录 fraManage.Enabled = False fraBrowse。Enabled = False fraSeek。Enabled = False

If DataEnv。rssqlStudent。State = adStateOpen Then DataEnv。rssqlStudent。Close DataEnv。rssqlStudent.Open \"select * from student where serial =’” & gsUserName & ”’”

grdScan.DataMember = ”sqlStudent\" grdScan。Refresh End If

Call grdScan_Change End Sub

Private Sub grdScan_Change()

If grdScan。ApproxCount > 0 Then

Call RefreshScore(grdScan.Columns(0)。CellText(grdScan。Bookmark)) End If End Sub

Private Sub grdScan_DblClick() sstMain.Tab = 1

End Sub

Private Sub grdScan_RowColChange(LastRow As Variant, ByVal LastCol As Integer) ’’当前行改变,则动态改变所要显示的记录 If LastRow <> grdScan。Bookmark Then If grdScan.ApproxCount > 0 Then

Call RefreshScore(grdScan.Columns(0)。CellText(grdScan.Bookmark)) End If End If End Sub

7。MDIMain.frm Option Explicit

Private Sub MDIForm_Load()

'’根据不同的用户类型,使相应的菜单项可见 Select Case gnUserType

Case 0: '以系统管理员身份登录, 可以按各种方式进行查询和管理

mnuCourseScore。Visible = True mnuStudentScore。Visible = True

Case 1: '以课程身份登录, 只能查询自己的信息 mnuCourseScore。Visible = False mnuStudentScore。Visible = True End Select End Sub

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If MsgBox(”真的要对出本系统吗?”, vbQuestion + vbYesNo + vbDefaultButton2, ”退出”) = vbNo Then Cancel = 1 End If End Sub

Private Sub mnuAbout_Click() frmSplash。Show vbModal End Sub

Private Sub mnuCourseScore_Click() frmCourseScore.Show End Sub

Private Sub mnuExit_Click() Unload Me End Sub

Private Sub mnuLogin_Click() If MsgBox(”若重新登录,所有窗体都将关闭!是否重新登录?”, vbQuestion + vbYesNo

+ vbDefaultButton2, \"重新登录”) = vbYes Then Unload MDIMain frmLogin。Show End If End Sub

Private Sub mnuStudentScore_Click() frmStudentScore。Show End Sub

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