基于JSP和Oracle的网上招聘系统的设计与实现
摘 要
随着时代的发展,中国的互联网技术愈加成熟,已经有越来越多的社会群体开始学会使用互联网技术,整个社会正在朝着智能化、信息化的方向前进。有了互联网,用户便可以足不出户地利用互联网技术使得自己的生活更加便捷。因此,为了满足用户的庞大需求,网上招聘系统应运而生。
本系统整体基于B/S架构,采用MyBatis框架,运用Java中的Servlet、Jsp等关键技术,并结合Oracle数据库的使用,为招聘者和求职者搭建了一个高效、便利的网络平台。本系统分别为求职者和招聘者提供了信息注册功能,登录功能和信息维护功能。除此之外,求职者可以选择发布、撤销或打印自己的简历,也可以浏览到企业实时的招聘信息,从而选择合适的企业应聘。招聘者可以选择发布或撤销自己的招聘信息,也可以浏览到求职人员的信息,选择是否同意他的应聘请求,并向其发送通知。
关键词 :Java;Servlet;Oracle;招聘系统
Abstract
With the development of the times, China's Internet technology is becoming more and more mature, more and more people began to learn to use the Internet, the whole society is moving in the direction of information technology, intelligent. With the Internet, people can make use of the Internet technology to make their lives more convenient. Therefore, in order to meet the needs of people, online recruitment system came into being.
The whole system is based on B/S architecture, using MyBatis framework, the key technologies in java servlet and JSP, combined with the use of Oracle database, build an efficient and convenient platform for job seekers and recruiters. This system provides information registration function, login function and information maintenance function for job seekers and employers. In addition, job seekers can publish, revoke, print your resume, you can also browse to the enterprise real-time recruitment information, in order to select the right candidates. Recruiters can publish, revoke their recruitment information, you can browse to the job seekers information, choose whether or not to agree to his request, and sent a notice to him.
Key words : Java; Servlet; Oracle; recruitment system
1 绪论
1.1 开发背景
伴随着中国经济的飞速发展,城市化进程的加快,求职者队伍的不断壮大,传统人才招聘的弊端初露端倪。首先,传统人才应聘的形式是求职者和企业的负责人面对面地交流。这就需要企业和求职者提前规划自己的时间,准备大量的纸质材料,并选好举办招聘会的地点,这一系列流程都需要双方把大量的精力投入到准备活动中去,使得应聘还未开始,成本就已大幅增加。其次,企业在筛选数以百计,甚至数以万计简历的时候,往往会由于阅读疲劳,漏掉一些真正有价值的简历,使得企业丧失掉一批有用的人才。对于求职者而言,也会错失掉良好的机会,令人惋惜。
随着国内互联网飞速的发展,用户已经越来越习惯于使用互联网传递信息,接收信息,利用互联网技术使得自己的生活更加便利,快捷。在这样一种大趋势下,网上人才招聘系统出现在了用户的眼前。网上人才招聘系统相对于传统的人才招聘,有以下几点优势:
-
方便快捷 :对于求职者来说,只要在互联网上向有意向的企业投递了个人简历,便可等候企业的通知信息;对于企业来说,只要点一下鼠标便可同意求职者的申请
-
选择多 :由于招聘信息量丰富、使用网络招聘的人数基数大,在大量的职位数据库中,求职者对于适合职位的选择也就越多
-
费用少 :对于求职者来说,节省了不少成本,如:交通费、简历制作费、通讯费等不少费用。除此之外,还有效地避免了招聘会现场异常拥挤、交流效果不尽如人意、选择职位盲目性大的问题。对于企业来说,节省了办理招聘会的各种费用
正是由于以上种种优势,越来越多的求职者选择网络求职成为自己的应聘方式。
1.2 开发意义
本系统开发的意义在于突破传统人才招聘的模式,给招聘者和求职者提供一个便利、高效、准确的网络招聘平台,使得双方可以在把成本降到最低的前提下,在更快的时间获得更加准确的信息,从而满足企业的用人需求,实现求职者的自身价值。
1.3 国内外研究现状
在国外,运用互联网进行人才招聘的企业和求职者不在少数,许多优秀的第三方人才招聘网站也脱颖而出。在美国,优秀的人才招聘网站主要有:
-
Beyond.com :每月发布的职位达数十万个
-
Job.com :全美访问量最多的人才招聘网站
-
Monster.com :全球知名的第三方网络招聘服务公司。现在已经在全球
二十多个国家设立分部或办事处,并且建立了22种不同语言的招聘网站。其已具备国际领先的网路服务经验,以及庞大的个人简历数据库。
在国内,也有越来越多的网络平台兴起开来,著名的有前程无忧、智联招聘、58同城等。据数据统计,2016年中国互联网招聘市场份额正在逐步增加。其中前程无忧占比29.7%,智联招聘占比26.5%,58赶集合并后共同占比26.3%,其他厂商占比17.5%。与此同时,传统招聘网站的市场份额正在逐渐缩小,2016年,中国互联网招聘公司手机应用软件的使用用户规模达720万人之多,单日人均使用次数为5.5次,单日人均使用时长达15分钟,用户活跃度较去年同期有所增长,手机等移动端的发展趋势较好。
许多国家的用户已经对网络招聘的方式深谙其道。网络招聘已经成为当代大学毕业生和职员求职应聘的首选方式。在未来的几年里,网络招聘会进一步的发展和完善,受到更多人的青睐。
1.4 论文结构
本论文按照软件工程标准开发流程进行叙述。其主要由以下几个章节构成:
-
绪论 :对课题的开发背景以及研究价值进行详细的介绍
-
相关技术原理和开发工具 :对本系统所用到的关键技术及工具进行概述,比如java、Oracle等
-
系统可行性研究 :主要从技术实现、功能要求方面探讨该系统成功实施的可能性
-
系统需求分析 :对用户对于本系统的需求进行描述、分析,主要包含用例图的设计、数据流图的设计、数据字典表的描述及数据表实体-关系图的设计
-
系统设计 :在需求分析的基础上,对系统进行概要设计,主要包系统含类图的设计、系统模块的划分、每个模块的功能概述及数据表的逻辑设计
-
系统实现 :将系统各个功能模块业务逻辑进行详细描述,再用代码将其具体地实现
-
系统测试 :通过等价类划分法,设计测试用例,考察系统的缺陷
-
结束语 :对本系统进行最后的描述以及对未来的展望
-
附录 :包含有关于网络招聘的外文资料及其翻译
2 相关技术原理和开发工具
2.1 程序语言的选择
2.1.1 Java概述
Java是一种面向对象的、可以编写许多跨平台应用软件的第三代程序设计语言。在1995年5月,由美国的Sun公司推出。 Java不再像C语言那样是面向过程的语言,也不像C++拥有众多复杂的机制,难以理解。准确地说,Java是一种纯的面向对象的语言。在Java的世界里,万物皆对象。正是由于这一种思想,开拓了创程序员的思维,从而诞生出了更先进的编程技术。
2.1.2 Java特点
Java的应用范围很广,开发人员可以用Java开发C/S应用程序、B/S应用程序、手机应用软件以及部分小游戏等。它主要具有以下特点:
-
面向对象特性 :在Java的概念里,任何事物都可看成对象,哪怕是类本身还是类里面的成员变量和成员方法都可以看成对象。Java编写的程序之所以能够轻而易举地扩展,正是由于它是基于对象模型的。在现实生活中,类就是物体共有属性和行为的抽象。而对象则是类的具体实例。比如:一个具体的苹果就是水果类的一个实例
-
平台无关性 :与许多其它编程语言不同的是,Java代码在被编译完成的时候,它会生成一种二进制的文件(.class文件),这种文件独立于平台,运行在虚拟机(JVM)中。程序不论是在Windows或Linux环境下,都可以被执行,只不过不同平台的虚拟机是不同的
-
简单 :Java设计的初衷便是简单易学。只要你能够准确、快速地掌握Java面向对象的特性,其他的概念便可以无师自通,遇到的大多数便可迎刃而解。从语言的难易程度看,Java要比 C++简单,C++中许多不容易掌握的概念如多继承、指针等概念都被Java所抛弃。这样的改进,不仅不会降低Java的实用性,反而大大增强了Java的体系架构,使得Java更加精简,可以应用于更广的领域
-
安全 :正是由于Java中不支持指针的概念,程序员没有机会去直接操作内存空间,这样就有效地防止了程序运行时堆栈溢出等问题,程序不会轻易地崩溃
-
持久耐用 :Java检测机制比较完善。有编译时错误检查和运行时检查两种方式,这样就能够检测出更多地错误,从而使得开发人员纠正错误,使程序长久稳定地运行
-
多线程 :所谓多线程,就是在同一段时间内,程序可以完成多个任务。Java的多线程功能,由JVM本身提供,开发人员只要利用JDK中提供的类和接口便可以轻松地实现多线程功能。多线程可以使程序高效地运行,在大型系统或网站中运用十分广泛。多线程的思想是优秀发人员必不可少的品质
-
动态 :类是Java 程序的基本构成单位。有些类是JDK提供的,有一些是从第三方框架中引入的,再者就是自己编写。又因为类是运行时被动态装载在JVM中的,这就使得 Java 可以在网络环境中动态地维护程序,实时地显示更新后的数据
总地来说,Java是为了满足新时代开发人员的需要而诞生的。它在C++的基础上,取其精华,去其糟粕,并且高度抽象了现实生活中的物体,从而达到一种简单实用、面向对象、安全可靠、高性能和多线程的状态。
2.1.3 Servlet简介
在这个信息化时代,计算机对数据的处理显得尤为重要。传统的静态网页技术(HTML、CSS等)已经无法解决大数据发展所带来的问题,无法实时地处理上万条乃至上亿条信息。因此,动态网页技术应运而生。Servlet便是其中的佼佼者。
Servlet不是一个纯粹的新技术,它是在Java的基础上发展而来的。准确的说,Servlet就是使用Java里一些相关的类库开发出来的程序。开发者通过Servlet技术,便可搭建出一个基于B/S架构的系统,它可以动态地处理数据,并将数据返回到浏览器中,用户只需刷新一下网页便可浏览到实时地信息。
由于Servlet本质上就是Java程序,它具备Java语言的一切特点。除此之外,它还具备额外的一些优点:
-
可重用性高 :Servlet中可以建立组件,这些组件都可以复用
-
模块化 :Servlet中把程序划分为许多模块,模块化的好处就在于简洁明了,各司其职,不论是在程序的理解上还是维护上,都显得快捷高效
Serlvet的运行原理如图2-1所示。
2.2 Oracle数据库
Oracle全称是Oracle关系型数据库管理系统,是甲骨文公司旗下的一款产品。Oracle数据库已经成为世界上最为流行,被众多厂商广泛使用的关系型数据库产品。不论是在小型、中型还是大型计算机中,不论系统是基于客户机/服务器架构,还是基于浏览器/服务器架构,它都可以高效地运行。除此之外,Oracle还在已有的结构性查询语言(SQL)基础上,结合自身产品的特性,创造出了一套符合自身特点的数据库语言。
2.3 B/S模式
2.3.1 B/S架构概述
B/S架构(Browser/Server,浏览器/服务器架构),是当下最流行的一种网络架构模式。这种模式的客户端由浏览器充当,这样做的好处之一便是客户端简单易维护。因为浏览器的开发是由各个浏览器厂商负责的,系统开发人员并不需要参与其中,只需要负责服务器端系统的实现便可。除此之外,在服务器端并不需要运行大量的程序,这样做的好处在于可以释放服务器上的大量资源,也减轻了服务器端程序开发以及后期维护的成本。
对于用户来说使用起来也非常轻松,用户在电脑上只需要安装一个浏览器,如火狐、IE、谷歌等,不需要像QQ一样下载专门的客户端软件,便可轻松地访问需要的系统或网站。
2.3.2 B/S架构的工作原理
用户打开浏览器,在浏览器中的地址栏中输入要访问的地址,即向服务器发送请求。请求发送成功后,服务器对收到的请求进行处理。在处理过程中,主要是对其中的请求信息进行解析,如果这一过程需要访问数据库,服务器便会继续访问数据库从中得到需要的数据,结合服务器内部的逻辑处理程序最终定位到用户需要的资源,返回给用户一个响应。最后用户即可在显示器上看到呈现出来的页面。具体原理如图2-2所示。
2.3.3 B/S架构与C/S架构的比较
C/S架构软件(即客户机/服务器架构)分为客户端和服务器端软件两种。客户端不仅要像B/S架构中的浏览器具备数据接收以及效果呈现的功能,还需要具备一定的业务逻辑处理能力。这就容易导致客户端负载严重,功能复杂。开发的成本也要有所增加。客户端软件的安装更是对用户的电脑配置提出了要求,越先进的软件对软硬件的配置要求越高,很有可能因为用户电脑配置的问题,导致项目的取消。在后期的维护中,除了对服务器维护外,开发人员还要单独对客户端软件进行维护,对不同配置的电脑还要开发出不同的维护版本,复杂度可想而知。
B/S(浏览器/服务器模式)架构则是为了弥补C/S架构缺陷而产生的。它是对C/S架构的一种改进。在这种架构下,软件的业务逻辑功能完全放在WEB服务器端实现,开发人员不必开发出客户端软件,客户端也仅仅需要接收数据、展示页面即可。这是一种先进的开发理念和开发技术。这种架构已经成为当今软件开发的首选体系架构。企业的管理软件大多采用这种架构。社交功具或一些网络游戏大多采用C/S架构。
2.4 开发工具
2.4.1 建模工具Microsoft Visio
Microsoft Visio是微软旗下的一款具备图形绘制、图表绘制、模型构建等多种功能的大型软件。Visio最大的特点是它自身提供了许多模板供用户选择,而这些模板又涵盖了网络、工程、软件等众多应用领域,这就成为了很多开发人员的不二选择。在应用当中,开发人员只需选好自己需要的模板,将Visio中提供的部件拖拽到自己的项目中即可。
所谓“一图胜千言”,利用Visio就可以轻而易举的构建出许多一目了然的模型,这样就大大提高了开发效率,减小了项目失败的风险,用户也更加放心。
Microsoft Visio于2000年被微软收购,在这十几年当中,发布过将近17个版本。在该项目中,使用的是Visio 2013专业版。
2.4.2 编码工具Eclipse
Eclipse主要是为开发Java项目而搭建的开放平台。除此之外,它还支持C、C++、PHP等语言。Eclipse是一组集成开发环境(IDE),集众多插件于一身,使用起来十分灵活。开发人员可以对Eclipse中的一些插件进行取舍,使得软件高效运行;也可以在Eclipse中切换开发视图,配置一些参数,不必像以前再进行一些繁琐的操作。
Eclipse于1994年被IBM和OTI两家公司所创建。后来IBM提出Eclipse开源项目的概念,被后来大约150家公司共同开发,以宇宙中星球的名字作为它每一代的版本代号。在该项目中,使用的是Elipse Mars版本。
2.4.3 数据库连接工具Navicat
Navicat是一套数据库管理工具,它可以连接到SQL Server、MySql、Oracle等主流数据库管理系统,简化了数据库的管理,方便了开发人员的操作,降低了数据库管理的成本。
由于Navicat是基于图形用户界面的,开发人员直接可以通过Navicat提供的功能,不必在命令行中输入SQL语句,便可以直观的操作数据库,管理数据,实现增删改查等操作。Navicat在提供便利的同时,也对安全性加以保障,开发人员并不需要担心数据泄露的风险。
Navicat也有众多版本,比如Navicat for MySQL、Navicat for Oracle等等。在该项目中,使用的是Navicat Premium版本。
2.5 开发环境
-
电脑型号 :惠普242 G1 64位笔记本电脑
-
操作系统 :Windows10专业版
-
数据库版本 :Oracle10g XE
-
JDK版本 :JDK1.8
-
服务器版本 :apache-tomcat-8.0.24-windows-x64
3 系统可行性研究
3.1 系统可行性研究概述
开发者在开发一个项目前,往往要考虑以下几个问题:这个项目有没有做的价值;在现有的条件下以及规定时间内是否可以把它完成;以及在做成之后,这个项目带给整个团队的利益究竟有哪些等等。这一系列要考虑的问题就可以看做对这个项目的可行性研究。
3.2 系统可行性研究的目的和流程
可行性研究的目的就是在确保符合团队利益的基础上,利用手上最精简的资源,探讨这个项目是否可以按规定去完成。除此之外,可行性研究的关键不是提出具体的开发方案,而是探讨解决问题的可能性。
在系统开发生命周期中,往往会因为系统开发人员对市场的了解不彻底,对技术的掌握不熟练,对项目的风险因素预估不足等原因,导致许多问题都不能在合理的情况下得到解决。如果开发人员能够提前预测到可能出现的问题,并且在经过探讨后,不能得出合理的应对办法,那么就应该取消项目的开发。这样就能够在人力、物力等方面避免不必要的损失。
系统可行性研究其主要流程为:分析人员对用户提出的项目方案进行简要的需求分析,在此基础上,利用一些作图工具或原型工具得到该系统的逻辑模型,接着利用逻辑模型探索出许多不同的解决办法,最后从这些解决方案中找出代价最小的去进行之后更深入的探讨。
可行性研究往往可以从经济、技术、操作、法律这四个角度去讨论项目的可行程度,也可以让用户一目了然地了解到项目的整体规范。下面将仔细从这四个方面解析:
-
经济可行性 :主要从“成本-效益分析”的观点出发,通过对货币的时间价值、投资回收期、纯收入等方面的研究,考量项目成本与收益之间的关系
-
技术可行性 :从开发人员角度来说,考查的是其是否具备开发这个项目的技术和综合素质;从项目构成来说,考察的是该项目的架构是否合理,将来在开发以及运行的过程中不会出错;从项目运行的条件说,考查是否具备相应的软硬件环境
-
操作可行性 :项目的操作在其领域内是否行得通
-
法律可行性 :确保该项目的开发不会触犯政治上或社会上的侵权,不会违反任何一项法律条例。主要是从版权、专利等方面入手
3.3 项目评估
-
项目名称 :网上招聘系统的设计与实现
-
主要用户 :个人和企业
-
关键技术 :java、servlet、oracle
-
运行环境 :windows操作系统
-
前台功能 :为用户呈现出操作界面,且界面美观、布局合理,具备一定的前台验证功能,要对用户的操作具有引导性和提示性
-
后台功能 :在用户管理方面,包括注册、登录、信息修改等基本功能。除此之外,其他功能围绕“招聘”这一活动行为展开,主要包括各种信息的浏览、简历的投递、简历的接收以及后续对简历的回应等等
该项目在现有的人力、技术条件下,在符合法律规定的前提下,可以在规定时间内按照上述要求将其实现,并且有充足的时间对其进行测试、调试,保证项目的正确性。总体来看,该项目具备开发的可行性。
4 系统需求分析
需求分析就是在确定系统可以开发的基础上,将客户对系统的口头概述,经由开发人员的分析总结,抽象为具体的需求用例,再形成需求规格说明书的软件开发过程。可行性研究旨在探索目标系统是否值得利用现有的资源去开发,问题是否能够在现有的技术上去解决。而需求分析旨在回答"系统应该具备什么功能"的问题,以确保将来开发出来的系统能够让客户满意。
4.1 系统功能分析
4.1.1 用例图
网上人才招聘系统的用户共分为两类:个人用户和企业用户。
个人用户的用例图如图4-1所示。
个人用户可以管理自己的信息,管理自己的简历,也可以实时浏览企业发布的招聘信息,按自己的要求筛选出合适的企业从而决定报名,并可以在企业应答之后收到相应的回复。
企业用户的用例图如图4-2所示。
企业用户可以管理本公司的登记信息,管理招聘公告,也可以实时浏览求职者的个人信息,决定是否录用,并向其发送回复。
4.1.2 数据流图
个人用户业务的流程如图4-3所示。
个人用户在使用本系统时,会先进入到系统的登录界面进行登录,如果没有账户可用,则可以点击登录界面上的注册按钮注册信息。在成功登录后,则可以顺利地进入到主界面。个人用户可以在主界面的目录结构中选择相应的提示按钮进行操作。比如:修改人个信息、浏览各企业发布的信息、应聘心仪的企业、打印自己的简历等等。在完成操作后,用户可以点击退出按钮,安全地退出系统。
企业用户业务的流程如图4-4所示。
企业用户在使用本系统时,同样也会先经过注册、登录等标准步骤。在成功登录后,企业用户会进入到与个人用户不同的主界面。企业用户可以在其主界面上浏览人才库信息、检索出自己想要的人才信息、管理自己的招聘信息。也可在求职者应聘之后,选择是否同意他的请求。在企业用户进行完一系列操作后,同样可以安全退出系统。
4.1.3 数据字典
数据字典是对数据流图中出现信息的详细描述。它的主要作用是供开发者查阅,并为之后系统的分析、设计以及维护阶段提供详细准确的文档说明。主要由数据流、数据存储、数据基本项和加工条目4部分组成。下面是有关个人业务数据流图的数据字典:
数据流条目如表4-1所示。
名称 | 组成 |
---|---|
个人信息 | 账号+密码+姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式+个人评价 |
新的个人信息 | 姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式+个人评价 |
登录信息 | 账号+密码 |
检索信息 | 职位类别+薪资范围+截止时间 |
企业职位信息 | 公司名称+公司地址+职位需求+电子邮箱+联系方式+薪资待遇|+公司简介 |
应聘信息 | 个人信息+企业职位信息 |
数据项如表4-2所示。
名称 | 类型 | 长度 |
---|---|---|
账号 | 字符型 | {字母}410 |
密码 | 数字型 | 不为零 |
数据存储条目如表4-3所示。
文件名 | 组成 | 组成方式 |
---|---|---|
个人信息表 | id+账号+密码+姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式 +个人评价 | 索引文件,以id为主键 |
雇佣表 | id+个人表的id+企业表的id | 索引文件,以id为主键 |
加工条目如表4-4所示。
加工名 | 编号 | 输入 | 输出 | 加工逻辑 |
---|---|---|---|---|
注册 | 1 | 个人信息 | 个人信息表 | IF信息合法 THEN录入数据库 ELSE 重新输入新的合法信息 ENDIF |
登录 | 2 | 登录信息 | IF账号、密码与数据库中的信息匹配 THEN准予登录,并跳转到主页面 ELSE重新输入合法信息 ENDIF | |
修改个人信息 | 3 | 新的个人信息 | 个人信息表 | IF信息合法 THEN录入数据库 ELSE 重新输入新的合法信息 ENDIF |
职位查询 | 4 | 检索信息 | 企业职位信息 | IF检索信息不为空 THEN按照相应的检索条件检索企业职位并返回给用户 ELSE按照默认方式排列企业职位信息并返回给用户 ENDIF |
下载简历 | 7 | 个人信息 | 返回当前用户的简历并下载 | |
向企业应聘 | 9 | 应聘信息 | 应聘表 | 根据求职者编号和企业编号录入信息 |
## 4.2 系统数据库需求分析 |
数据库需求分析是整个数据库设计的基础和起点,也是涉及数据库内容的软件进行系统开发工作的重要基础。在需求分析基础上,对新系统中数据的逻辑模型通常采用实体--联系图(ER图)来描述。系统的ER图如图4-5所示。
该E-R图包括:个人实体、企业实体和雇佣联系这三个组成部分。其中,个人实体主要用来存储个人求职者的信息,包括个人基本资料和自我评价。其目的是在招聘过程中供企业浏览。企业实体则用来存储公司的信息,主要是为了让求职者对公司有详细的了解,从而决定是否应聘该公司。雇佣联系则阐明了二者之间多对多的关系,记录着求职者和企业之间发生过的的招聘行为。
5 系统设计
经过上一步需求分析阶段的工作,通过建立由数据流图,数据字典和一系列算法所描述并且定义的系统逻辑模型,系统必须拥有哪些功能的问题已经被解决了。现在将进入系统设计阶段,目的在于着手实现系统需求,就是要把逻辑模型转变为物理模型。
5.1 系统类图
由于本系统后台使用java作为开发语言,所有的功能都是出现在类中的。在本系统中,类主要分为两种:实体类和业务类。
实体类如图5-1所示。
实体类包括个人类、企业类和雇佣类。
其中,个人类(企业类)的作用是:将前台获取到的个人信息(公司信息)封装到该类中,再按相应的需求决定是否把这些信息录入数据库。此外,也可以将查询到的个人信息(公司信息)封装到该类中,发送给前端页面进行展示。雇佣类则是将每一个招聘行为记录在雇佣表内,p_id和c_id表明这一招聘是发生在哪个求职者和哪个企业之间的,并且也会随着企业用户的操作进行更新。
业务类如图5-2所示。
业务类包括个人业务类、公司业务类和雇佣业务类。
个人业务类中包含的方法及其各自的作用如下所示:
-
register() :个人用户通过该方法注册个人信息
-
login() :个人用户通过该方法登录到系统的主界面
-
update() :对个人信息进行更新操作
-
publish() :发布个人简历
-
deleteResume() :撤销个人简历
-
listAllPersons() :企业用户通过这一方法,可以浏览到所有已经发布的个人简历
-
listAllPersonsByParams() :通过对该方法中传入参数的识别,可以按需求对个人简历进行筛选,如:专业类别、薪资范围、发布时间
-
query() :企业用户通过该方法,可以了解某个求职者的具体个人信息
公司业务类中包含的方法及其各自的作用如下所示:
-
register() :企业用户通过该方法注册企业信息
-
login() :企业用户通过该方法登录到系统的主界面,这个界面与个人用户的主界面是不同的
-
update() :对企业信息进行更新操作
-
publish() :发布招聘信息
-
deleteInfo() :撤销招聘信息
-
listAllComapnies() :个人用户通过这一方法,可以浏览到所有已经发布的招聘信息
-
listAllComapniesByParams() :通过对该方法中传入参数的识别,可以按需求对企业发布的招聘信息进行筛选,如:职位类别、薪资范围、发布时间
-
query() :个人用户通过该方法,可以了解某个企业的具体企业信息
雇佣业务类中包含的方法及其各自的作用如下所示:
-
insert() :个人用户通过该方法向企业投递简历,并将这一操作记录到雇佣表中
-
update() :企业用户在对向其投递的简历进行筛选时,会通过此方法将这一操作进行记录。如:同意、拒绝
-
candidateQuery() :企业用户可以通过此方法,查看到有哪些求职者向其发出了申请
-
companyQuery() :个人用户可以通过此方法,查看到向不同企业投递的简历的状态。如:通过、未通过、等待中
-
query() :罗列出所有的招聘记录及其状态
5.2 系统功能模块划分
5.2.1 模块图
结合需求分析阶段的数据流图及数据字典,得出了系统的功能模块图。该系统通过对用户类型的区分,分为个人用户管理和企业用户管理两大模块。系统功能的模块图如图5-3所示。
5.2.2 个人信息管理模块
信息管理模块是整个系统中最为基础,但也是最为重要的的一环。因为在之后的模块中,所有的操作都围绕着数据、信息进行。个人信息管理模块的功能就是确保个人用户在使用系统时,个人的信息是完整的、准确的。该模块又划分为以下几个子模块:
-
注册模块 :个人用户在第一次使用该系统时,需要按照相应的约束填写自己的信息,从而进行注册
-
登录模块 :判断用户输入的登录信息正确与否,从而决定是否让用户进行后面的操作。除了注册功能外,该系统其他的功能都是建立在成功登录系统的前提下的。所以用户想要进行后续的操作,必须先按照之前注册的信息进行登录
-
信息修改模块 :该模块可以让用户对自己的个人信息进行更新、维护
5.2.3 简历管理模块
简历管理模块包括个人用户对自己简历管理的所有操作。具体体现在以下几个方面:
-
简历发布 :用户在成功发布简历后,自己的信息才能被相关企业所看到。每个用户只能发布一份简历
-
简历撤销 :用户如果由于某些原因,暂时不想参加招聘,则可以选择撤销掉自己的简历,个人信息就不会出现在人才库中,不会被别人所看到。用户如果还没有发布过简历,则不可以进行该操作
-
简历下载 :该功能可以让个人用户的将自己的简历信息从网页上下载到电脑上,以word格式进行永久保存或打印操作
5.2.4 求职申请模块
求职申请模块是该系统的核心模块。个人用户只有通过使用该模块的一些功能,才能向企业发布求职申请,与企业之间建立联系;企业也才能收到求职者的信息进行后续的操作。个人用户在成功登录系统后,一般会按照下面的步骤进行操作:
-
浏览企业信息 :在个人用户的主界面上,会显示出所有已被企业发布过的招聘信息的主要内容,如果需要深入了解企业,则可以点击后面附带的按钮查看详细信息
-
检索企业信息 :该功能可以让个人用户根据不同的检索条件,对企业进行筛选。比如:职位类别、薪资范围、发布时间。用户可以选择其中的一种进行筛选,也可以选择多种进行联合检索
-
发出求职申请 :个人用户在浏览完各种招聘信息后,可以向一个或多个心仪的企业发出求职申请。但对同一家企业,只能申请一次
-
等候通知 :用户在每次申请过后,便会生成一条相应的求职记录,它会显示求职者当前申请的状态,让求职者了解到简历是否通过
5.2.5 企业信息管理模块
企业信息管理模块与个人信息管理模块功能类似,它管理的信息与企业相关,与个人无关。例如:公司名称、公司地点、职位需求等等。在该模块中,企业用户也可通过注册、登录、修改的功能,完善企业信息,进行后续操作。
5.2.6 招聘管理模块
企业用户通过该模块可以实现以下几个功能:
-
发布招聘信息 :招聘信息只有发布,才能被求职者所看到,他们才能向相应的企业发送申请。一个企业只能发布一则招聘信息
-
撤销招聘信息 :企业如果不再需要招聘,则可以撤销掉招聘信息。其他人都不会浏览到该招聘信息。招聘信息已发布状态,才能被撤销
-
筛选人才信息 :企业用户成功登陆系统后,会看到所有被发布的求职信息。企业也可根据需要,对求职者的专业、薪资要求、简历发布时间、毕业学校条件进行检索,显示出满足条件的求职者
-
发送通知 :当有求职者向企业发送申请后,这条求职记录会被企业看到,企业可根据求职者的简历决定是否同意他的请求,从而向他发出通知
5.3 系统总体设计
5.3.1 系统设计思想
网上招聘系统的整体设计思想主要表现在以下几个方面:
-
整体以Windows环境、B/S架构为基础进行开发
-
后台运用Java语言,结合Servlet、Jsp技术,进行主要功能的开发
-
前台运用HTML+CSS技术,结合Jquery插件与Ajax技术,编写出用户体验良好的界面
-
数据库采用Oracle语言进行建库、建表等操作;应用服务器端则利用MyBatis框架与数据库进行交互
5.3.2 系统体系架构
本系统采用三层架构对其整体进行划分,这样做的好处是:一方面,可以使整个系统结构清晰,功能明确,从而使开发人员对特定功能模块的针对性得到提高,开发效率大大增加。另一方面,也可以大大增强系统后期的可维护性,可扩展性。该系统三层架构的划分如图5-4所示。
-
表现层 :本系统的表现层是通过serlvet、jsp技术实现的,个人用户和企业用户通过使用表现层,将请求发送到不同的serlvet,servlet接受到不同的请求调用不同的业务逻辑功能,将获取到的数据交给jsp呈现到用户的面前
-
业务逻辑层 :在本系统中,业务逻辑层为service层,其功能就是使用数据层得到的数据,实现功能模块图中所有的业务逻辑
-
数据持久层 :在本系统中,数据持久层为dao层。dao层通过MyBatis技术与数据库进行交互,实现对个人信息、企业信息-招聘信息的增、删、改、查操作
这三层之间是从上到下、层层依赖的关系。表现层要依赖于业务逻辑层进行页面的跳转,业务逻辑层又要依赖于数据持久层得到的数据对业务逻辑进行判断。
5.4 数据库逻辑结构设计
数据库逻辑结构设计是在需求分析阶段得到的E-R图为基础进行的。这一阶段的主要任务就是把数据库概念结构设计阶段设计好的基本E-R图恰当的转换为与选用数据库管理系统(DBMS)所支持的数据模型相符合的逻辑结构。
5.4.1 关系型数据模型
通过E-R图转换后的关系数据模型如下所示。
-
个人表 (ID,账号,密码,姓名,生日,性别,学校,专业,个人评价,薪资要求,联系方式,电子邮箱,发布时间)
-
企业表 (ID,账号,密码,公司名称,公司地址,职位需求,联系方式,公司简介,薪资待遇,电子邮箱,发布时间)
-
雇佣表 (ID,个人ID,企业ID,是否同意录用)
其中,雇佣表中个人ID对应的是个人表的ID字段;企业ID对应的是企业表中的ID字段。
5.4.2 数据表设计
个人数据表设计如表5-1所示。
字段名 | 数据类型 | 长度 | 约束 | 描述 |
---|---|---|---|---|
ID | NUMBER | 主键 | 个人ID | |
USERNAME | VARCHAR2 | 20 | 不可为空 | 账号 |
PASSWORD | VARCHAR2 | 20 | 不可为空 | 密码 |
NAME | VARCHAR2 | 20 | 不可为空 | 真实姓名 |
SEX | VARCHAR2 | 4 | 不可为空 | 性别 |
BIRTHDAY | VARCHAR2 | 20 | 不可为空 | 生日 |
SCHOOL | VARCHAR2 | 20 | 不可为空 | 学校 |
PHONE | VARCHAR2 | 20 | 不可为空 | 联系方式 |
VARCHAR2 | 20 | 电子邮箱 | ||
TRADE | VARCHAR2 | 20 | 不可为空 | 专业 |
SALARY | VARCHAR2 | 20 | 不可为空 | 薪资要求 |
TIP | VARCHAR2 | 200 | 个人评价 | |
PUBTIME | DATE | 发布时间 |
个人表用来存储个人用户的信息。其中,ID字段为该表的主键,是每个人身份的唯一标示。pubtime字段存储着个人用户简历发布的时间。其余字段则存储着个人用户的基本信息。
企业数据表设计如表5-2所示。
字段名 | 数据类型 | 长度 | 约束 | 描述 |
---|---|---|---|---|
ID | NUMBER | 主键 | 企业ID | |
USERNAME | VARCHAR2 | 20 | 不可为空 | 账号 |
PASSWORD | VARCHAR2 | 20 | 不可为空 | 密码 |
NAME | VARCHAR2 | 200 | 不可为空 | 公司名称 |
LOCATION | VARCHAR2 | 200 | 不可为空 | 公司地址 |
PHONE | VARCHAR2 | 20 | 不可为空 | 联系方式 |
VARCHAR2 | 20 | 电子邮箱 | ||
TRADE | VARCHAR2 | 20 | 不可为空 | 职位需求 |
TIP | VARCHAR2 | 500 | 公司简介 | |
SALARY | VARCHAR2 | 20 | 不可为空 | 薪资待遇 |
PUBTIME | DATE | 发布时间 |
企业表用来存储企业用户的信息。其中,ID字段为该表的主键,是每个企业身份的唯一标示。pubtime字段存储着企业用户招聘信息发布的时间。其余字段则存储着企业的基本信息。
雇佣表设计如表5-3所示。
字段名 | 数据类型 | 约束 | 描述 |
---|---|---|---|
ID | NUMBER | 主键 | 雇佣关系ID |
P_ID | NUMBER | 外键 | 个人ID |
C_ID | NUMBER | 外键 | 企业ID |
ISAGREED | NUMBER | 不可为空 | 是否同意录用 |
雇佣表用来记录个人用户与企业用户的发生过的招聘行为。其中,ID字段为该表的主键,标识着任何记录都是独立的、唯一的。p_id和c_id字段记录着这一行为发生的对象是哪位求职者和哪家公司。isagreed字段记录着招聘是否成功。该字段有三个选项:0、1和-1。0表明这一求职申请正在等待企业的审核,1表明该申请已经通过,-1表明该申请已被拒绝。
6 系统实现
6.1 登录模块
登录模块的作用是根据用户输入的登录信息,判断正确与否,并根据传给后台的值,判断是企业还是个人登录,从而跳转到相应的主界面。整个系统的功能都是在用户成功登录的条件下进行的,所以这个模块尤为重要。
用户按照用户界面提示的信息,输入自己的账号和密码,并勾选用户类型。用户点击提交后,系统会先判断用户勾选的类型,接着再根据用户名和密码进行检索,如果在该类型的用户表中存在这样的用户信息,系统会跳转到相应的主界面。否则,则重新跳转到登录界面,继续登录。
用户在登录成功后,后台还会添加一个session范围的属性,名为person(company)。这一举措可以保证每个用户对数据的操作只是针对于其个人的,而不影响别人的信息。
登录模块的活动图如图6-1所示。
登录模块的关键代码如下所示:
PersonMapper配置文件 :
java
<select id="findPersonByNameAndPassword" resultType="Person">
select * from person where username=#{0} and password=#{1}
</select>
Service层部分实现代码 :
java
//调用DAO层的findPersonByNameAndPassword()方法判读登录信息是否正确,从而决定是否允许登录
public Person login(String username, String password) {
SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory();
IPersonDao personDao = session.getMapper(IPersonDao.class);
Person p = personDao.findPersonByNameAndPassword(username, password);
if(p!=null){
return p;
}else{
return null;
}
}
Web层部分实现代码 :
java
String username = request.getParameter("username");
String password = request.getParameter("password");
String type = request.getParameter("type");
HttpSession session = request.getSession();
//从前台获取type参数,判断是个人登录还是企业登录
if("个人".equals(type)){
//调用service层的login()方法进行登录
Person person = new IPersonServiceImp().login(username, password);
//登录失败跳转到登陆界面进行登录
if(person == null){
response.sendRedirect("login.jsp");
//登录成功跳转到主界面
}else {
session.setAttribute("person",person);
response.sendRedirect("index.jsp");
}
}
登录界面如图6-2所示。
6.2 注册模块
用户可以通过注册界面填写自己的信息。但是要遵循一定的规则。在用户填写注册信息的同时,系统前台会检查用户输入信息的合法性,比如必填信息是否填全,信息长度是否在规定范围内等。前台检查完毕后,后台会根据用户输入的用户名在数据库中检索,如果该用户名已存在,便让用户重新输入新的用户名;如果不存在,则注册成功,跳转到登陆界面。
注册模块的关键代码如下所示:
PersonMapper配置文件 :
java
<select id="findPersonByName" parameterType="string" resultType="Person">
select * from person where username=#{username}
</select>
Service层部分实现代码 :
java
//调用DAO层的findPersonByName()方法判断用户名是否存在;如不存在,则继续调用savePerson()进行注册
public boolean register(Person person) {
SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory();
IPersonDao personDao = session.getMapper(IPersonDao.class);
Person p = personDao.findPersonByName(person.getUsername());
if(p==null){
personDao.savePerson(person);
session.commit();
return true;
}else{
return false;
}
}
Web层部分实现代码 :
java
boolean bool = false;
PrintWriter out = response.getWriter();
//如果性别选项不为空,则判断是个人注册
if(sex!=null){
String birthday = request.getParameter("birthday");
String school = request.getParameter("school");
//将前台获取到的参数传入到person对象
Person person = new Person(username, password, name, sex, birthday, phone, email, school, trade, salary, tip);
IPersonServiceImp iPersonServiceImp = new IPersonServiceImp();
//调用service层的register()方法进行注册
bool = iPersonServiceImp.register(person);
if(bool == false){
out.write("该用户名已存在!");
}else{
if(isAuto!=null){
person.setPubtime(new Date());
iPersonServiceImp.publish(person);
}
}
}
注册模块的活动图如图6-3所示。
个人信息注册界面如图6-4所示。
6.3 信息修改模块
如果用户对自己现在的信息不满意,则可以修改信息。想要成功修改信息,也需要满足几个条件。用户名必须通过前台验证,比如:不能为空、修改后的用户名不得与数据表的用户名重复等等。个别信息也不允许出现为空的现象。
信息修改模块的关键代码如图6-5所示。
如图6-6是个人信息修改的界面。
6.4 查询模块
用户成功登录系统后,自动跳转到主页。主页罗列出所有已经发布的简历信息(招聘信息)。个人用户可以在主界面浏览到企业已经发布的招聘信息并进行应聘,也可以根据相应的条件进行检索出自己心仪的企业应聘。
企业用户则可以浏览到求职者发布的应聘信息。
罗列出所有信息的关键代码如图6-7所示:
个人用户主界面如图6-8所示。
企业用户主界面如图6-9所示。
6.5 简历管理模块
个人用户可以选择发布自己的简历,发布成功后,则可以被其他企业看到自己的求职信息。如果不想其他企业看到自己的求职信息,也可以选择撤销简历,但前提必须是自己的简历已经发布。如果需要导出自己的简历,则可以利用系统提供的模板进行下载。
简历下载界面如图6-10所示。
6.6 应聘者管理模块
企业用户可以实时地看到有哪些申请者申请了职位,可以浏览到他们的详细信息,从而决定是否录用他们。在这之后,相应的应聘者也会得到是否被录用的信息。
企业应聘者名单如图6-11所示。
个人通知的界面如图6-12所示。
6.7 安全退出
当用户操作完毕,需要退出系统时,用户可以点击页面右上角的图形按钮,安全退出系统。用户点击完这个按钮后,会弹出是否确定退出的选项。如果点击确定,系统后台会删除名为person(company)的session属性,以防别人登录自己的账户,保护用户的信息安全。退出界面如图6-13所示。
7 系统测试
由于软件自身是看不见、摸不着的逻辑产品,所以在开发过程中难免会出现一些难以预料的的错误。在系统开发的一系列过程中,为了保证系统运行的正确性和可靠性,需要对其进行测试,目的就在于发现这些潜在的错误,从而对其进行调试改正错误。
7.1 测试方法
系统测试的方法基本上可以分为静态测试和动态测试两种。
静态测试就是指只对程序源码进行分析的测试方法。这种测试方法并不要求程序在计算机上运行,而是采取人工检测和计算机辅助检测等手段进行测试。这种方法的缺点便是难以直观的找出错误,且工作量较大,效率较低。
动态测试则相反,它要求程序在计算机上运行,在运行的结果中发现错误。这种测试方法可以直观的找出错误,因此大多数测试都采用动态测试。动态测试又可以细分为白盒测试和黑盒测试两种。
本系统主要采用的是黑盒测试中的等价类划分法。
7.2 测试环境
本系统在保证其核心功能完整的前提下,对其在服务器上的部署进行了一些简化操作。具体测试环境如下:
-
电脑型号 :惠普242 G1 64位笔记本电脑
-
操作系统 :Windows10专业版
-
数据库版本 :Oracle10g XE
-
JDK版本 :JDK1.8
-
服务器版本 :apache-tomcat-8.0.24-windows-x64
-
浏览器版本 :Mozilla FireFox 53.0.2
7.3 测试结果
在本系统中,前台使用了Jquery技术来对用户输入数据的合法性进行判断。比如:账号密码的长度限制、个别选项输入不能为空等等。以下是一些等价类划分和测试结果。用户注册信息测试的部分等价类划分如表7-1所示。
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
账号 | ① 4至10位字符 | ② 少于4位字符 ③ 多于10位字符 |
密码 | ④ 大于0位字符 | ⑤ 0位字符 |
测试数据如表7-2所示。
wangjiawei | 123456 | 注册成功 | ① ④ |
---|---|---|---|
Tom | 99163 | 注册失败 | ② ④ |
Sam3152896 | \ | 注册失败 | ③ ⑤ |
测试结果如图7-1所示。
本系统除了需要对用户输入数据的合法性进行测试外,还需要对界面进行测试,界面测试是许多B/S系统开发中的重要一环。界面往往是用户对系统的第一印象,用户觉得界面越舒服、越美观,使用下去的可能性也就越大。可见,界面测试的重要性不言而喻。
界面测试主要考察系统界面布局是否合理、文字图片是否规范、操作起来是否符合用户的习惯、部分功能是否对用户具有引导性等等。界面测试的结果如表7-3所示。
7.4 系统评价
总体来说,该系统已经达到了预期的目标。在设计方面,逻辑清晰;在编码方面,撰写规范,分层合理;在功能方面,并未检测出较大的错误,对于一些小的缺陷也已改进。整个系统运行后,表现良好,具有稳定性和可靠性。
8 结束语
8.1 结论
在这个信息化时代,用户对互联网产品的需求达到了一个前所未有的高度。互联网产品方便快捷,经济高效,对用户生活质量的改善不言而喻。正是在这样的大背景下,形形色色的互联网软件正如雨后春笋般地涌向更多人的日常生活中去,网上人才系统正是其中之一。
本文对网上招聘系统的各个开发阶段进行了一个详细的介绍。在其开发过程中,我严格按照软件开发的标准流程,并结合Java、Oracle等先进技术,实现了该系统应具备的所有功能。除此之外,该系统编码规范,界面友好,易于后期维护及将来功能的扩展,特点十分鲜明。
但是由于时间及个人能力的问题,该系统在一些环节上存在缺陷。我希望通过今后不断的改进,能够真正做出一个科学、规范、满足用户实际需要的网上人才招聘系统。
8.2 展望
本课题已经对网上招聘这一流程进行了详细的描述以及对应的实现,满足了应聘人员和招聘人员的一些基本需求。但是,这个项目仅仅是一个演示而已,想要真正正正的进入到用户生活中去还差得很远。
从功能上来说,整个招聘流程的核心功能功能实现还算完整。但是对于招聘人员和应聘人员来说,并没有为他们提供一个信息交流的功能,双方不能对一些细节方面进行沟通了解,信息传递不够及时,信息掌握不够完善。除此之外,该系统仅仅涵盖招聘过程的开始阶段,即应聘人员发出请求到招聘人员接受请求。对于招聘人员和应聘人员后续的需求并未实现。
从技术上来说,并没有对系统的安全性进行考虑,不当的操作可能会引起难以想象的后果。系统整个代码稍显冗余,部分设计不合理,导致后期维护起来较难。该系统在数据层方面,采用MyBatis框架,使得系统运行高效。但在web层,并未采用诸如SpringMVC这种框架,全局也并未使用Spring对项目进行管理,对于项目后期的管理更新不太有利。
随着互联网技术的发展,以及自身个人能力的提高,该系统在技术上、功能上、性能上等方面还会有很大的上升空间,在未来的某一天,争取将系统做到完美的地步,做到服务于人、服务于社会。
参考文献
[1] 张海藩.软件工程(第二版)[M].北京:人民邮电出版社,2006.
[2] 何玉洁,梁琦.数据库设计教程[M].北京:机械工业出版社,2003.
[3] 光军,胡波.JSP 应用开发高级教程.北京:北京航空航天出版社,2007.
[4] 王保罗.Java 面向对象程序设计[M].北京:清华大学出版社,2003.
[5] 蔡剑,景楠.Java Web 应用开发:J2EE 和 Tomcat[M].北京:清华大学出版社,2004.
[6] 孙更新,吕婕. Java 毕业设计指南与项目实践. 北京:科学出版社,2008.
[7] 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010,11.
[8] Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA:Prentice Hall,2006.
[9] James Goodwill. Pure Java Server Pages .Indianapolis Ind: Sams, 2000.
[10] Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks[D]. Ohio State University,2011
参考文献
- 用JSP技术开发基于WEB的房地产网络管理信息系统(大连理工大学·齐鲲鹏)
- 大学生就业求职网站的设计与实现(东北大学·祁延鹏)
- 基于EPP的域名管理系统(山东大学·孟庆领)
- 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
- 基于J2EE的招聘求职系统设计与实现(电子科技大学·马韵晓)
- 基于B/S结构的求职招聘网站系统设计与实现(吉林大学·郭天娇)
- 网上招聘信息系统的设计与实现(电子科技大学·文敏)
- 基于云计算模式的社会服务管理信息化平台项目设计与建设(吉林大学·杨刚)
- X航空公司人事档案及招聘子系统的设计与实现(电子科技大学·阳新峰)
- 基于EPP的域名管理系统(山东大学·孟庆领)
- 网上电器销售系统的设计与实现(吉林大学·荆闯)
- 基于Struts架构模式的人才招聘网站开发(大连交通大学·张春国)
- 基于网络求职招聘信息管理系统的分析与设计(云南大学·赵松)
- 基于JSP的雄霸天下游戏网的后台操作系统的开发设计(电子科技大学·张璇)
- 在线人才招聘系统实现研究(吉林大学·孙将超)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码工坊 ,原文地址:https://m.bishedaima.com/yuanma/35289.html