资源描述
目 录 需求分析1 概述2 课题分析2 实现功能步骤3 运行环境3 概要设计3 系统详细设计8 首页设计8 企业招聘注册的页面设计13 个人发布求职信息页面设计14 管理员页面设计18 招聘企业登录界面设计20 发布招聘信息管理22 邮件管理23 浏览求职者的简历的界面24 调试分析25结 论30参考文献31需求分析系统需求分析用JSP及后台SQLSERVER2000数据库开发系统管理系统基于B/S模式,系统软件和数据集中存放于服务器中。所有的工作基于浏览器,安装,使用,修改十分简单。性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行。系统处理的准确性和及时性是系统的必要性能。由于本系统的添加功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,其准确性和及时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。对性能的规定1)精度:查询时应保证查询率,所有在相应域中包含查询关键字的记录都应能查到,同时保证准确率。2)时间特性要求:一般操作的响应时间应在12秒内。 3)适应性:满足运行环境在允许操作系统之间的安全转换和与其它应用软件的独立运行要求。4)灵活性:在需求发生变化时,本系统的对这些变化的适应能力相对而言是比较强的,包括操作方式的变化;运行环境的变化;同其他软件的接口的变化;精度和有效时限的变化。技术可行性 技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本系统用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。运行可行性运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。当前信息化技术已经相当普及,各类操作人员水平都有相当的高度,所以在运行上是可行性的。采用流行的JSP+SQLSERVER2000体系,已无技术上的问题。功能需求分析1.求职者的主要功能模块包括:求职者注册与登陆,求职者信息的添加修改和删除,查询招聘信息投递简历2.企业的主要功能模块包括:企业注册与登陆,发布招聘信息,查看求职信息发布录用信息3.系统管理员的主要功能模块:求职者信息管理,企业信息管理4.求职招聘网站首页:对网站的各个页面进行简单的介绍;5.招聘岗位介绍:对岗位进行介绍;根据以上分析,网页为静态网页,大约为5个页面,采用DREAMWARE编辑网页,插入表格和图片即可。1.1 概述Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。本程序所使用的Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。以下就给出这次课题设计的题目: 网上招聘系统。1.2 课题分析本网站的主要目的就是让人才招聘网络化,使人才招聘变得更加容易,从而提高招聘人才的效率,降低招聘人才的成本。人才招聘管理信息网站的建立主要分为四部分。第一部分是人才招聘管理信息网站的主页面,包括个人求职登录、企业招聘登录、个人求职注册。第二部分是企业招聘登录和企业信息修改,招聘企业登录功能包括修改企业基本的信息,发布企业招聘的信息,删除招聘信息,浏览求职者简历,发送短消息等。第三部分是个人求职、注册个人登录以及个人信息修改,注册包括填写一些个人相关信息等。个人登录后的页面包括修改个人基本信息,发布求职信息,删除求职信息,根据索引条件浏览相应多的职位,发送简历等。具体的组成描述如下:1.企业登录企业登录包括企业登录、企业基本信息修改、发布招聘信息、修改招聘信息、发送短消息、退出企业招聘网站。2.个人登录个人登录包括求职信息查看、求职信息修改、发布求职者信息、密码修改和找回、浏览招聘职位、发送简历和短消息、退出个人求职网站。3.管理员登录管理员登录包括个人信息管理、单位信息管理、求职信息管理、招聘信息管理、退出求职系统。1.3 实现功能步骤 程序开始后会出现首页,要先进行注册,注册分企业注册和求职者注册,注册后企业可以发布招聘信息和修改企业信息,可以修改或删除招聘信息,求职者能发布求职信息和修改个人信息,可以修改和删除求职信息,求职者可以选择适当招聘信息投递简历,系统管理员的主要功能模块是求职者信息管理和企业信息管理。1.4 运行环境系统软件:Window XP语言选择:Java SE(Java Platform,Standard Edition)工具软件:MyEclipse 8.x二概要设计系统主要框架人才招聘管理信息系统的建立主要包括两个方面:个人求职和企业招聘。以下给出这两个方面的关系图。欢迎界面用户注册主 页用户登录管理员登录信息显示企业注册个人注册企业登录个人登录发布求职信息 修改个人信息删除个人信息发布招聘信 息修改企业信息删除招聘信息个人信息管理单位信息管理招聘信息管理求职信息管理链接管理 系统主要框架个人求职的模块图个人求职中包括个人信息的填写、个人信息的发布和浏览相关职位等。具体的模块图如图所示。个 人 登 录发布求职信息 删除求职信息修改个人信息发送邮件个人求职模块图企业招聘模块图企业招聘环节中包括企业基本信息填写、发布招聘信息和浏览求职者简历等。具体模块图如图所示。企业 登 录发布招聘信息 删除招聘信息修改企业信息发送邮件企业招聘模块图主要数据库表系统数据库设计了5个表,分别是个人求职信息表(tb_sjob)、企业信息表(tb_company)、用户信息表(tb_student)、企业发布招聘信息表(tb_cjob)、管理员用户表(tb_admin)。如表所示。 个人求职信息表(tb_sjob)字段名称字段类型大小说明jobidint4注册号snamevarchar20注册名specialtyvarchar50专业jobvarchar50工作emolumentvarchar50工资ptimedatetime8注册时间atimedatetime8截至时间othervarchar200其他 企业信息表(tb_company)字段名称字段类型大小说明cnamevarchar20注册名passwordvarchar50密码namevarchar50公司名emailvarchar50电子邮件telvarchar20联系电话managevarchar20从事行业addressvarchar100地址resumentext16企业简历用户信息表(tb_student)字段名称字段类型大小说明snamevarchar20用户名passwordvarchar50密码namevarchar20真实姓名ageint4年龄sexbit1性别birthdaydatetime8出生日期schoolvarchar50毕业学校specialtyvarchar50所学专业knowledgevarchar20最高学历emailvarchar50电子邮件resumentext16个人简历企业发布招聘信息表(tb_cjob)字段名称字段类型大小说明jobidint4IDcnamevarchar20用户名specialtyvarchar50所属行业jobvarchar50招聘职位emolumentvarchar50诚聘薪水ptimedatetime8有效时间atimedatetime8发布时间othervarchar200其他说明管理员用户表(tb_admin)字段名称字段类型大小说明Idint4IDadminvarchar50管理员用户名passwordvarchar50管理员密码系统详细设计一、首页设计主要有网站的标题、用户和企业注册和登录的一些选择,本系统的首页做的比较简单明了。用户可以在首页中根据自己的用户类型来选择自己的登录模式,如个人求职登录、企业招聘登录、系统管理员登录。没有注册的用户可以先按自己的类型进行注册帐号。具体如图所示:下面是主页中用户登录帐号时需要连接数据库的核心代码:public class Conn private static Connection con; private Statement stmt;private ResultSet rs; private static final String drivername=sun.jdbc.odbc.JdbcOdbcDriver; private static final String url = jdbc:odbc:SQL;求职者注册页面如图所示:下面是求职者注册页面的成员变量:private String sname; private String password; private String name; private int age; private int sex; private String resume;private String school; private String specialty; private String knowledge; private String email; private String birthday;相关的类函数例如以下一个重要函数: public String getSname() return sname; public void setSname(String sname) this.sname = sname; public String getPassword() return password; public void setPassword(String password) this.password = password; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public int getSex() return sex; public void setSex(int sex) this.sex = sex; public String getBirthday() return birthday; public void setBirthday(String birthday) this.birthday = birthday; public String getSchool() return school; public void setSchool(String school) this.school = school; public String getSpecialty() return specialty; public void setSpecialty(String specialty) this.specialty = specialty; public String getKnowledge() return knowledge; public void setKnowledge(String knowledge) this.knowledge = knowledge; public String getEmail() return email; public void setEmail(String email) this.email = email; public String getResume() return resume; public void setResume(String resume) this.resume = resume;企业招聘注册的页面设计企业招聘页面设计包括用户名,密码,密码确认,企业名称,联系电话,什么行业,企业地址和企业相关情况的介绍。其中用户名,密码要求不能用特殊字符。具体的如图所示:企业注册管理界面的核心JAVA的类变量为:public class Company private String cname; private String password; private String name; private String email; private String tel; private String manage; private String address;个人发布求职信息页面设计此页面主要的功能是通过浏览器左边的不同目录来选择功能,简单明了,利于操作。其中包括基本信息管理,修改个人信息(包括求职信息的发布和删除功能),邮件管理(发送求职信息邮件)和求职信息管理(删除求职信息和增加求职信息)。个人发布求职信息页面中点击修改基本信息时会连接到修改基本信息页面,这个功能的实现是调用了Student目录下的reg.jsp来完成的。发布求职信息按钮是调用mreginfo.jsp来实现的。删除求职信息按钮是调用djobinfo.jsp实现的。具体的如图所示:其中修改基本信息发布求职信息的界面如图所示:该页面中包括了一些注册信息的修改。例如真实姓名、性别、出生日期、毕业学校、最高学历、所学专业、电子邮件、个人简历等信息。实现修改基本信息页面的核心代码是:ShowErrorBox show=new ShowErrorBox();DealString str=new DealString();String strUserName=(String)session.getAttribute(usercode);if(JobSeeker.getStruename().equals()|JobSeeker.getEmail().equals()|JobSeeker.getBirthday().equals()out.print(show.errorBox(请添写完整信息!,错误信息);return;elseDataBaseConn dbc=new DataBaseConn(); try java.sql.Statement st=dbc.getStmt(); String sql=UPDATE t_jobSeeker SET trueName=+JobSeeker.getStruename()+,+ email=+JobSeeker.getEmail()+,+ age=+JobSeeker.getAge()+,+ sex=+JobSeeker.getSex()+,+ resume=+JobSeeker.getResume()+,+ knowledge=+JobSeeker.getKnowledge()+,+ school=+JobSeeker.getSchool()+,+ specialty=+JobSeeker.getSpecialty()+,+ birthday=+JobSeeker.getBirthday()+ WHERE ausername=+strUserName+; out.print(sql); st.executeUpdate(sql); out.print(alert(修改成功!);document.location=login.htm;); return; catch(Exception e) out.print(show.errorBox(修改失败,数据库错误!,错误信息);其中发布求职信息界面如图所示,实现求职信息发布界面的核心代码为:DataBaseOperation data=new DataBaseOperation();DealTime time=new DealTime();ShowErrorBox show=new ShowErrorBox();DealString str=new DealString();int intT=0;String strName=(String)session.getAttribute(usercode); intT=data.insert(INSERT INTO t_applyJob(ausername,specialty, + jobname,salary,ptime,atime,other) VALUES(+strName+,+ str.toChinese(applyJob.getSpecialty()+,+ str.toChinese(applyJob.getJobName()+,+ str.toChinese(applyJob.getSalary()+,+time.getYMD()+,+ applyJob.getAtime()+,+str.toChinese(applyJob.getOther()+); if(intT=0) out.print(show.errorBox(发布失败,你可能已经下线请新登录!,错误信息); elseout.print(alert(发布成功!);document.location=index.htm;);管理员页面设计管理员页面设计主要包括有求职管理,招聘管理,其他。其中求职管理还包括有求职者管理和求职广告管理。招聘管理包括有招聘公司管理和招聘广告,如图所示:管理员页面的核心功能包括求职管理、求职者广告管理、公司管理、招聘广告管理和退出该页面等功能。其中具体的功能页面如下: 浏览职位管理的界面如图所示:招聘企业登录界面设计发布招聘信息管理此页面属于招聘企业发布招聘信息的页面,功能是注册的企业可以在这里发布企业所需要的人才信息和多应聘人才的要求等。具体的情况如图所示:企业发布招聘信息界面的核心代码和个人发布求职信息界面的核心代码相似,所以这里就不在给出核心代码了。 邮件管理此界面的主要用途为招聘的企业给适合的应聘者者回复邮件,并通知一些相关事宜。此设计方便了招聘企业和应聘者之间的沟通。其中包括有发信人的邮箱,同时为了方便给多个人同时一起发邮件,还多设计了几个收件人的邮箱地址填写空。大体上邮件管理的界面和普通的邮箱界面设计相似。具体的界面形式如图所示:其中具体实现发送邮件核心代码为:DataBaseOperation data=new DataBaseOperation();ShowErrorBox show=new ShowErrorBox();DataBaseConn con=new DataBaseConn();boolean blnError=true;boolean isSent=false;String strFrom =request.getParameter(sfrom);String pass =request.getParameter(pass);InternetAddress address = null;String strMailserver = ;String arrstrTo=request.getParameterValues(from);String strSubject = request.getParameter(subject);String strMessage = request.getParameter(message);String attachFile =request.getParameter(file);String smtpserver = request.getParameter(smtpserver);if(arrstrTo.length0) int intI=0; for(intI=0;intIarrstrTo.length;intI+) if(!arrstrTointI.equals() try String mailbody = + +strMessage+; sendMail themail = new sendMail(smtpserver); themail.setNeedAuth(true); if(themail.setSubject(strSubject) = false) return; /以上设置邮件主题 if(themail.setBody(mailbody) = false) return; /以上设置邮件内容 if(themail.setTo(arrstrTointI) = false) return; /以上指定收件人 if(themail.setFrom(strFrom) = false) return; /以上指定收件人 if(themail.addFileAffix(attachFile) = false) return; /以上完成附件添加 String user=; if(strFrom.indexOf()0) user=strFrom.substring(0, strFrom.indexOf(); themail.setNamePass(user,pass); /以上完成 smtp服务器验证 /下面完成邮件发送 if(themail.sendout() = false) blnError=true; else out.print(邮件已顺利传送到+arrstrTointI+ );blnError=false;isSent=true; catch (Exception e) if(blnError) out.print(show.errorBox(e.getMessage(),发送失败); blnError=false; e.printStackTrace();else out.print(show.errorBox(请添写完整信息!,错误信息);if(isSent) out.print(show.errorBox(邮件发送成功!,发送信息);else if(blnError&!isSent) out.print(show.errorBox(邮件发送失败!,发送信息);浏览求职者的简历的界面 此页的功能是是招聘企业对收到的应聘者的简历进行筛选,找出符合招聘岗位的那些应聘者的简历。该界面设计的简单明了,优点是很清楚就能看出应聘者的条件是否符合。具体界面的形式如图所示:测试结果运行程序。然后弹出一个窗口如上图。企业注册:求职者注册:企业信息管理求职者信息管理:管理员管理信息:结 论历时两个星期的设计和开发,特别是在收集资料的过程中,一些来自资料中的数据,使我对目前中国网络化和招聘行业的前景以及今后的产业化发展有了更宏观的看法,这也更加说明此次的课程设计是充分且必要的。在设计和撰写文档的过程中,充分学习市场的招聘网站简洁高效的风格。Tomcat6.0提供了简洁高效的服务,但在数据库的选择上Microsoft SQL Server 2005仍然需要好的操作。运用JSP技术,后台采用Microsoft SQL Server 2005数据库连接的方式,实现了用户浏览、发布招聘信息、邮件发送和简历浏览等功能,管理员后台管理和维护功能,使用户方便进行个人求职和企业招聘的功能。但是由于课程设计时间较短和个人能力的有限,所以该系统还存在一些问题尚未解决。这些都是在做开发时做的不够的地方,以后我将尽量注意相关问题,争取做得更好。参考文献1 耿祥义. JSP基础教程. 北京:清华大学出版社. 20042 冯燕奎. JSP实用案例教程. 北京:清华大学出版社.20043 刘志成. JSP程序设计案例教程. 北京:清华大学出版社.20074 JSP开发实例完全剖析M.中国电力出版社,2006. 5 耿祥义. JSP基础教程. 北京:清华大学出版社. 20046 郑阿奇主编SQL Server实用教程M北京:电子工业出版社2005:7 (2) 7(美)John Kauffman/ Thiru Thangarathinam著/数据库入门经典(第4版).M清华大学出版社 .8 RussBasiura,Mike Batonghacal. JDSP高级编程M北京:清华大学出版社20049 Narcisio Tumushabe,TAN Guan一zheng,An overview of a authentication Security Features in JSPJ,Journal of Shenyang University of Technology,2003.10 Zalech,2.EssentialJSPJ. Distributed Systems online,IEEE.2004,5(12)Volumes,Issue12:3一3.11 Cnnic中国互联网络发展状况25次统计报告 CNNIC中国互联网络信息中心 2010.1附录1.Conn.javapackage com.bwm.db;import java.sql.*;/* *class explain:Database connection *set up name:crazyadept *set up time:11/22/2004 */public class Conn private static Connection con; private Statement stmt; private ResultSet rs; / private static final String drivername =com.microsoft.jdbc.sqlserver.SQLServerDriver; /private static final String url = jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=db_Job;user=;password=; private static final String drivername=sun.jdbc.odbc.JdbcOdbcDriver; private static final String url = jdbc:odbc:SQL; /* *method explain: Get Connection DataBase *modify time:12/20/2004 */ public static synchronized Connection getCon() throws Exception try Class.forName(drivername); con = DriverManager.getConnection(url,); return con; catch (SQLException e) System.err.println(e.getMessage(); throw e; /* *output parameter:in order select in SQL *modify time:12/20/2004 */ public Statement getStmtread() try con = getCon(); stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); return stmt; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); return null; /* *output parameter: Data *input parameter: SQL select sentence *modify time: 11/29/2004 */ public ResultSet getRs(String sql) try stmt = getStmtread(); rs = stmt.executeQuery(sql); return rs; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); return null; /* *output parameter: not in order select in str SQL *modify time: 11/29/2004 */ public Statement getStmt() try con = getCon(); stmt = con.createStatement(); return stmt; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); return null; /* *method explain: Close DataBase Connection *modify time: 11/29/2004 */ public synchronized void close() try if (rs != null) rs.close(); rs = null; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); try if (stmt != null) stmt.close(); stmt = null; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); try if (con != null) con.close(); con = null; catch (Exception e) System.err.println(e.getMessage(); e.printStackTrace(); 2. Data.javapackage com.bwm.db;import java.sql.*;/* *class explain:DM *set up name:crazyadept *set up time:11/29/2004 */public class Data private Conn con = new Conn(); private Statement stmt; private ResultSet rs; /* *input parameter: DataBase table name *output parameter: count = -2 ;Exception * count = -1 ;Error *count = 0 ;Nothing *count 0 ;Right *modify time:11/29/2004 */ public int getRowCount(String strSql) int intCount = 0; try stmt = con.getStmtread(); rs = stmt.executeQuery(SELECT COUNT(*) FROM + strSql); if (rs.next() intCount = rs.getInt(1); else intCount = -1; catch (Exception e) intCount = -2; System.err.println(e.getMessage(); e.printStackTrace(); finally con.close(); return intCount; /* *input parameter:insert SQL *output parameter:count = -2 Exception *count = 0 nothing *count 1 right *modify time:11/29/2004 */ public int insert(String sql) int count = 0; stmt = con.getStmt(); try count = stmt.executeUpdate(sql); catch (Exception e) count = -2; System.err.println(e.getMessage(); e.printStackTrace(); finally con.close(); return count; /* *input parameter:update SQL *output parameter:count = -2 Exception *count = 0 nothing *count 1 right *modify time:11/29/2004 */ public int update(String sql) int count = 0; stmt = con.getStmt(); try count = stmt.executeUpdate(sql); catch (Exception e) count = -2; System.err.println(e.getMessage(); e.printStackTrace(); finally con.close(); return count; /* *input parameter:delete SQL *output parameter:count = -2 Exception *count = 0 nothing *count 1 right *modify time:11/29/2004 */ public int delete(String sql) int count = 0; stmt = con.getStmt(); try count = stmt.executeUpdate(sql); catch (Exception e) count = -2; System.err.println(e.getMessage(); e.printStackTrace(); finally con.close(); return count; 3. Show.javapackage com.bwm.page;/* *class explain:Strin
展开阅读全文