Java数据库课程设计-招聘人才管理系统

系统展示

登录和注册
在这里插入图片描述
在这里插入图片描述

公司单位的主菜单
图7-3

发布招聘信息功能
图7-4

招聘录用
图7-8

图7-9

职员主界面
图7-12

投递简历
图7-14
图7-15

系统开发

一、设计要求

人才市场管理系统实现对人才市场业务的规范化管理,系统主要管理如下信息,公司用人单位:编号、名称、联系人、电话、招聘人数、学历要求、职称要求、薪资。求职人员:身份证号码、姓名、地址、电话、学历、职称。系统需完成的功能,每个招聘单位可以招聘多名求职人员,每个求职人员只能与一家单位签约;每位求职人员可以给多个单位投递简历,但只能被一家公司录用。系统也应能登记招聘单位和求职人员信息,记录求职人员投递简历情况,登记求职人员签约情况,并能够进行各种需要的查询,统计功能。

此系统需要通过手机号进行注册登录,若是职员注册登录的,需要完善个人信息后,才能投递简历。公司用人单位登录后,可以根据实际情况,发布招聘信息,招聘信息上的所有信息都不能为空,而联系人的手机号必须保证正确。修改招聘信息也同样不能有空白的信息。公司用人单位可以查看系统上的所有的招聘信息,也可以通过关键字查找需要的招聘信息。公司用人单位可以查看职员投递简历的情况,并且统计好发布的每条不同的招聘信息的投递人数,查看某一条招聘信息的投递职员的详细信息,并进行录用。公司用人单位也可以查看招聘录用的情况,并且统计好发布的每条不同的招聘信息的录用人数,查看某一条招聘信息的录用职员的详细信息,也可以进去删除录用的职员。职员个人登录成功后,如果没有完善好个人信息,需完善个人信息,才能投递简历。求职人员可以查看系统上所有的招聘信息,也可以能过关键字查找需要的招聘信息,通过选择合适的招聘信息,进行投递。如果该信息已投递过了,就不能重复投递,若重复投递,会出现提示信息。求职人员可以查看投递简历的情况,也可以删除投递简历的信息。求职人员也可以查看被录用的信息,若未被录用,则会弹出提示。

二、功能分析

根据系统主要业务,可以分析得到公司用人单位子系统和职员个人子系统。
(一)公司用人单位子系统主要的数据处理过程分为对个人帐号信息的处理、对发布招聘信息的处理、对招聘录用职员信息的处理,包括查看个人帐号信息,修改个人帐号信息,修改个人密码,发布招聘信息,删除招聘信息,修改招聘信息,查看招聘信息,查看投递情况,录用投递职员,查看录用情况,删除录用职员。具体处理如下:
查看个人帐号信息:根据登录的帐号,查找数据库里面的信息,将查找成功的帐号信息输出到界面上。
修改个人帐号信息:根据登录的帐号,查找出帐号信息,直接进行修改,修改完成后,传回数据库操作进行保存。
修改个人密码:首先输入旧密码,接着输入修改后的新密码,最后输入再次确认的新密码,若旧密码匹配成功,且前后两次输入的新密码也相同,则修改成功,传回数据库操作进行保存。
发布招聘信息:根据实际情况,发布所需的招聘信息,每一个信息都不能为空,且联系人的手机号必须正确输入。信息输入完成后,提交发布,将信息传回数据库操作进行添加。
删除招聘信息:根据实际情况,选中要删除的招聘信息,进行删除,删除成功后,将信息传回数据库操作进行永久性删除。
修改招聘信息:根据实际情况,选中要删除的招聘信息,将该信息输出到界面上,对旧信息进行修改,同样修改后的招聘信息,不能为空,提交修改后,将信息传回数据库操作进行保存。
查看招聘信息:根据帐号去匹配发布过的招聘信息,将招聘信息输出到界面上。
查看投递情况:根据发布的招聘信息编号来统计一共有多少求职人员,进行投递,将统计好的招聘信息输出到界面上,并且可以查看详细的职员信息。
录用投递职员:根据实际情况,查看特定的招聘信息的详细投递情况,选择合适的职员进行录用,且同一个职员只能录用一次,对于已被其它公司录用的职员,不可以再次录用。录用成功后,需要将数据传回到数据库操作进行保存。
查看录用情况:根据录用的招聘信息的编号来统计一共录用了多少职员,将统计好的招聘信息输出到界面上,并且可以查看详细的职员信息。
删除录用职员:根据实际情况,查看特实的招聘信息的详细录用情况,选择要删除的职员信息进行删除。删除成功后,需要将数据传回到数据库操作进行永久性删除。
(二)职员个人子系统主要的数据处理过程分为对个人信息的处理、对投递简历信息的处理,包括查看个人信息,修改个人信息,修改个人密码,投递简历,查看投递简历,删除投递简历,查看录用信息。具体处理如下:
查看个人信息:根据登录的帐号,查找数据库里面的信息,将查找成功的个人信息输出到界面上。
修改个人信息:根据登录的帐号,查找出个人信息,直接进行修改,修改完成后,传回数据库操作进行保存。
修改个人密码:首先输入旧密码,接着输入修改后的新密码,最后输入再次确认的新密码,若旧密码匹配成功,且前后两次输入的新密码也相同,则修改成功,传回数据库操作进行保存。
投递简历:根据实际情况,选择想要投递的招聘信息,进行投递,同一条招聘信息不能重复投递。投递成功后,需要将数据传回到数据库操作进行保存。
查看投递简历:根据职员投递的招聘信息,对数据库进行查找,将职员投递过的招聘信息全部输出到界面上。
删除投递简历:根据实际情况,输出职员投递的全部招聘信息,选择需要删除的招聘信息进行删除,删除成功后,需要将数据传回到数据库操作进行永久性删除。
查看录用信息:根据实际情况,若职员投递的简历,被公司用人单位录用后,将被录用的招聘信息输出到界面上。若没有被录用,则输出提示。

三、系统E-R图分析

在这里插入图片描述
账号实体属性图

在这里插入图片描述
公司用人单位实体属性图

在这里插入图片描述
招聘信息实体属性图

在这里插入图片描述
公司子系统实体联系图

在这里插入图片描述
职员实体属性图

在这里插入图片描述
职员个人子系统实体联系图

在这里插入图片描述
人才市场管理系统总体E-R图

关系数据模式
帐号(编号,姓名,手机号,密码,权限)
此为帐号实体对应的关系模式。该关系模式已包含了联系“公司”和“职员”所对应的关系模式。权限是关系的侯选码。

公司(编号,姓名,手机号,密码)
此为公司实体对应的关系模式。该关系模式已包含了联系“招聘信息”所对应的关系模式。手机号就是关系的外键。

职员(编号,手机号,密码,姓名,身份证号,地址,电话,学历,职称)
此为职员实体对应的关系模式。该关系模式已包含了联系“招聘信息”所对应的关系模式。编号就是关系的侯选码。

招聘信息(编号,手机号,名称,联系人,电话,招聘人数,学历要求,职称要求,薪资)
此为招聘信息实体对应的关系模式。该关系模式已包含了联系“公司”和“职员”所对应的关系模式。编号就是关系侯选码。

数据库表的设计
账号表
字段名 类型 特殊属性

字段名类型特殊属性
账号编号Int主键自增
姓名Varchar(10)Not null
手机号Varchar(11)外键
密码Varchar(16)Not null
权限IntNot null

招聘信息表

字段名类型特殊属性
编号Int主键自增
手机号Varchar(11)Not null
姓名Varchar(20)Not null
联系人Varchar(10)Not null
电话Varchar(11)Not null
招聘人数Varchar(10)Not null
学历Varchar(10)Not null
职称要求Varchar(200)Not null
薪资Varchar(10)Not null

职员表

字段名类型特殊属性
编号Int主键自增
手机号Varchar(11)Not null
身份证号Varchar(18)
姓名Varchar(20)Not null
地址Varchar(20)
电话Varchar(11)
学历Varchar(20)
职称Varchar(20)

投递简历表

字段名类型特殊属性
编号Int主键自增
招聘信息编号IntNot null
职员编号IntNot null

录用职员表

字段名类型特殊属性
编号Int主键自增
招聘信息编号IntNot null
职员编号IntNot null

系统程序流程图

在这里插入图片描述

四、业务代码的编写

开发工具:eclipse、数据库mysql5.7

源代码程序详细设计

public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/jobs";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
static {
	try {
		Class.forName(DRIVER);
	}catch(ClassNotFoundException e) {
		e.printStackTrace();
	}
}
………
try {
	conn = (Connection) DriverManager.getConnection(URL,USERNAME,PASSWORD);
}catch(SQLException e) {
	e.printStackTrace();
}
………
try {
	if(rs != null) rs.close();
	if(ps != null) ps.close();
	if(conn != null) conn.close();
}catch (Exception e) {
	e.printStackTrace();
}
………

1、 该代码是用于连接访问MySQL数据库的,用静态代码块来编写,每次运行时,首先会加载此代码。而且将此代码封装成为一个静态类,每次连接释放时,都可以通过类名来调用此方法。

public void setSearchText(String SearchText) {
	this.SearchTexts=SearchText;
	this.companyPageNo = 1;
	this.companyTotalCount = (int)companyDao.getCompanyTotal(SearchText);
	if(companyTotalCount%companyPageSize == 0) {
		companyTotalPage = companyTotalCount/companyPageSize;
	}else {
		companyTotalPage = companyTotalCount/companyPageSize+1;
	}
}
public CompanyPageModel(int companyPageSize) {
	this.companyPageNo = 1;
	this.companyPageSize = companyPageSize;
	this.companyTotalCount = (int)companyDao.getCompanyTotal("");
	if(companyTotalCount%companyPageSize == 0) {
		companyTotalPage = companyTotalCount/companyPageSize;
	}else {
		companyTotalPage = companyTotalCount/companyPageSize+1;
	}
}

2、 该代码是用于关键字搜索和页面的展示,根据不同情况统计页数和展示搜索到的数据信息。初始化时,将关键字搜索内容设置为空,统计全部的招聘信息的数据。并且设置首页为第一页。

if(companyPageModel.getSearchText()!=null && !companyPageModel.getSearchText().equals("")) {
String sql = "select companyNumber,companyName,companyPerson,companyPhone,companyCount,companyLearn,companyRequest,companyMoney from companyTable where companyName like ? or companyRequest like ? limit ?,? ";
	ps = (PreparedStatement) conn.prepareStatement(sql);
	ps.setString(1, "%"+companyPageModel.getSearchText()+"%");
	ps.setInt(3, (companyPageModel.getCompanyPageNo()-1)*companyPageModel.getCompanyPageSize());
}else {
	String sql = "select companyNumber,companyName,companyPerson,companyPhone,companyCount,companyLearn,companyRequest,companyMoney from companyTable limit ?,? ";
	ps = (PreparedStatement) conn.prepareStatement(sql);
	ps.setInt(1, (companyPageModel.getCompanyPageNo()-1)*companyPageModel.getCompanyPageSize());
	ps.setInt(2, companyPageModel.getCompanyPageSize());
}
rs = ps.executeQuery();
if(!rs.wasNull()) {
	companys =new ArrayList<Company>();
}
while(rs.next()) {
	Company company = new Company();
	company.setCompanyNumber(rs.getInt("companyNumber"));
	company.setCompanyName(rs.getString("companyName"));
	company.setCompanyPerson(rs.getString("companyPerson"));
………
	company.setCompanyRequest(rs.getString("companyRequest"));
	company.setCompanyMoney(rs.getString("companyMoney"));
	companys.add(company);
}	

3、该代码是用于分情况查询招聘信息,如果关键字的信息为空,则查询全部的招聘信息,否则按关键字的内容查询招聘信息,并且将查询到的招聘信息添加到招聘信息集合类中。

五、系统功能使用说明

人才市场管理系统主界面上有登录和注册的功能(如图7-1和图7-2),可以选择不同类别进行登录和注册。登录和注册的帐号为手机号,且一个手机号只能注册一个帐号。

在这里插入图片描述
图7-1
在这里插入图片描述
图7-2

公司单位主界面可以查看本系统上全部的招聘信息,而且可以通过关键字查询所需要的招聘信息(如图7-3)。左边为公司单位的主菜单,可以根据需求使用不同的功能。
在这里插入图片描述
图7-3

公司单位发布招聘信息功能(如图7-4),必须根据需求填写相应的内容,而且全部的内容都不能为空,手机号也必须为11位数,否则发布招聘信息失败。提供重置全部输入框的内容。公司单位可以查看自己发布的全部招聘信息(如图7-5),左边为二级菜单栏,提供对已发布招聘信息的相关操作。删除已发布的招聘信息,首先选中要删除的招聘信息,点击删除招聘按钮,会弹出提示是否要删除选中的信息,确认则可以删除招聘信息(如图7-6)。修改已发布的招聘信息,首先选中要修改的招聘信息,点击修改招聘按钮,会弹出一个界面,该界面会将旧信息输出,则可以在旧信息上进行修改,也可以重置全部的信息(如图7-7)。
在这里插入图片描述
图7-4

在这里插入图片描述
图7-5

在这里插入图片描述
图7-6

在这里插入图片描述
图7-7

公司单位的招聘录用功能,点击查看全部招聘信息的投递情况,选中某一条招聘信息,点击查看详情,则会进入到投递简历的全部职员的信息界面,选中某一职员,点击录用,则可以进行录用操作(如图7-8)。若该职员已被录取,则不能重复录用,会弹出警告,请勿再次录用(如图7-9)。若该职员已被其它公司录用,则不能重复录用,会弹出警告,该职员已被其它公司录用(如图7-10)。
在这里插入图片描述
图7-8

在这里插入图片描述
图7-9

在这里插入图片描述
图7-10

公司单位的查看录用情况功能,点击查看全部的招聘信息的录用情况,选中某一条招聘信息,点击查看详情,则会进入到录用该招聘信息的全部职员的信息界面,选中某一职员,也可以进行删除录用信息的功能,点击删除,会弹出提示,是否要删除选中的信息(如图7-11)。
在这里插入图片描述
图7-11

职员主界面可以查看本系统上全部的招聘信息,而且可以通过关键字查询所需要的招聘信息(如图7-12)。左边为职员的主菜单,可以根据需求使用不同的功能。
在这里插入图片描述
图7-12

职员查看和修改个人信息的功能,点击个人信息的按钮,会弹出一个界面,该界面会将该职员的全部信息输出。若该职员的个人信息未完善,则会弹出提醒,必须完善个人信息才能投递简历。在该界面上也可以对个人信息进行修改,对旧信息也提供了重置功能,对个人信息进行重新设置(如图7-13)。
在这里插入图片描述
图7-13

职员投递简历的功能,职员可以对系统上的任何一条招聘信息进行投递,也可以按关键字搜索需要的招聘信息进行投递,选中要投递的招聘信息,再点击投递简历按钮,则会弹出提示,是否要投递选中的招聘信息,确实则完成了投递简历(如图7-14)。若该招聘信息已进行过投递,则会弹出警告,该招聘信息已投递,请勿再次投递(如图7-15)。
在这里插入图片描述
图7-14

在这里插入图片描述
图7-15

职员查看投递简历的功能,点击查看投递按钮,会弹出一个界面,将全部投递过的招聘信息输出(如图7-16)。在该界面上也可以进行删除已投递过的简历信息,选中要删除的招聘信息,点击删除,即可删除掉已投递过的简历(如图7-17)。

在这里插入图片描述
图7-16

在这里插入图片描述
图7-17

职员查看招聘录用功能,如果该职员投递的简历已被录取,则点击查看录用按钮,会弹出一个界面,将录用的招聘信息输出(如图7-18)。若该职员尚未被录用,则会弹出提示,尚未被录用,请耐心等待。
在这里插入图片描述
图7-18

六、收获、体会和建议

本次课程设计围绕数据库相关设计展开。在设计过程中,首先复习了数据库设计流程和 相关内容,通过构建实体关系图辅助完成关系表的设计,并通过范式理论中进一步优化相关 数据。随后了解了数据库设计工具的使用,相关辅助设计工具的使用可以减少设计时的重复劳动,将更多精力关注在业务逻辑和设计上。在对数据库进行设计的过程中,结构比较简单,不能够应对是否能复杂的情况,只能对简单信息进行操作。另外,在安全性方面做得也不够完善,主要原因在于设计的重点是功能的正常执行,而不是在每一个细节做到完美。因此,这个数据库系统需要我在以后的学习去完成每一个细节。

完整代码下载!!!

资源下载路径一

!!!

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐