基于java+MyBatis+jsp的网上招聘系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于java+MyBatis+jsp的网上招聘系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. 本系统整体基于B/S架构,采用MyBatis框架,运用Java中的Servlet、Jsp等关键技术,并结合Oracle数据库的使用,为招聘者和求职者搭建了一个高效、便利的网络平台。本系统分别为求职者和招聘者提供了信息注册功能,登录功能和信息维护功能。除此之外,求职者可以选择发布、撤销或打印自己的简历,也可以浏览到企业实时的招聘信息,从而选择合适的企业应聘。招聘者可以选择发布或撤销自己的招聘信息,也可以浏览到求职人员的信息,选择是否同意他的应聘请求,并向其发送通知。

2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:23255个字61页
包含内容:整套源码+完整毕业论文+任务书+辅导视频+运行截图


3、关键词:

Java;Servlet;Oracle;招聘系统

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

绪 论
1.1 开发背景
省略

1.2 开发意义
本系统开发的意义在于突破传统人才招聘的模式,给招聘者和求职者提供一个便利、高效、准确的网络招聘平台,使得双方可以在把成本降到最低的前提下,在更快的时间获得更加准确的信息,从而满足企业的用人需求,实现求职者的自身价值。

1.3 国内外研究现状
省略

1.4 论文结构
本论文按照软件工程标准开发流程进行叙述。其主要由以下几个章节构成:

  1. 绪论:对课题的开发背景以及研究价值进行详细的介绍。
  2. 相关技术原理和开发工具:对本系统所用到的关键技术及工具进行概述,比如java、Oracle等。
  3. 系统可行性研究:主要从技术实现、功能要求方面探讨该系统成功实施的可能性。
  4. 系统需求分析:对用户对于本系统的需求进行描述、分析,主要包含用例图的设计、数据流图的设计、数据字典表的描述及数据表实体-关系图的设计。
  5. 系统设计:在需求分析的基础上,对系统进行概要设计,主要包系统含类图的设计、系统模块的划分、每个模块的功能概述及数据表的逻辑设计。
  6. 系统实现:将系统各个功能模块业务逻辑进行详细描述,再用代码将其具体地实现。
  7. 系统测试:通过等价类划分法,设计测试用例,考察系统的缺陷。
  8. 结束语:对本系统进行最后的描述以及对未来的展望。
  9. 附录:包含有关于网络招聘的外文资料及其翻译。

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语言的一切特点。除此之外,它还具备额外的一些优点:

  1. 可重用性高:Servlet中可以建立组件,这些组件都可以复用。
  2. 模块化: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中提供的部件拖拽到自己的项目中即可。

省略

2.4.2 编码工具Eclipse
Eclipse主要是为开发Java项目而搭建的开放平台。除此之外,它还支持C、C++、PHP等语言。Eclipse是一组集成开发环境(IDE),集众多插件于一身,使用起来十分灵活。开发人员可以对Eclipse中的一些插件进行取舍,使得软件高效运行;也可以在Eclipse中切换开发视图,配置一些参数,不必像以前再进行一些繁琐的操作。

省略

2.4.3 数据库连接工具Navicat
Navicat是一套数据库管理工具,它可以连接到SQL Server、MySql、Oracle等主流数据库管理系统,简化了数据库的管理,方便了开发人员的操作,降低了数据库管理的成本。

由于Navicat是基于图形用户界面的,开发人员直接可以通过Navicat提供的功能,不必在命令行中输入SQL语句,便可以直观的操作数据库,管理数据,实现增删改查等操作。Navicat在提供便利的同时,也对安全性加以保障,开发人员并不需要担心数据泄露的风险。

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-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数据存储条目表
在这里插入图片描述

加工条目如表4-4所示。
表4-4 部分加工条目表
在这里插入图片描述

4.2 系统数据库需求分析
数据库需求分析是整个数据库设计的基础和起点,也是涉及数据库内容的软件进行系统开发工作的重要基础。在需求分析基础上,对新系统中数据的逻辑模型通常采用实体–联系图(ER图)来描述。系统的ER图如图4-5所示。
在这里插入图片描述

图4-5 系统ER图

该E-R图包括:个人实体、企业实体和雇佣联系这三个组成部分。其中,个人实体主要用来存储个人求职者的信息,包括个人基本资料和自我评价。其目的是在招聘过程中供企业浏览。企业实体则用来存储公司的信息,主要是为了让求职者对公司有详细的了解,从而决定是否应聘该公司。雇佣联系则阐明了二者之间多对多的关系,记录着求职者和企业之间发生过的的招聘行为。

5 系统设计
经过上一步需求分析阶段的工作,通过建立由数据流图,数据字典和一系列算法所描述并且定义的系统逻辑模型,系统必须拥有哪些功能的问题已经被解决了。现在将进入系统设计阶段,目的在于着手实现系统需求,就是要把逻辑模型转变为物理模型。

5.1系统类图
由于本系统后台使用java作为开发语言,所有的功能都是出现在类中的。在本系统中,类主要分为两种:实体类和业务类。
实体类如图5-1所示。
在这里插入图片描述

图5-1实体类图

实体类包括个人类、企业类和雇佣类。
其中,个人类(企业类)的作用是:将前台获取到的个人信息(公司信息)封装到该类中,再按相应的需求决定是否把这些信息录入数据库。此外,也可以将查询到的个人信息(公司信息)封装到该类中,发送给前端页面进行展示。雇佣类则是将每一个招聘行为记录在雇佣表内,p_id和c_id表明这一招聘是发生在哪个求职者和哪个企业之间的,并且也会随着企业用户的操作进行更新。

业务类如图5-2所示。
在这里插入图片描述

图5-2业务类图

业务类包括个人业务类、公司业务类和雇佣业务类。
个人业务类中包含的方法及其各自的作用如下所示:

  1. register():个人用户通过该方法注册个人信息
  2. login():个人用户通过该方法登录到系统的主界面,
  3. update():对个人信息进行更新操作
  4. publish():发布个人简历
  5. deleteResume():撤销个人简历
  6. listAllPersons():企业用户通过这一方法,可以浏览到所有已经发布的
    个人简历
  7. listAllPersonsByParams():通过对该方法中传入参数的识别,可以按需求对个人简历进行筛选,如:专业类别、薪资范围、发布时间。
  8. query():企业用户通过该方法,可以了解某个求职者的具体个人信息

公司业务类中包含的方法及其各自的作用如下所示:

  1. register():企业用户通过该方法注册企业信息
  2. login():企业用户通过该方法登录到系统的主界面,这个界面与个人用户的主界面是不同的
  3. update():对企业信息进行更新操作
  4. publish():发布招聘信息
  5. deleteInfo():撤销招聘信息
  6. listAllComapnies():个人用户通过这一方法,可以浏览到所有已经发布的招聘信息
  7. listAllComapniesByParams():通过对该方法中传入参数的识别,可以按需求对企业发布的招聘信息进行筛选,如:职位类别、薪资范围、发布时间。
  8. query():个人用户通过该方法,可以了解某个企业的具体企业信息

雇佣业务类中包含的方法及其各自的作用如下所示:

  1. insert():个人用户通过该方法向企业投递简历,并将这一操作记录到雇佣表中
  2. update():企业用户在对向其投递的简历进行筛选时,会通过此方法将这一操作进行记录。如:同意、拒绝。
  3. candidateQuery():企业用户可以通过此方法,查看到有哪些求职者向其发出了申请
  4. companyQuery():个人用户可以通过此方法,查看到向不同企业投递的简历的状态。如:通过、未通过、等待中。
  5. query():罗列出所有的招聘记录及其状态。

5.2系统功能模块划分
5.2.1 模块图
结合需求分析阶段的数据流图及数据字典,得出了系统的功能模块图。该系统通过对用户类型的区分,分为个人用户管理和企业用户管理两大模块。系统功能的模块图如图5-3所示。
在这里插入图片描述

图5-3功能模块图

5.2.2 个人信息管理模块
信息管理模块是整个系统中最为基础,但也是最为重要的的一环。因为在之后的模块中,所有的操作都围绕着数据、信息进行。个人信息管理模块的功能就是确保个人用户在使用系统时,个人的信息是完整的、准确的。该模块又划分为以下几个子模块:

  1. 注册模块:个人用户在第一次使用该系统时,需要按照相应的约束填写自己的信息,从而进行注册。
  2. 登录模块:判断用户输入的登录信息正确与否,从而决定是否让用户进行后面的操作。除了注册功能外,该系统其他的功能都是建立在成功登录系统的前提下的。所以用户想要进行后续的操作,必须先按照之前注册的信息进行登录。
  3. 信息修改模块:该模块可以让用户对自己的个人信息进行更新、维护。

5.2.3 简历管理模块
简历管理模块包括个人用户对自己简历管理的所有操作。具体体现在以下几个方面:

  1. 简历发布:用户在成功发布简历后,自己的信息才能被相关企业所看到。每个用户只能发布一份简历。
  2. 简历撤销:用户如果由于某些原因,暂时不想参加招聘,则可以选择撤销掉自己的简历,个人信息就不会出现在人才库中,不会被别人所看到。用户如果还没有发布过简历,则不可以进行该操作。
  3. 简历下载:该功能可以让个人用户的将自己的简历信息从网页上下载到电脑上,以word格式进行永久保存或打印操作。

5.2.4 求职申请模块
求职申请模块是该系统的核心模块。个人用户只有通过使用该模块的一些功能,才能向企业发布求职申请,与企业之间建立联系;企业也才能收到求职者的信息进行后续的操作。个人用户在成功登录系统后,一般会按照下面的步骤进行操作:

  1. 浏览企业信息:在个人用户的主界面上,会显示出所有已被企业发布过的招聘信息的主要内容,如果需要深入了解企业,则可以点击后面附带的按钮查看详细信息。
  2. 检索企业信息:该功能可以让个人用户根据不同的检索条件,对企业进行筛选。比如:职位类别、薪资范围、发布时间。用户可以选择其中的一种进行筛选,也可以选择多种进行联合检索。
  3. 发出求职申请:个人用户在浏览完各种招聘信息后,可以向一个或多个心仪的企业发出求职申请。但对同一家企业,只能申请一次。
  4. 等候通知:用户在每次申请过后,便会生成一条相应的求职记录,它会显示求职者当前申请的状态,让求职者了解到简历是否通过。

5.2.5 企业信息管理模块
企业信息管理模块与个人信息管理模块功能类似,它管理的信息与企业相关,与个人无关。例如:公司名称、公司地点、职位需求等等。在该模块中,企业用户也可通过注册、登录、修改的功能,完善企业信息,进行后续操作。

5.2.6 招聘管理模块
企业用户通过该模块可以实现以下几个功能:

  1. 发布招聘信息:招聘信息只有发布,才能被求职者所看到,他们才能向相应的企业发送申请。一个企业只能发布一则招聘信息。
  2. 撤销招聘信息:企业如果不再需要招聘,则可以撤销掉招聘信息。其他人都不会浏览到该招聘信息。招聘信息已发布状态,才能被撤销。
  3. 筛选人才信息:企业用户成功登陆系统后,会看到所有被发布的求职信息。企业也可根据需要,对求职者的专业、薪资要求、简历发布时间、毕业学校条件进行检索,显示出满足条件的求职者。
  4. 发送通知:当有求职者向企业发送申请后,这条求职记录会被企业看到,企业可根据求职者的简历决定是否同意他的请求,从而向他发出通知。

5.3系统总体设计
5.3.1 系统设计思想
网上招聘系统的整体设计思想主要表现在以下几个方面:
1. 整体以Windows环境、B/S架构为基础进行开发。
2. 后台运用Java语言,结合Servlet、Jsp技术,进行主要功能的开发。
3. 前台运用HTML+CSS技术,结合Jquery插件与Ajax技术,编写出用户体验良好的界面。
4. 数据库采用Oracle语言进行建库、建表等操作;应用服务器端则利用MyBatis框架与数据库进行交互。

5.3.2 系统体系架构
本系统采用三层架构对其整体进行划分,这样做的好处是:一方面,可以使整个系统结构清晰,功能明确,从而使开发人员对特定功能模块的针对性得到提高,开发效率大大增加。另一方面,也可以大大增强系统后期的可维护性,可扩展性。该系统三层架构的划分如图5-4所示。
在这里插入图片描述

图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所示。
表5-1 个人表
在这里插入图片描述

个人表用来存储个人用户的信息。其中,ID字段为该表的主键,是每个人身份的唯一标示。pubtime字段存储着个人用户简历发布的时间。其余字段则存储着个人用户的基本信息。
企业数据表设计如表5-2所示。

表5-2 企业表
在这里插入图片描述

企业表用来存储企业用户的信息。其中,ID字段为该表的主键,是每个企业身份的唯一标示。pubtime字段存储着企业用户招聘信息发布的时间。其余字段则存储着企业的基本信息。
雇佣表设计如表5-3所示。

表5-3 雇佣表
在这里插入图片描述

雇佣表用来记录个人用户与企业用户的发生过的招聘行为。其中,ID字段为该表的主键,标识着任何记录都是独立的、唯一的。p_id和c_id字段记录着这一行为发生的对象是哪位求职者和哪家公司。isagreed字段记录着招聘是否成功。该字段有三个选项:0、1和-1。0表明这一求职申请正在等待企业的审核,1表明该申请已经通过,-1表明该申请已被拒绝。

6 系统实现
6.1 登录模块
登录模块的作用是根据用户输入的登录信息,判断正确与否,并根据传给后台的值,判断是企业还是个人登录,从而跳转到相应的主界面。整个系统的功能都是在用户成功登录的条件下进行的,所以这个模块尤为重要。

用户按照用户界面提示的信息,输入自己的账号和密码,并勾选用户类型。用户点击提交后,系统会先判断用户勾选的类型,接着再根据用户名和密码进行检索,如果在该类型的用户表中存在这样的用户信息,系统会跳转到相应的主界面。否则,则重新跳转到登录界面,继续登录。

用户在登录成功后,后台还会添加一个session范围的属性,名为person(company)。这一举措可以保证每个用户对数据的操作只是针对于其个人的,而不影响别人的信息。
登录模块的活动图如图6-1所示。
在这里插入图片描述

图6-1 登录模块活动图

登录模块的关键代码如下所示:
1.PersonMapper配置文件:

<select id="findPersonByNameAndPassword"  resultType="Person">
		select * from person where username=#{0} and password=#{1}
</select>

2.Service层部分实现代码:

//调用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;
}
}

3.Web层部分实现代码:

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 登录界面
6.2 注册模块
用户可以通过注册界面填写自己的信息。但是要遵循一定的规则。在用户填写注册信息的同时,系统前台会检查用户输入信息的合法性,比如必填信息是否填全,信息长度是否在规定范围内等。前台检查完毕后,后台会根据用户输入的用户名在数据库中检索,如果该用户名已存在,便让用户重新输入新的用户名;如果不存在,则注册成功,跳转到登陆界面。
注册模块的关键代码如下所示:

1.PersonMapper配置文件:

<select id="findPersonByName" parameterType="string" resultType="Person">
		select * from person where username=#{username}
</select>

2.Service层部分实现代码:
//调用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;
		}	
}

3.Web层部分实现代码:

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-3 注册模块活动图

个人信息注册界面如图6-4所示。
在这里插入图片描述

图6-4 个人信息注册界面

6.3 信息修改模块
如果用户对自己现在的信息不满意,则可以修改信息。想要成功修改信息,也需要满足几个条件。用户名必须通过前台验证,比如:不能为空、修改后的用户名不得与数据表的用户名重复等等。个别信息也不允许出现为空的现象。

信息修改模块的关键代码如图6-5所示。
在这里插入图片描述

图6-5 信息修改关键代码

如图6-6是个人信息修改的界面。
在这里插入图片描述

图6-6 个人信息修改界面

6.4 查询模块
用户成功登录系统后,自动跳转到主页。主页罗列出所有已经发布的简历信息(招聘信息)。个人用户可以在主界面浏览到企业已经发布的招聘信息并进行应聘,也可以根据相应的条件进行检索出自己心仪的企业应聘。

企业用户则可以浏览到求职者发布的应聘信息。
罗列出所有信息的关键代码如图6-7所示:
在这里插入图片描述

图6-7 信息罗列关键代码

个人用户主界面如图6-8所示。
在这里插入图片描述

在这里插入图片描述

图6-8个人用户主界面

企业用户主界面如图6-9所示。
在这里插入图片描述

在这里插入图片描述

图6-9企业用户主界面

6.5 简历管理模块
个人用户可以选择发布自己的简历,发布成功后,则可以被其他企业看到自己的求职信息。如果不想其他企业看到自己的求职信息,也可以选择撤销简历,但前提必须是自己的简历已经发布。如果需要导出自己的简历,则可以利用系统提供的模板进行下载。

简历下载界面如图6-10所示。
在这里插入图片描述

图6-10简历下载界面

6.6 应聘者管理模块
企业用户可以实时地看到有哪些申请者申请了职位,可以浏览到他们的详细信息,从而决定是否录用他们。在这之后,相应的应聘者也会得到是否被录用的信息。

企业应聘者名单如图6-11所示。
在这里插入图片描述

在这里插入图片描述

图6-11企业应聘者名单

个人通知的界面如图6-12所示。

在这里插入图片描述

图6-12 个人通知界面

6.7 安全退出
当用户操作完毕,需要退出系统时,用户可以点击页面右上角的图形按钮,安全退出系统。用户点击完这个按钮后,会弹出是否确定退出的选项。如果点击确定,系统后台会删除名为person(company)的session属性,以防别人登录自己的账户,保护用户的信息安全。退出界面如图6-13所示。
在这里插入图片描述

图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所示。

表7-1 “个人用户注册”输入条件的等价类表
在这里插入图片描述

测试数据如表7-2所示。
表7-2 “个人用户注册”测试数据
在这里插入图片描述

测试结果如图7-1所示。
在这里插入图片描述

图7-1 测试结果

本系统除了需要对用户输入数据的合法性进行测试外,还需要对界面进行测试,界面测试是许多B/S系统开发中的重要一环。界面往往是用户对系统的第一印象,用户觉得界面越舒服、越美观,使用下去的可能性也就越大。可见,界面测试的重要性不言而喻。

界面测试主要考察系统界面布局是否合理、文字图片是否规范、操作起来是否符合用户的习惯、部分功能是否对用户具有引导性等等。界面测试的结果如表7-3所示。

表7-3 界面测试
在这里插入图片描述

7.4系统评价
总体来说,该系统已经达到了预期的目标。在设计方面,逻辑清晰;在编码方面,撰写规范,分层合理;在功能方面,并未检测出较大的错误,对于一些小的缺陷也已改进。整个系统运行后,表现良好,具有稳定性和可靠性。

8 结束语
8.1结论
省略

本文对网上招聘系统的各个开发阶段进行了一个详细的介绍。在其开发过程中,我严格按照软件开发的标准流程,并结合Java、Oracle等先进技术,实现了该系统应具备的所有功能。除此之外,该系统编码规范,界面友好,易于后期维护及将来功能的扩展,特点十分鲜明。

省略

参考文献
[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

致 谢
省略

结 论
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于java+MyBatis+jsp的网上招聘系统设计与实现(源码+文档)_MyBatis_Oracle_网上招聘系统.zip
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐