教学质量评价系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章开发背景及相关技术介绍
1。

1开发背景
在高校教学活动中,教师的教学质量评价是教学质量监控的关键环节,对提高教学质量和办学效益起着至关重要的作用。

因此只有建立完善的教学质量监控体系才能客观公正地评价教师教学工作,激发教师教学的质量意识,全面提高高校教师教学业务水平和教学效果。

然而传统的评教方式在评教的时效性、数据处理的直观和准确性、可操作性等方面已不能很好地满足现代学校的要求。

随着信息技术的快速发展,我们应该充分利用其优势,建立教师评价系统,使学校对教学实现实时监控,及时掌握教学过程中的问题。

与传统的纸本评教的做法相比,使用系统进行评教,有以下四个优点:
1.打破了之前评教方式的局限,可以更科学、更准确地对教师教学的工作进行客观的评价,可以降低评教打分的个人主观性、个人随意性。

2。

因为问卷设计了不同的评教指标,方便从多个不同的角度对学校评教的结果进行更客观分析,提供更科学与准确的数据,大大提高了教学评价的准确度。

3. 提升了原有纸质评教的地域局限性,若将信息网络中心端口对外开放,整个校园网甚至互联网上的所有用户都可以访问本教学评教系统。

因而就可以在更广泛的地域、任意时刻都可以用自己的身份访问此系统进行评教,大大提高了教学评教的灵活性,更对于远程异地的教学工作尤显本系统的优越性。

4.突破了传统评教耗时、耗力的情况。

应用系统,可大大减低教务人员及评价人员的消耗.使评教更加便捷、简单.
1.2开发目的
随着计算机技术,网络技术,特别是信息技术的高速发展。

动态交互式网页提供了人们对最新信息的需求和发布迫切需要及时性。

本系统就是一个能够通过网络实现教师评教系统,能够大大减轻教工人员的工作量,提高办事效率;设计教师教学质量评教系统只是一种手段,作为一名即将毕业的计算机学生,我想通过它使我可以更好的了解计算机的工作过程,掌握开发语言的使用方法,掌握开发各种项目的工作技能,适应迅猛发展的社会.
1。

3教学质量评价系统的内容
教师教学质量评价系统,包括用户登陆系统、用户管理、用户信息录入、教师评价、统计分析、系统帮助等基本功能实现。

用户可根据需要自行设计评价及
其评价项目,给出评分标准。

1.4 开发技术简介
1.4.1 开发语言——Java简介
Java是一门优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言[1]。

Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发[2]。

1995年6月SUN公司将Java这种革命性的编程语言引进到这个世界,且在同一年,被美国的著名杂志《PC Magazine》评为十大优秀科技作品之一[1]。

之所以称Java编程语言具有革命性,是因为传统的软件往往依赖于具体的实现环境,环境一旦有所变化就要对软件进行相应改动,耗时费力,而Java编写的软件能在执行码上实现兼容。

1.4。

2 SQLServer2005简介
SQL 即Structured Query Language全称是结构化查询语言, SQL Server 2005是微软公司开发的一个大型的关系数据库系统,它为用户提供了一个安全、可靠、易管理和高端的客户/服务器平台,而且SQL语言有统一的操作规范、操作方式集合化、简单智能化、功能强大、语句简洁和简单易学等特点,便于使用者掌握和使用[5].
SQL具有如下的优点:
(1)SQL是一种非过程化的语言,它采用一次一记录的方式,对数据提供自动导航。

SQL允许用户将工作提升到高层的数据结构上,可以对记录集进行操作,并非单个记录.SQL的集合特性允许SQL语句采用嵌套查询的方式,在一条SQL 语句中插入另一条语句。

SQL不限定数据的存放方法,这种特性使用户更易集中精力于要得到的结果[11].
(2)统一的语言
SQL为许多任务提供了命令,包括:
①查询数据
②在表中插入、在表中修改和在表中删除记录
③建立数据表、修改数据类型和删除无用数据
④掌控对数据和数据对象的存取
⑤保证数据库的一致性及完整性
(3)是所有关系性数据库的公共语言
因为所有主要的关系性数据库管理系统都会支持SQL语言,用户完全可以使用SQL的技能从一个RDBMS转移到其他上。

所有用SQL编写任何程序都是可以移植使用的[11]。

1。

4。

3 TomCat简介
本系统的Web服务器选用Apache开元组织提供的TomCat,因为TomCat是一个免费的开元软件是SUN公司推荐的web服务器。

它因为技术先进、性能稳定而深受Java开发者的喜爱和部分软件开发商的认可,更重要的是它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发系统常用的功能。

另外,TomCat是一个轻量级服务器,在中小型系统和并发用户不是很多的情况下被普遍使用,是开发和调试JSP程序的首选[7]。

1.5 JSP技术简介
java服务器页面是由Sun Microsystems公司倡导、其他许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序代码和JSP标记,形成JSP文件,后缀名是(*.jsp)。

JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来[6]。

JSP页面由HTML代码和嵌入其中的Java代码所组成。

服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。

JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠[6]。

1。

6 JSP工作原理
JSP是面向服务器的,所以支持不同的浏览器。

当Web服务器或JSP引擎遭到JSP网页的请求时,JSP引擎会将这个请求对象发送给服务器端的相关组件,比如JavaBean组件等,之后由服务器端组件处理传过来的请求,将会从数据库或数据存储中检索相关的信息,之后服务器端组件将会响应对象的请求返回JSP引擎[6]。

JSP引擎再将响应的对象信息传递给JSP页面,再根据JSP页面的HTML 所用的格式完成对数据编排,最后Web服务器及JSP引擎再将格式化后的JSP页面及HTML格式响应给客户浏览器[10].这就是目前流行网站构建中广泛采用的浏览器—-Web服务器——后台数据库的三层架构模式.因为JSP所有的程序操作全部都是在服务器端执行,网络上传送给客户端的数据仅仅是得到的响应结果。

1。

7系统数据库连接
JDBC技术是Java DataBase Connectivity的缩写。

JDBC是SUN公司提供的一种支持基本SQL语言功能通用的应用程序的接口(Application Programming Interface)。

JDBC能完成下列三件事:
同一个数据库建立连接;
向数据库建立连接;
返回数据库处理后的结果。

JDBC是JAVA应用程序与数据库的沟通纽带.JDBC提供了服务功能:首先与数据库建立连接。

第二将编好SQL语句传递数据库。

最后从数据库获得SQL语句执行结果。

数据库的连接处理:
//建立JDBC—-ODBC桥
sun。

jdbc.odbc.JdbcOdbcDriver;
//桥建立不成功时的错误处理
catch(ClassNotFoundException event){}
//建立和数据库的连接,并发送SQL查询语句,将结果保存到rs对象中Con=建立JDBC——ODBC桥
Sql=SQL查询语句
执行查询
Rs=返回结果
//SQL出错处理
catch(SQLException e1){}
第2章系统分析
2.1需求分析
(1)用户登录:该功能提供用户的登录服务。

用户设置功能只有使用正确的用户密码才能进入。

如果用正确密码进入系统,则可具有对教师教学质量的评价权限.否则提示错误。

(2)用户管理:该功能是为用户管理设置的,主要功能是对用户进行添加、删除、修改等.方便用户的管理。

(3) 录入信息:该功能是对数据的录入。

其中包括:学生信息录入、院校信息录入、教师信息录入。

使用户信息更加完善。

(4) 教师评价:该功能是对教师教学质量进行系统的评价。

主要功能包括:
学生评价、院校(领导、同行)评价、教师自我评价等三个部分。

这也是本系统最重要的组成部分之一。

用户登陆界面后,可自行对教师进行评价。

(5) 统计分析:该功能是结合教师评价功能而计算出总评价。

其中包括:统计结果和查询结果两项。

在统计结果中,用户可对前面教师评价进行系统的评价,可以得出对教师的总评价。

在查询结果中,用户可以浏览教师被评价的结果,可对该教师有个初步认识。

(6) 系统功能:该功能让用户能了解本系统及其使用方法。

其中包括:关于、帮助、退出三部分功能.关于:阐述了系统所使用的软件开发工具。

帮助:系统的介绍了各个功能模块的应用。

退出:退出整个系统。

2。

2系统功能设计
系统要求能够实现以下功能:
(1) 要求学生能够进行选课.
(2) 要求学生能够对教师进行教学质量评估。

(3) 要求教师能够查看评教,以及对同行进行教学质量评估。

,
图 1
在系统结构中,用户界面层通过统一的接口向数据库存储层发送请求,数据库存储层收到请求处理之后把数据返回到用户界面层[4]。

2。

4 数据库分析
数据库各表之间的关系图
图 2
数据库各表之间的关系图
图3
课程数据表,记录学校所开的课程。

记录课程名称、课程编号、课程所属年
级、学期、班级以及代课老师的编号。

主键c_no,c_flag记录该课程是否是选修课(0表示正常课,1表示选修课)。

图4
教师数据表记录教师的基本信息:姓名、编号、性别、联系方式等.其中d_no 对应着院系表的主键d_no,记录教师所属院系.主键t_no。

图 5
学生数据表是记录学生基本信息的一张表。

其中g_no是班级数据表中的主键g_no,表示该学生所属班级。

主键s_no
图 6
专业数据表记录着专业的一些信息,包括专业名称、专业编号等。

其中p_no 对应着院系数据表中的p_no,表示该专业所属院系。

主键d_no
图 7
班级数据表记录着学校班级信息.它是一张关键表,是连接院系和学生的一张表。

其中d_no和p_no分别对应着院系表和专业表的主键d_no和p_no.主键g_no。

图 8
评价数据表是记录学生或教师对教师的评价数据的一张表。

其中t_no表示被评价的教师编号,t_no1表示评价教师编号,c_no表示评价的课程编号。

S_no 表示评价的学生编号。

E_flag表示评价标识(0表示学生评价代课教师,1表示教师评价同行)。

图 9
院系数据表示记录院系信息的数据表。

主键d_no
第3 章系统设计与实现
3.1系统功能设计
本系统分为学生操作界面、教师操作界面和管理员操作界面。

学生界面能完成如下操作[3]。

(1)个人信息:通过该功能模块,学生能查看自己的信息。

(2) 教学质量评价:通过该功能模块,学生对授课教师进行评教。

教师界面能完成如下操作:
(1) 查看我的评价:通过该功能模块,教师查看自己的评价分数。

管理员界面能完成如下操作:
(1)学生管理:通过该功能模块,管理员能够查看学生信息,以及对学生的添加、更新、删除。

(2) 教师管理:通过该功能模块,管理员能够查看教师信息,以及对教师的添加、更新、删除。

(3) 评价一级指标:通过该功能模块,管理员能够添加和管理一级指标信息。

(4)评价二级指标:通过该功能模块,管理员能够添加和管理二级指标信息.
3。

2用户登录流程图
通过系统功能设计,画出用户登陆流程图如下:
图 10
该版块是对于用户登陆的管理和操作,其中涉及到登陆的权限问题,当用户名为admin或教师时,可以对所有信息进行操作,包括更新,查询,删除等等.普通用户只要浏览信息的权限。

3。

3 系统功能流程图
系统的功能流程如下图:
图 11
系统登陆实现如图:
图 12
图 13
图 14
在使用本系统时均需要登录后,才可使用,登录时会让你键入用户名和密码。

用户名都是管理员分配给用户的并且具有唯一的标示性,用户不可更改,但是用户可以更改自己的密码。

登录时,系统会根据你所输入的用户名和密码,给出相应的提示,若用户名及密码正确,会进入学生的主页面进行相应的操作,若用户名及密码都不正确,会提示重回登陆的主页面再次登陆.其中username和userpassword是利用JSP中request对象的getParameter方法从表单中读取的值,同时在代码设计中将值传递给JSP中的session对象,方便在其他页面中使用。

3.4 登录模块
登录模块的主要功能:用户可直接进行用户类型的选择,用户类型包括:管理
员、教师、学生三种.登录界面如图10所示[2]。

1.判断是否输入了正确的用户名及正确的密码,若没有输入,则返回,要求用户输入;
2.判断当前输入的用户名是否存在,若不存在,则返回,要求用户再次输入;
3.若键入的用户名存在,则读取此用户的数据,再将用户密码与键入的密码进行比较,若密码错误,则返回,要求用户再次输入;
4.关闭登录窗体.
图 15
3.5 管理员实现管理设计
管理员功能模块的主要功能:院系管理,课程管理,人员管理。

图 16
图 17
院系管理:
1.院系添加:功能是添加一个新的院系
操作:输入院系名称——输入院系的简介
图 18
代码实现:public int addDepartment(Department department) throws Exception {
StringBuffer sql=new StringBuffer();
sql.append(”insert into department ");
sql.append("(”);
sql.append(”d_no,d_name,d_introduction,d_ext1”);
sql。

append(”)");
sql.append(”values”);
sql.append("(?,?,?,?)”);
//System。

out.println(sql.toString());
String arr[]={department。

getD_no(),department.getD_name (),department。

getD_introduction(),”0”};
return ExecuteSql(sql。

toString(), arr);
}
2.院系一览:功能是浏览学校所有院系
操作:单击院系一览
图 19
代码实现:public List〈Department> queryDepartments(int pageSize, int pageNo)
throws Exception {
List〈Department> list=new ArrayList〈Department>();
StringBuffer sql=new StringBuffer();
sql.append(”select top ”+pageSize+” * ”);
sql。

append("fro m department where id not in ”);
sql.append("(select top "+(pageNo—1)*pageSize+" ”);
sql。

append(" id from department order by id asc)”);
sql。

append(” order by id asc”);//desc
//System.out.println(sql.toString());
ResultSet rs=null;
try {
rs=ExecuteQuerySql(sql.toString());
while (rs.next()){
Department department=new Department();
department。

setId(rs.getInt(”id”));
department。

setD_no(rs.getString("d_no”));
department。

setD_name(rs.getString(”d_name”));
department。

setD_introduction(rs.getString
("d_introduction"));
list。

add(department);

} catch (Exception e) {
throw e;
}finally{
Close(rs);
}
return list;

3.专业添加:功能是添加新的专业
操作:选择所属院系——输入专业名字--输入专业介绍
代码实现:public int addProfessional(Professional professional) throws Exception {
StringBuffer sql=new StringBuffer();
sql.append("insert into professional ");
sql。

append(”(");
sql.append("p_no,p_name,p_introduction,d_no,d_ext1”);
sql。

append(”)”);
sql。

append("values");
sql。

append(”(?,?,?,?,?)");
//System。

out。

println(sql.toString());
String arr[]={professional.getP_no(),professional。

getP_name(),
professional.getP_introduction(),professional.getD_no(),"0”};
return ExecuteSql(sql.toString(), arr);
}
4.专业一览:功能是浏览所有的专业
操作:单击专业一览
代码实现:public List〈Professional〉queryProfessionals(int pageSize, int pageNo)
throws Exception {
List<Professional〉list=new ArrayList<Professional〉();
StringBuffer sql=new StringBuffer();
sql.append(" select top "+pageSize+" ”);
sql。

append(" p.id,p_no,p_name,p。

d_no,p_introduction,d_name ");
sql.append(” from professional as p,department as d ”);
sql。

append(” where p.d_no=d。

d_no and p。

id not in ");
sql。

append(”(select top "+(pageNo—1)*pageSize+" ”);
sql.append(" id from professional order by id asc)”);
sql.append(” order by id asc");//desc
// select top 5 p。

id,p_no,p_name,p_introduction,d_name
// from professional as p,department as d
// where p.d_no=d。

d_no and p.id not in
// (select top 10 id from professional order by id asc)order by id asc
//System.out.println(sql.toString());
ResultSet rs=null;
try {
rs=ExecuteQuerySql(sql。

toString());
while (rs。

next()) {
Professional professional=new Professional();
professional.setId(rs。

getInt(”id"));
professional.setD_no(rs.getStr ing("d_no”));
professional.setP_no(rs.getString("p_no"));
professional。

setD_ext1(rs。

getString(”d_name"));
professional.setP_name(rs。

getString("p_name"));
professional。

setP_introduction
(rs.getString(”p_introduction”));
list。

add(professional);

} catch (Exception e) {
throw e;
}finally{
Close(rs);

return list;

图 20
课程管理:
1.班级添加:功能是添加新的班级
操作:选择所属院系-—所属专业-—所属年级——临时班级(是/否)-—输入班级名称
代码实现:public int addGradeClass(GradeClass gradeClass)throws Exception {
StringBuffer sql=new StringBuffer();
sql.append(”insert into gradeclass ");
sql.append(”(");
sql.append(”g_no,g_name,g_flag,p_no,d_no,g_ext1");
sql。

append(”)");
sql.append(”values”);
sql。

append("(?,?,?,?,?,?)");
String arr[]={gradeClass。

getG_no(),gradeClass。

getG_name(),gradeClass.getG_flag()+"",
gradeClass.getP_no(),gradeClass。

getD_no(),gradeClass。

getG_ext1()};
return ExecuteSql(sql。

toString(), arr);

2。

课程添加:功能是添加新的课程
操作:选择院系——选择专业-—选择班级-—输入课程名——选择年级——学期——选修(是/否)—-输入课时——输入学分——输入人数——选择代课老师
代码实现public int addCourse(Course course)throws Exception {
StringBuffer sql=new StringBuffer();
sql.append(”insert into course ");
sql。

append("(");
sql.append("c_no,c_name,c_grade,c_term,g_no,c_flag,c_hours,");
sql。

append(”c_credit,c_num1,c_num2,t_no1,t_no2”);
sql。

append(”)");
sql.append("values”);
sql。

append("(?,?,?,?,?,?,?,?,?,?,?,?)”);
String arr[]={course。

getC_no(),course。

getC_name(),course。

getC_grade(),course。

getC_term(),
course.getG_no(),course.getC_flag()+"”,course。

getC_hours()+”",
course。

getC_credit()+"”,course。

getC_num1()+"”,course。

getC_num2()+"”,
course.getT_no1(),course。

getT_no2()};
//System.out.print(course.getG_no());
return ExecuteSql(sql.toString(), arr);

3。

评价管理:功能是管理录入的评价
操作:单击评价管理;可对评价进行查看与删除
代码实现:public int addEvaluation(Evaluation evaluation) throws Exception { StringBuffer sql=new StringBuffer();
sql.append("insert into evaluation ”);
sql。

append("(”);
sql。

append(”e_date,s_no,t_no,t_no1,e_flag,c_no,evaluation1,");
sql.append(”evaluation2,evaluation3,evaluation4,evaluation5,evaluation6,e_content”);
sql。

append(”)”);
sql。

append(”values”);
sql。

append("(?,?,?,?,?,?,?,?,?,?,?,?,?)");
String arr[]={evaluation.getE_date(),evaluation.getS_no (),evaluation。

getT_no(),
evaluation.getT_no1(),evaluation.getE_f lag()+”",evaluation.getC_no(),
evaluation.getEvaluation1()+"”,
evaluation.getEvaluation2()+"",
evaluation.getEvaluation3()+”",evaluation.getEvaluation4()+"”,
evaluation。

getEvaluation5()+”",evaluation。

getEvaluation6()+"",
evaluation.getE_content()};
return ExecuteSql(sql.toString(),arr);
//return ExecuteSqlList(list);
}
图 21
人员管理:
1.教师添加:功能是添加新的教师
操作:输入教师姓名——选择院系——性别--联系电话——联系地址-—选择职称
代码实现:public int addTeacher(Teacher teacher)throws Exception {
Log.Start(this.getClass()。

getName()+”.addTeacher”);
StringBuffer sql=new StringBuffer();
sql。

append(”insert into teacher ”);
sql.append("(”);
sql。

append(”t_name,t_no,t_password,t_sex,t_phone,t_address,g_no1,”);
sql。

append(”g_no2,g_no3,d_no,t_title,t_level,t_ext1");
sql.append(")”);
sql.append(”values");
sql.append(”(?,?,?,?,?,?,?,?,?,?,?,?,?)”);
System。

out。

println(sql。

toString());
String arr[]={teacher。

getT_name(),teacher.getT_no(),teacher.getT_password(),teacher。

getT_sex(),
teacher。

getT_phone(),teacher。

getT_address(),teacher.getG_no1(),
teacher.getG_no2(),teacher。

getG_no3(),teacher。

getD_no (),
teacher。

getT_title(),teacher。

getT_level(),teacher。

getT_ext1()};
Log。

End(this.getClass()。

getName()+".addTeacher”);
return ExecuteSql(sql。

toString(), arr);
}
2.教师一览:功能是浏览所有的教师
操作:单击教师一览;对教师进行删除操作
代码实现:public List〈Teacher〉queryTeachers(int pageSize, int pageNo)
throws Exception {
List<Teacher> list=new ArrayList<Teacher〉();
StringBuffer sql=new StringBuffer();
sql。

append(” select top "+pageSize+” ”);
sql。

append(” t。

id,t_no,t_name,t.d_no,d_name ");
sql.append(” from teacher as t,department as d ");
sql.append(” where t。

d_no=d。

d_no and t。

id not in ");
sql.append(”(select top ”+(pageNo—1)*pageSize+” ");
sql.append(" id from teacher order by id asc)");
sq l.append(” order by id asc”);//desc
// select top 5 p。

id,p_no,p_name,p_introduction,d_name
// from professional as p,department as d
// where p.d_no=d。

d_no and p。

id not in
// (select top 10 id from professional order by id asc)order by id asc
System。

out.println(sql。

toString());
ResultSet rs=null;
try {
rs=ExecuteQuerySql(sql.toString());
while (rs.next()) {
Teacher teacher=new Teacher();
teacher.setId(rs.getInt("id”));
teacher。

setD_no(rs.getString(”d_no”));
teacher.setT_no(rs.getString(”t_no”));
teacher.setT_name(rs。

getString(”t_name"));
teacher.setT_ext1(rs。

getString("d_name"));
list.add(teacher);
}
} catch (Exception e){
throw e;
}finally{
Close(rs);

return list;

3.学生添加:功能是添加新的学生
操作:选择院系——选择专业--选择班级——输入名字——输入学号——选择性别—-输入联系号码-—输入联系地址
代码实现:public int addStudent(Student student)throws Exception {
Log.Start(this。

getClass().getName()+”.addStudent”);
StringBuffer sql=new StringBuffer();
sql。

append(”insert into student ");
sql。

append("(”);
sql。

append("s_name,s_no,s_password,s_sex,s_phone,
s_address,g_no”);
sql。

append("”);
sql。

append(”)”);
sql。

append(”values”);
sql.append("(?,?,?,?,?,?,?)");
String arr[]={student。

getS_name(),student.getS_no(),student.getS_password(),student.getS_sex(),
student。

getS_phone(),student.getS_address(),student。

getG_no()
};
Log。

End(this。

getClass().getName()+”.addStudent");
return ExecuteSql(sql。

toString(),arr);

4.学生一览:浏览所有的学生
操作:单击学生一览;可对学生进行删除操作
代码实现:public int queryStudentCount()throws Exception {
String sql="select count(*)from student where 1=1”;
int count=0;
ResultSet rs=null;
try {
rs=ExecuteQuerySql(sql);
if (rs。

next()){
count=rs.getInt(1);
}
} catch (Exception e) {
throw e;
}finally{
Close(rs);

return count;

第4章系统的测试
4。

1 程序调试
在项目开发的过程中存在大量的代码和程序,存在一些错误是必然的。

对于语句的语法错误,在程序部署的时候会自动提示,再次请求立即修正,因此,这类错误通常比较容易找到。

但是其他类错误在程序运行时由于错误的操作或者对某些数据的计算公式的业务逻辑错误引起的错误结果。

这种错误隐蔽性比较强,有可能会出现,有可能又不出现,所以,对这一类动态发生的错误的检查可谓是非常耗时的[10]。

4。

2 程序的测试
4。

2.1 测试地位的重要性和目的
(1)测试地位的重要性
软件的测试在软件生命周期中所占据的地位很重要,所以在传统的瀑布模型中,软件测试仅仅处在运行维护阶段之前,是软件产品完成且交给用户使用之前保证软件运行质量的必要手段。

现在,软件工程界已经趋向于一种新的观点,认为软件生命周期每一阶段中都必须包含软件测试,检验本阶段的工作成果接近预期目标,尽早的发现错误及以修正错误,若不在早期开发阶段进行软件测试,错误的延时将扩散导致最后软件成品测试的严重困难.
(2)测试的目的
如果测试的目的是为了尽可能多地查找出成品错误,测试就应该直接的针对此成品软件比较复杂的部分或是之前出错比较多的位置[7].
①软件测试目标是找到软件错误并执行程序全部过程;
②测试目的是为证明程序是否错,并不是证明程序一定没有错误;
③一个好的测试用例目的在于是否发现目前为止未发现的程序错误;
④一个成功的好的测试是为了找到至今并未发现的程序的错误的测试.
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。

但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。

第一,测试并不仅仅是为了要找出错误。

通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者找到当前所使用的软件过程的缺陷,更加方便改进[8]。

与此同时,这种分析能帮助工程师设计出更有针对性地检测方法,改进测试有效性.第二,即使是没有发现错误的测试也是有价值的,完整的有效的测
试是评定测试质量的一种方法。

4.2。

2 测试的步骤
和开发过程的类似,测试过程应该分步的骤进行,每一步在逻辑上都是前一个的继续。

大型的软件系统一般由若干个小的系统组成,每个小的系统又由若干个小模块组成。

因此,大型软件系统的测试可以分三个步骤组成: (1)模块测试在模块测试步骤中发现的一般是编码和详细的设计错误.
(2)系统测试在系统测试步骤中发现的一般是软件业务逻辑的错误,也可发现业务需求中的错误。

(3)验收测试在验收测试步骤中发现的一般是本系统需求说明书中的错误.
4。

2。

3系统的测试
系统测试采用的是黑盒测试,黑盒测试目的在于测试软件是否能满足功能需求它主要诊断以下几类错误:
①错误的或遗漏的功能
②界面错误
③数据结构及外部数据库访问的业务错误
④性能错误
⑤初始化或结束条件的错误
根据黑盒测试原则设计测试用例对系统进行功能测试。

1.登录
图 22
测试用例1:用户名:admin 密码:admin
期望结果:管理员成功登录,进入管理员界面
实际结果:管理员成功登录,进入管理员界面
测试用例2:用户名:20140512123456 密码:88888888
期望结果:管理员登录失败,系统提示失败信息
实际结果:管理员登录失败,系统提示用户名及密码错误
测试用例3:学号:20140512123456 密码:88888888
期望结果:学生成功登录,进入相应界面
实际结果:学生成功登录,进入相应界面
测试用例4:学号:60120512123456 密码:88888888
期望结果:学生登录失败,系统提示失败信息
教学质量评价系统的设计与实现
实际结果:学生登录失败,系统提示密码错误
图 23
测试用例5:教师号:020140511195847 密码:88888888
期望结果:教师登录成功,进入教师管理界面
实际结果:教师登录成功,进入教师管理界面
测试用例6:教师号:222240511195847密码:88888888
期望结果:教师登录失败,系统提示失败信息
实际结果:教师登录失败,系统提示密码错误
2.添加用户
测试用例1:用户编号:123456 姓名:张三用户类型:学生性别:男期望结果:添加用户成功,系统提示成功信息
实际结果:添加用户成功,系统提示成功信息
测试用例2:用户编号:08010086 姓名:赵庭用户类型:学生性别:女期望结果:添加用户失败,系统提示失败信息
实际结果:添加用户失败,系统提示该用户已存在
3.修改密码
测试用例1:旧密码:123 新密码:88888888确认密码:88888888
期望结果:修改密码成功,系统提示成功信息
实际结果:修改密码成功,系统提示成功信息
测试用例2:旧密码:123 新密码:88888888确认密码:11111111
期望结果:修改密码失败,系统提示失败信息
实际结果:修改密码失败,系统提示密码不一致
参考文献
[1] 刘乃琦,苏畅。

Java应用开发与实践[M].北京:人民邮电出版社, 2013
[2]王先国.UML统一建模实用教程[M]。

北京:清华大学出版社, 2012
[3]张海藩。

软件工程导论(第五版)[M]。

北京:清华大学出版社,2013
[4] 王珊,萨师煊,数据库系统概论(第四版)[M].北京:高等教育出版社,2006
[5]王琬茹,温永刚,孙杰,山鹰。

SQL Server 2005数据库原理及应用教程[M].北京:清华大学出版社,2008
21。

相关文档
最新文档