还剩31页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
目录TOC\o1-3\h\z第1章 选题背景
11.1 开发背景
11.2开发意义
11.3 国内外趋势
11.4 开发环境2第2章方案论证
32.1 可行性分析
32.
1.1方案可行性
32.
1.2 技术可行性
62.
1.3经济可行性
62.
1.4法律可行性
62.2需求分析
72.
2.1需求获取和问题分析
72.
2.2需求描述
72.
2.3需求评审
82.3系统模型
82.
3.1系统结构关系图
82.
3.2数据结构设计9第3章过程论述
113.1 总体设计
113.
1.1模块设计
123.
1.2人机界面设计
133.2 数据库设计
143.
2.1系统目标
143.
2.2系统流程
153.
2.3数据库设计
153.3 模块设计与实现
193.
3.
1.编码原则
193.
3.2主要代码20第4章 结果分析
274.1 系统测试
274.2 单元测试
274.3 集成测试
284.
3.1 集成测试
284.
3.2 集成测试策略
294.4 功能测试
294.7 性能测试29总 结30后 记31参考文献32附 录33第1章 选题背景
1.1 开发背景在这个以计算机、互联网络为中心的信息时代,任何事物都与互联网络息息相关,大到国家政要,小到衣食住行,互联网开始用它那神奇的触手深入到了各行各业乃至平民百姓家而促使这个时代的来临与发展的毋庸质疑的是那些高精尖的人才,因而,人才是各行各业发展的关键,各个求贤若渴的企业都非常关心如何能够招揽到有真才实学的人才是各个企业非常关心的问题而人才也想要找到一个符合自己兴趣爱好和专业特长的岗位一展才华与抱负,然而虽有毛遂自荐之心却苦于没有门路与此同时,我国就业大军规模的逐年庞大使的原有的招聘方式即通过召开招聘会的方式压力倍增——招聘会定期召开,过期没有交流机会招聘会都是在有限的几天内企业与大学生面对面的交流,虽然有的招聘会提前贴出海报或进行其他方式的宣传,但还会有很多企业和学生错过还有一部分人,为了参加招聘会不得不放弃一些重要的事情;招聘会人数众多,很难管理由于参加招聘会的人员繁多,而且整个过程人员的流动性非常强,这给管理增加了很大难度空间有限不利交流招聘会上人数众多,但是展位却有限,不能让所有的用人单位都参加,而且想要企业与学生一一会面很困难,不能更好地分配人力资源;在此种情况下,急需一种能够解决企业与人才双方需要的方法,网上人才招聘系统便应运而生
1.2开发意义首先,该系统的研发能够促进网络科技的发展,深化网上人才招聘领域的研究;其次,该系统的开发能够帮助求职者更方便、更快捷、更可靠的寻找到一个适合自己的用人单位,节省了时间、精力、财力等等同时也能够为向企业输送更多有用的人才提供了一条便利可靠的渠道
1.3 国内外趋势目前,国外的人才招聘多以网络招聘做为第一步筛选人才的步骤,然后再通过进一步的面试来敲定是否录用根本不采用招聘会的方式,因而避免了所有招聘会带来的弊端国内根据《2004年中国网上招聘研究报告》,在中国招聘市场中,2003年的市场容量比2002年增长了近9%,2004年达到
41.6亿元人民币,预计2006年将达到
51.2亿元人民币,平均年增长率达到10%网上招聘在2003年为
3.1个亿,到2004年为
5.5个亿,一年当中以占
8.1%的比例跃升到了
13.2%,到2006年将增长到
16.9亿元人民币,平均增长率为
73.9%,2006年网上招聘收入将占整体招聘市场收入的33%可见网上招聘市场的火爆,当然相对于国外来看,网上招聘占的份额还不够大随着互联网的普及,网络招聘所占的份额将会越来越大网上招聘以它泛围广,无区域和时间限制,快捷,效率高,省时省力,费用低等优点越来越受到企业和求职都的喜欢网络招聘在中国大陆出现仅仅只有5年左右时间,还处于初级的阶段市场比较成熟的地区主要在北京、上海、广州、深圳等大城市目前中国大约有2500家提供招聘服务的网站,但达到一定规模、能够为用户提供全面服务的也只有那么几家因此,可开发空间仍然很大
1.4 开发环境本系统在MicrosoftWindowsXP系统下使用JSP技术,后台数据库采用MicrosoftSQLServer2000,在JDK
1.5的环境下采用ApacheTomcat
5.0进行开发JAVA语言
[1],由Sun公司开发的一种计算机编程语言,它在网络编程中大显身手Java中连接数据库的技术是JDBCJavaDatabaseConnectivity很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作JDBC是一种可用于执行SQL语句的JavaAPI,它由一些Java语言写的类、界面组成,使开发人员可以用纯Java语言编写完整的数据库应用程序通过使用JDBC,可以很方便地将SQL语句传送到几乎任何一种数据库JSPJavaServerPages是由Sun公司倡导、许多公司参与建立的一种动态网页技术标准使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面使用JSP标识(tag)或者小脚本(Scriptlet)来生成页面上的动态内容生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行HTML语言(HypertextMarkupLanguage超文本标置语言)是一种文本类、解释执行的标记语言,它是Internet上用于编写网页的主要语言第2章方案论证
2.1 可行性分析
2.
1.1方案可行性当前,对于网站的开发可选用的开发语言大体为三种JSP、ASP、PHP而相应的,后台数据库的选用也可分为这样几种SQLServer
2000、Oracl、Mysql、Access由于开发企业级的WEB程序如ERP还不能完全胜任,我们不采用在这里,我们仅对可采用的ASP与JSP进行一下对比ASP技术也是动态网页开发技术JSP和ASP从形式上非常相似,但是深入探究下去会发现它们很多的差别,其中最主要的有以下几点ASP和JSP的工作原理不同,当Web服务器接收到对ASP页面的请求时,它从硬盘或者内存中接受正确的ASP文件,并将这个文件发送给ASP.DLL文件,ASP文件将会从头至尾被解释执行并根据命令要求生成响应的HTML页面送回给浏览器ASP.DLL会针对每个请求产生一个独立的线程JSP由支持它的服务器上的JSP引擎负责解释执行当服务器接收到一个对某JSP页面的请求时,如果这时对该页面创建或修改后的第一次请求,那么JSP引擎就把该JSP页面内容转变成一个纯Java的Servlet,然后将其编译成Servlet字节代码,这个Servlet可以调用其他的Servlet或JavaBeans,最后将Servlet的执行结果输出给浏览器JSP页面被编译成Servlet之后,其执行代码以独立线程的方式一直存在于服务器的内存中以后对该JSP页面提出请求时,不需要重新编译,除非该页面被修改JavaServlet由于在服务器端运行,并且不包括会占用大量系统资源的GUI,因此运行的速度要比JavaApplet和Java独立应用程序快JSP的效率和安全性更高,ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高另外,IIS的漏洞曾使得许多网站源程序大曝光,许多用ASP开发的网站,ASP程序全部被人下载去了,这样多网站的安全性产生了很大的危害JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中;而且我们可以将Bean的JSP原程序删除,只剩下Class文件,网站照样可以运行JSP的组件方式更方便,ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块JSP通过JavaBean实现了同样的功能扩充在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器另外JSP这种基于组件的模式很有效地提高了应用程序的开发效率,因为这种模式能够使开发人员利用快捷的子组件快速创建模板应用程序,然后再整合一些附加功能以后便可使用像这样的由于Java语言的优势而产生的有效的方法在JSP中无处不在,并可将其打包成一个JavaBeans或一个EJB组件JSP的适应平台更广,ASP目前仅适用于NT和IIS虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,而且ActiveX对象必须事先放置于所选择的平台,Unix下的COM实现起来非常困难JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻NT下IIS通过一个插件,例如JRUN,就能支持JSP著名的Web服务器Apache已经能够支持JSP虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的将在实验的JSP网页原封不动地拿到Linux相应的服务器下就运行起来了,感觉非常好JSP是基于JavaServlet以及整个Java体系的Web开发技术
[5],利用这一技术可以建立先进、安全、快速和跨平台的动态网站在传统的网页HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求很低如图
2.2所示,在用户连接JSP网站时,用户请求网页,JSP页面独自响应请求,将用户对网页的请求转化为对数据的请求,通过JavaBean处理请求并将返回的数据封装成HTML页面返回给用户图
2.1系统实现流程图利用JSP编写的程序有许多优势程序写一次,到处可以运行:JSP在设计时,充分考虑到应用平台的无关性依赖于Java的可移植性,JSP得到目前许多流行OS平台的支持,可在Apache、Netscape、IIS等服务器上执行执行速度快JSP页面只需编译一次转化为Java字节代码,其后一直驻留于服务器内存中,加快了对JSP页面的响应速度若不考虑JSP页面第一次编译所花的时间,则JSP的响应速度要比ASP快的多Java的优势JSP技术是用Java语言作为脚本语言的跨平台、成熟、健壮、易扩充的Java技术使得开发人员的工作在其他方面也变得容易和简单在Windows系统被怀疑可能会崩溃时,Java能有效地防止系统崩溃Java语言通过提供防止内存泄漏的方法,在内存管理方面大显身手加之,JSP为应用程序提供了更为健壮的意外事件处理机制更大的发挥了Java的优势因此,我采用JSP来开发该系统后台数据库对比由于Oracl的过于庞大不适合个人开发,所以不选用Oracl,而Access又过于简单,也满足不了开发的需要,因此也不选用它在此,对SQLServer2000和Mysql做个简单的对比首先,MS SQL Server很多功能在目前的MYSQL里面还没有,并且这些功能可以在很大程度上简化编程开发简单的说,选择MS SQL Server,将能得到更多解决问题的办法其次,MS SQL Server的在线帮助以及相关资料都非常丰富,MY SQL的资料就比较少了再次,MYSQL 好多功能没有什么存储过程,如触发器,子查询等等最后,SQL Server功能比MYSQL强大! 一般用的多是php+mysql,主要用于中小型数据库!基于以上原因,最后,我选定用JSP+SQLServer来开发该系统
2.
1.2 技术可行性网上人才招聘系统在基础知识方面用到B/S结构、Java语言、HTML语言、SQL数据库查询语言以及一些测试理论和网络基础知识,前台的WEB页使用JSP开发,后台的数据库使用MicrosoftSQLServer2000,WEB页和数据库之间的联系由JDBC来完成整个系统的运行需要WEB服务器的支持,在这里我使用Tomcat
5.0作本系统服务器B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术经过大学几年的学习,我们都具有一定的专业基础知识,并且,在“学校”这个学术气氛较浓的环境中,我们可以很快的学到新的知识,得到多方面的帮助,产生更多的灵感,所以,综合各方面因素来看,对我们来讲在技术上是可行的
2.
1.3经济可行性对于我们来说,该系统的开发成本是在我们的承受能力之内的首先,我们每人都有一台计算机,所以,此项支出可免去,所有相关的开发软件及开发环境皆可从Internet上下载获得,即使花钱购买,也不过10元左右便可购齐所有软件;而系统开发方面,由于没有其他额外的支出,都是由本人独立完成,所以相对来说费用就相当低廉;而在后期该系统的安装、运行和维护费用由于维护容易、方法简便,也不需要过多的成本,至于相关的开发、维护技术则由自学加上实践来完成,无须其他的培训费用综上所述,该项目的研发是完全能够符合软件开发的经济可行性的
2.
1.4法律可行性在我国目前的法律限定范围内,网上人才招聘系统是可以实施的原因是网上人才招聘系统没有触犯到国家法律禁止的方面,不违反国家的法律、法规网上人才招聘系统不会涉及到侵犯个人隐私方面的问题,我们所收集的关于用户的资料都是基于用户自愿填写的基础上,决非强迫并且我们决不会随意将用户的可用隐私资料向外发布,因此,用户隐私方面不会存在过多问题网上人才招聘系统涉及到的主要是企业招聘信息,人才应聘信息等方面的内容根本不涉及任何国家机密从以上的几方面条件可以确定网上人才招聘系统是符合可行性研究中的法律可行性的,是完全可行的
2.2需求分析
2.
2.1需求获取和问题分析软件需求是用户对目标软件系统在功能、行为、性能、设计约束等方面的期望通过对应用未提及环境的理解与分析,为问题设计的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明文档的过程从资讯和现状中可以看出网络招聘具有无可代替的优势招聘网站都有完备的搜索功能,求职者可快速准确地查找到所需要的信息求职者找到适合自己的职位后,可先查看招聘单位的简介,浏览公司网页,再决定是否发出简历若求职者设置自己要求的条件,如行业、职位、薪水等,招聘网站就会定期向用户输送一些信息,工作就会来找你还有就是费用低廉对于招聘单位来说,通过在招聘网站刊登招聘信息,企业每天都能收到上百份个人简历,这不仅使挑选范围大大增加,提高了招聘员工的质量,还为企业储备了大量的后备人才资源企业通过在网络刊登招聘信息,相比起参加招聘会,节约了人员的开支,还降低了成本,既省力又方便管理但网络招聘还有一些需要改进的地方,如,招聘信息有效性打折扣,个人资料不详实,缺乏与用户的互动式交流,尤其在提供不同用户需求的个性化服务方面力度不够对于人才市场的分析,市场供求倾向、薪资水平、相关人事制度变化等方面的咨询服务还不到位鉴于以上需求,可以看出,网上人才招聘系统应该具有注册、登录、浏览信息、发布信息、修改信息、删除信息、发送邮件等功能;还需要有后台数据库的强大支持在系统的使用中,会涉及到企业用户、个人用户和系统管理员,每种用户都有自己对应的权限
2.
2.2需求描述我们选择的计算机语言是Java语言,采用JSP技术,开发环境用JDK,故在这里我们采用面向对象的分析设计方法开发过程中的用例如图
2.2所示图
2.2网上人才招聘系统用例图在这一阶段,我们形成了初步的用户手册,验收测试计划以便于以后的设计和编码,以及目标软件产品的验收测试
2.
2.3需求评审软件系统中的错误约有15%来源于需求分析为了及时发现并纠正这些错误,必须对需求规格说明书进行评审,尽可能的保证需求分析的正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可跟踪性如果遇到一项不能保证则需求分析重新进行
2.3系统模型
2.
3.1系统结构关系图图
2.3网上人才招聘系统结构图当数据库服务器与Web服务器将整个系统集成发布后,在符合网络各种协议与要求后发布到Internet上,而后无论是企业用户还是个人用户就都可以通过网络来应用该招聘系统
2.
3.2数据结构设计数据库需求分析在网站的运营过程中需要存储大量的用户信息,所以,必须有SQLServer2000的强大支持,在数据库中包含下列信息个人用户信息、企业用户信息、管理员名称和密码、求职信息、招聘信息等等用户从数据库中读取数据传送到浏览器通过建立包含以上信息的表,并定义好表间关系,设计好主键、外键与表间约束,则可实现本系统所有的功能需求数据库概念结构设计下面的是该系统的E-R图图
2.4个人会员部分E-R图在这里,各个实体、实体间的关系以及实体的属性都已经清楚的表现出来第3章过程论述
3.1 总体设计经过需求分析及评审,本人才招聘系统的总体结构已经确定,由“企业”、“个人”以及管理员构成,运行在ApacheTomcat
5.0等Web服务器和SQLServer2000服务器上,分为“注册”、“登录”、“修改”、“发布”、“删除”、“查询”、“邮件发送”以及“管理”几大模块在JSP页面和数据库联接的过程中,要使用JDBC驱动程序JDBCAPI为JAVA开发者使用数据库提供了统一的编程接口,他由一组Java类和接口组成,使得开发人员可以使用纯Java的方式来连接数据库,并进行操作数据服务一个工具类,其中含有一个静态方法,返回一个数据库的连接这样,就没有必要在每个JavaBean或JSP页面中都编写装载数据库驱动的代码,并且,连接数据库的属性改变后,只要修改这个类就可以了达到了对数据库连接统一控制的目的在JSP页面和数据库联接的过程中,要使用JDBC驱动程序JDBCAPI为JAVA开发者使用数据库提供了统一的编程接口,他由一组Java类和接口组成,使得开发人员可以使用纯Java的方式来联接数据库,并进行操作数据库厂商一般都会提供一组API访问数据库有四种类型的数据库驱动程序BC-ODBC桥,部分JAVA、部分本机程序,中间数据访问服务器和纯JAVA驱动程序
3.
1.1模块设计注册如果企业或是个人要发布求职信息,就必须注册成为本网站的会员,此模块专门针对注册而设计修改;此功能必须在用户成功登录后才能使用,主要用于更改注册时填写的信息发布此功能必须在用户成功登录后才能正常使用,用于发布招聘/求职信息,这些信息会显示在前台主页删除此功能必须在用户成功登录后才能使用,用户可以通过此模块删除自己已经发布的各种信息查询此功能必须在用户成功登录后才能使用,个人/企业可以通过此功能查询对方所发布的招聘/求职信息发送邮件如果对某个单位感兴趣,个人用户可以通过此功能象指定的电子邮箱发送求职信管理此模块只有管理员才有权限使用,用来管理企业和个人用户的信息以及超级链接
3.
1.2人机界面设计人机界面的设计过程可以分为以下几步创建系统功能的外部模型本系统包括欢迎界面、主页界面和各种操作对应的界面个人用户、企业用户和管理员都有自己相应的使用平台确定为完成此系统功能人和计算机应分别完成的任务考虑界面设计中的典型问题在界面设计中,主要考虑背景颜色与前景图片的搭配,人员输入信息的合法性等借助一些工具构造界面实现设计模型在这里,我们在MacromediaDreamweaverMX中进行界面的设计和实现,用HTML语言实现主页,如图
3.4所示图
3.4 系统主界面
3.2 数据库设计
3.
2.1系统目标应用网络的优势,开发网上人才招聘系统,方便企业与人才交流,可以使双方都能在了解了彼此情况之后再谈合同,防止盲目签约,从而达到人才合理分配的目的个人与企业能够随时注册账号,登录网站管理并查询信息对查询比较满意的信息,可以随时给对方发送邮件,同时可以支持邮件的群发,免除用户大量重复操作在信息过期之后将不在网页上显示,杜绝垃圾邮件首页中包含本站的友情链接,方便用户浏览其他的网站资源管理员控制台中有对所有用户的各项信息管理,可以随时查看用户的各个信息,监督并防止用户录如非法信息
3.
2.2系统流程图
3.5系统流程图
3.
2.3数据库设计
1.数据库逻辑结构设计通过对E-R图的掌握,我们可以把E-R图转换为关系模型并在数据库中创建我们所需要的表我们先创建一个叫system的数据库,数据库创建完成后,在SQLServer2000[6]的企业管理器中展开system数据库,选中“表”选项,单击鼠标右键,在出现的快捷菜单中选择“新建表”选项在表设计器中,可以按照以下的步骤设计表输入字段名在“列名”列表项中输入字段名在SQLServer中,字段名不允许重复,而且必须符合SQLServer的标识符规范选择适当的数据类型,并设置长度在“允许空”列表项中,重要的字段不允许为空,其他字段可以为空如果不设置不允许空,那么插入记录或修改记录时,将不允许空值出现,否则将出现错误提示在“描述”文本框中,可以输入一些必要的说明在“默认值”文本框中,可以输入一些默认值,以减少输入的工作量以上输入完成后,单击“保存”按钮,将弹出输入表名的对话框表名输入完成后,表就设计成功了本系统主要用到的数据表包括compinfor公司基本信息表,此表主要用于保存注册公司的基本信息,如表
1.1所示表
1.1 compinfor公司基本信息表列名数据类型长度允许空功能描述cidvarchar20否企业注册IDcpwordvarchar50否企业注册密码cnamevarchar50否企业名称emailvarchar20是企业Emailtelepvarchar20是企业电话managevarchar20是经营行业addrvarchar100是企业地址synopsisntext16是简介studinfor学生基本信息表,此表主要用于保存注册个人用户的基本信息,如表
1.2所示表
1.2 studinfor学生基本信息表列名数据类型长度允许空功能描述studidvarchar20否学生注册IDspwordvarchar50是学生注册密码snamevarchar20是学生姓名sageint4是学生年龄ssexbit1是学生性别sbirthdatetime8是学生出生日期schoolvarchar50是学生所在学校majorvarchar50是所学专业levelvarchar20是学历emailvarchar50是学生Emailresumentext13是简历compjob(招聘信息表),此表主要用于保存企业发布的招聘信息资料,如表
1.3所示表
1.3 compjob招聘信息表列名数据类型长度允许空功能描述employidint自动编号4否招聘信息IDcompidvarchar20是企业IDmajorvarchar50是要求专业jobvarchar50是工作名称wagesvarchar50是诚聘薪水ptimedatetime8是招聘时间vtimedatetime8是有效时间othervarchar200是其他要求studjob求职信息表,此表主要用于保存个人用户发布求职信息的资料,如表
1.4所示表
1.4 studjob求职信息表列名数据类型长度允许空功能描述jobidint自动编号4否IDstudidvarchar20是学生IDmajorvarchar50是行业名称jobvarchar50是工作名称wagesvarchar50是所求薪水ptimedatetime8是发布时间vtimedatetime8是有效时间othervarchar200是其他说明frilink友情链接表此表用于保存友情链接信息,如表
1.5所示表
1.5 flink友情链接表列名数据类型长度允许空功能描述idint自动编号4否链接IDlnamevarchar20是友情链接名称laddrvarchar50是友情链接地址adminfor管理员信息表,此表主要用于保存管理员信息,如表
1.6所示表
1.6 adminfor管理员信息表列名数据类型长度允许空功能描述adminidint自动编号4否管理员IDadnamevarchar50是管理员姓名adpwordvarchar50是管理员密码本系统用到的数据表的关系有两个,如表
1.7所示表
1.7 表关系主键表外键表关系名称字段名名称字段名级联更新级联删除stuinforstudidstudjobstudid是是compinforcompidcompjobcompid是是
2.数据库物理结构设计首先创建索引根据数据库的功能,可在数据库设计器中创建三种类型的索引即惟一索引、主键索引和聚集索引惟一索引不允许两行具有相同的索引值如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的惟一索引与表一起保存当新数据将使表中的键值重复时,数据库也拒绝接受此数据数据库表通常有一列或多列组合,其值用来惟一标识表中的每一行该列称为表的主键在数据库关系图中为定义一个主键将自动创建索引,主键索引是惟一索引的特殊类型主键索引要求主键中的每个值是惟一的,当在查询中使用主键索引时,它还允许快速访问数据在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同表只能包含一个聚集索引如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配聚集索引比非聚集索引有更快的数据访问速度再创建表间关系要在表与表之间建立某种行关联时,可通过创建两个表之间的关系完成SQLServer2000专门提供数据库关系图用来完成此功能利用数据库关系图创建表间关系的具体步骤如下在数据库关系图中单击鼠标右键,在弹出的快捷菜单中选择“添加表”菜单项,弹出“添加表”对话框在“添加表”对话框中“表”列表内双击要建立关系的表名,系统会将其添加到数据库关系图中用上面的方法向数据库关系图中添加至少两个表在数据库关系图窗框中择其中一个表,将鼠标移到要建立关系的列,按住鼠标左键将其拖拽到另一个表中要建立关系的列上,然后松开鼠标,这时弹出“创建关系”窗口在“创建关系”窗口中,确认将要创建关系的列显示在“主键表”和“外键表”列表中单击“确定”按钮,关系便创建成功了数据库的实施过程主要进行数据的录入,和外部应用程序连接并运行调试系统的设计约束方面有如下几项环境约束WinMe/NT/2000/XP,局域网服务器ApacheTomcat
5.0等Web服务器,SQLServer服务器硬件要求必须有保证网络连通的设备网络协议TCP/IP操作约束操作简便,界面友好
3.3 模块设计与实现
3.
3.
1.编码原则在编码阶段要遵循一些原则,以提高程序的可修改性、可维护性和可测试性代码易于修改和维护在实现过程中,我注意了数据和操作的分离,这样有利于代码和程序的单独改变例如将各种具体操作都作在JavaBeans里,在JSP页面上只是调用其中方法修改操作时就直接到JavaBeans里,而修改页面就直接到页面,不影响方法的实现代码应易于测试在编码阶段对代码的可测试性进行考虑可以减少测试阶段的工作量例如以条件编译和注释的方法将代码融入源代码中编写详细的程序文档在程序中尽可能多地加入注释,并且使其与程序保持高度一致性编程中采用统一的标准和约定以降低程序的复杂性在编码中我们严格按照一定的编码规范进行,例如在变量的命名上,我按照Java变量的命名规则进行——闻词达意,第二个单词的首字母大写等分离功能独立的代码块形成新的模块将功能独立的代码块独立出来形成新的模块,增加模块的内聚度,有利于代码的重用和可修改性我在系统实现中发现连接数据库的功能是独立的,并且在很多地方都用到它,为了方便连接数据库,我在这里将其封装成一个工具类DBConnect,这样,就没有必要在每个JavaBean或JSP页面中都编写装载数据库驱动的代码了
3.
3.2主要代码A.主页关键代码(index.jsp)从数据库中查找出所有企业的一些相关信息rs=con.getRsSELECTa.employidb.cnameb.majora.joba.wagesFROMcompjobASacompinforASbWHEREa.compid=b.compidandgetdate=vtimeORDERBYptimeDESC;whilers.next{另外界面中还有学生的一些相关信息,代码基本类似,这里不再赘述主页界面如图
3.
4.见13页B.学生注册关键代码(Student/reg.jsp)判断用户输入的数据是否正确ifstudent.getSname.equals||student.getName.equals||student.getPassword.equals||student.getEmail.equals||student.getBirthday.equals{out.printshow.errorBox请添写完整信息!错误信息;return;}else{ifstudent.getSname.compareToz=0||student.getSname.compareTo0=0{out.printshow.errorBox注册用户名不允许为特殊字符和汉字!错误信息;return;}学生注册页面见图
3.6图
3.6学生注册C.用户登陆关键代码学生与企业的单选按钮(index.jsp)inputname=selecttype=radiovalue=studentchecked学生inputtype=radioname=selectvalue=company企业/td在会话中保存用户名等信息(login.jsp)session.setAttributenamestrUserName;session.setAttributeusecompany;D.个人信息管理控制台关键代码左侧部分提供链接(student/left.htm)ahref=reginfo.jsptarget=mainFrame修改个人信息/a/div/td//在mainFrame的窗口转到reginfo.jsp页ahref=../mailtarget=mainFrame发送邮件/a/div/td//在mainFrame的窗口转到上一层目录的mail文件个人信息管理控制台界面见图
3.7图
3.7信息管理E.信息管理关键代码学生修改注册信息(student/reginfo.jsp)从会话获取的当前用户名,根据它从数据库获取其他信息StringstrUserName=Stringsession.getAttributename;ResultSetrs=con.getRsSELECT*FROMstudinforWHEREstudid=+strUserName+;修改注册信息后提交按钮student/mreginfo.jsp接收并验证用户修改后的信息StringstrUserName=Stringsession.getAttributename;student.setBirthdaystr.dbEncodestudent.getBirthday;student.setEmailstr.dbEncodestudent.getEmail;student.setKnowledgestr.dbEncodestudent.getKnowledge;判断用户输入的数据是否完整ifstudent.getName.equals||student.getPassword.equals||student.getEmail.equals||student.getBirthday.equals{out.printshow.errorBox请添写完整信息!错误信息;return;F.发布求职信息代码(student/ajobinfo.jsp)StringstrName=Stringsession.getAttributename;//取出当前在线的用户名intT=data.insertINSERTINTOtb_sjobstudidmajorjobwagesptimevtimeotherVALUES+strName++sjob.getMajor++sjob.getJob++sjob.getWages++time.getYMD++sjob.getAtime++sjob.getOther+;ifintT=0{out.printshow.errorBox发布失败,你可能已经下线请新登录!错误信息;return;}else{out.printscriptalert发布成功!;document.location=login.htm;/script;}G.删除求职信关键代码(student/vjobinfo.jsp)StringstrUserName=Stringsession.getAttributename;ResultSetrs=con.getRsSELECT*FROMstudjobWHEREstudid=+strUserName+;whilers.next{//查询当前用户发送的所有信息H.邮件管理关键代码发送邮件(mail/send.jsp)导入JMail的java包%@pageimport=javax.mail.internet.*%%@pageimport=javax.activation.*%%@pageimport=javax.mail.*%当前用户在线则查询出该用户的EmailifstrUse!=nullstrUse.equalsstudent{strSql=SELECTemailFROMstudinforWHEREstudid=+strUserName+;}elseifstrUse!=nullstrUse.equalscompany{strSql=SELECTemailFROMcompinforWHEREcompid=+strUserName+;I.浏览信息关键代码index.jsp此段用来显示所有求职信息(tdvalign=topfontid=reglt;lt;/fontatarget=_blankhref=view.jspsid=%=rs.getString1%[%=rs.getString2%]毕业于[%=rs.getString3%,%=rs.getString4%,%=rs.getString5%],欲求[%=rs.getString6%]职位,要求薪水[%=rs.getString7%]/anbsp;/td/tr如图
3.8所示图
3.8个人信息显示此段用来显示所有招聘短信息trtdvalign=topfontid=reggt;gt;/fontatarget=_blankhref=view.jspcid=%=rs.getString1%[%=rs.getString2%]主要经营[%=rs.getString3%],招聘[%=rs.getString4%]职位,承诺薪水[%=rs.getString5%]/a/td/tr显示所有友情链接的信息whilers.next{%trtdheight=22divid=link2ahref=%=rs.getString1%target=_blank%=rs.getString2%/a/div/td/trJ.查看用户详细页关键代码(view.jsp)如果是学生则查询出所有关于学生的信息ifstrSid!=null{ResultSetrs=con.getRsSELECT*FROMstudinforASastudjobASbWHEREb.jobid=+strSid.trim+ANDa.studid=b.studid;ifrs.next{把被查看的学生Email保存在会话中trEmail=rs.getString10;session.setAttributeemailstrEmail;out.printstrEmail;如果是企业则查询出所有关于企业的信息elseifstrCid!=null{ResultSetrs=con.getRsSELECT*FROMcompinforASacompjobASbWHEREb.employid+strCid.trim+ANDa.compid=b.compid;ifrs.next{K.后台管理控制中心关键代码登录提交按钮(admin//login.jsp)获取管理员的用户名和密码StringstrName=Stringrequest.getParameteradname;StringstrPassword=Stringrequest.getParameteradpword;验证管理员身份,防止非常登陆(admin/admin.jsp)从会话中获取管理员用户名,如果为空则认为没有登陆,不能做任何操作StringstrUser=Stringsession.getAttributeadmin;ifstrUser==null{out.printshow.errorBox你还没有登录警告信息;return;L.学生信息管理模块关键代码(admin/studeng.jsp)查询出所有学生信息ResultSetrs=con.getRsSELECT*FROMstudinfor;whilers.next{M.友情链接添加提交按钮关键代码(admin/dflink.jsp)过滤用户要向数据库添加的数据IfstrName!=nullstrAddress!=null{IfstrName.equals“”strAddress.equals“”{newShow.errerBox“请添加链接名称与地址””错误信息”;第4章 结果分析软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤测试的目标以较少的用例、时间和人力找出软件中潜在的各种错误和缺陷,以确保系统的质量从测试的类型来看,测试分为2种黑盒测试和白盒测试从测试实际的前后过程来看,软件测试上是由一系列的不同测试所组成,这些软件测试的步骤分为单元测试、组装测试(集成测试)、确认测试和系统测试软件开发的过程是自顶向下的,测试则正好相反,以上这些过程就是自底向上,逐步集成的
4.1 系统测试通过单元测试和集成测试,仅能保证软件开发的功能得以实现但不能确认在实际运行时,它是否满足用户的需要,是否大量存在实际使用条件下会被诱发产生错误的隐患为此,对完成开发的软件必须经过规范的系统测试换个角度说,开发完成的软件仅仅是实际投入使用系统的一个组成部分,需要测试它与系统其他部分配套运行的表现,以保证在系统各部分协调工作的环境下也能正常工作系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段系统测试时,应该参考分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全再现问题空间系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认系统测试需要对被测的软件结合需求分析做仔细的测试分析,从而,建立测试用例
4.2 单元测试传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块沿用单元测试的概念,实际测试类成员方法一些传统的测试方法在面向对象的单元测试中都可以使用如等价类划分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,程序插装法等等单元测试一般情况下由程序员完成用于单元级测试进行的测试分析(提出相应的测试要求)和测试用例,规模和难度等均远小于集成的测试分析和测试用例,而且强调对语句应该有100%的执行代码覆盖率在设计测试用例选择输入数据时,基于以下两个假设
1.如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的其他输入也能正确执行
2.如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行面向对象编程的特性使得对成员函数的测试,又不完全等同于传统的函数或过程测试尤其是继承特性和多态特性,使子类继承或过载的父类成员函数出现了传统测试中未遇见的问题
4.3 集成测试
4.
3.1 集成测试传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的情况下进行而对于面向对象程序,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试所以,面向对象的集成测试通常需要在整个程序编译完成后进行此外,面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒的集成测试面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用面向对象的集成测试可以分成两步进行先进行静态测试,再进行动态测试静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求现在流行的一些测试软件都能提供一种称为可逆性工程的功能,即通过原程序得到类关系图和函数功能调用关系图检测程序结构和实现上是否有缺陷动态测试设计测试用例时,通常需要上述的功能调用结构图、类关系图或者实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,减少测试工作量,使得进行的测试能够达到一定覆盖标准测试所要达到的覆盖标准可以是达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等同时也可以考虑使用现有的一些测试工具来得到程序代码执行的覆盖率
4.
3.2 集成测试策略鉴于本系统使用JSP技术开发这一特点我们采用自顶向下、增量测试方式进行,经过测试系统程序中类和模块达到了设计要求测试中,我们以主登录页面为基础,逐步增加页面(功能),这样,如果发现错误能够很快定位出错的页面,以针对页面重点测试这一策略在JavaBean接口的实现中也有很好的应用
4.4 功能测试经过测试,本系统符合开发要求,能够提供设计所描述的功能,用户注册,用户登录,信息发布,邮件发送信息查询等需求都得到满足
4.7 性能测试本系统的运行性能良好,各项预定指标均能达到要求运行稳定,操作简便总 结本系统具有所要求的基本功能,运行良好我们今后还将对其进行进一步的完善,使它更适应现代化的测试过程当前阶段,该系统已经可以实现它的全部预定功能,有效的解决了人才在求职过程中的复杂、繁琐的程序,轻松的使用本系统在网上方便的的进行查询企业信息、投递简历,发布个人信息等等而企业用户也可以方便的对人才进行臻选和联络本次毕业设计,经过分析、设计、编码、调试以及论文的写作,终于可以告一段落了在这一过程中,我通过查阅大量有关资料、向老师请教、与同学交流经验等方式使自己学到了不少有用的知识,并大大提高了自己的动手能力这次我充分体会到了在创造中探索的艰辛和系统运行成功后的喜悦这次设计使用的开发工具是JDK
1.5,它是为Java语言量身定做的一款集成开发工具,因此在设计中全面体现了对Java语言面向对象特性和网络功能的支持接近两个月的毕业设计过程中,包括需求分析、JSP学习、查阅资料、概要设计、详细设计、编码和调试,我遇到了很多的问题,经过多方面的努力,这些问题已经完全解决,系统每一项功能的完善,特别是每一处错误的改正,都能使我对问题的理解更加深刻在这一过程中不仅拓宽了我的知识面,提高了我的知识水平,而且增加了我在软件开发方面的宝贵经验,培养了自己综合运用所学知识和技能,理论联系实际、独立分析、解决实际问题的能力和与人团结协作的精神为我今后的学习和工作打下了良好的基础作为新一代的大学生,如果仅停留在当前的层面上,是远远跟不上时代的步伐的,也无法立足于充满激烈竞争的当今社会通过毕业设计,也让我看到了自己的差距,今后,我会继续努力,不断提高自己各方面的能力后 记在这里,我要感谢辛勤培育我四年的所有老师,是你们使我从莽撞无知到有所顿悟,从知之甚少到知之甚多,直到成长为具有一定专业技能的合格的大学毕业生在这四年年中,我不仅学到了一定的科学文化知识,更重要的是我学会了如何去自主学习新的知识,如何更好地发展自己四年前,我带着一身稚气走进这所校园,而今,我又带着满腔的志气离开,去寻找更广阔的天地,在这里,我向所有的老师深施一礼——老师,你们辛苦了!最后,谨祝各位老师工作顺利、身体健康!参考文献
[1]BruceEckel.THINKINGINJAVA[M].北京机械工业出版社.2002.9.
[2]郝小花,王柯.基于Java技术的Web信息发布[J].情报科学,20019.32.
[3]曹哲,高诚,车进辉.软件工程[M].北京水利水电出版社,
2004.64-90.
[4]金立群.嵌入式动态网页制作技术ASP,PHP与JSP的比较[J].石家庄职业技术学院学报,2004,2.1-5.
[5]李长林.JSP组建动态网站基础与实例操作[M].北京电子工业出版社,2005.110-122.
[6]萨师煊,王珊.数据库系统概论[M].北京高等教育出版社,2000.205.
[7]赛奎春.信息系统开发实例精选[M].北京机械工业出版社,2005.36.
[8]何玉洁.数据库原理与应用教程[M].北京机械工业出版社,2003.132.
[9]耿祥义,张跃平.JAVA2实用教程(第二版)[M].北京清华大学出版社,2004.312-323.
[10]周影.网络编程语言JSP实例教程.[M].北京电子工业出版社,2003-6.50.
[11]管丽娜,周绪.SQLServer2000[M].北京清华大学出版社,2001.62-74.
[12]SunMierosystemslnc.DevdopingXMLSolutionswithJavaServerPagesTedmdogy[DB/CD].http://java.sun.com.products/jsp/JSPXML.pdf.2000.
[13]刘国玲,姜合.基于JSP的信息传递技术[J].山东轻工业学院学报,2004,1.12
[14]RogersCadenhead,LauraLemay.21天学通Java2专业参考版[M]袁国忠译.北京人民邮电出版社,2004.3-20.
[15]JasonHunter,WilliamCrawford.JavaServlet编程[M].孙鑫,谢茂强译.北京中国电力出版社,2002.43.
[16]冯燕奎,赵德奎.JSP使用案例教程[M].北京清华大学出版社,2004.43-45.图
3.1前台功能结构图图
2.5企业会员部分E-R图应用服务器企业服务器/数据源JavaBean3反应24浏览器JSP11图
3.2后台功能结构图PAGE27。