基于微信的招聘平台的后台系统开发.docx
《基于微信的招聘平台的后台系统开发.docx》由会员分享,可在线阅读,更多相关《基于微信的招聘平台的后台系统开发.docx(35页珍藏版)》请在冰点文库上搜索。
基于微信的招聘平台的后台系统开发
深圳大学
本科毕业论文(设计)
题目:
基于微信的招聘平台的后台系统开发
姓名:
谢创旭
专业:
软件工程
学院:
计算机与软件学院
学号:
2011150248
指导教师:
李俊杰
职称:
副教授
2015年4月20日
深圳大学本科毕业论文(设计)诚信声明
本人郑重声明:
所呈交的毕业论文(设计),题目
《基于微信的招聘平台的后台开发》
是本人在指导教师的指导下,独立进行研究工作所取得的成果。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明。
除此之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。
本人完全意识到本声明的法律结果。
毕业论文(设计)作者签名:
日期:
年月日
基于微信的招聘平台的后台系统开发
计算机与软件学院软件工程系谢创旭
学号:
2011150248
【摘要】本系统使用PHP语言,在ThinkPHP的框架下开发了招聘平台的后台系统。
该后台系统的主要功能有招聘信息的管理、招聘信息的发布、招聘过程的信息处理以及招聘结果的信息处理。
整个系统架设在新浪云的开发平台SAE上,前端的设计采用了KendoUI的JS框架。
本论文详细介绍了整个后台系统的开发过程,包括需求分析、系统详细设计(包括数据库设计和功能模块设计)、系统的部署和系统功能的实现。
【关键词】PHP;招聘平台;SAE
第1章前言
1.1课题简介
本项目开发了一个基于微信的公众平台的招聘平台,共分为两个部分:
1.前台提供了招聘信息的分类、发布等功能,以及和微信用户在招聘过程中所需的交互功能。
2.后台的信息管理系统,负责对招聘平台的信息进行处理。
本文作者负责后台系统的开发,故以下主要叙述后台系统的相关信息。
1.2课题背景与意义
1.2.1网络招聘市场的现状
招聘和求职,一直以来都是企业和求职者的一大难题,企业需要有合理、广阔的信息发布的渠道,求职者亦需要有多而方便的招聘信息来源。
在移动互联网发挥着越来越不可替代的作用的今天,各大招聘网站如智联招聘、猪八戒网等都先后推出了自己的APP,也建立了自己的微信公众平台号,让招聘平台走到招聘者的手机上,能够让招聘更加便捷,招聘平台本身也更加易于推广。
1.2.2微信公众平台的发展
当今社会,人们对信息的需求不断增强,而移动互联网无疑是当下满足这个需求的最为强大的手段。
因此,各类手机APP如雨后春笋一般出现在市场上,而微信应该是在这当中为用户提供信息交互手段最为成功的一个应用。
截至2014年底,微信的用户数量已经突破5亿,有了20多种语言的版本。
在2012年8月18日,微信正式推出了“微信公众平台”,它能够让公众号提供文字、图片、图文链接等功能,因此,许多企业在微信公众平台上建立了自己的公众号,以提供更多的信息以及更好的和客户沟通。
因此,将招聘平台建立在微信上,将有利于招聘信息向更多的人推广,并让公司和求职者能够更加有效的解决双方信息不对称等问题。
1.2.3ThinkPHP框架的发展
ThinkPHP,原名为FCS,是在2006年初诞生的一款轻量级开源PHP开发框架,具有兼容、简单而快速的特点,遵循Apache2的开源协议,借鉴了很多国外优秀框架,一直不断的扩张与改进。
目前已更新到3.2.3版本,并随着PHP的更新版本做相应的改善。
对国内的PHP框架的学习者而言,TinkPHP有详尽的开发文档和较多的教程,具备了语言友好、学习方便等优点,在国内,TP框架在开发团队的努力下已经是较为优秀的一款框架,发展潜力较为巨大。
[]
1.3本章小结
本章对开发的项目进行了简单的介绍,同时介绍了所选课题的背景及其开发的意义,包括了招聘市场的现状、微信公众平台的发展和ThinkPHP框架的发展。
第2章开发环境和开发方法介绍
2.1新浪云平台(SAE)介绍
新浪云平台SinaAppEngine(SAE),是由新浪公司开发并运营的一站式的开发及运行平台,是国内首批通过云服务权威认证的公有云计算平台,并获得了可信云PAAS云平台服务奖。
建站者可以通过SAE轻松建立并开发其自己所需的网站、应用等,并将自己的应用托管在上面。
对于普通的使用者,新浪云提供了内置的应用商店,从而可以让没有开发基础的人也可以根据自己的想法创建自己所需的SaaS应用。
SAE从架构上采用分层设计,从上往下分别为7层反向代理层、路由逻辑层、Web计算服务池。
而从Web计算服务层延伸出SAE附属的分布式计算型服务和分布式存储型服务,具体又分成同步计算型服务、异步计算型服务、持久化存储服务、非持久化存储服务。
“7层”反向代理处于SAE架构的最外层,为SAE提供负载均衡,健康检查等功能,它是HTTP反向代理,负责响应用户的HTTP请求,分析请求,并转发到后端的WEB服务器上。
2-1SAE整体架构模式图
SAE的web服务其采用分布式部署的方式,代码被开发者部署在SAE前端机后,SAE会同步的将代码部署到SAE的每一个web服务器上,因此能够确保用户请求会在遇到宕机的情况下继续转发到另外的服务器上,系统的稳定性将能够得到很好的保障。
此外,SAE为了配合和完善分布式的部署,还提供了分布式数据库、分布式文件系统,分布式定时器系统、网页抓取服务以及图像处理服务等。
目前SAE支持的开发语言有PHP、JAVA和python三种,基本能够满足大部分的应用开发。
他提供的服务有数据库服务(如MySQL,KVDB等)、网络安全(如FetchURL,应用防火墙等)、存储和CDN(如Mencache,Storage,CDN等)、应用程序服务(如Cron,Mail等)、移动服务(云推送)、功能类服务(AppConfig,Wrappers等),第三方服务(短信服务,分词服务,有道翻译等)以及合作服务(科大讯飞语音服务,又拍云存储等)。
开发方面,代码方面,既可以使用SVN管理托管,多人异地管理代码,也可以通过在线编辑即时的编辑自己的代码,还可以通过将代码打包提交上传,至于代码加密,SAE支持企业版PHP进行代码加密,Python本身支持代码加密,Java用户可以做自混淆;团队管理应用方面,SAE提供了帐号的权限管理,为账户定义了角色(管理员、创建者、观察者等),并对应了不同的权限(全权限、提交代码、查看日志等),还可以通过邀请某人以某种角色加入项目,只要有新浪的帐号即可;调试方面,有调试日志可查,PHP和Python内置debug函数,Java集成log4输出,PHP还支持一键切换debug信息在页面显示和后台显示的切换以及集成facebook的XHProf模块来帮助开发者调试优化程序,数据库还有慢查询的语句提示来帮助开发者优化,Java提供了JVM实时性能分析,能够实时分析当前JVM内存、GC和线程情况;运维方面,SAE提供了日志的访问、展现、下载和数据的HTTP访问流量曲线、PV/UIP访问曲线、各服务参数曲线等功能
使用SAE开发Web应用,主要的好处有以下几点:
1.硬件成本几乎很低甚至没有,只要有想法,懂开发,成为SAE的开发者后需要为硬件付出的成本十分低廉。
2.开发成本也比一般开发成本低,无论是Web开发者还是APP开发者,SAE都提供了较为完善的开发环境,提供了较为完整的应用开发接口。
3.运维方便且成本低,开发者放在SAE上的应用无需关心其硬件的维护、服务的监控、数据的容灾等情况,SAE提供了分布式部署和自动支持服务扩展,使得运维变得简单,也更加的安全可靠。
2.2ThinkPHP框架介绍
ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。
早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,单一入口模式等,在模版引擎、缓存机制、认证机制和扩展性方面均有独特的表现。
ThinkPHP可以支持windows/Unix/Liunx等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite以及PDO等多种数据库,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
[]
ThinkTemplate是用来XML标签库技术的编译型模板引擎,属于ThinkPHP的独创机制,具备自定义标签库的功能,主要的特点有:
1.支持普通标签和XML标签库的混合定义;2.只需要编译一次,从此直接运行;3.模板的缓存将会跟随模板文件的更新而自动的进行更新4.可以自由替换其它的模板插件引擎,如Smarty等5.模板的替换使用常量替换,不用通过设置模板变脸来替换。
6.自动加载当前操作的模板缓存文件,无需制定模板文件的名称。
ThinkPHP的框架具有简洁用、开发速度较快、执行响应速度优秀,十分适合php框架的初学者使用,在国内,由于语言的原因使它在众多框架中颇受欢迎,它拥有详尽的中文用户开发文档,并有丰富的各类教程,因此近年来发展得较为的迅速。
目前ThinkPHP最新的版本为3.2.3,在3.2版本后,ThinkPHP与时俱进,加入了PHP新版本中命名空间的运用。
ThinkPHP框架的目录分为系统目录和项目目录两大部分,系统目录包含了框架的公共文件、惯例的配置、语言文件、基本类库、模板、扩展目录和第三方类库等文件,这些文件支撑起了框架的主心,而项目目录则是在系统运行入口文件时自动生成的目录,需要注意的是,SAE下ThinkPHP框架并不会主动的生成项目目录,需要在本地生成目录后上传到项目的文件夹中。
两种目录的具体情况如下两表所示:
目录名称
主要内容
Common
核心函数库目录,其中有公共文件系统定义等信息。
Library
核心资源类库目录,包含模板类及基本的功能类库等信息
Conf
核心的配置文件目录
Tpl
包含框架内置的模板
Lang
语言包,目前已有繁体中文、简体中文、英文等语言
2-1框架的系统目录
目录名称
主要内容
Common
当前项目的革个性函数
Conf
项目的配置目录
Controller
项目的控制器目录,主要是控制方法的集合
Model
项目的模型目录,主要是数据库的存放
View
项目的视图目录,主要存放静态页面
index.php
项目的单一入口文件
2-2框架的项目目录
ThinkPHP框架的执行流程主要分为以下4步:
1.加载系统的index.php这个入口文件,此时项目会自动的创建器项目的目录。
(SAE环境下无法自动生成,会报错)
2.加载框架的一个核心文件:
ThinkPHP.php,在这个过程中,项目会定义许多常量,并引入矿建的另外一个核心文件:
Think.class.php,并调用起其中的Think:
:
start();函数
3.Think.class.php中的start函数调用后,会引入一系列的系统核心文件,并引入配置文件,如果是生成模式,还会生成common~runtime.php文件,另外,如果是第一次使用系统,还会自动创建对应的应用目录App:
:
run();
4.引入App.class.php文件,调用run()函数,并通过调用App:
:
init();来进行路由解析,把模块、控制器和方法赋予常量。
然后通过App:
:
exec()实例化控制器对象。
最后将利用“反射”实现对象调用方法。
2.3KendoUI介绍
KendoUI是基于HTML5、CSS3和JavaScript的标准下的一款关于前端开发的功能强大的框架,程序界面简洁而优雅,使用简单(可以通过拖拉功能实现),数据源十分的庞大。
和jQueryUI相对比较,KendoUI添加了模板(Template),数据源绑定(DataSource),MVVM和移动设备的支持,功能上相对要强大很多,编码的工作也十分简单。
但是,这一套UI的使用不是免费的,想要使用需要向Telerik公司购买。
KendoUI包含下面下面几个开发包:
∙KendoUIWeb–用于桌面浏览器的HTML5UI组件.
∙KendoUIDataViz–用于显示数据的HTML5UI组件.
∙KendoUIMobile–用于开发基于移动设备的HTML5UI框架.
∙KendoUIComplete-包含了上面三个开发包.
∙KendoUICompleteforASP.NETMVC-包括了Web,DataViz和Mobile并提供这些UI组件的ASP.NETMVC服务器端封装.
∙KendoUICompleteforJSP–包括了Web,DataViz和Mobile并提供这些UI组件的JSP服务器端封装.
∙KendoUICompleteforPHP- 包括了Web,DataViz和Mobile并提供这些UI组件的PHP服务器端封装
本项目仅仅对KendoUI的Web开发包和KendoUICompleteforPHP开发包进行了使用。
2.4SVN介绍
SVN,即Subversion,是一个通过集中式管理的开发源代码的版本控制系统。
它有着独立服务器和借助apcche两种运行方式采用分支管理系统,是一款可以进行异地同时对项目代码进行操作的软件,代码部署的过程比较便利,可以实现跨多个平台的操作,目前已有多种IDE(集成开发环境)如MyEclipse和ZendStudio提供SVN的插件加载,可以因此比较适合开发人数较少的中小性项目的开发。
2.5MVC模式介绍
MVC,即Model-View-Controller(模型-视图-控制器),是一种得到广泛认可的软件应用的架构模式,它将一个软件或应用的所有交互拆分给了三个不同的角色:
模型、控制器和视图。
它们之间的相互作用及具体角色如下图所示:
模型(Model):
用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
“Model”有对数据直接访问的权力,例如对数据库的访问。
“Model”不依赖“View”和“Controller”,也就是说,Model不关心它会被如何显示或是如何被操作。
但是Model中数据的变化一般会通过一种刷新机制被公布。
为了实现这种机制,那些用于监视此Model的View必须事先在此Model上注册,从而,View可以了解在数据Model上发生的改变。
视图(View):
能够实现数据有目的的显示(理论上,这不是必需的)。
在View中一般没有程序上的逻辑。
为了实现View上的刷新功能,View需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
控制器(Controller):
起到不同层面间的组织作用,用于控制应用程序的流程。
它处理事件并作出响应。
“事件”包括用户的行为和数据Model上的改变。
[2][]
可以用图来进行直观的表达:
由此可见,MVC的设计模式由于将用户界面、数据存储和响应操作完全的分开,设计和实现就变的十分的灵活,并且在需求发生了改变的情况下,这样的设计模式可以有效的减少代码的冗余,可以便捷有效的对想要更改的部分进行更改而不必担心其它的部分受到影响,例如需要对用户界面进行修改时,可以直接对视图部分进行修改,而不必去对数据库或者实现函数进行改动。
MVC的设计可以让开发出来的应用具有优秀的扩展性和维护性。
2.6本章小结
本章对项目的开发环境和开发方法进行了简单的介绍。
整体的开发环境为新浪云开发平台,开发所使用的PHP框架是ThinkPHP,后台界面使用了KendoUI的部分插件,系统开发所使用的模式是MVC模式,代码部署使用了SVN插件。
并对相应的技术进行了简单的说明。
第3章需求分析
3.1项目可行性分析
3.1.2项目目标
1.实用性方面,项目要求要简单且可用度较高,交互操作和用户界面要对用户友好。
2.数据操作方面,项目要求能够对数据进行实时的处理和控制,尽量避免数据的冗余。
3.前后台的对接方面,要求前后台对数据的操作分工要明确,避免数据的胡乱修改
4.资源的使用方面,要求尽可能少的使用人力和服务器资源,要有一定的缓存操作
3.1.3对现有系统的分析
现有的系统为基于微信的招聘平台的后台管理系统。
整个系统架设在了新浪云平台(SAE)上,基本的开发已经完成,主要的功能包括:
系统登录、求职人信息的管理、职位信息的管理、求职过程中信息的管理,数据的统计与展示等。
该后台管理系统规模较小,还有相应的不少的功能可以完善,例如推荐功能的实现等等,但基本做到了后台管理的内容管理系统所需要的功能。
3.1.4项目的局限性和费用开支
费用开支方面,主要为参考书的购买和KendoUI整个框架的购买,SAE上的服务器由于访问量并不大,因此到项目开发完成都是免费的,此外,ThinkPHP也是开源的PHP开发框架,因此也没有相关的费用开支。
本项目最大的局限性在于开发人员较少以及开发人员的经验不足上。
3.1.5所建议的系统
该系统已具备了应有的基本功能,建议在多用户登录和界面的美观设计上进行进一步的改善。
另外在进一步的功能上也可以进行开发,如推荐功能、推送功能等等。
3.2功能需求
3.2.1功能基本分类
1.登录功能:
系统管理员的登录功能,以便对整个后台的信息进行管理,为系统安全性考虑不设置管理员的注册功能
2.职位信息的管理功能:
对所提供的职位信息进行管理,包括了公司的相关信息
3.求职者信息的管理功能:
对所有求职者(即微信端传过来的微信公众号的关注者)的信息进行管理,包括个人的基本信息和简历信息。
4.招聘信息的管理:
在求职者的气质过程中,求职者对招聘平台的响应信息的管理,主要包括了是否收藏、是否申请以及最后是否成功。
5.信息的统计与展示:
丢求职信息进行统计并展示出来,有利于数据的分析。
系统功能的大体框架图如下所示;
基于微信的招聘平台
微信APP
系统管理(后台)
登
录
求
职
人
信
息
管
理
工
作
职位
管
理
处
理
求
职
请求
数
据
统
计
查
看
求
职
结
果
申
请
职
位
收
藏
职
位
查
找
职
位
个
人
简
历
管
理
3-1系统功能框架图
3.2.2系统的流程图
后台管理系统的流程图如下所示:
招聘过程信息处理
3-2后台系统流程图
如上图所示,整个后台系统在登录后可以分为两大部分,一个是对招聘过程中包括基本信息的处理,其中有求职者和职位信息的基本管理,但是有些信息像求职者的个人信息是不能提供增加的功能的,必须由微信端传送数据过来才能算是真正的数据,招聘过程的信息处理中也会有相应的问题存在,例如求职者的是否收藏和是否申请。
另外一个部分就是数据的统计,这部分仅作一个展示,并不提供编辑信息的功能。
3.2.3功能描述
整个基于微信的后台管理系统中,使用者只有系统管理员这一个角色,系统管理员将对所有后台能够管理的信息进行处理。
总体而言有:
职位信息的发布、修改和删除,求职者信息的修改和删除,招聘过程信息的修改。
但在整个项目当中,系统的用例图如下所示:
用例图
系统
求职者
管理员
管理简历
编辑简历
查看职位简历
申请职位
收藏职位
查看求职结果
数据统计
职位管理
求职人管理
处理求职请求
3-3系统总用例图
对后台的管理系统的系统管理员的功能详细描述如下:
登录系统——系统管理员通过已有的系统帐号登入系统并对整个系统的信息进行管理,出于系统安全性的考虑,系统将不设置系统用户的注册功能。
职位管理——系统管理员对所有的职位的相关信息进行管理,包括信息的发布,信息的修改和信息的删除。
职位管理过程中,系统管理员拥有对职位信息管理的一切可操作的权利。
求职者管理(或者简历管理)——对微信端传来的公众号粉丝的信息进行管理,包括对错误或者冗余的信息进行修改或者删除,也可以对信用度低的用户进行删除拉黑,但是不能够增加求职者(即不能凭空生成求职者),因为求职者的信息必须从微信端传来。
招聘过程管理——系统管理员对招聘过程中求职者的输入信息进行管理,包括求职者是否收藏某职位、是否申请某职位以及申请了职位后是否受聘,其中,前两者的信息只能浏览,不提供修改功能,而是否受聘则需要系统管理员进行编辑。
3.3非功能需求
3.3.1性能需求
1.在数据精确度的要求上,在“薪资”这一项上,由于默认单位是元/月,因此数据的精确度要求至要求至个位数。
但根据实际需要的不同,数据的输入、数据的输出和数据的传输中的精度要求往往是根据关键字精度的变化而变化的。
2.时间特性这一要求上,由于系统的响应时间需要在人的感觉和视觉的范围之内(即小于1s),系统的响应时间最好在小于5s的范围之中,才能让用户有一个较好的用户体验。
3.在适应性这一方面,当系统遭遇运行环境、操作系统之类的变化时,系统应当具备相应的适应能力。
即对系统的可移植性等有一个较高的要求。
4.在可使用性上,系统的操作界面需要对用户友好,可操作性要强,信息编辑等需要方便快捷。
5.在安全性上,系统需要正确识别出用户的登录信息,并保证帐号信息的安全。
6.在可维护性上,系统需要有相应的记录日志,且系统的维护成本不能过高。
根据以上是非功能性需求,讨论基于微信的招聘平台的后台管理系统是否符合这些需求:
1.在SAE上采用的数据库是MySQL,能够满足各种精确度的数据。
2.后台管理系统完成后,每个动作的响应时间的平均值在1s之内,响应的速度较快。
3.在SAE平台上,若系统需要移植到其它环境中,需要对服务器以及数据库和PHP等进行配置,但还是能够实现系统的移植。
此外,ThinkPHP的在SAE和在普通环境中的配置是不一样的,但是ThinkPHP在3.2版本后就较为成功的实现了两个环境上的兼容,只是在开发的时候注意尽量不使用SAE提供的和普通环境不一样的函数或者服务(如KVDB)4.整个后台系统界面简洁,系统功能一目了然,能够能够让人较快的上手。
6.在SAE上的软件应用,一般较少的会考虑到其维护的问题,软件应用开发者并不需要对系统的硬件维护而担忧,这也是将服务器建立在SAE上的一大优点。
3.4本章小结
本章对系统各个方面的需求进行了详细的分析,其中包括系统的可行性分析、系统的功能性需求和系统的非功能性需求。
首先,从经济和技术两个方面进行了可行性分析并得出所建议实现的系统,然后从功能的角度的处理整个系统的用例图,最后在非功能性需求上对系统的适应性、安全性、可维护性上进行了阐述和分析。
第4章系统设计
4.1系统整体架构设计
本项目是一个基于ThinkPHP框架下的一个内容管理系统,采用的是传统的B/S的三层架构,可以划分为表示层(视图模块)、应用层(控制器模块)、数据层(数据库模块),如下图所示:
4-1基于ThinkPHP框架下的B/S三层架构图
4.2系统设计的规则和目标
4.2.1系统可操作性
整个后台管理系统的用户接口、人机交互界面需要友好易用。
使用的语言尽可能不使用特别专业术语或者生僻的词汇,给使用者一种亲切感;各种操作需要能够做到简洁的设计和大气的用户界面;各式操作也需要在完成需要的功能下尽可能的精简。
4.2.2系统的易用性
系统对于初次使用者要