当前位置:首页>软件介绍>学生成绩管理系统设计 查询:
     
学生成绩管理系统设计

        摘要

        随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,本文介绍了在Visual FoxPro6.0环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析某一学校学生管理工作的不足,创建了一套行之有效的计算机管理。文章介绍了该信息系统的系统分析部分,包括可行性分析、业务流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统实现部分说明了几个主要模块的算法,并附带了一些主要的窗口和程序。

        第一章为什么要开发一套学生成绩管理系统

        1.1计算机成为我们得力助手

        今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此浒的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动:

        其次,计算机可以节省许多资源:

        再次,计算机可以大大的提高人们的工作效率。

        第四,计算机可以使敏感文档更加安全,等等。

        9.png

        1.2开发学生成绩管理系统的意义

        我校教导处工作人员对成绩管理水平还停留在纸介质的基础上,现有的纸介质资料,随着历年来的不断增加,更新与检索的速度慢,发布、更新与检索的内容不一定全面。向各校、各班或学生发布,更新这些信息,任务繁重,管理人员要想从浩如烟海的成绩堆中迅速而准确的查找到所需的每个学生成绩有时就如同大海捞针。传统的管理模式制约了学校成绩的公布,影响了学校管理、保证不了生学质量、影响学校工作的效率,降低了学生的生学率。这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。

        在很多办公自动化系统设计时没有档案、资料管理工作者参与,或者因管理者缺乏相关的知识无法参与,使得开发出来的软件与实际管理工作存在一些无法衔接的问题。从目前已开发的电子归档管理软件看,无论在设计思想上,还是具体运用上,沿缺乏明确统一的规范标准,与文档实践工作还存在脱节的地方。因此,我作为一个计算机科学与技术专业的学生,在十余年的教学管理工作经验的基础上,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我两年来所学到的计算机科学与技术编制出一个实用的程序来帮助和提高我校对学生成绩管理进行更有效的管理。该管理系统归纳起来,好处大约有以下几点:

        1、可以存储历年来的各科学生成绩,安全、高效;

        2、只需一到二名档案录入员即可操作系统,节省大量人力;

        3、可以迅速查找所需信息。

        1.3将运行、实现资源共享的学校局域网做好准备

        我校建办公大楼的网络建设即将投入使用,本系统为公司将来的上网作了先期工作,比如数据库的建立、数据录入等。

        第二章如何开发一套学生成绩管理系统

        2.1开发工具的选择

        经过分析,我们选用了MICROSOFT公司的VISUAL FOXPRO 6.0开发工具,其特点是易学易用δ芡晟?其主要的功能有:

        1.增强的项目及数据库管理

        a.我可以对项目及数据有更强的控制,能够使用源代码管理产品,同时可以在“项目管理器”中看到组件的状态。数据库容器允许几个用户在同一个数据库中同时创建或修改对象。利用“数据库设计器”可以迅速更改数据库中对象的外观。

        b.我们可以借助“项目管理器”创建和集中管理应用程序中的任何元素;可以访问所有向导、生成器、工具栏和其他易于使用的工具。它提供了一具进行集中管理的环境。

        c.可以对VISUAL FOXPRO 6.0系统本身定制工具栏,也能够为编写的应用程序定义工具栏。

        2、更简便、快速、灵活的应用程序开发

        a.VISUAL FOXPRO 6.0添加了新的“应用程序向导”。其提供的新的PROJECTHOOK对象和改进了的应用程序框架功能可以使我们的应用程序更有效率。VFP6。0中还添加了一些功能来增强开发环境,以便更容易地向应用程序中添加有效的功能。

        b.VISUAL FOXPRO 6.0提供了更多更好的生成器、工具栏和设计器等,在他们的帮助下,我们可以快速开发应用程序。

        c.在VISUAL FOXPRO 6.0中,我们可以更简便地调试及监控应用程序组件:可以跟踪事件以及记录招待代码的工具,它看起来与VISUAL C的调试环境很相似:利用它可以深入程序,查看属性设置值,对象以及数组元素的值;可以显示交互的或代码中的信息提供了方便的途径,同时可以把结果输出到应用程序窗口之外的另一个窗口可以用来分析程序、应用程序或实际运行的项目代码。

        d.不用编程创建界面

        e.应用程序组件的实例中收集了一系列应用程序组件,他们显示了如何利用VISUAL FOXPRO 6.0的特性解决现实世界的问题。在应用程序中可以直接使用示例组件及它们的代码。

        3、提供真正的面向对象程序设计

        VISUAL FOXPRO 6.0仍然支持标准的面向过程的程序设计方式,但更重要的是它现在提供真正的面向对象程序设计的能力。借助VISUAL FOXPRO 6.0的对象模型,可以充分使用面向对象程序设计的所有功能,包括继承性、过去时装性、多态性和子类。

        4、使用优化应用程序的RUSHMORE技术

        RUSHMORE是一种从表中快速地选取记录集的技术,它可将查询响应时间从数中时或数分钟降低到数秒,可以显著地提高查询的速度。

        2.2编程环境的选择

        要使安装的软件能够正常运行,一定要有适合其运行的硬件和软件环境。VISUAL FOXPRO 6.0对运行环境的要求并不高,目前大多数计算机系统都能够满足其运行要求。

        1、VISUAL FOXPRO 6.0所需软件环境

        a.WINDOWS98操作系统或其更高版本。

        2、VISUAL FOXPRO 6.0 所需硬件环境

        a. 配置奔腾133以上,一台针式打印机的硬件条件即可满足。

        b.内存64MB以上。

        c.典型安装需要100MB以上硬盘空间,自定义安装需要300MB以上硬盘空间。

        a.VGA或更高分辨率的显示器,1MB以上显存。

        b.鼠标。

        c.光驱。

        2.3数据库创建和操作

        数据库是数据库管理系统的核心,数据库的程序自动管理库中的信息。数据库是表的集合,即可在一个数据库中包含一个或多个通过公共字段相互关联的数据表。可通过两种方法来创建一个新的数据库来:一种方法是利用【数据库设计器】来创建数据库;另一种方法是利用【数据库向导】来

        创建数据库。本文是在VISUAL FOXPRO 6.0中通过数据库设计器和表生成器创建用户数据库。创建数据库后,按照学生成绩管理的实际需要,进行一系列的操作,如新建表、修改表、浏览表、添加表、编辑存储过程和连接等操作。

        第三章系统总体规划

        3、1系统功能介绍

        1、平时成绩管理:对学生按班级、科目、学期等不同的条件的平时成绩编辑操作;

        2、期未成绩管理:对学生的期未成绩进行分析;

        3、班级管理:对学校的班级进行增加、删除操作;

        4、课程管理:对课程进行增加、删除操作;

        5、查询:对指定的班级、科目的成绩进行查询;

        6、打印:对指定的班级、科目的成绩进行打印输出;

        7、退出:退出本系统

        第四章系统可行性分析

        4.1系统设计中存在的问题及解决办法

        在设计过程中,由于受到本人知识面所限,考虑不周,数据分析不全面、详细,对软件工程的认识不足,也缺乏设计经验,所以曾出现过一些问题和错误,但是经过本人查询相关的资料,参考有关软件的设计思想,并在指导老师的细心帮助下,这些问题后来基本上得到了解决,使用单位也比较满意。

        4.2可行性分析

        (4.2.1)经济可行性

        ●本系统只需一台计算机,配置奔腾133以上,64MB,一台针式打印机的硬件条件即可满足。

        ●效益分析:运用本系统后,可大大提高效率和工作质量,减少人工操作的一些失误。

        ●结论:本系统投入费用不高,且运行之后,产出大于投入,是可进行系统开发的。

        (4.2.2)技术可行性

        ●系统的软件可以使用Windows98这些目前主流的操作系统,且容易使用。

        中文操作系统Windows98的特点:

        首先,操作系统采用完全图形化的用户界面。将使软件用户的培训大大简化,提高了工作效率。

        其次,Windows98的设备无关性使本系统软件开发时无须固定使用设备,有利于软件的移植和硬件设备的更新换代。

        再次,Windows98系统中文版支持信息交换用汉字编码字符集,完善的中文支持使二者紧密结合,构成一个功能完备的软件开发环境。

        ●系统的数据库支持,本系统采用面向对象的VFP6.0开发而成,友好的界面,简易的操作。工作人员只有稍加指导就可以熟练使用。

        ●结论:本系统信息量不算太大,实时程度要求不高,对软硬件要求容易。可以进行开发。

        第五章本系统开发的方法

        5.1本系统开发的方法

        本系统是采用快速原型开发方法,根据用户的具体需要开发成功的。

        需求工程及软件开发方法中的一个重要技术是快速原型方法。我们都知道原型是任何创造物的首选或初级样品。快速原型方法是迅速地根据软件系统的需求产生出软件系统的一个原型的过程。该原型要表现出目标系统的功能和行为特征,但不一定符合其全部的实现需求。软件设计者利用原型得到系统可用性的反馈信息,未来用户也利用原型得到宝贵的早期经验。快速原型方法的主要好处是可尽早获得更完整、更正确的需求与设计,而且可以直接通过改进原型得到目标系统,而不必从头做起。快速原型的总体效果是使软件开发生命周期的总效益得到改善。

        5.2、产品原型与软件开发中的快速原型的比较

        虽然信息系统原型的概念和其他产品的原型相似,但是一般有三个差异:

        (1)对于产品原型,通常原型的发展在很长一段时间中出现:对于信息系统原型,通常原型的发展在较短一段时间中出现。

        (2)对于产品原型,通常原型费用高于生产产品的费用;对于信息系统原型,通常原型费用低于开发信息系统的费用。

        (3)对于产品原型,总是在原型后制造出多种生产型号,对于信息系统,通常只建立一个生产版本。

        5.3、快速原型对需求定义及设计的影响

        软件开发产品的一个普通问题是用户所期望的东西与他所得到的结果能否一致,这个问题可追溯到软件需求的规格说明中的缺陷。实际上,用户常常并不知道他自己要的是什么东西,也不知道所要的东西是否在软件实现上可行。要全面地说明需求,就要有详细的形式说明,这对用户也是一种内在的困难。结果,需求规格说明书往往是不一致的、不完整的或有二义性的,造成在后来的开发过程中要更改需求,要进行一系列的重新设计和重新编码。如果能尽早发现,则时间和费用都可能大为节省。

        通常,在用户与软件系统交互作用前,不易发现软件需求中的缺陷。我们有了原型,用户就可以与原型交互作用,就能尽早地发现需求的缺陷,进而得到正确而完整的需求。

        在软件开发人员得到一个系统的可执行版本前,常常不易发现软件设计中的缺陷。如果设计人员与原型交互作用,就可以立即检查出设计的可行性,而不必再把力量花在开发一个有问题的目标系统上。在目标系统的详细设计进行之前,也可以较容易地改正原型设计中全局特征方面的问题。

        在目标系统编码之前,对原型的需求进行更改或重新设计或重新编码也都方便得多,而由于最终系统中将包含有较少的需求及设计问题,因此编码及测试时间也将大大减少。

        5.4、原型对编码方面的影响

        快速原型方法影响着系统的目标版本产生的方式,我们可以不再直接从系统设计得到目标版本的编码,而是可以更方便地把原型作为一个模型来变换出目标系统,如果目标版本与原型是用不同语言来写的,则要将原型的代码进行翻译及改进。如果是用相同语言写的,则只要对原型代码进行改进就行。

        5.5、快速原型方法对软件生命期的影响

        快速原型方法与传统的软件开发生命周期不一样,它增加了两个阶段,即对原型的编码及测试。

        快速原型方法从许多方面改进了原有的开发过程。由于在建立原型时发现并改正了许多需求及设计方面的问题,因而大大缩短了测试时间;

        由于可以在原型的目标码版本的基础上进行编码,减少了错误,而且可由原型出发,经过改进来得到代码(不必从设计开始从头做起),所以编码时间也减少了。总之,快速原型方法能减少软件开发的工作量。

        第六章系统设计思路

        6.1构化程序设计思路

        结构化需求分析大多使用自顶向下、逐层分解的系统分析方法来定义系统的需求。在结构化分析的基础上,可以做出系统的规格说明,由此建立系统的一个自顶向下的任务分析模型。规格说明描述了系统的需求,是联系软件需求分析与软件设计之间的重要桥梁。有许多方法可以用来进行需求分析,许多图形工具可以被用来辅助需求分析,这些方法主要包括:

        (1)结构化系统分析方法(structured system analysis)

        (2)结构化分析和设计技术(structured analysis and designtechnique)

        结构化分析(Structured Analysis,SA)是由美国YOURDON公司提出的,适用于分析大型的数据处理系统的,以结构化的方式进行系统定义的分析方法。方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。也就是说,很自然地用图形工具来模拟数据处理过程。由于软件总是在对数据进行加工,因此从原则上来说,可以用数据流方法来分析任意一种应用问题。目前,SA方法又进一步并入了一些其他技术,如加入了状态转移图以便能适用于实时控制系统等等。

        结构化分析一般包括下列工具:

        数据流图(Data Flow Diagram,DFD)

        数据字典(Data Dicrionary,DD)

        结构化英语或结构化语言判定表

        判定树结构化分析的核心是数据流图,数据流图有时称为bubble charts。数据流图描述系统的数据流,包括组织系统、人工过程系统、软件系统、机械系统、硬件系统或这些系统的组合。数据流图是一种用来表示信息流程和信息变换过程的图解方法,把系统看成是由数据流联系的各种功能的组合。数据流图可以方便地描述用数据流的流动联系的各种功能(这些功能可以是线性联系,也可以是网状联系)。通过每种功能的输入数据/输出结果,进而表示现有系统或待开发系统的功能。此外,用数据字典定义数据流图中的各项数据;结构化英语、判定表和判定树用于具体描述数据流图中的基本功能。通过将系统分解成多层处理后,在较低的层次上,我们可以看到由数据流图的高层次加工的细节和相关的数据流。

        6.2本系统解决的关键问题

        本系统的设计要求能够稳定而快捷,具有简洁、高效的数据库结构,并具有向导和人性化功能,使用户能够方便地使用,本系统经过实践的验证,基本上解决了以上所述的问题。

        6.3、系统结构与模型

        6.3.1封面

        具体实见图5.1

        6.3.2、数据库及表:

        6.3.3、主要数据表:

        (1)“班级”数据库表

        编号字段名类型宽度索引

        1 班级编号字符型   3 普通索引

        2 班级字符型16

        3 课程编号字符型

        4 升序(普通索引)

        4 课程字符型20

        (2)“成绩”数据库表

        编号字段名类型宽度小数位数

        1 编号数值型

        2 姓名字符型10

        3 成绩1 数值型   3 0

        4 成绩2 数值型   3 0

        5 成绩3 数值型   3 0

        6 成绩4 数值型   3 0

        7 成绩5 数值型   3 0

        8 成绩6 数值型   3 0

        9 成绩7 数值型   3 0

        10 成绩8 数值型   3 0

        11 成绩9 数值型   3 0

        12 成绩10 数值型   3 0

        13 平时数值型   3 0

        14 实训数值型   3 0

        15 期末数值型   3 0

        16 总评数值型   3 0

        17 缓考逻辑型   1

        18 已离校逻辑型   1

        19 班级字符型16

        20 课程字符型20

        (3)“统计表”数据库表

        编号字段名类型宽度小数位数

        1 班级字符型16

        2 课程字符型20

        3 学期字符型   1

        4 教师字符型  8

        5      考试日期字符型    10

        6      考试人数数值型     2          0

        7      总分数值型     4          0

        8       人平数值型     4          1

        9       a1         数值型     2          0

        10      a2         数值型     2          0

        11      a3         数值型     2          0

        12      a4         数值型     2          0

        13      a5         数值型     2          0

        14      b1         数值型      3        0

        15      b2         数值型      3        0

        16      b3         数值型       3         0 (4)“临时成绩表”数据库表

        编号字段名类型宽度小数位数

        1        编号数值型

        2           0

        2        姓名字符型     10

        3        已离校逻辑型    1

        4        班级字符型     16

        5        课程字符型     20

        6.3.4.本系统中的表单:

        6.3.5.报表:

        6.3.6、程序:主程序

        set sysmenu off

        set sysmenu to

        set talk off

        set safety off

        clear all

        set century on

        set bell off

        set status bar off

        _SCREEN.WINDOWSTATE=2

        _SCREEN.CAPTION="学生成绩管理系统" do form forms队?scx

        read event

        clear all

        set status bar on

        set talk on

        quit

        第七章、系统的实现技术7.1、班级成绩管理:

        代码略.

        7.2、平时成绩管理:

        “添加”按钮command1.click:

        select 成绩

        if !empty(bo1.text) .and. !empty(bo2.text)    count all for alltrim(班级)==bj .and. alltrim(课程)==kc to bhr

        append blank

        replace 编号 with bh 1,班级 with bj,课程 with kc

        thisform.grid1.column1.setfocus()

        else

        do case

        case empty(bo1.text) .and. empty(bo2.text)

        messagebox("尚未选择班级和课程!",0 48 0,"提示")

        case empty(bo1.text)

        messagebox("尚未选择班级!",0 48 0,"提示")

        case empty(bo2.text)

        messagebox("尚未选择课程!",0 48 0,"提示")

        endcase

        endif

        thisform.refresh

        “删除”按钮command2.click:

        if !empty(bo1.text) .and. !empty(bo2.text)

        select 成绩

        if .not.eof()

        jlh=recno()

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        if messagebox("真的要删除吗?",3 32 256,"提示")=6

        go jlh

        delete

        thisform.refresh

        thisform.grid1.column1.setfocus()

        endif

        endif

        else

        messagebox("尚未选择要删除的学生!",0 48 0,"提示")

        endif

        else

        do case

        case empty(bo1.text) .and.

        empty(bo2.text)

        messagebox("尚未选择班级和课程!",0 48 0,"提示")

        case empty(bo1.text)

        messagebox("尚未选择班级!",0 48 0,"提示")

        case empty(bo2.text)

        messagebox("尚未选择课程!",0 48 0,"提示")

        endcase

        endif

        “统计”按钮command3.click:

        set talk off

        select 成绩

        sum 成绩1,成绩2,成绩3,成绩4,成绩5,成绩6,成绩7,成绩8,成绩9,成绩10 ;

        to

        abc(1),abc(2),abc(3),abc(4),abc(5),abc(6),abc(7),abc(8),abc(9),abc(10) n=0

        for i=1 to 10

        if abc(i)0

        n=n 1

        endif

        endfor

        if n0

        replace all for 已离校=.f. 平时 with ;

        round((成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10)/n,0)

        else

        messagebox("平时成绩表中尚未输入数据,无法统计平时成绩!",0 48 0,"提示")

        endif

        thisform.grid1.column1.setfocus()

        thisform.refresh

        “生成”按钮command4.click:

        set safety off

        select 成绩

        if !empty(bo1.text) .and. !empty(bo2.text)    locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        messagebox("已经有数据,不能生成!",0 48 0,"提示")

        else

        set filter to

        locate all for alltrim(班级)==bj

        if .not.eof()

        课程名=alltrim(课程)

        scan for alltrim(班级)==bj .and. alltrim(课程)==课程名

        select 临时成绩表

        append blank

        replace 编号 with 成绩.编号,姓名 with 成绩.姓名,已离校with 成绩.已离校,班级 with 成绩.班级,课程 with kc

        select 成绩

        endscan

        append from data偈背杉ū韁par

        select 临时成绩表

        zap

        select 成绩

        set filter to alltrim(班级)==bj .and. alltrim(课程)==kc

        thisform.grid1.column1.setfocus()

        else

        set filter to alltrim(班级)==bj .and. alltrim(课程)==kc

        messagebox("该班级尚未输入任何数据,不能生成!",0 48 0,"提示")

        endif

        endif

        else

        do case

        case empty(bo1.text) .and. empty(bo2.text)

        messagebox("尚未选择班级和课程!",0 48 0,"提示")

        case empty(bo1.text)

        messagebox("尚未选择班级!",0 48 0,"提示")

        case empty(bo2.text)

        messagebox("尚未选择课程!",0 48 0,"提示")

        endcase

        endif

        thisform.refresh

        (其它代码在此略)

        7.3、期未成绩管理

        form1.init:

        set delete on

        public bj,kc

        public abc(10)

        bj=trim(bo1.value)

        kc=trim(bo2.value)

        select 成绩

        set filter to alltrim(班级)==bj .and. alltrim(课程)==kc  select 统计表

        loca for alltrim(班级)==bj .and. alltrim(课程)==kc combo1.interactivechange:

        bj=trim(bo1.text)

        kc=trim(bo2.text)

        if !empty(bo1.text) .and. !empty(bo2.text)    select 统计表

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        bo3.value=学期

        endif

        select 成绩

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        thisform.grid1.column1.setfocus()

        endif

        endif

        thisform.refresh

        combo1.lostfocus:

        bj=trim(bo1.text)

        kc=trim(bo2.text)

        if !empty(bo1.text) .and. !empty(bo2.text)    select 统计表

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if eof()

        append blank

        replace 班级 with bj,课程 with kc

        endif

        bo3.value=学期

        endif

        combo2.interactivechange:

        bj=trim(bo1.text)

        kc=trim(bo2.text)

        if !empty(bo1.text) .and. !empty(bo2.text)    select 统计表

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        bo3.value=学期

        endif

        select 成绩

        locate all for alltrim(班级)==bj .and. alltrim(课程)==kc

        if .not.eof()

        thisform.grid1.column1.setfocus()

        endif

        endif

        thisform.refresh

        (其余略)

        7.4、班级管理:

        “删除”按钮command2.click:

        if .not.eof()

        if messagebox("真的要删除吗?",3 32 256,"提示")=6

        delete

        thisform.refresh

        thisform.grid1.column1.setfocus()

        endif

        else

        messagebox("尚未选择要删除的班级!",0 48 0,"提示")        endif

        7.5、课程管理:

        “添加”按钮command1.click: append blank

        thisform.grid1.column1.setfocus thisform.refresh

        (其它略)

        7.6、选择课程和班级:

        “确定”按钮command1.click:

        public bj,kc

        bj=alltrim(bo1.text)

        kc=alltrim(bo2.text)

        if !empty(bo1.text) .and. !empty(bo2.text)

        do form forms檠?scx

        thisform.release

        else

        do case

        case empty(bo1.text) .and. empty(bo2.text)            messagebox("尚未选择班级和课程!",0 48 0,"提示")

        case empty(bo1.text)

        messagebox("尚未选择班级!",0 48 0,"提示")

        case empty(bo2.text)

        messagebox("尚未选择课程!",0 48 0,"提示")

        endcase

        thisform.refresh

        endif

        (其它略)

        7.7、打印期末成绩:

        form1.init:

        thisform.caption="打印学生成绩 - &bj.班 - &kc"

        select 打印表

        append from data杉?for alltrim(班级)==bj .and. alltrim(课程)==kc    count to n

        n1=n/44

        if int(n1)n1

        n1=int(n1) 1

        n2=n1*44-n

        for i=1 to n2

        append blank

        endfor

        endif

        7.8、打印平时成绩:

        (代码略)

        第八章系统测试

        8.1、测试项目

        在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,示经周密测试的系统投入运行,将会造成难以想像的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。

        由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。

        从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。

        (1)单元测试:

        单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。

        (2)组合测试

        组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。

        (3)确认测试

        确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是对表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。

        (4)系统测试

        系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统不否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。

        (5)用户验收测试

        在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。

        在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。

        8.2、测试方法

        一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来难每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。黑盒测试又称为功能测试,白盒测试又称为结构测试。

        第九章总结

        9.1系统评价

        本文列出的代码都己经过测试,用户界面的各种实用功能也经过不断修正和改进后,形成用户较为满意的可行系统并在我校得以试运行,当然用户也可以根据自需要,对数据库进行各种查询,更新,添加等。

        9.2系统存在问题

        在试运行的过程中,我们发现查询功能还存在一些问题.

        9.3系统的开发收获的提高

        本系统在试运行阶段运行很正常,使用效果很好,管理人员可以用多种不同的方式获取他们所要查询的成绩。本系只是一个学校管理项目的应用。但它设计与实现,为我们今后建立网络管理系统起到很好的作用。

        第十章结束语

        经过几个月的毕业设计,因为时间和任务的性质的关系,没有完全按照上述的测试方法进行系统的测试,但经过一些简单的步骤的测试,证明本系统具有相当程序的稳定性。

        


ERP系统实施的失败与成功原因分析MRP - 制造业模型
ERP与MES中的相关名词解释浅谈内部控制与ERP管理系统的关系
学院课程安排管理系统学生选课系统排课子系统报告
VB学生成绩管理系统学生成绩管理系统实验报告
高校图书馆管理系统数据库设计高校教职工信息管理系统
基于jsp的高校宿舍管理系统pb学生成绩管理系统
vs学生成绩管理系统基于Web的学生成绩管理系统的设计和实现
学生成绩管理系统课程设计报告汇编课程设计成绩管理系统
信息发布:广州名易软件有限公司 http://www.myidp.net
  • 名易软件销售服务
  • 名易软件销售服务
  • 名易软件技术服务

  • 学生成绩管理系统设计