资源描述
考试成绩分析系统的设计与实现摘 要在不断信息化的今天,网络的出现让人们能够更快地获取更多的信息。各个领域都引进了计算机网络来为他们提高办事效率。在学校的教学管理中,利用计算机网络实现学生成绩信息的管理、统计和分析势在必行。本系统旨在提高学校对学生考试成绩管理工作的效率,使之成为现代教学信息化服务体系的重要组成部分。本系统采用B/S模式开发,以ASP作为主要的开发技术, SQL Server2000作为后台数据库服务器,采用Dreamweaver MX2004制作页面。本系统主要实现了课程设置、成绩管理、学生信息管理以及成绩的查询、统计和分析等功能。其中在对成绩统计和分析部分,通过TeeChart组件,用柱状图直观地展现了统计分析的结果。关键词:成绩管理;统计分析;ASP;SQL ServerThe Design and Implementation of Examination Result Analysis SystemAbstractNowadays, with the development of network technology people can get information more quickly. In every field, computer network has been brought in to increase efficiency. It is necessary to take advantage of computer network to implement score management, score statistics and analysis.This system aims at improving the efficiency of student score management, which will be an important part of modern educational information services system. This examination result analysis system is based on B/S mode, and takes ASP as program technology, SQL Server2000 as database and Dreamweaver MX2004 as tool of page developing. For the statistics and analysis parts, by adding TeeChart object, it is more visual to display the statistics results.Key words: management of examination result; statistical and analysis; ASP; SQL Server1 引言 1.1 课题背景考试是教学中特别重要的环节,通过考试,可以及时发现老师在教学中存在的问题,更重要的是还能发现哪些学生在学习过程中存在严重问题,需要老师和同学们的帮助。考完后的成绩分析就可以使我们得到这些信息。但是从以往的成绩分析中,我们费时费力的结果只能得到很少的有用信息。几年前,大多数学校的学生成绩管理基本上都是靠手工进行,随着近几年各类学校办学规模的扩大和招生人数的增加, 有关学生成绩管理工作所涉及的数据量越来越大,这使学生成绩管理成为一项十分繁重的工作。一些学校不得不靠增加人力、物力来进行学生成绩管理。但手工管理具有效率低、费时、易错误等缺点,面对如此繁多的数据需要进行管理、统计和分析,如果用人工的方法,其过程的艰辛将无发想像。教学实践与计算机的结合,帮助我们很好的解决了这一问题。在信息技术飞速发展的今天,计算机代替了以前大多数的人力劳动,并已经成为各个领域不可缺少的应用工具。针对目前学校教师管理学生成绩,并对学生成绩进行分析仍采用人工的方法,或简单的利用Excel进行管理的现状,为了减轻教师在管理学生成绩时的负担,提高分析学生成绩的效率,及时反映学生的学习状态,和教师在教学方面的效果,开发出一个具有教师对学生成绩进行管理、统计、分析常等用功能的能跨越各种系统平台的成绩分析系统势在必行。1.2 国内外研究现状由于利用计算机代替人力劳动对学生考试成绩数据进行管理、统计、分析体现出了巨大的优势,在实际应用中,基于网络的、跨操作平台的考试成绩管理、分析系统拥有很大的市场。国内外的软件企业开发出了各种不同功能的考试成绩管理、分析系统。这些系统中的大多数是利用VB和Access数据库进行开发的,这样的系统在跨操作平台,和数据存储方面都有明显的不足。1.3 本课题研究的意义现在我国的大中专院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的发展,因为它浪费了了许多的人力和物力。在当今信息时代这种传统的管理方法必然被计算机网络为基础的信息管理系统所代替。如果本系统能被学校所采用,将会改变以前靠手工对学生成绩进行管理、统计和分析的状况,可以大大提高教学工作的效率,树立良好的办学形象。2 相关技术介绍2.1 ASP技术的简介ASP全称为Active Server Pages的简写,是一套由微软公司开发的服务器端运行的脚本平台,使用ASP内置组件可以快速开发动态网页。每一个组件都是由一组富有经验的程序员根据动态网页最常用的功能而开发的。在ASP3.0中,共有6个这样的组件: Application ,ASPError ,Request ,Response ,Server ,Session .常见的Cookies就是利用Session组件实现的。此外,还可以利用第三方组件延伸ASP的作用,如利用MailSender组件发送电子邮件。 通过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。同时,ASP也支持VBScript和JScript等脚本语言,默认为VBScript。其中JScript是微软公司的ECMAScript标准的实现,并且有自己的扩展。本系统将采用VBScript脚本语言。 ASP是经过服务器解析之后再向网页浏览器返回数据,所以有了ASP就不必担心客户的浏览器是否能运行你所编写的代码。因为所有的程序都将在网页服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。由于代码是需要经过服务器执行之后才向浏览器发送的,所以在客户端看到的只能是经过解析之后的数据,而无法获得源代码,故编写者不用担心自己的源代码会被别人剽窃。但不排除黑客利用系统漏洞窃取服务器端的ASP源代码。基于这样的解析方式,也导致运行ASP页面相对于普通的HTML页面要慢一点。因为普通的HTML页面只需要浏览器就能够解析,而ASP则必须是服务器将整页的代码都执行一遍之后再发送数据。 ASP提供与数据库的交互,如Microsoft SQL Server、Access、MySQL和Oracle,比较流行的是ASP和Microsoft SQL Server的组合。2.2 SQL SERVER简介SQL Server是微软公司所推出的一套运行在Windows平台上的数据库管理系统,用于提供作为应用程序的数据来源,存放各种数据,并可以让用户很容易地实现所要进行的数据存取操作,同时它也提供了一些可视化的管理工具,协助数据库系统管理者更方便快捷地管理及设计数据库内容,以及对数据库进行维护。SQL在客户/服务开发中的角色,因为本考试成绩分析系统所产生和处理的数据量比较大,这就让我们首先想到了SQL server大型数据库,SQL是一组符合工业标准的数据库操作令集。SQL不是一门语言,无法得到一个专门的SQL软件,它只是服务器数据库的部份。SQL Server数据库是动态网页中的重要部分。动态网页中的大部分数据都是放在数据库中的,动态网页页面效果是通过调用数据库信息来实现的。因此,数据库在动态网页技术中也起着越来越重要的作用。作为一种查询语言,SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一身,它有一体化、高度非过程化、语言简洁、以多种方式使用等特点。数据定义语言(DDL):实现定义、删除和修改数据库对象的功能。数据查寻语言(DQL):实现对查寻数据的功能数据操纵语言(DML):实现对数据库数据的增加、删除和修改功能。数据控制语言(DCL):实现控制用户对数据库的操作权限的功能。由于本考试成绩分析系统使用的大量的存储过程,现将SQL Server的存储过程做简单介绍:存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是一个预编译的对象,这意味着过程是预先编译好的,并且供不同的应用程序执行。因此,根本不需要再花时间对过程重新进行语法分析和编译,其执行速度很快。开发者用Transaction-SQL编写的程序作为存储过程存储在SQL Server中,并创建应用程序来调用存储过程,对数据结果进行处理,存储过程能够通过接收参数向调用者返回结果集,结果集的格式由调用者确定;返回状态值给调用者,指明调用是成功还是失败;存储过程包括针对数据库的操作语句,并且可以在一个存储过程中调用另一个存储过程。存储过程虽然既有参数又有返回值,但是它与函数不同。存储过程的返回值只是指明执行是否成功,并且它不能像函数那样被直接调用,也就是说。在调用存储过程时,在存储过程名字前一定要有EXEC保留字。存储过程具有下面一些优点:(1)存储过程允许标准组件式编程。(2)存储过程能够实现较快的执行速度。(3)存储过程能够减少网络流量。(4)存储过程可被作为一种安全机制来充分利用。2.3 Dreamweaver简介Dreamweaver是由美国著名的软件开发商Macromedia公司推出的一个“所见即所得”的可视化网站开发工具。无论在国外还是在国内,它都是倍受专业Web开发人士推崇的软件。在国内,它被大家称为网页“织梦者”,众多的专业网站和个人主页都把它列为建站的首选工具。在最新的MX版本中,对Dreamweaver的代码控制和后台功能作了进一步增强,整合了UltraDev,ColdFusion Studio,Homesite等优秀软件,使得新版本的Dreamweaver比起原有的版本,功能得到了一个飞跃的发展。3 系统设计3.1 系统需求分析使用计算机网络对学生考试成绩信息进行管理,具有手工管理所无法比拟的优点。检索迅速、统计种类多、直观的图形分布显示、管理方便、存储量大、安全性好、成本低、跨平台性等,这些优点极大地提高了学校对学生考试成绩的管理、统计、分析的效率。本系统正是为了能够为各类型学校提供一套操作简单、应用广泛的考试成绩分析系统,以提高学校对学生考试成绩管理、统计、分析的效率,实现学校考试成绩管理信息化而设计的。本系统应具备对学生信息、课程信息、教师信息、成绩数据信息管理功能,能够对以上信息进行录入、删除、修改、查询、统计。对成绩数据,应实现对各年级、各班的总分、平均分的计算,并进行排序;按年级或班级对单科成绩的及格人数、优秀人数、及格率、优秀率、各分数段人数分布等进行统计分析,对各分数段人数分布还应通过图形的方式直观地展现出来;系统通过设置不同的登录用户权限来对系统进行访问和管理。3.2 系统具备的功能系统可按权限分为公共模块,管理员模块,教师模块三个模块。公共模块:可通过输入学号,学期查询相应的成绩信息。教师模块:此模块需要登录用户拥有教师权限,用户登录后可以通过选择查询条件查询相关的成绩信息、成绩统计报表、成绩分布柱状图。管理员模块:此模块需要登录用户拥有管理员权限,用户登录后除了可以通过选择查询条件查询相关的成绩信息、成绩统计报表、成绩分布柱状图外,还可以对系统后台数据进行管理。此模块可以对学生数据、课程数据、成绩数据、用户数据进行管理,实现对学生、课程、成绩、用户的添加、删除、修改。3.3 系统功能模块图课程管理模块成绩管理模块用户管理模块班级单科成绩报表年级单科成绩报表表班级单科成绩报表年级单科成绩报表表班级学期成绩汇总年级学期成绩汇总表各班单科成绩分析年级各科成绩分析表学生管理模块考试成绩分析系统管 理 员 模 块教 师 模 块学生查询图3-1 系统功能模块图3.4 数据库设计设计数据库系统时应首先了解用户各个方面的需求,包括现有的以及将来可能增加的需求,用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。针对本考试成绩分析系统的需求,通过对考试成绩的管理、统计、分析过程分析,需要使用管理员和教师信息表保存系统管理员和教师的基本信息,使用学生信息表保存学生的个人信息,使用课程信息表保存所开设的课程的信息,使用成绩信息表保存考试成绩数据。3.4.1数据库的表设计首先在SQL Server中创建名为score的数据库,根据对系统的分析可以得出本系统需要的表如下:管理员和教师信息表(admin):用来存放管理员或教师ID、姓名、登录密码和用户类型(系统管理员或普通教师)信息。Type:此字段用来标示用户为普通教师或系统管理员;字段值为“1” :用户为系统管理员,拥有管理员权限,可访问查询分析模块和数据管理模块,可对系统数据进行添加、修改、删除操作;字段值为“2” :用户为普通教师,拥有非管理员教师权限,只能访问查询分析模块,不能对系统数据进行添加、修改、删除操作。表3-1管理员和教师信息表(admin)字段名字段数据类型字段长度允许空简要说明IDVarchar20否登录ID、主键NameVarchar20是教师或管理员姓名PasswordVarchar20是登录密码TypeInt4是用户类型、权限学生信息表(student):用来存放学生的学号、姓名、性别、所在年级和所在班级信息。Gender:此字段用来标示学生的性别:字段值为“0” ,性别为:女;字段值为“1” ,性别为:男。表3-2学生信息表(student)字段名字段数据类型字段长度允许空简要说明IDVarchar20否学生学号、主键NameVarchar20是学生姓名GenderBit1是学生性别ClassInt4否学生所在班级GradeVarchar20否学生所在年级课程信息表(course):用来存放课程ID、课程名、授课教师ID、课程描述和课程所在的学期信息。Term:此字段用来标示课程所在的学期,字段值从一年级上半期为“1”开始编号,按学期增加的顺序,字段值依次加1。如:一年级下半期为“2” 。表3-3课程信息表(course)字段名字段数据类型字段长度允许空简要说明IDVarchar20否课程ID号NameVarchar20是课程名字TeacherIDVarchar20是授课教师ID号RemarkVarchar50是课程描述TermInt4否课程所在的学期成绩信息表(score):用来存放成绩对应的学生学号、课程ID、分数和考试类型信息,此表的由两个外键“StudentID”和“CourseID”组成复合主键。Type:此字段用来标示考试的类型;字段值为“1” ,表示正常考试;字段值为“2” ,表示补考。表3-4成绩信息表(score)字段名字段数据类型字段长度允许空简要说明StudentIDVarchar20否考生学号、复合主键、外键CourseIDVarchar20否课程ID号、复合主键、外键ScoreInt4是成绩分数TypeInt4是考试类型3.4.2 表间关系数据库中所创建的表有如下的约束关系:课程信息表course中的“TeacherID”字段受教师信息表admin中的“ID”字段约束,成绩信息表score中的“SrudentID”字段受学生信息表student中的“ID”字段约束,“CourseID”字段受课程信息表course中的“ID”字段约束。如图3-2所示。CoursePKIDNameTeacherIDTermRemarkScorePKStudentIDPKCourseIDScoreTypeAdminPKIDNamePasswordTypeStudentPKIDNameGenderGradeClass1nn1n1图3-2各表间的约束关系4 系统设计与实现4.1 系统首页系统首页SearchScore.asp为所有浏览者提供了学生个人成绩查询的功能,输入学生的学号,并选择学期项,就可以查询到该学生相应学期的所有已考试课程的成绩,不及格的课程考试成绩将会用红色字体显示。系统还会自动统计查询到的课程数目和不及格的课程数目。此页面还为系统管理员和教师用户提供了登录页面的链接,用户点击此链接可进入系统登录页面进行用户登录。系统首页页面效果如图4-1所示。图4-1 系统首页首页中查询学生个人成绩的存储过程代码如下:CREATE PROCEDURE sp_SearchScoreStudentID varchar(20),Term intAS Select d.name,a.StudentID,a.Score,(case a.Typewhen 1 then 正常考试 when 2 then 补考 end) as Type,b.Name as CourseName,c.Name as TeacherNamefrom Score a,Course b,admin c,student dwhere a.StudentID=StudentID and a.CourseID=b.ID and b.TeacherID = c.ID and b.Term=Term and d.ID=StudentIDGO4.2 系统登录模块系统管理员和教师用户可通过系统登录页面Login.asp进行登录。填写完登录信息,提交表单后系统通过LoginCheck.asp对用户填写的登录信息和数据库中记录的信息进行对比,若用户填写登录信息有空项,系统会提示“用户和密码不能为空” ,然后系统返回登录页面Login.asp;若用户登录信息填写错误,页面将提示“用户名或密码输入有误” ,然后系统返回登录页面Login.asp;若用户登录信息填写正确,系统将会对用户的权限类型“Type”进行检查,若“Type=1”表示用户为系统管理员,系统会将用户的登录信息记录在Cookies集合和Session变量中,然后系统转到管理员页面Manage.asp;若“Type=2”表示用户为教师用户,系统会将用户的登录信息记录在Cookies集合和Session变量中后转到教师页面Teacher.asp。LoginCheck.asp中验证用户信息的函数checkUser代码如下:功能:验证用户信息是否正确参数:username用户名, password密码返回值:正确则返回1,不正确返回0 设置Cookies用户ID(UserID)和登录状态(Login)Function checkUser(userid,password)Dim dbc_ClassSet dbc_Class = New DBConn 建立存储过程的输入参数Set Cmd1 = Server.CreateObject(ADODB.Command)Set Param = Cmd1.CreateParameter(ID,adVarChar,adParamInput,20,userid)Cmd1.Parameters.Append ParamSet Param=Cmd1.CreateParameter(PassWord,adVarChar,adParamInput,20,password)Cmd1.Parameters.Append Param运行名为sp_CheckUser的存储过程Call dbc_Class.CreateCommandProc(sp_CheckUser,Cmd1)If dbc_Class.Rs.EOF Then失败时的返回值Session(UserType) =Session(UserID) =checkUser = 0ElseWhile Not dbc_Class.Rs.EOF建立Cookies客户端变量以识别登录的用户Response.Cookies(UserName) = dbc_Class.Rs(Name)Session(UserID) = dbc_Class.Rs(ID)Session(UserType) = dbc_Class.Rs(Type)dbc_Class.Rs.MoveNextWend成功时的返回值checkUser = 1End IfSet Cmd1 = nothingdbc_Class.CloseConn()End Function函数checkUser调用的存储过程代码如下:CREATE PROCEDURE sp_CheckUserID varchar(20),Password varchar(20)AS SELECT * FROM admin WHERE ID=ID and Password=PasswordGO4.3 管理员和教师页面4.3.1管理员页面拥有管理员权限的用户登录后即进入管理员页面Manage.asp,页面上方将显示登录用户的用户名。用户可以点击左上方的“退出”链接退出系统,系统将转到Logout.asp页面,清空Cookies集合和Session变量后返回到系统首页。管理员可通过此页面进入系统数据管理模块,对系统数据进行管理操作,还可以进入成绩查询与分析模块,对成绩数据进行相应的查询与分析操作,并返回查询分析报表。系统管理员页面效果如图4-2所示。图4-2 系统管理员页4.3.2教师页面拥有非管理员权限的教师用户登录后即进入管理员页面Teacher.asp,页面上方将显示登录用户的用户名。用户可以点击左上方的“退出”链接退出系统,系统将转到Logout.asp页面,清空Cookies集合和Session变量后返回到系统首页。教师用户可通过此页面进入成绩查询与分析模块,对成绩数据进行相应的查询与分析操作,并返回查询分析报表。教师页面效果如图4-3所示。图4-3 教师页 4.4 系统数据管理模块系统数据管理模块只有拥有管理员权限的用户才能进入进行操作,通过此模块可以对包括成绩录入等一系列的系统数据进行管理。此模块又分为学生管理、课程管理、成绩管理和用户管理四个小模块。4.4.1学生管理学生管理模块完成了对学生信息进行添加、修改、删除操作,以达到对学生信息管理的目的。此模块的主页面为StudentManage.asp,管理员可通过输入需要管理的班级的班级号,查询得到现有的学生信息列表,通过列表中相应的链接对学生信息进行修改和删除操作。学生管理主页面效果如图4-4所示。图4-4学生管理主页面(1)修改学生数据信息:管理员可通过点击如图4-4所示学生管理页面的相应学生的操作列中的笔型按钮,即可进入学生信息修改页面EditStudent.asp,并将待修改学生的学号ID同时传递到该页面。在EditStudent.asp页面上,显示有数据库中记录的待修改学生的全部信息,修改完该学生的信息点击“提交”按钮完成修改。提交修改后,系统会对提交的信息进行检查,若修改过程中存在没有填写完整的项,系统会提示该项信息不能为空,然后返回学生管理主页面StudentManage.asp;若修改学生信息对数据库操作失败,系统将会提示“更新数据时失败” ,并返回学生管理主页面StudentManage.asp。学生信息修改页面效果如图4-5所示。图4-5 学生信息修改页面修改学生信息调用的存储过程代码如下:CREATE PROCEDURE sp_UpdateStudent-为要更新的变量声明参数IDvarchar(20),Name varchar(20),Genderint,Grade varchar(20),ClassintAS-将待更新的变量更新为参数传入的值Update StudentSet ID=ID,Name=Name,Gender=Gender,Grade=Grade,Class=ClassWhere ID=IDGO(2)删除学生数据信息:管理员可通过点击如图4-4所示学生管理页面相应学生的操作列中的叉型按钮,即可完成对该行对应学生的信息进行删除,删除成功后系统将返回学生管理主页面StudentManage.asp。删除学生信息调用的存储过程代码如下:CREATE PROCEDURE sp_DelStudentID varchar(20)AS -先删除从表数据再删主表数据 -删除该学生的成绩数据 DELETE FROM Score WHERE StudentID = ID -删除学生基本数据 DELETE FROM Student WHERE Student.ID = IDGO(3)添加学生数据信息:管理员可通过点击学生管理页面StudentManage.asp或管理员页面Manage.asp下方的“添加学生”按钮,即可进入添加学生信息页面AddStudent.asp。在该页面填写完该学生的信息点击“提交”按钮完成对学生信息的添加。提交后,系统会对提交的信息进行检查,若存在没有填写完整的项,系统会提示该项信息不能为空,然后返回添加学生信息页面AddStudent.asp;若添加学生信息时对数据库操作失败,系统将会提示“录入数据时失败” ,并返回添加学生信息页面AddStudent.asp。添加学生信息调用的存储过程如下:CREATE PROCEDURE sp_AddStudent-为要更新的字段声明参数IDvarchar(20),Name varchar(20),Genderint,Gradevarchar(20),ClassintAS-添加将相应的字段的记录为对应的输入参数的值 Insert Into Student(ID,Name,Gender,Grade,Class)Values(ID,Name,Gender,Grade,Class)GO4.4.2课程管理课程管理模块可以对课程信息进行添加、修改、删除操作,以达到对课程开设进行管理的目的。此模块的主页面为CourseManage.asp,管理员可通过页面中的下拉菜单选择相应的课程,点击“课程信息”按钮后页面会返回该课程的详细信息,管理员可以通过列表中相应的链接对课程信息进行修改和删除操作。课程管理主页面效果如图4-6所示。图4-6课程管理页面(1)修改课程数据信息:管理员可通过点击如图4-6所示的相应课程的操作列中的笔型按钮,即可进入课程信息修改页面EditCourse.asp,并将待修改课程ID同时传递到该页面。转到EditCourse.asp页面后,页面显示有数据库中记录的待修改课程的全部信息,修改完该课程的信息点击“提交”按钮完成修改。提交修改后,系统会对提交的信息进行检查,若修改过程中存在没有填写完整的项,系统会提示该项信息不能为空,然后返回课程管理页面CourseManage.asp;若修改课程信息对数据库操作失败,系统将会提示“更新数据时失败” ,并返回课程管理页面CourseManage.asp。修改课程信息调用的存储过程代码如下:CREATE PROCEDURE sp_UpdateCourse-为要修改的字段声明参数IDvarchar(20),Name varchar(20),TeacherIDvarchar(20),Remarkvarchar(50),Term intASUpdate CourseSet ID=ID,Name=Name,TeacherID=TeacherID,Remark=Remark,Term=TermWhere ID=IDGO(2)删除课程数据信息:管理员可通过点击如图4-6所示相应课程操作列中的叉型按钮,即可完成对该课程信息的删除,删除成功后系统将返回课程管理主页面CourseManage.asp。 删除课程信息调用的存储过程代码如下:CREATE PROCEDURE sp_DelCourseID varchar(20)AS -应先删除从表数据再删主表数据 -删除该课程相关的成绩数据 DELETE FROM Score WHERE CourseID = ID -删除课程基本数据 DELETE FROM Course WHERE Course.ID = IDGO(3)添加课程数据信息:管理员可通过点击课程管理页面CourseManage.asp或管理员页面Manage.asp下方的“添加课程”按钮,即可进入添加课程信息页面AddCourse.asp。在该页面填写完该课程的信息点击“提交”按钮完成对课程信息的添加。提交后,系统会对提交的信息进行检查,若存在没有填写完整的项,系统会提示该项信息不能为空,然后返回添加课程信息页面AddCourse.asp;若添加课程信息时对数据库操作失败,系统将会提示“录入数据时失败” ,并返回添加课程信息页面AddCourse.asp。添加课程信息调用的存储过程如下:CREATE PROCEDURE sp_AddCourse ID varchar(20), Name varchar(20), TeacherID varchar(20), Term intAS Insert Into Course (ID,Name,TeacherID,Term) Values(ID,Name,TeacherID,Term)GO4.4.3成绩管理成绩管理模块完成了对成绩信息进行添加、修改、删除操作,以达到对成绩信息进行管理的目的。此模块的主页面为ScoreManage.asp,管理员通过输入需要对成绩进行管理的班级的班级号,并从页面的下来菜单中选择相应的学期和课程,查询得到某个班级某学期某门课程的成绩信息列表,通过列表中相应的链接对成绩信息进行修改和删除操作。成绩管理主页面效果如图4-7所示。图4-7 成绩管理页面(1)修改成绩数据信息:管理员可通过点击如图4-7所示的相应成绩的操作列中的笔型按钮,即可进入成绩信息修改页面EditScore.asp,并将待修改成绩对应的学号和课程ID同时传递到该页面。浏览器转到EditCourse.asp页面后,显示有数据库中记录的待修改成绩相关的全部信息,修改后点击“提交”按钮完成修改。提交修改后,系统会对提交的信息进行检查,若修改过程中存在没有填写完整的项,系统会提示该项信息不能为空,然后返回成绩管理页面ScoreManage.asp;若修改成绩信息对数据库操作失败,系统将会提示“更新数据时失败” ,并返回成绩管理页面ScoreManage.asp。修改成绩数据信息调用的存储过程代码如下:CREATE PROCEDURE sp_UpdateScore-为要修改的字段声明参数StudentIDvarchar(20),CourseIDvarchar(20),Score int,Type intASUpdate ScoreSet Score = Score,Type= TypeWhere StudentID=StudentID and CourseID=CourseIDGO(2)删除成绩数据信息:管理员可通过点击如图4-7所示成绩管理页面相应成绩操作列中的叉型按钮,即可完成对该成绩信息的删除,删除成功后系统将返回课程成绩管理主页面ScoreManage.asp。删除成绩信息调用的存储过程代码如下:CREATE PROCEDURE sp_DelScoreStudentID varchar(20),CourseID varchar(20)AS-从Score表中删除字段StudentID值为参数StudentID的值,且字段CourseID的值为参数CourseID的值的记录 DELETE FROM Score WHERE StudentID = StudentID and CourseID=CourseIDGO(3)添加成绩数据信息:管理员可通过点击成绩管理页面ScoreManage.asp或管理员页面Manage.asp下方的“添加成绩”按钮,即可进入添加成绩信息页面AddScore.asp。在该页面管理员需要从下拉菜单中选择要添加成绩的学生和课程信息,而不能自己填写 填写该项的信息。这样做的目的是避免为数据库中不存在的学生或不存在的课程添加成绩。填写完成绩的相关信息点击“提交”按钮完成对成绩信息的添加。提交后,系统会对提交的信息进行检查,若存在没有填写完整的项,系统会提示该项信息不能为空,然后返回添加成绩信息页面AddScore.asp;若添加成绩信息时对数据库操作失败,系统将会提示“录入数据时失败” ,并返回添加成绩信息页面AddScore.asp。添加成绩信息页面效果如图4-8所示。图4-8 添加成绩页面添加成绩信息调用的存储过程如下:CREATE PROCEDURE sp_AddScoreStudentIDvarchar(20),CourseIDvarchar(20),Score int,Type intAS Insert Into Score(StudentID,CourseID,Score,Type)Values(StudentID,CourseID,Score,Type)GO4.4.4用户管理用户管理模块完成了对管理员和教师信息进行添加、修改、删除操作,以达到对登录用户信息进行管理的目的。此模块的主页面为UserManage.asp,管理员可通过输入需要管理的用户的登录ID号,可以查询得到该用户的相关信息信息列表,通过列表中相应的链接可以对用户信息进行修改和删除操作。管理员还可通过点击用户管理页面UserManage.asp或管理员页面Manage.asp下方的“添加用户”按钮,即可进入添加用户信息页面AddUser.asp。在该页面填写完添加用户的信息提交后,系统会对提交的信息进行检查,若存在没有填写完整的项,系统会提示该项信息不能为空,然后返回添加用户信息页面AddUser.asp;若添加用户时对数据库操作失败,系统将会提示“录入数据时失败” ,并返回添加用户信息页面AddUser.asp。4.5 查询分析模块4.5.1单科报表单科报表模块包括了班级单科成绩报表CourseScoreReport.asp和年级单科成绩报CourseScoreGradeReport.asp表两个页面,完成了对选定班级或年级的某门课程成绩的查询和对查询的统计。查询的结果按成绩分数由高到底排序,并统计出名次。统计包括了有成绩记录的总人数统计和及格人数统计,并通过统计结果计算出该班或该年纪在这门课程的及格率。现根据班级单科成绩报表对单科报表模块做进一步说明。班级单科成绩报表查询时调用的存储过程代码如下:CREATE PROCEDURE sp_CourseScoreReport-为查询条件的变量声明参数Class int,CourseID varchar(20)AS-查询符合条件“课程ID为输入课程ID,班级号为输入班级”的学生ID、学生姓名、课程名、考试成绩、考试类型,并将结果按考试成绩降序排列Select c.StudentID,a.Name as Studentname,b.Name as CourseName,c.Score,b.id as CourseID,(case c.Typewhen 1 then 正常考试 when 2 then 补考 end) as Typefrom Student a,Course b,Score c where b.id=CourseID and a.Class=Class and a.id=c.StudentID and b.id=c.CourseID Order by c.Score DescGO班级单科成绩报页面效果如图4-9所示: 图4-9 班级单科成绩报表4.5.2成绩统计成绩统计模块包括了班级学期成绩报表CourseScoreReport.asp和年级学期成绩报表CourseScoreGradeReport.asp两个页面,完成了对选定班级或年级的某学期各科成绩的查询和对查询结果的汇总统计。查询的结果按成绩平均分数由高到底排序,并统计出名次。汇总统计通过使用交叉表和动态SQL语句完成了对学期各科成绩的汇总、计算总分、各科平均分。在本成绩统计模块中交叉表和动态SQL语句的使用是一个难点,可以说本模块页面调用的存储过程sp_ClassScoreReport和sp_GradeScoreReport是本模块的灵魂。另外,对学生名次的统计是通过ASP程序来完成的。现根据班级学期成绩报表页面对成绩统计模块做进一步说明。班级学期成绩报表页面CourseScoreReport.asp报表部分代码:If Search = 1 Then Response.Write(你查找的是:&Trim(Request(Classn)&班第&Trim(Request(Term)&学期的成绩) Response.Write()Response.Write()Response.Write( )Term = Cint(Trim(Request.Form(Term)Classn = Cint(Trim(Request.Form(Classn) Call sc_Class.ClassScoreReport(Classn,Term)Response.Write() For I = 0 to sc_Class.dbc_Class.Rs.Fields.Count - 1Response.Write(&sc_Class.dbc_Class.Rs.Fields(I).Name & ) Next Response.Write(&班名次&)Response.Write()If not sc_Class.dbc_Class.Rs.Eof Then Do While Not sc_Class.dbc_Class.Rs.EofOrder = Order + 1 Data= For I = 0 To (sc_Class.dbc_Class.Rs.Fields.Count - 1) Data= Data & & sc_Class.dbc_Class.Rs.Fields(I).Value & Next Data =Data &Order& Response.Write(Data & ) sc_Class.dbc_Class.Rs.MoveNext LoopElseResponse.Write(没有查找到匹配的数据!) End Ifsc_Class.dbc_Class.CloseConn() Response.Write( )End If班级学期成绩报表页面CourseScoreReport.asp调用的存储过程代码如下:CREATE PROCEDURE sp_ClassScoreReport-为查询条件的变量声明参数Class int, Term int AS-声明局部变量,用来存放动态SQL语句declare sql nvarchar(4000) select sql= select sql=sql+,+Name+=sum(case CourseID when +CourseID+ then Score else 0 end)from(select distinct b.CourseID,c.Name from Score as b inner join Course as c on c.ID=b.CourseID where c.term=Term) as a order by CourseID -执行包含动态SQL语句的查询语句,并将结果集存放在临时表“#linshi”里面 exec(select StudentID 学号+sql+,总成绩=sum(Score) ,平均分=Convert(dec(5,1),avg(Score) into #linshi from Score as a group by StudentID-从临时表和Student表中查询数据,并将结果集按每个学生的平均成绩降序排列 select b.Name as 姓名,a.* from #linshi as a inner join Student as b on a.学号=b.ID where b.Class=+Class+ order by a.平均分 DESC)GO班级学期成绩报表页面效果如图4-10所示:图4-10班级学期成绩报表4.5.3成绩分析成绩分析模块包括了班级各科成绩分析ClassCourseAnalysis.asp和年级各科成绩分析GradeCourseAnalysis.asp两个页面,其任务是对选定班级或年级的某学期各科成绩的进行查询,并对查询结果进行统计分析。统计分析结果的报表显示了各科个分数段的人数、各科有成绩记录的总人数、各科优秀人数、及格人数,并计算出了各科的优生率和及格率。为了让统计结果能更直观的展现给用户,本系统通过扩展TeeChart组件完成了对各科各分数段人数统计结果以柱状图的形式展现。现根据年级各科成绩分析页面对成绩分析模块做进一步说明。年级各科成绩分析页面效果如图4-11所示:图4-11年级各科成绩分析页面利用TeeChart组件生成各分数段人数统计柱状图的主要代码:Set TChart1 = CreateObject( TeeChart.TChart ) 首先创建一个TeeChart对象 TChart1.Height = 300 设置生成的图片的高度 TChart1.Width = 500 设置生成的图片的宽度 TChart1.Header.Text(0)=年级各分数段人数 设置生成的图片中的标题 TChart1.AddSeries(1) 现实图形的方式,取值范围139 TChart1.Aspect.View3D=0 图形是否为3D,0为否 TChart1.Series(0).Clear 调用相应的存储过程来获取对应分数段的人数,并静态向图表中添加显示数据,参数依次为数值大小,名称,颜色 Call sc_Class.getNOInGrade90_100(CourseID,Grade) TChart1.Series(0).Add sc_Class.dbc_Class.Rs(RenShu), 90-100 ,RGB(35,70,128) Cal
展开阅读全文