【《基于网站技术应用的就业趋势系统的设计与实现》10000字】_第1页
【《基于网站技术应用的就业趋势系统的设计与实现》10000字】_第2页
【《基于网站技术应用的就业趋势系统的设计与实现》10000字】_第3页
【《基于网站技术应用的就业趋势系统的设计与实现》10000字】_第4页
【《基于网站技术应用的就业趋势系统的设计与实现》10000字】_第5页
已阅读5页,还剩37页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北林业大学高等教育自学考试本科毕业设计(论文)1引言基于网站技术应用的就业趋势系统的设计与实现摘要在社会日新月异的今天,我们国家的互联网技术也在不断进步,全社会都在向数据化、智能化发展。网络为人们提供了一个全新的工作环境,借助网络,人们不出家门便可利用其网络技术让生活变得更方便快捷。在这样的时代背景下,网上招聘系统应运而生并受到很多人的青睐。本文设计并实现了一款面向高校毕业生的个人就业求职平台系统,本系统采用B/S架构、SpringBoot框架,利用Java中Servlet进行开发,与Mysql数据库同步应用Jsp等技术,搭建高效安全的就业系统。该系统在就业信息中添加了个人信息及公司介绍信息,使就业更具有针对性。求职者能查看企业的实时就业信息,挑选自己感兴趣的职位。同时,企业也可以借助互联网吸引应聘者,从而使双方达到双赢。招聘企业可甄别自己所需的应聘者,并发出面试通知。关键词:Java;Mysql;Servlet;网络就业系统目录7933摘要 1270401引言 4236302相关技术原理和开发工具 6135542.1程序语言的选择 6106732.1.1Java概述 6239072.1.2Java特点 688772.1.3Servlet概述 6120602.2MySQL数据库 7155102.3开发工具 8258002.3.1编码工具IDEA 8326422.3.2数据库连接工具Navicat 896812.4开发环境 8322893需求分析 10182843.1系统功能分析 1064073.2业务流程分析 12284603.3需求分析 13208773.3.1业务需求分析 13273723.3.2系统功能分析 13205983.3.3数据流图 14290134系统设计 1799734.1系统整体设计思想 17223474.2系统体系架构 17176224.3数据库表设计 18271384.4就业智能预测模块 20135094.5就业智能预测模块实现 21231885系统实现 27307405.1登录模块 27202865.2注册模块 29259675.3就业管理模块 3340325.4招聘者管理模块 36190296系统测试 41116266.1测试方法 41198076.2测试环境 41196736.3测试结果 42162677系统总结和展望 4398577.1结论 43156647.2展望 4315456参考文献 45

1引言随着人才数量的增长,经济与城市化迅猛发展,传统人才招聘中存在的弊端渐渐显现,在这种情况下,“互联网+”技术应运而生。因“互联网+”时代,对人才招聘工作产生着深远的影响,本文将对此进行分析探讨。传统人才申请形式主要表现为求职者和公司员工之间面对面地了解、交流,超前规划企业与求职者,印刷海量纸质材料,并且要选择双方都方便的时间,以及能够抵达的见面场所[1]。在这段时间里,很多工序需要两方花费很大的力量去筹备,所以,面试尚未进行,就消耗了大量热情;此外,企业应聘人员一般都会因为阅读疲劳造成一些优秀履历的损失,所以,企业会流失大量有用的人才信息,对求职者而言,他们还将失去更多的良机。最近几年,越来越多的人适应于利用网络来互相连接发送和接受消息,利用网络技术,让生活变得更惬意,更放松。在国外,信息技术发展较快,国外企业和用户通常采用网络进行就业与求职,网站可为求职者提供便利,能够为用户快速查找工作岗位,通过Internet进行工作求职,可将招聘范围增大,提高对人才的筛选,其次求职者可通过招聘网站进行查询,挑选符合自身要求的职位,可挑选余地大,比如网络求职与招聘系统LinkedIn,能够根据位置和资历进行搜索特定职位清单,并可以与领域关键人物进行沟通。Glassdoor一款网上求职与招聘系统,能够根据职位类型、薪资、行业等进行划分。Monster除了上述功能外,还有一个建议部分,可供求聘人员进行查看和考虑[2]。所以说,网络招聘与求职系统相比传统,系统更具有便利性,其信息范围大,对求职者来说,不仅不必考虑地域限制,还提高了招聘和求职效果。在国内,求职招聘服务的网站数不胜数,管弦繁奏,包括中国国家人才网、中华英才网、智联招聘等都可以进行求职与招聘,由于网上信息冗杂,网站竞争激烈。就所知的国内求职招聘网来说,网上求职与招聘系统不断完善,并具有无可替代的优势,求职者可根据完备的搜索功能进行信息查询,并且可对公司内容浏览,确定岗位制度和薪资待遇,便可以投简历,这个阶段可直接在网上进行[3]。对于就业人员来说,费用低廉,能够有效的查找求职信息,对于招聘公司来说,强大的网络求职招聘系统能够整合化人才信息资源,可以对求职者进行优中选优,提高招聘员工的质量,另外,企业可通过网上刊登信息进行招聘,避免了因为招聘会引发的资金的出入,我们的网上求工作和招聘系统才能够更好的完善招聘单位与应聘人员的关系,能达到双赢的目的[4]。网上人才招聘系统应运而生,其优势如下:1、方便快捷:从求职者的角度来看,只需要在网上选择自己感兴趣的企业,就可以进行简历的投递;从企业的角度来看,足不出户就能吸引大量的求职者。2、选择性较多:现如今,社会上的招聘信息量巨大,求职人员对心仪岗位、工作也有了更多选择。3、减少求职精力消耗:就应聘者而言,能够节省大量的求职精力,它能使求职人员全身心地投入到面试中去,并节约大量时间与金钱。人们在网络招聘中找到了种种方便与优点,更多求职人员选择网络求职作为他们的首选方式。本系统能够在较短时间内得到较精确,较详尽的资料,从而达到企业岗位要求,并且能够发挥出求职人员的真实价值与技术实力。3需求分析2相关技术原理和开发工具基于JavaWeb设计和编写的网络招聘系统,需要使用动态网页开发技术和数据库完成创建。2.1程序语言的选择2.1.1Java概述Java产生于1995年前后,是詹姆斯.高斯林用C语言编的,后来被Sun公司购买上市,Java是面向对象的,所有东西都能变成对象,就是出于这样的想法,为程序员打开思路,更高级的语言应运而生[5]。2.1.2Java特点Java语言用途很广,具有跨平台性。在不同java版本平台上写的java文件,经过JVM虚拟机改造后,字节码文件的最终作用是一样的。从整体上看,Java正是适应了迄今为止程序员们在新时代中不断探索科技,顺应时代发展而产生出来的不得不用的语言。它不仅能够实现各种复杂而又庞大的程序功能,而且还具有非常高的效率。2.1.3Servlet概述Servlet在服务端运行一个java小程序。继承HttpServlet可在浏览器中获取。其主要功能就是用于从浏览器接收数据并回到服务器进行处理。Servlet实现生命周期主要有以下几个方法:一是实例化对象init()方法:请求首次接入时实例化,是指该服务器首次接入后,servlet初始化后调用init方法,且仅调用1次。使用该方法可以减少服务器端计算量和提高系统性能。二是调用工作方法中的service()法:在每一个请求中调用这个方法,所述方法执行获得用户请求的模式,通过用户请求方式调用相对应的doGet或者是doPost方法。三是销毁destory()方法:当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法[6]。Java程序必须继承HttpServlet,才能代表是一个Servlet类,程序必须重写doGet(),doPost()方法,程序必须在web.xml中配置<servlet>,<servlet.mapping>(或者通过注解)。Serlvet运行原理见图2-1。图2-1servlet原理图2.2MySQL数据库实际上,MySQL数据库也是中小型级别,当今许多中小型企业(只要不属于国企,就可以算作中小型数据库)都在使用MySQL数据库,主要原因如下:第一,其是免费的;第二,支持多种操作系统运行;第三,效率较高。由于用户进入需要使用密码登录,所以一般都会用到加密方式来进行安全保护。2.3开发工具2.3.1编码工具IDEAIDEA全称IntelliJIDEA,是目前最受开发者欢迎的java语言开发集成环境。能够对代码进行查审,对GUI进行创新设计等,其作用可谓超出eclipse、Myeclipse等其他手段。IntelliJIDEA中的各个方面设计都旨在方便开发人员的使用,提高体验感[7]。用IntelliJIDEA对源代码做索引后,其通过提供每一个语境下的相关推荐,来提供一种快捷和智能化的感受:IDEA可以瞬间而巧妙地完成编码,动态代码分析与可靠重新构建工具。2.3.2数据库连接工具Navicat在Navicat中写入的SQL语句没有大小写之分,无论书写大写或小写,Navicat默认为转换为大写字母,Navicat工具能够连接汗各种数据库而不局限于MySQL,也可与Oracle和其他数据库联系起来,实现安全和简便地创建。Navicat所具有的特性能够满足程序员的各种要求,而对初学数据库服务器的人来说,这是一件颇为简单的事情。同时,其还拥有非常完整的图形用户界面(GUI),也就是说,Navicat能够以安全和简便的方式进行创建,整理和存取。Navicat适用于以下三种系统:一是MacOS;二是MicrosoftWindows;三是Linux系统。2.4开发环境笔记本电脑类型:华硕飞行堡垒64位型笔记本电脑电脑操作系统:家庭版Windows10MySQL数据库版本:MySQL57Java版本:JDK1.8Java版本:JDK1.8服务器版本型号:apache.tomcat.8.5.37.windows.x643需求分析3.1系统功能分析本文通过结合如今招聘市场存在的不足以及求职招聘管理的需求搭建了更加信息化、系统化的线上求职招聘平台。该平台包含很多功能,能够实现用户、企业以及管理者对应的需求。本文接下来将会对几个模块分别进行相应的分析和研究。1.管理员/用户登录这部分模块主要是用户和管理者的登录,其实也就是求职者和招聘者的登录管理。包括添加管理者、用户登录、注册等内容。系统实现添加一般管理员和高级管理员的功能,同时也能够保证游客注册系统以及用户登录系统查询信息等功能[8]。2.招聘者管理模块:管理者能够通过系统看到企业的招聘列表,然后其能将公司的相关信息在该板块下进行管理。3.管理职位类别:系统能够显示各种职位类别。4.信息推送模块:管理员通过系统能够清楚地看到招聘信息的推送,且能通过关键字的方式查询相关推送。并对信息进行审核,若信息失效,则需要删除信息。5.留言板管理员拥有管理留言板的权限,主要是完成相关留言的更改操作,包括增加、删除等。6.用户操作:这部分是系统普通用户能够进行的基本操作,也是本文设计的系统最基本的功能,也就是实现基本的登录使用、信息查询、信息修改以及数据存储等功能。7.退出:这个模块主要是相关人员不使用系统时退出系统,包括用户、管理员等。网络人才招聘系统的设计主要有三大类:第一类为个人用户,第二类为企业用户,第三类为管理员用户,笔者将在下文中逐一描述这三个大类系统的脑图与思想架构。个人用户的功能简介见图3-1:图3-1个人用户图企业用户功能介绍如图3-2所示:如图3-2企业用户图管理员用户功能介绍如图3-3所示:图3-3管理员用户图3.2业务流程分析系统的业务流程如下图所示。图3-4系统业务流程图其中业务的关键流程:在前台账号的页面,以个人用户信息作为验证,途经服务器之中的数据库校验,如果何时用户信息中的账号密码正确,就可以对这个系统进行使用,而在后端账号界面输入管理员的个人信息,经由服务器之中的数据校验,能够对系统进行管理,管理系统等功能操作[9]。3.3需求分析3.3.1业务需求分析网上求职与招聘管理系统的发展从根本上改变了我们的求职与招聘模式,这与经济和科技的快速发展也是分不开的。与此同时,该系统主要是为了方便求职者和招聘者间的联系。解决求职和招聘过程中存在的不足,确保通过线上就能够完成招聘工作。首先,招聘单位通过系统发布招聘信息,并且维护招聘信息,求职者在通过系统找到符合自己需求的工作,提交相关的资料[10]。接下来企业在系统上安排的用户就会专门负责处理相关的内容,将应聘信息下载并挑选后,通知符合企业工作岗位的应聘者参加面试。在面试过程中,人力资源能够通过系统随时查看应聘者的简历。本文设计的网上求职与招聘系统的设计开发,主要是是基于Java技术的研究。该系统能够通过计算机技术实现招聘者和求职者的管理。确保整个过程能够实现网络化、信息化、高效化。这种线上求职招聘的方式与传统的线下方式相比,可以节约很多资源,同时也能够提高办事效率。此外,一旦这种系统开发完成并且投入使用后,能够通过大量的数据将整个系统做到更加细致化的管理,不仅有利于信息的查询,也能够带来很好的便捷性。3.3.2系统功能分析本文通过结合如今招聘市场存在的不足以及求职招聘管理的需求搭建了更加信息化、系统化的线上求职招聘平台。该平台包含很多功能,能够实现用户、企业以及管理者对应的需求。本文接下来将会对几个模块分别进行相应的分析和研究[11]。1.管理员/用户登录这部分模块主要是用户和管理者的登录,其实也就是求职者和招聘者的登录管理。包括添加管理者、用户登录、注册等内容。系统实现添加一般管理员和高级管理员的功能,同时也能够保证游客注册系统以及用户登录系统查询信息等功能。2.招聘者管理模块:管理者能够通过系统看到企业的招聘列表,然后其能将公司的相关信息在该板块下进行管理。3.管理职位类别:系统能够显示各种职位类别。4.信息推送模块:管理员通过系统能够清楚地看到招聘信息的推送,且能通过关键字的方式查询相关推送。并对信息进行审核,若信息失效,则需要删除信息[12]。5.留言板管理员拥有管理留言板的权限,主要是完成相关留言的更改操作,包括增加、删除等。6.用户操作:这部分是系统普通用户能够进行的基本操作,也是本文设计的系统最基本的功能,也就是实现基本的登录使用、信息查询、信息修改以及数据存储等功能。7.退出:这个模块主要是相关人员不使用系统时退出系统,包括用户、管理员等。3.3.3数据流图个人用户流程图如图3-5:图3-5个人数据流程图解析:个人用户需要先访问登录页面,拥有账号可直接登陆,如无账号可使用邮箱地址进行注册,进入系统后,需要填写填履历,可向公布招聘信息的公司投送简历,可对简历进行修改;运行结束后,单机退出登录按钮即可,将其账号信息安全撤除[13]。企业用户流程图见图3-6:图3-6企业数据流程图解析:企业用户与个人用户的注册登录过程一样,设有账号的可直接登陆,无账号的需邮箱注册登录;如果是企业用户,则需要登陆到服务器后才能进行操作。系统内可公布录用岗位,查看应聘者的简历,向应聘者下达面试通知;运行结束后,可通过单击退出登录按钮,安全退出。5系统实现4系统设计4.1系统整体设计思想该系统的总体设计思想如下:第一,在Windows系统环境及B/S(浏览器/服务器)体系结构中进行开发;第二,后台开发主要使用Java语言,开发主要功能。第三,前台开发,使用HTML+CSS+JS技术。第四,数据使用MySQL数据库,完成语言建库、建表等系列操作。4.2系统体系架构网络招聘系统使用了三层架构这一技术,将整个系统分割开来,其优点可分两点:一方面,它能使整个程序的功能清晰化、结构清晰化,由此使得程序员在各个功能模块上的针对性都有了很大提高,增加发展的效益。另一方面,它还增加了系统后期可维护性(维护服务器是否高效)与可扩展性(后期可以增加功能)[14]。另外,在实现过程中还需要解决一些具体的细节,该系统三层架构划分见图4-1:图4-1三层架构表现层:基于jsp与servlet技术,借助servlet对个人用户与企业用户申请不同方式与对象,接收不同请求,利用业务逻辑功能,将数据发送到jsp病呈现给用户。逻辑层:实际上,业务逻辑层以service为主,它的作用是利用数据层所获取的信息,在功能模块图上实现了多种业务逻辑。数据层:从体系上看,数据持久层以dao为主,dao层利用JDBC技术对MySQL数据库进行数据链接与存取。三层中的关系是自上而下的,各层之间需相互依赖。4.3数据库表设计个人数据表设计如表4-1所示:表4-1个人表字段名数据类型长度约束描述idbigint20主键序号create_timedatetime0不为null创建时间update_timedatetime0不为null修改时间emailvarchar255不为null邮箱地址passwordvarchar16不为null密码head_picvarchar128不为null头像mobilevarchar11不为null手机号sexint11不为null性别usernamevarchar6不为null姓名contentlongtext0自我描述work_experiencevarchar10工作时长degreevarchar10学历所述个人表用于存储个人账号用户基本信息,用户在注册或登录时所录入数据的存储场所为个人表。其中ID字段是表中主键,主键不重复,不为空键,是每一个用户身份唯一的象征。该部分包含了所有的字段值和对应的属性。还有一些字段保存的信息为个人用户基本信息。企业数据表设计如表4-2所示:表4-2企业表字段名数据类型长度约束描述idbigint20主键序号create_timedatetime0不为null创建时间update_timedatetime0不为null修改时间financevarchar255不为null是否上市founder_namevarchar10不为null创始人founder_photovarchar128不为null创始人照片founder_positionvarchar11不为null职位introductionlongtext0不为null公司简介localevarchar255不为null公司地址namevarchar30公司名称product_contentlongtext0产品描述product_titlevarchar15职位名称scalevarchar255公司人数statevarchar30管理认证territoryvarchar255行业urlvarchar255官网网址valuevarchar50职位简介企业表旨在保存企业账号的用户信息(企业名称等)。在该表中,所有的字段值都可以从数据库中提取出来,并可根据需要进行修改和删除,因此它具有很高的实用价值。其中ID字段同时作为表中主键使用,主键不重复,不为空键,是每一个企业用户唯一的身份象征。4.4就业智能预测模块数据处理是可视化分析的重要前提,在使用Python进行数据分析时,如果直接连接数据库,那么所需的模块将直接导入Python进行分析。但是,如果直接用于可视化分析,原始数据存在重复、缺乏、不完整、不一致和噪声等问题,可能会对后续分析结果产生重大影响。因此,利用Python的Pandas库将数据库中包含的数据纳入DataFrames中,进行数据清理和随后的可视化分析[15]。图4-2是数据预处理的流程图。图4-2数据预处理流程图以下是对招聘信息进行非结构文本进行数据分析,图4-3是文本分析流程图。图4-3文本数据分析流程图4.5就业智能预测模块实现用户立足七大机器学习算法预测模型实现预估薪资的操作,如下是基于KNN算法进行举例。首先导入sklearn模块中的KNN类,再通过创建分类器对象调用其训练方法接收训练数据集及其样本标签,最终生成预测模型,KNN预测模型生成代码如下所示:图4-4KNN预测模型图4-5呈现的内容是预测结果图,由图中信息能够明确,在上海python开发,应届毕业生能获得的薪资不高于1万元。图4-5KNN预测结果图逻辑回归预测模型生成代码如图4-6所示:图4-6逻辑回归预测模型朴素贝叶斯预测模型生成代码如下所示:fromsklearn.naive_bayesimportMultinomialNB#朴素贝叶斯clf=MultinomialNB()clf.fit(X_train,y_train)print('MultinomialNB')print(clf.score(X_test,y_test))withopen(filename+'_NB.model','wb',encoding='utf-8',errors='ignore')asfw:pickle.dump(clf,fw)随机森林预测模型生成代码如下所示:fromsklearn.ensembleimportRandomForestClassifier#随机森林clf=RandomForestClassifier(n_estimators=17,criterion='gini',min_samples_leaf=1)clf.fit(X_train,y_train)print('RandomForestClassifier')print(clf.score(X_test,y_test))withopen(filename+'_RF.model','wb',encoding='utf-8',errors='ignore')asfw:pickle.dump(clf,fw)决策树预测模型生成代码如下所示:fromsklearnimporttree#决策树clf=tree.DecisionTreeClassifier()clf.fit(X_train,y_train)print('DecisionTreeClassifier')print(clf.score(X_test,y_test))withopen(filename+'_DT.model','wb',encoding='utf-8',errors='ignore')asfw:pickle.dump(clf,fw)支持向量机预测模型生成代码如下所示:fronsklearn.svmimportsvC#支持向量机clf=SVC(kernel='rbf',probability=True)clf.fit(X_train,y_train)print('SVM')print(clf.score(X_test,y_test))withopen(filename+'_SVM.model','wb',encoding='utf-8',errors='ignore')asfw:pickle.dump(clf,fw)神经网络预测模型生成代码如下所示:fronsklearn.neural_netuorkinportMLPClassifier#神经网络Mtp=MLPClassifier(hidden_layer_sizes=(200,),activation='tanh',max_iter=1000,learning_rate_init=8.81,s0Lver=‘sgd')mlp.fit(x_train,y_train)print('MLP')print(nlp.score(x_test,y_test))withopen(filename+'_NN.model','wb',encoding='utf-8',errors='ignore')asfu:pickle.dunp(clf,fw)用户可拟定城市、学历、工作经验、公司规模、职位来获得信息预测模型,如下呈现的内容就是预测结果在前端系统呈现的核心程序代码:@app.route('/predict',methods=['GET'])defpredict():y_data=['0-10K','10-20K','20-30K','30-40K','40K以上']positionName=str(request.args['positionName']).lower()model=str(request.args['model'])withopen(positionName+'_'+model+'.model','rb')asfr:selected_model=pickle.load(fr)companySize=int(request.args['companySize'])workYear=int(request.args['workYear'])education=int(request.args['education'])city=int(request.args['city'])x=[companySize,workYear,education,city]x=np.array(x)y=selected_model.predict(x.reshape(1,-1))returnjsonify(y_data[y[0]])5系统实现5.1登录模块登录模块,用户可借助文本框,输入登录信息,使用Servlet导入dao层,对其正确性进行判断,明确登录模式,跳过对应网页。系统所有功能均须以用户登陆成功为硬件前提,实现页面跳转,因此,本单元显得尤为重要。用户根据网页文本框提示,键入信箱、密码及验证码单击登陆,系统将对输入邮箱进行检索,密码与验证码是否正确以及是否为空白,若输入数据存在于用户表中,系统跳过相应界面图示,否则,将提示邮箱和密码有误,或验证码有误;如果没有这些提示就会提示注册成功。用户这个要重新输入合适的邮箱及密码,不然就会提示登陆不成功。登录模块主要代码为:publicResult<Boolean>loginForm(Stringemail,Stringpassword,Stringcpacha,HttpServletRequestrequest){if(StringUtil.isEmpty(email)){returnResult.error(CodeMsg.USER_EMAIL_EMPTY);}if(StringUtil.isEmpty(password)){returnResult.error(CodeMsg.USER_PASSWORD_EMPTY);}if(StringUtil.isEmpty(cpacha)){returnResult.error(CodeMsg.CPACHA_EMPTY);}//获取系统生成的验证码Stringcorrect_cpacha=(String)request.getSession().getAttribute("user_login");//验证验证码是否正确if(!cpacha.toUpperCase().equals(correct_cpacha.toUpperCase())){returnResult.error(CodeMsg.CPACHA_ERROR);}Useruser=userService.findByEmail(email);//判断该邮箱地址是否存在if(user==null){returnResult.error(CodeMsg.USER_EMAIL_NOT_EXIST);}//判断用户输入密码是否正确if(!password.equals(user.getPassword())){returnResult.error(CodeMsg.USER_PASSWORD_ERROR);}request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY,user);returnResult.success(true);}登录界面如图5-1图5-1登录页面5.2注册模块使用者可到登记页面登记账号及密码,登记的资料必须按要求填写。登陆之后,系统将自动发送一个注册验证码,输入自己想要注册的帐号、密码以及所需的个人信息。当注册信息被填入时,系统将对所填入信息进行检测,以证明其合法性,当输入正确之后,系统会自动给提供一个安全登陆界面,该界面包括登陆入口、账户设置等多个模块。注册后,点击回传登陆,就可以用刚注册好的账号及密码登录到系统中。5.2.1注册模块的关键代码如下:publicResult<Boolean>registerForm(HttpServletRequestrequest,Useruser,Stringcpacha){//如果勾选目的为空if(user.getType()==null||user.getType()<0){returnResult.error(CodeMsg.USER_REGISTER_TYPE_EMPTY);}//如果邮箱地址为空if(StringUtil.isEmpty(user.getEmail())){returnResult.error(CodeMsg.USER_EMAIL_EMPTY);}//如果用户密码为空if(StringUtil.isEmpty(user.getPassword())){returnResult.error(CodeMsg.USER_PASSWORD_EMPTY);}//如果用户昵称为空if(StringUtil.isEmpty(user.getUsername())){returnResult.error(CodeMsg.USER_NAME_EMPTY);}//如果验证码为空if(StringUtil.isEmpty(cpacha)){returnResult.error(CodeMsg.CPACHA_EMPTY);}//用统一验证实体方法验证是否合法user.setMobile();//先随便设置一个,后面恢复CodeMsgvalidate=ValidateEntityUtil.validate(user);if(validate.getCode()!=CodeMsg.SUCCESS.getCode()){returnResult.error(validate);}user.setMobile(null);//恢复//如果用户没点发送邮件if(request.getSession().getAttribute("user_register")==null){returnResult.error(CodeMsg.SYSTEM_CPACHA_EMPTY);}Stringcorrect_cpacha=(String) request.getSession().getAttribute("user_register");//如果验证码不正确if(!correct_cpacha.toUpperCase().equals(cpacha.toUpperCase())){returnResult.error(CodeMsg.CPACHA_ERROR);}//检查邮箱和用户昵称是否有重复if(checkEmail(user,0l)){request.getSession().setAttribute("user_register",null);//邮箱输入新的一个,需要重新发验证码确定returnResult.error(CodeMsg.USER_EMAIL_ALREADY_EXIST);}if(checkUsername(user,0l)){returnResult.error(CodeMsg.USER_NAME_ALREADY_EXIST);}//上面审核都通过后,准备添加数据库if(userService.save(user)==null){returnResult.error(CodeMsg.USER_REGISTER_ERROR);}//把验证码权限销毁request.getSession().setAttribute("user_register",null);returnResult.success(true);}//检查有没有重复的emailpublicbooleancheckEmail(Useruser,Longid){UserfindByEmail=userService.findByEmail(user.getEmail());if(findByEmail==null)returnfalse;//没有重复if(findByEmail.getId().longValue()==id.longValue())returnfalse;//没有重复returntrue;//有重复}//检查有没有重复的usernamepublicbooleancheckUsername(Useruser,Longid){UserfindByUsername=userService.findByUsername(user.getUsername());if(findByUsername==null)returnfalse;//没有重复if(findByUsername.getId().longValue()==id.longValue())returnfalse;//没有重复returntrue;//有重复}}注册界面如图5-2:图5-2注册页面5.3就业管理模块个人用户可对简历进行撰写及修改,简历分基本信息模块、期望的工作模块、工作经历模块、项目经验模块和其他一些模块。本模块为用户必填项目,未填简历保存失败。代码实例:publicclassUserextendsBaseEntity{/****/privatestaticfinallongserialVersionUID=1L;privatestaticfinalintUSER_SEX_MAN=1;//性别男privatestaticfinalintUSER_SEX_WOMAN=2;//性别女privatestaticfinalintUSER_SEX_UNKONW=0;//性别未知privatestaticfinalStringDEFAULT_WORK_EXPERIENCE="应届毕业生";//默认工作经验privatestaticfinalStringDEFAULT_DEGREE="其他";//默认学历privatestaticfinalStringDEFAULT_HEAD_IMAGE="common/default_img.jpg";//默认用户头像@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=1,maxLength=6,errorRequiredMsg="用户昵称不能为空!",errorMinLengthMsg="用户昵称长度需大于0!",errorMaxLengthMsg="用户昵称长度不能大于6!")@Column(name="username",nullable=false,length=6)privateStringusername;//用户昵称@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=6,maxLength=16,errorRequiredMsg="用户密码不能为空!",errorMinLengthMsg="用户密码长度需大于5!",errorMaxLengthMsg="用户密码长度不能大于16!")@Column(name="Password",nullable=false,length=16)privateStringPassword;//用户昵称@ValidateEntity(required=true,errorRequiredMsg="用户邮箱地址不能为空!")@Column(name="Email",nullable=false)privateStringEmail;//用户邮箱地址@ValidateEntity(required=false)@Column(name="head_pic",length=128)privateStringheadPic=DEFAULT_HEAD_IMAGE;//用户头像@ValidateEntity(required=false)@Column(name="work_experience",length=10)privateStringworkExperience=DEFAULT_WORK_EXPERIENCE;//工作经验:默认是应届毕业生@ValidateEntity(required=false)@Column(name="degree",length=10)privateStringdegree=DEFAULT_DEGREE;//学历:默认是其他@ValidateEntity(required=false)@Column(name="sex",length=1)privateintsex=USER_SEX_UNKONW;//用户性别@ValidateEntity(required=true,requiredMaxLength=true,requiredMinLength=true,minLength=11,maxLength=11,errorMinLengthMsg="请输入手机号正确的11位长度!",errorMaxLengthMsg="请输入手机号正确的11位长度!")@Column(name="mobile",length=12)privateStringmobile;//用户手机号@ValidateEntity(required=false)@Column(name="type",length=1,nullable=false)privateLongtype;//用户类别:0:应聘者,1:招聘者@Lob@Basic(fetch=FetchType.LAZY)//类型为longtextprivateStringcontent;//自我描述基本信息模块如图5-3:图5-3简历基本信息模块5.4招聘者管理模块企业用户可随时查看有无申请人申请本企业公布的岗位,可浏览其所投简历,以确定是否有必要告知其进行面试。当通知面试时,系统会自动将简历和录用人员进行关联,并在通知面试之前提醒应聘者注意。告知面试结束后希望相应投简历的求职者,将获得该公司的面试消息。招聘者管理模块的关键代码如下:/***招聘者收到简历页面*@parammodel*@return*/@RequestMapping(value="/my_receive_resume",method=RequestMethod.GET)publicStringmy_receive_resume(Modelmodel,StringresumeState,HttpServletRequestrequest){Useruser=(User)request.getSession().getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);if(!StringUtil.isEmpty(resumeState)){//如果resumeState不为空CompanyfindCompanyByUserId=companyService.findByUserId(user.getId());List<Resume>findByCompanyIdAndState=resumeService.findByCompanyIdAndState(findCompanyByUserId.getId(),resumeState);model.addAttribute("ResumeList",findByCompanyIdAndState);model.addAttribute("EducationBackgroundList",educationBackgroundService.findAllEducationBackground());model.addAttribute("WorkExperienceList",workExperienceService.findAllWorkExperience());model.addAttribute("resumeTotal",resumeService.getPositionTotalByStateAndCompanyId(findCompanyByUserId.getId(),resumeState));model.addAttribute("resumeState",resumeState);}else{CompanyfindCompanyByUserId=companyService.findByUserId(user.getId());List<Resume>findByCompanyIdAndState=resumeService.findByCompanyIdAndState(findCompanyByUserId.getId(),"wait");model.addAttribute("ResumeList",findByCompanyIdAndState);model.addAttribute("EducationBackgroundList",educationBackgroundService.findAllEducationBackground());model.addAttribute("WorkExperienceList",workExperienceService.findAllWorkExperience());model.addAttribute("resumeTotal",resumeService.getPositionTotalByStateAndCompanyId(findCompanyByUserId.getId(),"wait"));}return"home/resume/my_receive_resume";}/***简历通知面试*@paramrequest*@return*/@RequestMapping(value="/interview",method=RequestMethod.POST)@ResponseBodypublicResult<Boolean>interview(HttpServletRequestrequest,@RequestParam(name="id",required=true)Longid){ResumefindByResumeId=resumeService.findByResumeId(id);findByResumeId.setState("effective");if(resumeService.save(findByResumeId)==null){returnResult.error(CodeMsg.RESUME_STATE_SAVE_ERROR);}returnResult.success(true);}通知面试如图5-4:图5-4通知面试图5.5退出登录模块运行结束时,用户可将鼠标光标置于右上角退出图标上,单击退出按钮,安全退出系统,单击完成退出按钮之后,系统会直接返回登录页面。本系统通过对各种不同类型的攻击手段及相应的防范策略,有效地阻止了各类攻击方式的实施,确保了用户在任何时候都能正常登陆,并实现了与其它网站的数据连接。杜绝他人利用其账号从事某些非法行为,保障用户信息安全,同时确保网络环境安全。详见图5-5:图5.5安全退出登录图6系统测试6系统测试因为软件并非实物产品,它是一种无形的逻辑产品,因此,设计中会出现一些难以避免的错误。因此,需要检查编写的代码是否正确可用,检验系统的运行,发现可能出现的错误与BUG,及时进行调试修正错误。6.1测试方法通常来说,系统测试主要分为以下两种:一是静态测试;二是动态测试。静态测试是到写好的代码里检查并发现错误,该测试方式无须运行程序,但需要注意的是,该测试方法很难发现错误,并且工作量过大,且效率不高。动态测试和静态测试则相反,要求程序运行到电脑,运行时检测BUG及主要失误。动态测试寻找BUG,能直观地检测出错误,因此,目前多数程序员都在使用动态测试方法。而动态测试主要分为以下两种:第一,白盒测试;第二,黑盒测试。我们编写的系统使用了动态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论