大家好,今天给大家介绍基于java+Applet+access的综合测评系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:11287个字32页
包含内容:整套源码+完整毕业论文
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
1 引言
在大学期间,同学们计算过多次综合测评,深刻体会到综合测评计算是一件既繁琐且准确率又低的事情。同时,班委每学期都要将同学们上交的书面形式的综合测评得分情况进行核对并输入到电脑里面,制成电子文档,方便全年段同学的成绩排名,并且也要将电子文档上交给院系相关部门留档。每次要完成这个任务,全班的班委都必须参与,可谓兴师动众,一旦不能很好的协调,出错率就很高,造成工作量加大。在信息化时代,这种手工计算综合测评的模式必将被以计算机为基础的信息化系统所取代。所以,设计一个功能完善的综合测评系统,已成为大家迫切的愿望。通过这个系统,每个同学可以准确计算自己的综合测评成绩并将得分情况上传到班委的机子上,这样就可以省去班委统一输入成绩这一繁琐的过程,既方便了同学们,准确率也得到了保证。
该综合测评系统的开发采用了Java Applet技术,是因为Java Applet与ASP等制作动态网页的工具相比,具有得天独厚的优势:ASP等只是脚本语言,而Java是一种面向对象的语言,其提供内容丰富的类库,能满足用户更多的交互需求;Java是一种与平台无关的语言,开发的系统具有良好的可移植性 ,且安全性高;ASP等脚本语言是在服务器端运行的,而Java Applet是运行在客户端浏览器上的小应用程序,这一特性更使得Applet能同时拥C/S及B/S两种软件体系结构的优势。
同时,本系统的开发采用了面向对象的方法,将系统划分模块时,尽量做到高内聚低耦合,提高模块独立性[1],给模块功能的增加与修改带来了方便。前台采用可移植性良好,健壮,安全性高的Java语言开发,后台采用微软的ACCESS数据库,作为开发平台,强大的开发工具与稳定的后台数据库,保证了系统的健壮性。在系统的开发过程中,也遇到了一些问题(如:数据的表格显示等),但通过自己的努力以及指导老师的帮助,这些问题都得到了圆满的解决。
2 综合测评系统开发工具简介
2.1 ACCESS数据库
省略
Access还提供Windows操作系统的高级应用程序开发系统。Access与其它数据库软件相比,它具有上手快、易操作等优点。同时利用内置的UBA语言,既可以开发出常用的数据处理工具,也能设计出功能全面的一整套数据库管理信息系统[3]。Access还提供了强大的管理模型,它以图形化用户界面和向导为基础。Access的结构可以适应模块化增长、自动化配制、维护比较小规模的服务器程序开发的需要。
2.2 Java及Java Applet简介
Java是一种简单的、面向对象的、健壮的、安全的、解释的、与平台无关的、多线程的、动态的语言。
Java Applet是用Java语言编写的一些小应用程序,这些程序直接嵌入到页面中,由支持Java的浏览器(IE或Nescape)解释执行能够产生特殊效果。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页称为Java-powered页,可以称其为Java支持的网页[5]。
省略
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系统整体框架
根据系统的功能需求,分析出系统的框架为:
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 用户信息表
其中:学号为主键
表2 综合测评成绩表
其中:学号为主键
表3 课程信息表:
其中:课程名称为主键
表4:业务学习成绩表:
说明:其中学号为主键,本表的各个字段除了学号与备注这两个固定字段以外,其他字段都是在程序运行过程中动态生成的。
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开发过程中遇到的问题及解决
省略
5 系统运行和调试
省略
结束语
本系统采用了面向对象技术进行开发,并按照软件工程的方法进行测试调试,保证了系统正常稳定的运行,实现了综合测评的信息化处理。对于有综合测评计算经验的同学,容易使用该系统;对于从未计算过综合测评的新生,本系统相当于起到综合测评计算的引导作用。而且可以进行相关信息的查询,各个成绩段比例图的查看,这对同学们了解全体同学的综合测评情况有很大的帮助。但随着应用的拓广,该系统的功能还需进一步完善。
通过对这个项目的开发,我对Java及Applet有了更深的认识,在大学期间所学的理论知识得到了更好的实践。在系统开发过程中也遇到了各种各样的问题,通过对这些问题的解决使我的知识面得到了拓广,更重要的是解决问题的能力的提高。
致 谢
省略
参考文献:
[1] 邓良松,刘海岩,陆丽娜.软件工程.[M].西安:西安电子科技大学出版社,2000.41
[2] 解圣庆 .Access 2003数据库教程.[M].北京:北京大学出版社,2006.3;
[3] 李佳范,俊弟,邓剑民 . Access 2003数据库应用.[M].北京:人民邮电出版社,2006.1
[4] 电脑知识网.[网页]http://www.92bmw.com/Article/Folder6/Java/2007318/9743.Html,2007.5.12
[5] 汪晓平,俞俊,李功. 精通java网络编程. [M].北京:清华大学出版社,2005.505
[6] 汪志达,叶伟.用Applet在网页上实现动态水中倒影[J].新疆大学学报(自然科学版),2003,20(2):142-143.
[7] 殷兆麟.Java 语言程序设计. [M].北京:高等教育出版社,2004.155.
[8] 杨军,王凤贵.基Java Applet的数据库连接与查询技术[J].中国有线电视2005,7:632-635
[9] 刘志成.Java程序设计案例教程[M].北京:清华大学出版社,2006.103
[10]流浪人博客.[网页]http://jhctl.spaces.live.com/blog/cns!3FD256C97DD8BBEE!170.entry,2006.2.17
[11]高云峰,陆金桂,魏红. 面向Applet的web数据库访问代理的实现及其应用[J]. 计算机工程与设计,2005,26:6.
[12]于波.Java据库编程中查询结果的表格式输出[J].广州金融电脑,2000,4:44
附录
实现的代码:
省略
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于java+Applet+access的综合测评系统设计与实现(源码+文档)_java_Applet_CS架构_综合测评系统.zip |