网上招聘系统的设计与实现
摘 要
随着时代的发展,中国的互联网技术愈加成熟,已经有越来越多的社会群体开始学会使用互联网技术,整个社会正在朝着智能化、信息化的方向前进。有了互联网,用户便可以足不出户地利用互联网技术使得自己的生活更加便捷。因此,为了满足用户的庞大需求,网上招聘系统应运而生。
本系统整体基于B/S架构,采用MyBatis框架,运用Java中的Servlet、Jsp等关键技术,并结合Oracle数据库的使用,为招聘者和求职者搭建了一个高效、便利的网络平台。本系统分别为求职者和招聘者提供了信息注册功能,登录功能和信息维护功能。除此之外,求职者可以选择发布、撤销或打印自己的简历,也可以浏览到企业实时的招聘信息,从而选择合适的企业应聘。招聘者可以选择发布或撤销自己的招聘信息,也可以浏览到求职人员的信息,选择是否同意他的应聘请求,并向其发送通知。
关键词:Java;Servlet;Oracle;招聘系统
目 录
摘 要 I
ABSTRACT II
1 绪 论 1
1.1 开发背景 1
1.2 开发意义 1
1.3 国内外研究现状 2
1.4 论文结构 2
2 相关技术原理和开发工具 4
2.1 程序语言的选择 4
2.1.1 Java概述 4
2.1.2 Java特点 4
2.1.3 Servlet简介 5
2.2 ORACLE数据库 6
2.3 B/S模式 6
2.3.1 B/S架构概述 6
2.3.2 B/S架构的工作原理 7
2.3.3 B/S架构与C/S架构的比较 7
2.4 开发工具 8
2.4.1 建模工具Microsoft Visio 8
2.4.2 编码工具Eclipse 8
2.4.3 数据库连接工具Navicat 8
2.5 开发环境 9
3 系统可行性研究 10
3.1系统可行性研究概述 10
3.2系统可行性研究的目的和流程 10
3.3项目评估 11
4 系统需求分析 12
4.1系统功能分析 12
4.1.1 用例图 12
4.1.2 数据流图 13
4.1.3 数据字典 14
4.2 系统数据库需求分析 16
5 系统设计 18
5.1系统类图 18
5.2系统功能模块划分 20
5.2.1 模块图 20
5.2.2 个人信息管理模块 21
5.2.3 简历管理模块 21
5.2.4 求职申请模块 22
5.2.5 企业信息管理模块 22
5.2.6 招聘管理模块 22
5.3系统总体设计 23
5.3.1 系统设计思想 23
5.3.2 系统体系架构 23
5.4 数据库逻辑结构设计 24
5.4.1 关系型数据模型 25
5.4.2 数据表设计 25
6 系统实现 27
6.1 登录模块 27
6.2 注册模块 29
6.3 信息修改模块 32
6.4 查询模块 34
6.5 简历管理模块 35
6.6 应聘者管理模块 36
6.7 安全退出 37
7 系统测试 38
7.1 测试方法 38
7.2测试环境 38
7.3测试结果 38
7.4系统评价 40
8 结束语 41
8.1结论 41
8.2展望 41
参考文献 42
致 谢 43
附 录:外文原文 44
中文翻译 52
1 绪 论
1.1 开发背景
伴随着中国经济的飞速发展,城市化进程的加快,求职者队伍的不断壮大,传统人才招聘的弊端初露端倪。首先,传统人才应聘的形式是求职者和企业的负责人面对面地交流。这就需要企业和求职者提前规划自己的时间,准备大量的纸质材料,并选好举办招聘会的地点,这一系列流程都需要双方把大量的精力投入到准备活动中去,使得应聘还未开始,成本就已大幅增加。其次,企业在筛选数以百计,甚至数以万计简历的时候,往往会由于阅读疲劳,漏掉一些真正有价值的简历,使得企业丧失掉一批有用的人才。对于求职者而言,也会错失掉良好的机会,令人惋惜。
随着国内互联网飞速的发展,用户已经越来越习惯于使用互联网传递信息,接收信息,利用互联网技术使得自己的生活更加便利,快捷。在这样一种大趋势下,网上人才招聘系统出现在了用户的眼前。网上人才招聘系统相对于传统的人才招聘,有以下几点优势:
1.方便快捷。对于求职者来说,只要在互联网上向有意向的企业投递了个人简历,便可等候企业的通知信息;对于企业来说,只要点一下鼠标便可同意求职者的申请。
2. 选择多。由于招聘信息量丰富、使用网络招聘的人数基数大,在大量的职位数据库中,求职者对于适合职位的选择也就越多。
3. 费用少。对于求职者来说,节省了不少成本,如:交通费、简历制作费、通讯费等不少费用。除此之外,还有效地避免了招聘会现场异常拥挤、交流效果不尽如人意、选择职位盲目性大的问题。对于企业来说,节省了办理招聘会的各种费用。
正是由于以上种种优势,越来越多的求职者选择网络求职成为自己的应聘方式。
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应用程序、手机应用软件以及部分小游戏等。它主要具有以下特点:
1.面向对象特性:在Java的概念里,任何事物都可看成对象,哪怕是类本身还是类里面的成员变量和成员方法都可以看成对象。Java编写的程序之所以能够轻而易举地扩展,正是由于它是基于对象模型的。在现实生活中,类就是物体共有属性和行为的抽象。而对象则是类的具体实例。比如:一个具体的苹果就是水果类的一个实例。
2.平台无关性:与许多其它编程语言不同的是,Java代码在被编译完成的时候,它会生成一种二进制的文件(.class文件),这种文件独立于平台,运行在虚拟机(JVM)中。程序不论是在Windows或Linux环境下,都可以被执行,只不过不同平台的虚拟机是不同的。
3.简单:Java设计的初衷便是简单易学。只要你能够准确、快速地掌握Java面向对象的特性,其他的概念便可以无师自通,遇到的大多数便可迎刃而解。从语言的难易程度看,Java要比 C++简单,C++中许多不容易掌握的概念如多继承、指针等概念都被Java所抛弃。这样的改进,不仅不会降低Java的实用性,反而大大增强了Java的体系架构,使得Java更加精简,可以应用于更广的领域。
4.安全:正是由于Java中不支持指针的概念,程序员没有机会去直接操作内存空间,这样就有效地防止了程序运行时堆栈溢出等问题,程序不会轻易地崩溃。
5.持久耐用:Java检测机制比较完善。有编译时错误检查和运行时检查两种方式,这样就能够检测出更多地错误,从而使得开发人员纠正错误,使程序长久稳定地运行。
6.多线程:所谓多线程,就是在同一段时间内,程序可以完成多个任务。Java的多线程功能,由JVM本身提供,开发人员只要利用JDK中提供的类和接口便可以轻松地实现多线程功能。多线程可以使程序高效地运行,在大型系统或网站中运用十分广泛。多线程的思想是优秀发人员必不可少的品质。
7.动态:类是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-1 servlet原理图
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-2 B/S架构原理图
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系统可行性研究的目的和流程
可行性研究的目的就是在确保符合团队利益的基础上,利用手上最精简的资源,探讨这个项目是否可以按规定去完成。除此之外,可行性研究的关键不是提出具体的开发方案,而是探讨解决问题的可能性。
在系统开发生命周期中,往往会因为系统开发人员对市场的了解不彻底,对技术的掌握不熟练,对项目的风险因素预估不足等原因,导致许多问题都不能在合理的情况下得到解决。如果开发人员能够提前预测到可能出现的问题,并且在经过探讨后,不能得出合理的应对办法,那么就应该取消项目的开发。这样就能够在人力、物力等方面避免不必要的损失。
系统可行性研究其主要流程为:分析人员对用户提出的项目方案进行简要的需求分析,在此基础上,利用一些作图工具或原型工具得到该系统的逻辑模型,接着利用逻辑模型探索出许多不同的解决办法,最后从这些解决方案中找出代价最小的去进行之后更深入的探讨。
可行性研究往往可以从经济、技术、操作、法律这四个角度去讨论项目的可行程度,也可以让用户一目了然地了解到项目的整体规范。下面将仔细从这四个方面解析:
1.经济可行性:主要从“成本-效益分析”的观点出发,通过对货币的时间价值、投资回收期、纯收入等方面的研究,考量项目成本与收益之间的关系。
2.技术可行性:从开发人员角度来说,考查的是其是否具备开发这个项目的技术和综合素质;从项目构成来说,考察的是该项目的架构是否合理,将来在开发以及运行的过程中不会出错;从项目运行的条件说,考查是否具备相应的软硬件环境。
3.操作可行性:项目的操作在其领域内是否行得通。
4.法律可行性:确保该项目的开发不会触犯政治上或社会上的侵权,不会违反任何一项法律条例。主要是从版权、专利等方面入手。
3.3项目评估
项目名称:网上招聘系统的设计与实现
主要用户:个人和企业
关键技术:java、servlet、oracle
运行环境:windows操作系统
前台功能:为用户呈现出操作界面,且界面美观、布局合理,具备一定的前台验证功能,要对用户的操作具有引导性和提示性。
后台功能:在用户管理方面,包括注册、登录、信息修改等基本功能。除此之外,其他功能围绕“招聘”这一活动行为展开,主要包括各种信息的浏览、简历的投递、简历的接收以及后续对简历的回应等等。
该项目在现有的人力、技术条件下,在符合法律规定的前提下,可以在规定时间内按照上述要求将其实现,并且有充足的时间对其进行测试、调试,保证项目的正确性。总体来看,该项目具备开发的可行性。
4 系统需求分析
需求分析就是在确定系统可以开发的基础上,将客户对系统的口头概述,经由开发人员的分析总结,抽象为具体的需求用例,再形成需求规格说明书的软件开发过程。可行性研究旨在探索目标系统是否值得利用现有的资源去开发,问题是否能够在现有的技术上去解决。而需求分析旨在回答"系统应该具备什么功能"的问题,以确保将来开发出来的系统能够让客户满意。
4.1系统功能分析
4.1.1 用例图
网上人才招聘系统的用户共分为两类:个人用户和企业用户。
个人用户的用例图如图4-1所示。
图4-1 个人用户用例图
个人用户可以管理自己的信息,管理自己的简历,也可以实时浏览企业发布的招聘信息,按自己的要求筛选出合适的企业从而决定报名,并可以在企业应答之后收到相应的回复。
企业用户的用例图如图4-2所示。
图4-2 企业用户用例图
企业用户可以管理本公司的登记信息,管理招聘公告,也可以实时浏览求职者的个人信息,决定是否录用,并向其发送回复。
4.1.2 数据流图
个人用户业务的流程如图4-3所示。
图4-3 个人用户业务流程的数据流图
个人用户在使用本系统时,会先进入到系统的登录界面进行登录,如果没有账户可用,则可以点击登录界面上的注册按钮注册信息。在成功登录后,则可以顺利地进入到主界面。个人用户可以在主界面的目录结构中选择相应的提示按钮进行操作。比如:修改人个信息、浏览各企业发布的信息、应聘心仪的企业、打印自己的简历等等。在完成操作后,用户可以点击退出按钮,安全地退出系统。
企业用户业务的流程如图4-4所示。
图4-4 企业用户业务流程的数据流图
企业用户在使用本系统时,同样也会先经过注册、登录等标准步骤。在成功登录后,企业用户会进入到与个人用户不同的主界面。企业用户可以在其主界面上浏览人才库信息、检索出自己想要的人才信息、管理自己的招聘信息。也可在求职者应聘之后,选择是否同意他的请求。在企业用户进行完一系列操作后,同样可以安全退出系统。
4.1.3 数据字典
数据字典是对数据流图中出现信息的详细描述。它的主要作用是供开发者查阅,并为之后系统的分析、设计以及维护阶段提供详细准确的文档说明。主要由数据流、数据存储、数据基本项和加工条目4部分组成。下面是有关个人业务数据流图的数据字典:
数据流条目如表4-1所示。
表4-1 数据流条目表
数据项如表4-2所示。
表4-2 数据项表
数据存储条目如表4-3所示。
表4-3数据存储条目表
文件名 组成 组成方式
个人信息表 id+账号+密码+姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式 +个人评价 索引文件,以id为主键
雇佣表 id+个人表的id+企业表的id 索引文件,以id为主键
加工条目如表4-4所示。
表4-4 部分加工条目表
4.2 系统数据库需求分析
数据库需求分析是整个数据库设计的基础和起点,也是涉及数据库内容的软件进行系统开发工作的重要基础。在需求分析基础上,对新系统中数据的逻辑模型通常采用实体–联系图(ER图)来描述。系统的ER图如图4-5所示。
图4-5 系统ER图
该E-R图包括:个人实体、企业实体和雇佣联系这三个组成部分。其中,个人实体主要用来存储个人求职者的信息,包括个人基本资料和自我评价。其目的是在招聘过程中供企业浏览。企业实体则用来存储公司的信息,主要是为了让求职者对公司有详细的了解,从而决定是否应聘该公司。雇佣联系则阐明了二者之间多对多的关系,记录着求职者和企业之间发生过的的招聘行为。
5 系统设计
经过上一步需求分析阶段的工作,通过建立由数据流图,数据字典和一系列算法所描述并且定义的系统逻辑模型,系统必须拥有哪些功能的问题已经被解决了。现在将进入系统设计阶段,目的在于着手实现系统需求,就是要把逻辑模型转变为物理模型。
5.1系统类图
由于本系统后台使用java作为开发语言,所有的功能都是出现在类中的。在本系统中,类主要分为两种:实体类和业务类。
实体类如图5-1所示。