欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    开发系统的全流程.docx

    • 资源ID:1857490       资源大小:1.86MB        全文页数:55页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    开发系统的全流程.docx

    第一章 需求分析11.1熟悉招聘网站的主要业务11.2系统功能需求初步分析51.2.1个人模块需求分析51.2.2企业模块51.2.3后台管理模块61.3确定系统的需求,完成用例图6第二章数据库的设计82.1数据库实体分析82.2数据库设计92.2.1概念模型设计92.2.2物理模型的设计112.2.3生成的sql语句11第三章系统的环境的搭配12第四章Hibernate持久层的设计与实现134.1设计持久化对象134.2创建持久化类154.3映射持久化类154.3.1Users和它的三个子类的映射代码154.3.2Resumes和属于Resumes的类的映射代码164.3.3Users和Roles的映射代码184.4Hibernate配置文件的配置184.5设计和实现Dao层194.5.1Dao组件的设计204.5.2Dao组件的实现20第五章业务逻辑层的设计与实现225.1业务逻辑组件的设计225.1.1求职者模块的设计225.1.2企业模块的设计255.1.3管理员模块的设计285.2实现业务逻辑305.3事务管理325.4部署业务逻辑组件335.4.1Struts中Action的配置335.4.2Spring中Dao组件的配置335.4.3Spring中Action中注入Dao的配置345.4.4web.xml中的配置35第六章系统页面的设计366.1系统主页面的设计366.2求职者用户主页面的设计366.3企业用户主页面的设计376.4系统管理员主页面的设计37第七章系统安全38第八章系统测试39第九章项目总结409.1系统开发过程中用到的工具409.2系统开发中体现的思想409.3系统开发数据统计41致谢42附件一MySQL脚本43附件二清河一班项目开发分工明细表56第一章 需求分析需求分析师系统开发的源头,一个系统的开发起源于系统的需求分析也最终回到需求分析。做好需求分析就等于做好了系统开发的一半。因此我们在需求分析上做了很多的工作。首先我们对招聘网站的业务进行了熟悉,然后分组分模块进行了需求分析,最后通过团队讨论一起确定了需求。1.1熟悉招聘网站的主要业务在熟悉业务流程的过程中,我们对几个大型招聘网站进行了各个角度、各个方面的分析,最终使用Visio做出求职者、企业用户、管理员三个模块的主要功能1、主页显示内容如图1-1所示:图1-1GoodJob招聘网主页内容图2、简历包含的内容如图1-2所示:图1-2GoodJob招聘网简历页内容图3、求职者操作流程如图1-3所示:图1-3求职者操作流程图4、企业模块主要功能如图1-4所示:图1-4企业模块功能图5、后台管理模块功能图如图1-5所示图1-5后台管理模块1.2系统功能需求初步分析从个人、企业、管理员三个模块对系统功能进行分析,主要分析出三个角色都有哪些功能,以模块的形式展示出来。1.2.1个人模块需求分析搜索职位、申请职位、职位收藏个人简历管理个人基本信息管理查看申请记录、查看职位详细信息、人事消息查看职场资讯、面试技巧等信息1.2.2企业模块职位发布:职位管理、职位搜索、职位模版简历管理:搜索简历、暂存文件夹、回收站招聘管理:收件箱、公司人才库、面试夹、回收站数据报表:简历投递统计报表、职位发布统计报表、用户使用统计表系统设置:公司信息管理、用户管理、邮件模版、简历过滤器1.2.3后台管理模块管理一般用户管理企业用户 招聘信息 紧急招聘信息热门招聘信息 搜索未授权企业,给企业授权1.3确定系统的需求,完成用例图在确定系统功能需求后,使用Rational Rose 工具对系统需求做用例图。1、个人用户用例图如图1-6所示:图1-6个人用户用例图2、企业用户用例图如图1-7所示:图1-7企业用户用例图3、后台管理员用例如图1-8所示:图1-8后台管理员用例图第二章数据库的设计数据库分析与设计是系统开发的重要的步骤之一,本系统开发过程中是先分析出系统所依赖的实体,然后挖掘实体间的关系,之后对数据库进行概念模型、物理模型设计,最终生成sql语句,创建数据库。2.1数据库实体分析·个人用户:个人信息 + ID + 用户名 + 密码·简历:浏览次数、完成度、照片·个人信息:姓名、性别、出生日期、工作年限、证件类型、证件号、居住地、Email、手机号码、求职状态、国家或地区、籍贯、身高、婚姻状况、联系地址、邮编、MSN·教育经历:时间、学校、专业、学历、专业描述、海外学习经历·学生奖励:时间、奖项、级别·校内职务:时间、职务名称、职务描述·在校实践经验:时间、实践名称、实践描述·工作经验:时间、公司、行业、公司规模、公司性质、部门、职位、工作描述、海外工作经历·求职意向:工作类型、地区、行业、职能、期望薪水、到岗时间、自我评价·培训经历:时间、培训机构、培训课程、详细描述、培训地点、获得证书。·语言能力:外语语种、掌握程度、听说能力、读写能力 英语等级(四六专四八)、TOEFL:、GRE: 日语等级、GMAT、IELTS·技能:技能、使用时间、掌握程度、技能类别·项目经验:时间、项目名称、项目描述、角色·证书:获得时间、证书名称、成绩、·附加信息:标题、内容·职位收藏夹:收藏日期、申请状态、·站内信箱:from to content·职位搜索器:关键字、工作地点、职位类别、行业类别、发布日期、工作年限、月薪范围、公司性质、学历要求、工作类型、搜索器名称。·企业用户:用户名、密码、公司简介、用户状态·职位详情:职位名称、工作地点、职位类别、行业类别、发布日期、工作年限、月薪范围、学历要求、工作类型、职位描述、职位状态·站内信模板:内容、·简历搜索器:性别、年龄、工作年限、籍贯、身高、学历、专业、工作经验、求职意向、期望薪水、语言能力、搜索范围等·后台管理员:账号、密码、等 权限·职位类别:职位名称、职位状态·企业性质:企业性质名称·行业类别:行业名称·工作地点:地点名称·系统消息:种类、内容·广告2.2数据库设计在数据库设计阶段使用工具powerdesigner进行概念模型的设计,先是画出实体并建立起实体间的关系,然后向实体中加入属性,再生成物理模型。2.2.1 概念模型设计(1)实体关系图如图2-1所示:图2-1实体关系图(2)实体中加入属性后的概念模型如图2-2所示:图2-2数据库概念模型图2.2.2物理模型的设计数据库设计物理模型图是由概念模型直接生成的,它直接体现着数据库中的表。本系统物理模型如图2-3所示:图2-3数据库物理模型图2.2.3生成的sql语句见附件一第三章系统的环境的搭配系统环境的搭配是系统开发的启示,搭配好一个系统环境对之后的开发过程都有很大的溢出。本系统开发的是在开始的时候就对系统环境做好了分析并进行了搭建1、数据库的配置(1)设置数据库服务器的MySQL的访问用户名和密码(2)在数据库服务器上,用MySQL 创建数据库goodjob 在数据库中导入附件一中的sql脚本,生成数据库。2、CVS的配置(1)安装CVS:如果有旧版本则需要清除干净所有有关CVS的文件包括注册表(2)添加用户:d:servercvsnt cvs -d e:/GoodJob passwd -r administrator -a job3、Tomcat的配置:Tomcat中导入连接数据库驱动包4、包的导入:将要用的包导入到lib文件中,以便在团队开发过程中不用每个人都自己进行导包的操作。导入的包共42个,如下所示:antlr-2.7.6.jar、aspectjrt.jar、aspectjweaver.jar、c3p0-0.9.1.2.jar、commons-attributes-api.jar、common-beanutils.jar、commons-codec.jar、commons-collections.jar、commons-collections-3.1.jar、commons-dbcp.jar、commons-digester.jar、commons-discovery.jar、commons-fileupload.jar、commons-fileupload-1.2.1.jar、commons-httpclient.jar、commons-io.jar、common-lang.jar、commons-logging.jar、commonl-logging-1.0.4.jar、commons-pool.jar、commons-validator.jar、dom4j-1.6.1.jar、freemarker-2.3.13.jar、hibernate3.jar、javassist-3.9.0.GA.jar、jstl.jar、jta-1.1.jar、log4j-1.2.15.jar、mysql-connector-java-5.1.6-bin.jar、ongl-2.6.11.jar、slf4j-api-1.5.8.jar、slf4j-log4j12-1.5.8.jar、spring.jar、spring-aop.jar、spring-rom.jar、spring-webmvc.jar、spring-webmvc-struts.jar、standard.jar、structs2-core-2.1.6.jar、structs2-spring-plugin-2.1.6.jar、xwork-2.1.2.jar。第四章Hibernate持久层的设计与实现通过使用Hibernate持久层,可以避免使用传统的JDBC方式来操纵数据库,通过利用Hibernate提供的O/R Mapping支持,从而允许程序使用面向对象的方式来操作关系数据库,保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、面向对象设计、面向对象编程。4.1设计持久化对象根据需求分析和数据库的设计可以从中提取出相应的32个对象,从而设计了32个持久化类,这些持久化类下所示: Ad:对应广告,包括广告标题、广告内容等。 Admins:对应管理员,包括管理员姓名、性别等。 Applications:对应职位申请记录,用来保存求职者的职位申请记录,包括申请日期、申请职位、处理状态等。 Certificates:对应求职者获得证书,包括获得日期、证书名称、证书等级等。 Compaies:对应企业用户,包括企业的名称、联系方式、地址等。 Duty:对应求职者在学校期间担任的职位。 Educations:对应教育背景,包括开始/结束时间、学校名称、专业、学历等。 Experiences:对应工作经验,包括开始/结束时间、工作单位、职位、工作描述等。 Favorites:对应职位收藏夹,有收藏时间。 HrLibs:对应公司人才库,公司可以对满意的人才进行统一管理。 Industry:对应公司所属行业。 JobObjective:对应求职者的求职目标,包括期望薪水、期望工作地、自我评价等。 Languages:对应求职者掌握语言,包括语言种类,掌握程度等。 MailBox:对应站内信箱,内有收发者、发送时间、标题、内容等。 MailTemplate:对应站内信模板,提供给企业用,方便企业发送面试通知。 Others:对应求职者添加的附件信息,包括标题和内容。 Persons:对应求职者,包括求职者的姓名、性别、联系方式等个人信息。 Pictures:对应发布广告时的图片。 PositionSort:对应职位种类,可提供企业发布职位时的参考。 PositionInfo:对应企业发布的职位信息,包括所要求的工作年限、职位名称等。 PositionSearcher:对应职位搜索器,提供给求职者以方便进行职位的搜索。 PracticeAtSchool:对应在校实践,包括开始/结束时间、实践名称、详细描述等。 Profession:对应职业名称,提供给企业添加职位时和求职者搜索时的参考。 ProjectExperience:对应项目经验,包括开始/结束时间、项目名称、详细描述等。 Resume:对应个人求职简历,内有创建时间、简历名称、浏览次数等。 ResumeSearcher:对应简历搜索器,提供给企业对简历进行搜索。 Rewords:对应在学校或工作期间获得的奖励,包括奖励名称、获得时间等。 Roles:对应角色,这是系统进行安全的主要依据。 SystemInfo:对应系统消息,提供给管理员发布系统消息的模板。 Trainings:对应求职者曾经受到过的专业培训,包括培训时间、地点、内容等。 Users:对应系统用户,包括用户名、密码、邮箱等。 WorkSpaceInfo:对应系统提供给客户的职场资讯,包括标题、内容等。本系统采用的是贫血模式来设计的,所以没有为它们提供任何业务逻辑方法,而是将所有的业务逻辑方法放到业务逻辑组件中实现。本系统一共涉及到32个持久化对象,这32个POJO类不是孤立存在的,它们之间存在着复杂的关联关系。分析关联关系既是面向对象分析的必要步骤,更是Hibernate进行持久化操作的必经之路。这些POJO的关联关系如下:Users是Persons、Admins和Companies的父类,同时父类和子类又是1N的关系,即一个Users可以有多个子类,但一个子类有且只能有一个父类。Users和MailBox是1N的关系,邮箱中存放的是邮件,一个人可以有多个邮件,反过来一封邮件只能由一个人接收。Users和Roles是NN的关系,一个用户可以有多个角色,一个角色可以有多个用户。Persons和PositionSearcher是1N的关系,一个求职者可以有多个职位搜索器,每个职位搜索器必须属于一个求职者。Persons和Resume是1N的关系,一个人可以有多个简历,反过来,一个简历也必须属于一个人。Resume和简历所属的十一个实体包括都是1N的关系。Persons和PositionInfo之间是NN的关系,一个求职者可以收藏多个职位,一个职位也可以被多个人收藏。两者之间因为收藏而产生一个收藏夹,这个收藏夹是二者之间的关系实体。 Resume和PositionInfo之间是NN的关系,一个简历可以投到多个职位上去,一个职位也可以被多个简历投。两者之间因为发送简历而产生一个申请记录,这个申请记录是二者之间的关系实体。Resume和Companies之间是NN的关系,一个企业可以把多个简历加入人才库,而一个简历也可以被多个企业加入人才库中。二者之间又因为加入人才库的操作而产生了一个人才库的关系实体。Companies和ResumeSearcher、MailTemplate都是1N的关系,即一个企业可以有多个简历搜索器和多个邮件模板。Ad和Pictures是1N的关系,即一个广告可以有多个图片,而一个图片只能对应一个广告。Professions、Industry、PositionSorts、WorkSpaceInfo、SystemInfo五个实体之间都是系统中相对独立的,它们没有和其他实体有任何关系,只是为了方便用户操作而给出的参考性的选择。4.2创建持久化类从类之间的关系可以看出,持久化对象之间的关联关系以属性的方式表现出来,当然这些属性也同样需要setter和getter方法的支持,持久化类之间的关联关系通常对应数据库里的主外键约束。除此以外,持久化对象还有自己的普通属性,这些属性通常对应数据库中表的字段。创建持久化类本系统做到了以下几点:首先,根据Hibernate对持久化对象的要求,即要求持久化对象提供无参构造器,本系统没有在POJO中写任何构造器,这样就有个默认的无参构造器了。其次,每个持久化对象都有个标识属性,用于标识该实例。第三,本系统根据业务的需要对部分持久化类的equals()和hashCode()方法进行了重写,当然这个重写并不是根据标识属性来写的,从而避免了在持久化对象为瞬态时的标识属性为null的问题。下面给出部分持久化类的类图如图4-1所示:图4-1持久化类图4.3映射持久化类在映射持久化类的过程中,本系统用到了继承,一对多,一对一,多对多等多种映射情况,下面就给出系统中用到的部分映射代码。4.3.1Users和它的三个子类的映射代码Users是Persons、Admins和Companies的父类,同时父类和子类又是1N的关系,即一个Users可以有多个子类,但一个子类有且只能有一个父类。根据这种关系,在本系统中这四个类的部分映射代码如下所示:<hibernate-mapping package="com.goodjob.entity"> <class name="Users" table="USERS"> <id name="userId" column="user_id" type="integer"> <generator class="native"/> </id> <property name="userName" column="user_name" type="string"></property> <property name="password" column="password" type="string"></property> <property name="email" column="email" type="string"></property> <!- 求职者 -> <joined-subclass name="Persons" table="PERSONS" lazy="false"> <key column="user_id"/><property name="persName" column="pers_Name" type="string"/><property name="persSex" column="PERS_SEX" type="boolean"/><!- 其它属性 -> </joined-subclass> <!- 企业 -> <joined-subclass name="Companies" table="Companies"> <key column="user_id"></key><property name="compName" column="COMP_NAME" type="string"/><property name="compAddress" column="COMP_ADDRESS" type="string"/><!- 其它属性 -> </joined-subclass> </class> </hibernate-mapping>4.3.2Resumes和属于Resumes的类的映射代码在本系统中Resumes内除了求职者的个人信息外还包含了11个实体,简历和它们的关系都是一对多的关系。1、Resumes的部分映射代码如下:<hibernate-mapping package="com.goodjob.entity"> <class name="Educations" table="Educations"> <id name="educId" column="EDUC_ID"> <generator class="native"></generator> </id> <property name="educBeginTime" column="EDUC_BEGIN_TIME" type="date"></property> <property name="educEndTime" column="EDUC_END_TIME" type="date"></property> <property name="educSchoolname" column="EDUC_SCHOOLNAME" type="string"></property> <property name="educAbroad" column="EDUC_ABROAD" type="boolean"></property> </class></hibernate-mapping>2、Education的映射代码如下:<hibernate-mapping package="com.goodjob.entity"><class name="Resumes" table="Resumes"><id name="resuId" column="RESU_ID"><generator class="native"></generator></id><property name="userId" column="user_id" type="integer"></property><property name="resuName" column="RESU_NAME" type="string"></property><!- 其它属性 -><set name="educationss" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="Educations"/></set><set name="certificatess" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="Certificates"/></set><set name="experiencess" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="Experiences"/></set><set name="languagess" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="Languages"/></set><set name="projectExperiencess" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="ProjectExperiences"/></set><set name="trainingss" cascade="all" lazy="false"><key column="RESU_ID"/><one-to-many class="Trainings"/></set></class></hibernate-mapping>3、Languages的映射代码如下:<hibernate-mapping package="com.goodjob.entity"> <class name="Languages" table="Languages"> <id name="langId" column="LANG_ID"> <generator class="native"></generator> </id> <property name="langName" column="LANG_NAME" type="string"></property> <property name="langLevel" column="LANG_LEVEL" type="string"></property></class></ hibernate-mapping>其它几个Resumes所属的持久化对象的映射文件与上面的类似,这里不做赘述。4.3.3Users和Roles的映射代码Users和Roles是NN的关系,一个用户可以有多个角色,一个角色可以有多个用户。1、Users的映射代码如下:<set name="roles" inverse="true" table="USER_ROLES" lazy="false"> <key column="user_id"></key> <many-to-many class="Roles" column="role_id"></many-to-many> </set>2、Roles的映射代码如下:<hibernate-mapping package="com.goodjob.entity"> <class name="Roles" table="ROLES"> <id name="roleId" column="role_id"> <generator class="native"/> </id> <property name="roleName" column="role_name" type="string"></property> <set name="users" table="USER_ROLES" lazy="false"> <key column="role_id"></key> <many-to-many class="Users" column="user_id"></many-to-many> </set> </class> </hibernate-mapping>4.4Hibernate配置文件的配置在所有的持久化对象完成之后,就要将所有的映射文件配置到hibernate.cfg.xml中去,一边Hibernate能对各个映射文件进行操作。配置好的hibernate.cfg.xml如下:<hibernate-configuration><session-factory><!- 指定连接数据库的驱动 -><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!- 指定连接数据库的URL -><property name="hibernate.connection.url">jdbc:mysql:/192.168.1.2:3306/goodjob</property><!- 指定连接数据库的用户名 -><property name="hibernate.connection.username">root</property><!- 指定连接数据库的密码 -><property name="hibernate.connection.password">password</property><!- 指定连接数据库是否统一编码 -><property name="hibernate.connection.useUnicode">true</property><!- 指定连接数据库的编码 -><property name="hibernate.connection.characterEncoding">UTF-8</property><!- 设置自动提交事务 -><property name="hibernate.connection.autocommit">true</property><!- 指定连接数据库的方言 -><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!- C3P0连接池设定-><property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><property name="hibernate.c3p0.max_size">20</property><property name="hibernate.c3p0.min_size">5</property><property name="hibernate.c3p0.timeout">120</property><property name="hibernate.c3p0.max_statements">100</property><property name="hibernate.c3p0.idle_test_period">120</property><property name="hibernate.c3p0.acquire_increment">2</property><property name="show_sql">true</property><property name="format_sql">true</property><property name="hbm2ddl.auto">none</property><!- 映射文件 -><mapping resource="com/goodjob/entity/Ad.hbm.xml" /><mapping resource="com/goodjob/entity/Address.hbm.xml" /><mapping resource="com/goodjob/entity/Applications.hbm.xml" /><mapping resource="com/goodjob/entity/Certificates.hbm.xml" /><mapping resource="com/goodjob/entity/Dutys.hbm.xml" /> <mapping resource="com/goodjob/entity/Educations.hbm.xml" /> <mapping resource="com/goodjob/entity/Experiences.hbm.xml" /> <mapping resource="com/goodjob/entity/Favorites.hbm.xml" /> <mapping resource="com/goodjob/entity/HrLibs.hbm.xml" /> <mapping resource="com/goodjob/entity/Industries.hbm.xml" /><mapping resource="com/goodjob/entity/JobObjective.hbm.xml" /><mapping resource="com/goodjob/entity/Languages.hbm.xml" /><mapping resource="com/goodjob/entity/Mailboxes.hbm.xml" /><mapping resource="com/goodjob/entity/MailTemplate.hbm.xml" /><mapping resource="com/goodjob/entity/Others.hbm.xml" /><mapping resource="com/goodjob/entity/Pictures.hbm.xml" /><mapping resource="com/goodjob/entity/PositionInfo.hbm.xml" /><mapping resource="com/goodjob/entity/PositionSearchers.hbm.xml" /><mapping resource="com/goodjob/entity/PositionsSorts.hbm.xml" /><mapping resource="com/goodjob/entity/PracticeAtSchools.hbm.xml" /><mapping resource="com/goodjob/entity/Professions.hbm.xml" /><mapping resource="com/goodjob/entity/ProjectExperiences.hbm.xml" /><mapping resource="com/goodjob/entity/Resumes.hbm.xml" /><mapping resource="com/goodjob/entity/ResumeSearcher.hbm.xml" /><mapping resource="com/goodjob/entity/Rewords.hbm.xml" /><mapping resource="com/goodjob/entity/Roles.hbm.xml" />

    注意事项

    本文(开发系统的全流程.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开