Java Applet研究与应用 ——综合测评系统

摘 要

大学期间,综合测评计算是每学期必不可少的工作。人工计算综合测评是一个很繁杂的过程:每个学生先计算自己的综合测评成绩,制成草表,上交给班委;然后班委核对并将成绩录入制成电子文档上交给院系相关部门。在这个过程中,学生常常感到厌烦,因而草表的准确率很低;接着人工核对、录入成绩,造成工作量大,效率低下,准确率也无法得到保证。所以,广大师生迫切希望信息化综合测评系统的产生。利用该系统,同学们可以方便准确地计算出自己的综合测评成绩,并能将结果上传至服务器,省去班委人工核对、成绩录入这些烦琐的工作。而且,系统提供的查询功能可以方便同学们对自己所需信息的检索。该论文主要介绍了网络上最受欢迎的Java Applet技术、系统的分析设计、各个功能模块的实现、系统的测试调试、以及系统开发过程中遇到的问题和问题的解决。
关键词:综合测评;计算;查询;Applet

Abstract

During the university, computation the synthetical evaluation is necessary per term. The manual computation of synthetical evaluation is a much numerous and diverse process. First, everyone compute the scores by themselves, and make a draft, then deliver it. Second, the cadres in the class check the result and import the data into computer for making the document, then hand in it to a relative department or academy. In the process, the students are sick of it. Therefore, the veracity of the draft is low. On the other hand, manual checking and scores’ inputting cause the greater workload and lower efficiency. Moreover the veracity is unable to be guaranteed. So, all the teachers and students are looking forward to have an informationizational system of the synthetical evaluation. Using the system, students can’t only compute their scores of synthetical evaluation conveniently and correctly, but also can submit the results to the server. Which can omit the complicated work of class cadres’ manual checking and scores’ inputting. Moreover, the function of query offered by the systems can make convenient for students to search the information they want.The discourse introduces the Applet technology, the analysis and design of the system, the implement of every function module, the test and debug of the system, and the problems met in the exploitation as well as the solution to them.
Key words: synthetical evaluation; computation; query; Applet

目 录

摘要 I
Abstract I
1 引言 1
2 综合测评系统开发工具简介 1
2.1 ACCESS数据库 1
2.2 Java及Java Applet简介 2
3 综合测评系统分析设计 3
3.1需求分析 3
3.2系统整体框架 4
3.3模块功能说明 6
4 综合测评系统实现 7
4.1系统数据库设计 7
4.2数据库访问模块的实现 9
4.3客户端各个模块的实现 9
4.4开发过程中遇到的问题及解决 17
5 系统运行和调试 19
5.1测试目的 19
5.2测试环境 19
5.3测试方法与测试过程 19
5.4运行和调试结果 20

结束语 21
致 谢 21
参考文献 22
附录 23

1 引言
在大学期间,同学们计算过多次综合测评,深刻体会到综合测评计算是一件既繁琐且准确率又低的事情。同时,班委每学期都要将同学们上交的书面形式的综合测评得分情况进行核对并输入到电脑里面,制成电子文档,方便全年段同学的成绩排名,并且也要将电子文档上交给院系相关部门留档。每次要完成这个任务,全班的班委都必须参与,可谓兴师动众,一旦不能很好的协调,出错率就很高,造成工作量加大。在信息化时代,这种手工计算综合测评的模式必将被以计算机为基础的信息化系统所取代。所以,设计一个功能完善的综合测评系统,已成为大家迫切的愿望。通过这个系统,每个同学可以准确计算自己的综合测评成绩并将得分情况上传到班委的机子上,这样就可以省去班委统一输入成绩这一繁琐的过程,既方便了同学们,准确率也得到了保证。
该综合测评系统的开发采用了Java Applet技术,是因为Java Applet与ASP等制作动态网页的工具相比,具有得天独厚的优势:ASP等只是脚本语言,而Java是一种面向对象的语言,其提供内容丰富的类库,能满足用户更多的交互需求;Java是一种与平台无关的语言,开发的系统具有良好的可移植性 ,且安全性高;ASP等脚本语言是在服务器端运行的,而Java Applet是运行在客户端浏览器上的小应用程序,这一特性更使得Applet能同时拥C/S及B/S两种软件体系结构的优势。
同时,本系统的开发采用了面向对象的方法,将系统划分模块时,尽量做到高内聚低耦合,提高模块独立性[1],给模块功能的增加与修改带来了方便。前台采用可移植性良好,健壮,安全性高的Java语言开发,后台采用微软的ACCESS数据库,作为开发平台,强大的开发工具与稳定的后台数据库,保证了系统的健壮性。在系统的开发过程中,也遇到了一些问题(如:数据的表格显示等),但通过自己的努力以及指导老师的帮助,这些问题都得到了圆满的解决。

2 综合测评系统开发工具简介
2.1 ACCESS数据库
Microsoft Access是一种基于Windows图形用户界面的关系型数据库管理系统。1995年Access成为Office 95套件产品之一。作为Microsoft office套件产品之一的Access已经卖出了近700万份,成为世界上最流行的桌面数据库系统。Access与许多优秀的关系数据库一样,可以很容易地连接相关的信息而且还对其他的数据库系统有所补充。它能操作其它来源的资料,包括许多流行的PC数据库程序(如dBASE,Paradox,Microsoft FoxPro)和服务器、小型及大型机上的许多SQL数据库。Access还完全支持Microsoft的OLE技术[2]。
Access还提供Windows操作系统的高级应用程序开发系统。Access与其它数据库软件相比,它具有上手快、易操作等优点。同时利用内置的UBA语言,既可以开发出常用的数据处理工具,也能设计出功能全面的一整套数据库管理信息系统[3]。Access还提供了强大的管理模型,它以图形化用户界面和向导为基础。Access的结构可以适应模块化增长、自动化配制、维护比较小规模的服务器程序开发的需要。
2.2 Java及Java Applet简介
Java最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语言的前身),后因语言本身和市场的问题,使得消费性电子产品的发展无法达到当初预期的目标,再加上网络的兴起,绿色计划也因此而改变发展的方向,最终导致Java的产生[4]。Java是一种简单的、面向对象的、健壮的、安全的、解释的、与平台无关的、多线程的、动态的语言。
Java Applet是用Java语言编写的一些小应用程序,这些程序直接嵌入到页面中,由支持Java的浏览器(IE或Nescape)解释执行能够产生特殊效果。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页称为Java-powered页,可以称其为Java支持的网页[5]。
当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。
Applet小应用程序的实现主要依靠java.applet包中的Applet类。与一般的应用程序不同,Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互。
含有Applet的网页的HTML文件代码中必须带有和这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小程序代码并在本地计算机上执行该Applet小程序。
Applet小程序也可以通过Java开发工具的appletviewer来运行。Applet程序离不开使用它的HTML文件。这个HTML文件中关于Applet的信息至少应包含以下三点:1)字节码文件名(编译后的java文件,以.class为后缀);2)字节码文件的地址;3)在网页上显示Applet的方式。
由于用HTML(超文本标志语言)编写的网页是静态的且不具备与用户交互的能力,Java Applet广泛用于在网页上添加动态、交互成份[6]。
因为Applet是从远端服务器上下载并且在本地执行,所以安全性就显得格外重要。通过限制Applet在沙箱(Applet的运行环境)中运行,从而保证了对本地系统而言Applet是安全的。Applet在沙箱中运行时:
1)不能运行任何本地可执行程序;
2)除了存放下载的Applet的服务器外,Applet不能和其它主机进行通信;
3)不能对本地文件系统进行读写。(信任的Applet放宽这一限制);
4)除了本地机使用的Java版本号、操作系统名称及版本号、文件名分隔符(‘/’或‘\’)和路径以外,Applet无法获得有关本地机的其他信息。Applet也无法获得使用者的名字和E-mail地址等[7]。

3 综合测评系统分析设计
3.1需求分析
根据计算机科学与工程系综合测评评分细则以及广大同学计算综合测评的经历,整理得到该系统的功能需求为:
1、用户只要根据列出的得分项进行选择,以及少量的数据输入就可以计算出自己的综合测评成绩。
2、用户将自己计算好并核对过的综合测评成绩上传,为防止恶意用户随意修改合法用户的成绩,成绩上传前必须进行用户合法性的验证,合法用户方能将自己的综合测评成绩上传至服务器端的数据库。同时,合法用户也可以随时修改自己的密码。
3、用户可以根据自己的需要进行查询:
1)输入学号,就可以精确得到该位同学的综合测评的得分、排名等情况
2)查询所有学生的综合测评得分情况,并按学号顺序排列显示
3)查询业务学习成绩大于等于或小于某一值的所有学生的综合测评得分情况,并按业务学习成绩从高到低排列显示
4)查询综合测评成绩大于等于或小于某一值的所有学生的综合测评得分情况,并按综合测评成绩从高到低排列显示
5)查询业务学习成绩大于或小于某一值且综合测评成绩大于等于或小于某一值的所有学生的综合测评得分情况,并按学号的顺序排列显示。
4、用户可以查看全班同学的业务学习成绩及综合测评成绩各个得分段的比例,更好地了解班级的综合测评情况。
3.2系统整体框架
根据系统的功能需求,分析出系统的框架为:

图1 综合测评系统总体框架图

图2 综合测评计算框架图

图3 综合测评查询框架图

3.3模块功能说明
1、政治素质
该模块能够将所有的政治素质方面的得分项列出来,供用户选择自己的得分情况,然后计算出政治素质的得分。法纪观念、学习态度、品德修养、劳动实践、奖惩得分与政治素质模块的功能相似,都是计算各自的得分,所以在此不一一阐述。
2、政治思想素质
该模块则将政治素质、法纪观念、学习态度、品德修养、劳动实践、奖惩分各个模块组合,以整体的方式显示给用户,并能将各个小模块的得分情况相加,得出政治思想素质的实际得分(100分制)及总得分(实际得分×20%)
3、业务学习得分
该模块能够处理用户输入各门课程的得分情况,计算业务学习实际得分(100分制,业务学习实际得分=各门课程的学分成绩总和÷各门课程学分总和+公共选修课的成绩)及总得分(业务学习实际得分×60%)。
4、智能素质得分
该模块则将科研能力、社会工作能力、师范生技能、文艺活动能力各个小模块的得分相加得到智能素质的实际得分(100分制)及总得分(实际得分×10%)。
5、体育素质得分
该模块能够处理用户体育课成绩的输入,计算体育素质的实际得分(体育课成绩×60% + 课外体育活动成绩)及总得分(实际得分×10%)。
6、精确查询
该模块能够接受用户输入学号,查询该同学综合测评的相关情况。
7、模糊查询
该模块能够接受用户的输入,根据用户的需要,以业务学习得分和综合测评得分为条件进行查询。
8、综合测评成绩比例显示
该模块能够根据全部上传的综合测评,统计总人数,某一分数段的人数,然后按比例图显示给用户。
9、综合测评成绩上传
该模块能够验证用户的合法性并将合法用户计算出的综合测评得分情况上传至服务器端的数据库上,作为留档材料,也作为成绩核对的依据。
10、用户密码修改
该模块能够验证用户的合法性并能实现合法用户对自己密码的修改。

4 综合测评系统实现
4.1系统数据库设计
1、数据库需求分析:
本系统数据库的设计总体需求是:学号、用户密码、课程名称、课程学分、成绩类型、政治思想素质、业务学习、智能素质、体育素质、综合测评得分、备注。
2、本系统采用ACCESS作为数据库。在本系统中,要求数据库名为:综合测评数据库.mdf,并在里面建立系统设计时需要用到的数据表,各表设计如下所示:
表1 用户信息表

字段名称 数据类型 字段大小 允许空
学号 文本 15 否
姓名 文本 15 否
密码 文本 20 否

其中:学号为主键

表2 综合测评成绩表

字段名称 数据类型 字段大小 允许空 小数位数
学号 文本 50 否
政治思想素质 数字 单精度型 允许 2
业务学习 数字 单精度型 允许 2
智能素质 数字 单精度型 允许 2
体育素质 数字 单精度型 允许 2
综合测评得分 数字 单精度型 允许 2
备注 备注 允许

其中:学号为主键

表3 课程信息表:

字段名称 数据类型 字段大小 允许空
课程名称 文本 20 否
学分 文本 10 否
成绩类型 文本 10 否

其中:课程名称为主键

表4:业务学习成绩表:

字段名称 数据类型 字段大小 允许空
学号 文本 20 否
备注 备注 是

说明:其中学号为主键,本表的各个字段除了学号与备注这两个固定字段以外,其他字段都是在程序运行过程中动态生成的。

4.2数据库访问模块的实现
本项目与数据库的连接采用JDBC-ODBC桥连接[8],其连接成功后将出现提示,如图4所示界面:

图4 数据库连接成功提示图
其核心代码如下:
boolean success=true; //定义一个标志变量标志连接数据库是否成功
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); //加载驱动程序 con=DriverManager.getConnection(“jdbc:odbc:zonghecepingshujuku”);
//与数据库的连接
stmt=con.createStatement(); //执行访问数据库的SQL语句
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, “数据库连接失败!”);
success=false;
}
if(success)
{ JOptionPane.showMessageDialog(this,“数据库连接成功”); }

4.3客户端各个模块的实现
1、政治思想素质模块的实现:
本模块的界面主要是利用Java的awt包及swing包开发的,界面实现如图5
所示:

图5 政治思想素质计算界面
本模块是由政治素质、法纪观念、学习态度、品德修养、劳动实践、奖惩得分,其他得分共七个小模块够成的,各小模块的容器面板都是继承自swing包的Jpanel,而且其中的各个元素,如:复选框、文本框等采用GridLayout布局管理。各个小模块作为一个类来设计,其中包含构造函数,getscore()方法及getbeizhu()方法,分别取得本小模块的得分,及得分的原因。选取其中的政治素质模块描述其实现过程(其他模块类似)如下:
class Zhengzhisuzhi extends Zuhemianban //政治素质类,详见源代码
{ …… //类内部成员的声明
public Zhengzhisuzhi(){ …… } //构造函数,实现界面的布局
public float getscore() //获取政治素质得分
{ beizhu=“”; //用于存放得分理由
float score=18; //基本分18分
if(this.malie.getState()) //如果“马列理论学习优”有选中
{ score+=1; //加上该项的得分
beizhu+=this.malie.getLabel()+“;”; //得分理由加入备注字符串中
}
…… //其他得分项类似处理
return score; //将得分值返回
}
public String getbeizhu() //获取备注内容
{ return beizhu; }
}
2、业务学习成绩计算模块
业务学习成绩的界面如图6所示:

图6 业务学习成绩计算界面图
其中一个科目就是一个小模块,而且这些科目的信息是从服务器端的“课程信息表”中获取的,这些科目组合就够成了业务学习成绩计算的主要部分。但由于这些科目是动态生成的,而不是设计时给定的,所以必须用一个数组链表存储这些动态生成的科目类实例,才可能在计算出业务学习得分的过程中得到必须的数据。也因其是动态生成的,所以实现过程相对比较复杂,其核心代码如下:
public Yewuxuexi (InetAddress ip) //构造函数传入服务器的IP地址
{ …… //建立与服务器通信的数据输入输出流,并提交初始化请求
xinxis=datain.readUTF().split(“:”); //读取初始化数据
for(int i=1;i<xinxis.length;i++)
{ String[] kechengxinxi=xinxis[i].split(“,”);
Xuexichengji xuexichengji=new Xuexichengji(kechengxinxi[0],
Float.parseFloat(kechengxinxi[1].trim()),kechengxinxi[2]);
//实例化一门科目,并将其加入面板中
this.add(xuexichengji);
//将其加入数组链表中,为下面计算课程的学分成绩提供数据
this.arraylist.add(xuexichengji); } //for
} //Yewuxuexi
public float getscore() //获取各门课程的学分成绩总和
{ float sum=0; //初始化成绩为0
for(int i=0;i<this.arraylist.size();i++)
{ //遍历链表中的每个元素,并将得分累加
sum=sum+((Xuexichengji)(arraylist.get(i))).getscore();
}
return sum; //将得分作为该方法的返回值返回
}
3、智能素质模块
智能素质的模块实现界面如图7所示:

图7 智能素质计算界面图
该模块是由科研能力、社会工作能力、师范生技能、文艺活动能力、其他得分5个小模块组合成的,其实现过程与政治思想素质的实现过程类似,这里不再赘述。

4、体育素质模块
体育素质模块实现界面如图8所示:

图8 体育素质计算界面图
本模块实现过程与政治思想素质的实现过程也类似,这里不再赘述。
5、成绩上传模块
成绩上传模块的实现界面如图9所示:

图9 成绩上传界面图
该模块类继承自java.awt包中的Frame类,当用户输入的学号与密码正确时,才能将成绩上传,其实现的核心代码如下:
//综合测评得分情况插入数据库的SQL语句
strshangchuan=strshangchuan + “insert into 综合测评成绩表 values('”
+this.xuehao.getText().trim()+“',” + this.sqlzongheceping + “)”;
String[] temps=this.yewuxuexi.split(“:”);
//业务学习得分情况插入数据库的SQL语句
String temp=“:insert into 业务学习成绩表(学号,备注” +temps[0] +“)
values('” +this.xuehao.getText().trim()+“‘,’”+temps[2] +“'” + temps[1]+ “)”;
strshangchuan+=temp;

6、用户密码修改模块
用户密码修改模块的实现界面如图10所示:

图10 密码修改界面图
该模块类也是继承自java.awt包中的的Frame类。首先将进行“新口令”与“确认新口令”的核对,如果两者相同,将进行用户合法性检查。如果是合法用户,可进行密码修改,数据库信息修改成功后,将反馈一个“密码修改成功”的消息给用户。否则,不能进行密码的修改,将反馈一个“密码修改失败”的信息给用户。其中,用户合法性的检查与成绩上传时用户的合法性检查一致,这里不再赘述,只取其中部分核心代码说明如下:
if(datain.readUTF().trim().equals(“密码修改合法用户”)) //若是合法用户
{ //密码修改SQL语句
String xinmimashangchuan=“update 用户信息表 set 密码='”
+this.xinkouling.getText().trim()+“‘where 学号=’”
+this.xuehao.getText().trim()+“'”;
dataout.writeUTF(xinmimashangchuan); //更新数据库请求上传
}
else //非法用户
{……}
7、查询模块
查询模块实现界面如图11所示:

图11 查询界面图
其分为精确查询与模糊查询两块,精确查询是将输入的学号作为查询条件,而模糊查询则根据业务学习成绩与综合测评成绩的组合作为查询条件进行查询。精确查询的结果将返回个人的各个得分情况及综合测评与业务学习成绩的排名情况。模糊查询返回结果的界面图12所示:

图12 模糊查询结果显示图
当业务学习成绩与综合测评成绩选项数值都为0时,或者两个选项的值都不为0时,将返回所有结果集,并按学号顺序排列。当业务学习选项的数值为0但综合测评成绩选项数值不为0时,或者相反时,将以非0的一项作为排列显示的依据。其核心代码如下:
1)精确查询
resultset= stmt.executeQuery(“select * from 综合测评成绩表 order by 综合测评得分 desc”); //成绩由高到低排列
while(this.resultset.next()) //检索该生的综合测评记录
{ i++; //i标记该学生综合测评成绩的排名
if(this.resultset.getString(1).equals(xinxis[1].trim()))
//若是该学生的综合测评成绩记录则提取其所有的得分情况及排名
{ jieguo+=“,”+this.resultset.getFloat(2) + “,” + this.resultset.getFloat(3)+“,”
+this.resultset.getFloat(4) + “,” + this.resultset.getFloat(5)+“,”
+this.resultset.getFloat(6) + “,” + i;
break; //跳出检索 }
}

2)模糊查询
String mohuchaxunjieguo=datain.readUTF(); //读取模糊查询结果
//以下是数据在JTable中的显示
this.vector.removeAllElements(); //将存放显示数据的向量清空
this.tm.fireTableStructureChanged(); //通知所有侦听器表结构已更改。
String[] strmohuxianshis=mohuchaxunjieguo.split(“:”);
//将从服务器端返回的数据字符串按行分割
for(int i=1;i<strmohuxianshis.length;i++)
{
Vector rowvector=new Vector();
String[] strs=strmohuxianshis[i].split(“,”);
for(int j=0;j<strs.length;j++)
{ rowvector.addElement(strs[j]); } //添加一个显示数据项
this.vector.addElement(rowvector); //添加一行显示数据项
}
this.tm.fireTableStructureChanged();

模糊查询的部分SQL语句如下:
s=“select 用户信息表.学号,姓名,政治素质,业务学习,智能素质,体育素质,综合测评得分 from 综合测评成绩表,用户信息表 where 业务学习 >=” + this.yewu.getfloat()+ “and综合测评得分 >=” + this.zonghe.getfloat()
+" and 综合测评成绩表.学号=用户信息表.学号";

8、成绩比例图显示模块
该模块实现界面如图13所示:

图13 成绩比例图
其中,左右两块为同一类的两个不同实例化对象。该模块的实现过程是:
先查询数据库,统计总人数以及各个成绩段的人数,然后在客户端计算各个成绩段人数所占总人数的比例,最后将比例图通过Graphics类的fillArc()方法画出,数据通过文本框显示出来,其核心代码如下:
public void paint(Graphics g)
{
int int_red=(int)(bili[0]*360); //计算红色扇形圆心角的度数
int int_green=(int)(bili[1]*360); //计算绿色扇形圆心角的度数
int int_blue=(int)(bili[2]*360); //计算蓝色扇形圆心角的度数
int int_yellow=360-int_red-int_green-int_blue;
//计算黄色扇形圆心角的度数,下面画出比例图
g.setColor(Color.red); //绘制红色扇形
g.fillArc(startx,starty,endlen,endlen,0,int_red);
g.setColor(Color.green); //绘制绿色扇形
g.fillArc(startx,starty,endlen,endlen,int_red,int_green);
g.setColor(Color.blue); //绘制蓝色扇形
g.fillArc(startx,starty,endlen,endlen,int_red+int_green,int_blue);
g.setColor(Color.yellow); //绘制黄色扇形
g.fillArc(startx,starty,endlen,endlen,int_red+int_green+int_blue,int_yellow);
}

4.4开发过程中遇到的问题及解决
在整个项目的开发过程中遇到了各种各样的问题,但在老师的指导下,都得到了解决。
1、刚开始的界面问题
由于综合测评计算各个得分项相对来说很繁杂,开发本系统就是为了避免因为计算繁杂带来的不便,所以界面如何有序明了很重要。刚开始设计的时候,将全部得分项在一个页面里面全部展现。结果,给人以杂乱的感觉。在指导老师的建议下,最终决定将“政治思想素质”、“业务学习”、“智能素质”、“体育素质”四大部分分开显示。于是采用了CardLayout布局管理器来实现界面的布局,该布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间[9],终于使界面问题得到了解决。
2、Applet访问数据库的问题
Java Applet为了安全性得到保证,在各方面做了严格的限制,所以访问服务器端的数据库显得复杂。我通过查找资料,知道了Applet访问服务器端的数据库可以有以下几种方式:
1)Java Applet 直接访问服务器端的数据库,但是需要配置策略文件[10]。这种方式方便了我们开发者,但却麻烦了使用者,与设计的初衷:方面用户使用相矛盾。
2)在服务器端编写代理软件,其使用ASP的ADO组件和VBscript脚本语言编写。它首先使用Request对象接收来自客户端(Applet)的输入数据流,此处为数据查询参数(也可以为其它数据)用以满足用户具体的查询要求,然后用ADO组件的Connection对象建立与Web数据库的连接,按照查询参数的要求将查询得到的数据保存在Recordset对象中,再用ASP的Response对象的Write方法把数据放入数据输出流缓冲区中等待与客户端Applet的通信[11]。客户端(Applet)则通过URLConnection对象提供的输入输出流与代理软件进行通信。如果采用这种方式,服务器端的数据库的初始化工作则要手动的进行配置,也不能方便用户的使用。
3)在服务器端编写代理软件,但其也用Java来编写。本项目采用的就是这种方式。代理软件与Applet的通信是通过Java的Socket对象提供的输入输出流来进行通信。首先,Applet通过Dataoutputstream将对数据库的访问请求传给代理软件,代理软件通过DataInputStream读取Applet的访问请求,然后访问数据库将结果通过DataOutputStream传送给Applet,Applet再通过DataInputStream读取访问数据库的结果。而且用Java编写的代理软件可以有应用程序的界面,实现对数据库的初始化配置工作。
3、查询结果的显示问题
最初设计的时候,显示结果是呈现在文本区上面的,不美观。数据查询结果若用表格显示,给人整齐,明了的视觉效果。由于SUN公司提供的JDK开发工具包不是可视化的集成开发环境(IDE),不能像Delphi、VB那样方便地把查询结果在DBGrid等表格中显示出来,因此只能靠自己编写代码来实现。在实际应用中,可利用Vector、JTable、AbstractTableModel三个类较好地解决这一问题[12]。
4、比例图的显示问题
最初设计比例图显示模块的时候,希望用Panel 类实例的getGraphics()方法得到Graphics类的实例,然后调用该实例的fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)方法来实现对比例图的绘制。但在运行的过程中总是出现NULLPointException异常,真让人费解。通过上网查找大量的资料才知道:用控件的getGraphics()方法获取Graphics类的实例时必须是在控件已经显示出来后才能通过该方法获得。最终选用重写Panel类的paint(Graphics g)方法来实现,从这里获取的Graphics对象必定是一个已经存在的对象,在运行过程中就不会出现异常。最终也使得比例图的显示问题得到了完美的解决。

5 系统运行和调试
5.1测试目的
为了保证系统的正常运行,发现潜在的错误和缺陷,根据信息系统测试的基本原则,结合软件测试的方法对本系统进行了测试与调试。

5.2测试环境
机器配置: AMD Sempron™ processor 2500+ 1.4GHz 256MB的内存
操作系统:WINDOWS XP
软件运行环境:JRE 1.5.0;IIS 5.1

5.3测试方法与测试过程
本次测试主要采用黑盒测试法,对软件从功能方面进行测试。主要运行了系统的功能。主要包括以下几个模块的测试:
1、政治思想素质模块:
检查点:是否能进行各个得分项的计算以及取得得分说明的字符串。此模块检测通过。
2、业务学习计算模块:
检查点:在Applet初始化的时候能否从服务器端提取课程信息,得到业务学习计算的界面;当代理软件未启动或无课程初始化信息时,能否出现提示对话框;能否进行业务学习的正确计算。此模块测试通过。
3、智能素质模块:
检查点:是否能进行各个得分项的计算以及取得得分说明的字符串。 此模块检测通过。
4、体育素质模块:
检查点:能否进行体育素质得分的正确的计算;能否正确获取其他得分情况说明的字符串。此模块测试通过。
5、综合测评成绩上传模块:
检查点:是否能进行用户合法性的检查;是否能将合法用户计算所得的综合测评得分情况及业务学习成绩上传到服务器端的数据库,当成绩上传成功或者失败时,能否出现相应的信息提示框。此模块测试通过。
6、用户密码修改模块:
检查点:能否进行新口令与确认口令的核对;能否进行用户合法性的检查;若是合法用户能否进行对数据库密码的修改;修改成功与否是否出现信息提示对话框。此模块测试通过。
7、查询模块的测试:
检查点:输入学号能否精确查询该位同学的信息,若数据库无此信息能否出现信息提示对话框;模糊查询能否按查询条件进行正确查询。此模块测试通过。
8、比例图模块测试:
检查点:能否从服务器端得到总人数、各个成绩段人数的准确的数据;能否计算各个成绩段人数的比例;比例图能否按比例准确的绘制。此模块测试通过。
5.4运行和调试结果
系统的各个功能模块均通过了测试,这在一定程度上保证了系统正常稳定的运行。但在系统的运行测试过程中,也发现了一些潜在的缺陷,通过对这些缺陷的修改,进一步完善了系统。

结束语
本系统采用了面向对象技术进行开发,并按照软件工程的方法进行测试调试,保证了系统正常稳定的运行,实现了综合测评的信息化处理。对于有综合测评计算经验的同学,容易使用该系统;对于从未计算过综合测评的新生,本系统相当于起到综合测评计算的引导作用。而且可以进行相关信息的查询,各个成绩段比例图的查看,这对同学们了解全体同学的综合测评情况有很大的帮助。但随着应用的拓广,该系统的功能还需进一步完善。
通过对这个项目的开发,我对Java及Applet有了更深的认识,在大学期间所学的理论知识得到了更好的实践。在系统开发过程中也遇到了各种各样的问题,通过对这些问题的解决使我的知识面得到了拓广,更重要的是解决问题的能力的提高。

致 谢
本文是在指导教师何秋红老师的悉心指导下完成的,每周一次的见面指导,
为我系统的开发及论文的撰写提供了很大的帮助,在此对何秋红老师表示真心的感谢!

猜你喜欢

转载自blog.csdn.net/ambiguous__/article/details/130817714
今日推荐