基于Java EE的大学生职业规划系统的设计与实现
2014-08-11王善勤王小林陈业斌
王善勤,王小林,陈业斌
1.安徽工业大学计算机学院,安徽马鞍山,243032;2.滁州职业技术学院,安徽滁州,239000
基于Java EE的大学生职业规划系统的设计与实现
王善勤1,2,王小林1,陈业斌1
1.安徽工业大学计算机学院,安徽马鞍山,243032;2.滁州职业技术学院,安徽滁州,239000
针对国内高校职业规划工作滞后于人的发展、职业规划指导教师匮乏、大学生职业规划定性分析的片面性等问题,为新时代大学生搭建职业规划网络平台。依据大学阶段职业规划工作的特点,分析大学生职业规划的需求;运用UML工具对系统进行建模分析、设计;使用MVC框架对系统进行架构,按照Web2.0标准规范Web页面,采用Java EE平台实现系统业务逻辑,完成了大学生职业规划系统的前台呈现、后台管理模块的实现等。对大学生职业规划信息进行信息化管理,拓宽大学生职业规划指导平台;将使用数据挖掘技术对高校多年来积累的数据进行挖掘出的规则应用到大学生职业规划系统中,使系统提供了对大学生职业规划进行预测指导功能。
Java EE;MVC;高校;大学生职业规划;职业规划系统
国外从儿童开始进行职业发展指导,让其学会认识自我,尽早实施职业计划[1];国内的职业发展教育相比国外显得非常落后,国人从小到大都没有足够的职业意识,至今为止,我国还没有形成学生职业发展服务体系。国内大学生日益迷恋智能手机、游戏,对自己的未来充满了迷茫、不负责任等负面状态。对于个人来说,产生上述情况的主要原因是没有做好非常必要的职业规划。近年来,大学毕业生就业后不能很快适应社会及所从事的工作[2],需要相当长的一段“适应期”,这种现象已呈上升趋势。要改变这种状况,职业规划是一副从源头抓起的“良药”[3]。但高校毕业生职业规划工作有待研究,适合大学生的职业规划系统更有待于设计实现。
1 关键技术介绍
1.1 Java EE
Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。若需要开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序[4],Java EE是一个非常不错的选择。它提供的Web 服务、组件模型、管理和通信API,可以用来实现企业级面向服务的架构[5]和Web 2.0应用程序。
1.2 MVC
MVC是一种流行的软件设计模式,它由Model、View和Controller三个单词的第一个字母组成。Model层表示系统中的企业数据和业务规则;View层是与用户的交互界面,接受用户输入、向用户显示数据、与Model层交互等[6];Controller层是模型层与视图层之间沟通的桥梁,它可以接受请求并选择对应的模型组件去处理这个请求,然后再选择相应的视图去显示数据。在本系统开发过程中,把MVC的设计思想融入到本次系统设计之中,使得系统开发变得更加简单,在一定程度上缩短了系统的开发时间。通过对不同层次下的功能模块进行设计与实现,最终达到了对系统全部功能的一个很好的整合。
1.3 Web标准
Web标准是指一系列标准的集合[7],主要由行为、结构和表现三部分组成。行为标准包含了ECMAScript、对象模型等,结构化标准语言主要有XML和XHTML,表现标准语言主要包括CSS。
2 系统分析
大学生职业规划系统是面向大学生的自助职业规划平台。本系统基于数据挖掘模型,采用B/S模式[8],使用MVC框架搭建系统框架,在J2EE平台上开发、实现。
2.1 系统的可行性分析
此系统是按照高校职业规划需求进行设计开发的,它能够预测出一个人的职业类型选择倾向并给出一定建议,也非常符合现今社会的需要。目前已具有稳固的开发团队等,在组织、管理及开发等方面上都是可行性的。
2.2 系统的功能需求
(1)用户管理模块:后台超级管理员可以添加、修改、删除、查询管理员及用户,并可以实现新闻管理、题库管理、数据分析析模块管理等;普通管理员可以做新闻管理、题库管理、数据分析相关操作等;用户可以在前台注册、登录操作,并可以深层次认知自己,查阅系统职业规划指导信息等。
(2)新闻管理模块:后台管理员可以对新闻进行添加、修改、删除、查询操作;前台可以分类显示系统相关新闻等。
(3)题库管理模块:后台管理员可以对试题进行添加、修改、删除、查询操作,并可以灵活地添加、修改、删除试题的类别等;用户可以在前台做题给出相应提示信息,匿名浏览者可以做部分试题做一个初步的测试等。
(4)数据分析模块:包括“先天”预测、“后天”预测两个模块,后台管理员可以根据挖掘规则,对被测人员进行预测,分析大学生职业类型选择来实现分类预测等。
3 系统设计
3.1 系统总体架构设计
由于大学生职业规划系统的需求分析只是针对现阶段高职、应用型本科院校需求,随着高职、应用型本科院校的发展,需求定会有所改变,因此,笔者利用科学发展的观点来作系统架构和设计,使其具备可维护性、可扩展性等。系统架构、设计思路如下:
(1)采用基于MVC 的Web 开发架构,将模型、视窗、控制相分离。
(2)采用比较流行的Web标准规范,让系统视窗层真正、彻底地实现内容、表现、交互相分离。
(3)采用大学生职业规划系统数据库和大学生职业规划数据挖掘数据库相分离。
3.2 系统结构图
(1)系统前台组织结构如图1所示。
图1 系统前台组织结构图
(2)系统后台组织结构如图2所示。
3.3 系统数据库设计
大学生职业规划系统的数据库,在逻辑上分为职业规划系统数据库和数据挖掘分析数据库。
图2 后台组织结构图
(1)职业规划系统部分数据库设计:主要包括管理员表(manager)、班级表(team)、新闻表(news)、测试题库表(test)、用户表(user)、岗位表(job)等。表1、表2是其中2个重要表结构:
表1 测试题库:test
表2 岗位表:job
(2)数据分析数据库设计:数据分析表的详细设计如表3所示。
表3 清洗后的数据表:processedData
4 系统实现
前面研究了大学生职业规划系统的架构与设计,以下阐述和给出系统各部分的具体实现。此系统是以MySQL5.0作为数据库进行开发的。
4.1 系统的开发环境搭建
系统采用Java EE开发中常用的命名约定来定义系统的包和类名子,按照系统分层和命名规范,系统的具体项目结构图,如图3所示。
图3 在Eclipse 中的项目结构图
4.2 系统前台开发与实现
系统前台实现新闻展现、自我认知、成功案例等功能模块,下面给出系统首页、自我认知模块的效果图。
图4 首页效果图
(1)首页的总体效果如图4所示,图片新闻模块主要实现了对网站焦点信息以图文并茂的形式进行展示,此处采用jQuery技术来实现图片的轮换效果。
var num = 0; $("#nav").hide();
$("li img").load(function(){num++;if (num==4){$("#nav").show();} })
.click(function(){if (this.className.indexOf("active")!=-1) return;
$("#frontText").fadeOut();$("#frontTextBack").fadeOut(); $("#frontTextSub").fadeOut();
$("li img.active").fadeTo(200,0.6).removeClass("active").animate({top:5,width:52,left:10},300)
.parent().css({"color":"#aaa"});
var i = $(this).attr("pic");var t = $(this).attr("text").split("|");
$(this).animate({top:-5,width:70,height:40,left:1},100).addClass("active").fadeTo(200,1)
.parent().css({"color":"white"});
$("#back").children().addClass("gray").end().fadeTo(500,0.1,function(){
$(this).children("img").attr("src","images/"+i+".jpg").removeClass("gray");//更改图片
$(this).fadeTo(500,1,function(){ $("#frontText").html(t[0]).fadeIn(200);//更改正文文字
$("#frontTextBack").html(t[0]).fadeIn(200);//阴影文字
);})})
//初始第一张图片
var i =0;show();
function show(){ if (i==$("li img").size()) i = 0;$("li img").eq(i).click();i++;}
if (self.location.search!=""){
var V = self.location.search;V = V.substr(1,V.length);eval(V);
var json ="{";if (option.skin==0) $("#mask").hide();if (option.animate == 0){
$("#nav ul").hide();}
$("#nav").width(option.width?option.width:760);$("#nav").height(option.height?option.height:240);
$("#back img").width($("#nav").width());$("#back img").height($("#nav").height());
$(self.parent.document.getElementById("splash")).children().height($("#nav").height()).width($("#nav").width());}
(2)自我认知模块,此模块提供给用户来真正认识自我,如图5所示。
图5 自我认知测试模块效果图
获取测试信息的主要代码如下所示。
try {
String[] testId = request.getParameterValues("testId");// 取到所有题目的id
List
int id = Integer.parseInt(request.getParameter("id"));//获取用户id
String sex = request.getParameter("sex");//获取用户的性别
String status = request.getParameter("status");// 获取用户进行的是什么测试
for (String i : testId) {
answer.add(Integer.parseInt(request.getParameter("select" + i)));
// 获取到用户的答案,并且放到了集合中
}
/*从将用户测试后的结果转换成成绩,并把成绩转化类型begin*/
List
int sum=0;//用户测试的总分
for (int a=0;a String[] sroce = null;// 存数据库中拆分出来的标准成绩 sroce = test.get(a).getSorce().split(",");//将数据库中的成绩字段分解成一个数组 sum=sum+Integer.parseInt(sroce[answer.get(a)]);//得出用户的测试成绩 } /*从将用户测试后的结果转换成成绩,并把成绩转化类型begin*/ /*把得到的成绩到数据库判断是那种类型*/ List Result rs = null; for(int i = 0;i if(result.get(i).getBegin()<=sum&&result.get(i).getEnd()>=sum){ rs=result.get(i);break; } } /*把得到的成绩到数据库判断是那种类型*/ if(userService.find(id)==null){ userService.add(id,rs);request.setAttribute("rs",rs); request.getRequestDispatcher("../html/test3.jsp").forward(request, response); }else{ userService.update(id,rs); Userinfo userinfo = userService.find(id); if(userinfo.getCharacte()!=null&&userinfo.getTemperament()!=null&&userinfo.getInterest()!=null){ String Occupation = dataToOccupation.InnateToOccupation(sex, userinfo.getCharacte(), userinfo.getTemperament(), userinfo.getInterest()); Job job=jobService.seek(Occupation);request.setAttribute("Occupation", Occupation); request.setAttribute("job", job);request.setAttribute("rs",rs); request.getRequestDispatcher("../html/test3.jsp").forward(request, response); }else{ request.setAttribute("rs",rs); } } } catch (Exception e) { e.printStackTrace(); } 其中,读取部分就在TestingDAO和TestingDAOImpl 中实现。 /** * 前台显示题目* **/ public List PreparedStatement ps = null; ResultSet rs = null; StringBuffer sql = new StringBuffer(); sql.append("select * from test where status = ?"); try { ps=connection.prepareStatement(sql.toString()); ps.setString(1, status); rs=ps.executeQuery(); List while(rs.next()){ Test test=new Test(); test.setTest_id(rs.getInt("test_id")); test.setTest_title(rs.getString("test_title")); test.setOption_a(rs.getString("option_a")); test.setOption_b(rs.getString("option_b")); test.setOption_c(rs.getString("option_c")); test.setOption_d(rs.getString("option_d")); test.setOption_e(rs.getString("option_e")); test.setOption_f(rs.getString("option_f")); test.setSorce(rs.getString("sorce")); test.setStatus(rs.getString("status")); result.add(test); } return result; } catch (Exception e) { e.printStackTrace(); }finally{ closeResultSet(rs);closeStatement(ps); } return null; } 4.3 系统后台开发与实现 系统后台管理实现用户分级管理、新闻管理、题库管理、职业规划预测等功能,其中职业规划预测模块包括“先天”预测、“后天”预测两个功能模块,下面给出“后天”预测模块实现效果图(图6)。 随着国内社会对人才需求不断深入,该系统将在高校获得广泛的应用。本文研究了大学生职业规划系统的关键技术,在分析了Java EE框架的基础上,针对B/S结构模式的优越性,对系统进行分析、设计,实现了大学生职业规划系统。此系统能够为高校师生提供网络环境下的职业规划指导工作平台,有效地提高工作效率。基于J2EE的大学生职业规划系统可以实现更大范围的信息和教育资源的共享,教师可以运用多种形式的教学方法来提高职业规划指导效果,而学生可以利用网络这个平台更加详细地规划自己在校期间的工作、学习、生活,向实现人职匹配和谐发展方向努力,以推动高校职业规划指导工作上一个新台阶。 图6 “后天”预测模块效果图 [1]白强.大学生职业生涯规划教育内容与途径研究[J].重庆大学学报:社会科学版,2009,15(3):61-66 [2]董仁忠,马庆发.促进高职毕业生就业问题解决的制度选择[J].教育与职业,2008(2):13-15 [3]田飒.大学生职业规划的现状与教育研究[J].中国成人教育,2009(8):51-52 [4]姜奇玮.基于JAVA WEB的海运通关系统的设计与实现[D].武汉:华中科技大学软件学院,2011:16-17 [5]陈康松.基于B/S架构的东阳市行政电子监察系统设计与实现[D].成都:电子科技大学计算机科学与工程学院,2010:12-13 [6]黎永良,崔杜武.MVC设计模式的改进与应用[J].计算机工程,2005,31(9):96-98 [7]崔琦.基于Web标准的网页设计[J].农业网络信息,2009(2):64-66 [8]李书杰,李志刚.B/S三层体系结构模式[J].河北理工学院学报,2002,24(S):25-29 (责任编辑:汪材印) 2014-01-20 滁州职业技术学院院级科研基金项目“初探数据挖掘在大学生职业生涯规划中的应用”(YJY-2011-17);安徽省示范性高职院校(软件技术专业)建设项目(SJ2010003)。 王善勤(1980-),安徽灵璧人,硕士研究生,助讲,主要研究方向:数据挖掘、计算机应用技术。 10.3969/j.issn.1673-2006.2014.04.023 TP311.52 A 1673-2006(2014)04-0078-054 结束语