大型数据库应用-人事管理系统设计
来源:自考 发布时间:2020-11-17 点击:
湖南工业大学
课程设计任务书 2015
—2016
学年第 一 学期
计算机与通信
学院(系、部)
计算机科学与技术
专业
1202
班级 课程名称:
大型数据库应用
设计题目:
人事管理系统
完成期限:自
2015
年
12
月
21
日至
2015
年
12
月
27 日共
1
周
内 容 及 任 务
一、 设计的主要技术参数 Oracle 数据库,JSP,JavaScript, Servlet,JDBC,Java 二、 设计任务 主要实现对公司内部的人事管理,添加员工,删除员工,查询员工,设定主管,评价员工。员工登陆后可以查看自己的主管,修改自己的信息,主管登陆后可以发布工作任务,修改自己的信息,经理登陆后可以任命主管。
三、设计工作量 数据的建模; 数据库中表的设计; 触发器和存储过程的设计; JDBC 连接 Oracle 数据库 前台数据逻辑的设计; 前台界面的设计;
进 度 安 排 起止日期 工作内容 2014.12.1~2014.12.2 系统的规划 2014.12.3~2014.12.4 数据库的设计和建模 2014.12.5~2014.12.6 系统的概要设计以及系统前台的设计,编码与测试 2014.12.7~2014.12.7 系统文档的整理 主 要 参 考 资 料 《Oracle 数据库应用》 电子出版社出版 《Oracle11g 从入门到精通》钱慎一 (编者), 张素智 (编者) 《Oracle Database 9i/10g/11g 编程艺术:深入数据库体系结构(第 2 版)》~ 凯特(Thomas Kyte) (作者), 苏金国(译者), 王小振 (译者), 等 (译者)
指 导 教 师 (签字):
年
月
日 系 ( 教 研 室 )
主 任 ( 签字):
年
月
日
0 人事管理系统
一、
课题的介绍和课题的任务
人事管理系统主要实现对公司内部的人事管理,添加员工,删除员工,查询员工,设定主管,评价员工。员工登陆后可以查看自己的主管,修改自己的信息,主管登陆后可以发布工作任务,修改自己的信息,经理登陆后可以任命主管。
二、 课程 设计的要求 1、普通员工:员工可以查看所有自己的信息,包括自己的主管是谁。能接受主管发布的工作任务。
2、主管:主管可以查看自己的员工信息,还能查看自己的信息,能发布工作任务,让员工完成。
3、人事经理:修改员工的信息,任命员工为主管,可以删除主管,员工,也可添加员工,还能对员工进行评价。还能添加公司,成立团队。
4、登陆身份验证:登陆时,按身份登陆,由单选按钮实现,用户选择自己的身份,输入验证信息登陆。
三、 系统的分析和系统中数据库的分析(R ER 图等)
1 、 系统设计 1.1.系统的详细设计 1.1.1.主管信息查询 主管通过身份验证登陆后,可以查看自己信息,点击查询按钮后,就会通过表单把自己的用户名提交到 Servlet,servlet 将调用接口实现类中的查询方法,并将参数传进去。获取所查询的信息后,将数据发送到显示页面上。
1.1.2.查看自己的员工 这是主管的一个独有权限,一个主管主管多名员工,当点击查询自己员工的信息是,进入到员工查询的 servlet,并将自己的信息全递进来,在此 servlet
1 中调用员工查询方法,查询条件为主管为传递进来的信息,这要就可以得到这个主管下属的所有员工信息。并将其发回到页面中 。
1.1.3.发布任务 主管可以将要完成的任务发布,点击任务发布进入到任务发布页面,填写好任务后提交表单,将表单信息通过任务发布的 servlet 来实现添加到任务表中。
2.数据库的设计
2.1.数据库建模
2.1.1.E-R 图
2.1.1.1.人员信息建模
系统中人员信息建模如 E-R 图 2.1 所示:
图 2.1 3 系统前台的设计 HR ROName ID Company Email Workphone Active CubiNo Department JobTitle Password UserName
2 3.1、系统的结构
本系统使用 MVC 模式作为系统的设计结构,以 JSP 作为视图层;采用struts2 框架,以其 Acation 类作为其控制层,以各种 JavaBean,FormBean 作为模型层; 3.2、界面的设计和布局 3.2.1 登录界面 如图 3.1 所示
图 3.1 3.2.2 登陆后界面
3
3.2.3 管理界面 员工查找界面如图 3.3 所示;
图 3.3
四、系统的数据库实现
4 1.1.表设计 1.1.1 主管表设计
表 4-1
ro 表的设计
五、 系统的实现及调试
1.实现数据库的连接 db文件的内容如下: driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc\:oracle\:thin\:@localhost\:1521\:orcl user=system password=123456 链接类:
public class jdbcUtil {
private static Properties pro;
static{
pro=new Properties();
try {
pro.load(jdbcUtil.class.getClassLoader().getResourceAsStream("db.proper字段 类型 描述 是否允许为空 是否为主键 ROName varchar 姓名 是 否 ID number 编号 否 是 Company Varchar 所属公司 是 否 Department Varchar 所属部门 是 否 Email Varchar 邮箱 是 否 CubiNo Varchar 座位编号 是 否 WorkPhone Varchar 工作电话 是 否 Active Varchar 是否在职 是 否 Skill Varchar 技术 是 否 MobilePhone Varchar 移动电话 是 否 JobTitle Varchar 职位 是 否 UserName Varchar 登录名 是 否 PassWord Varchar 登陆密码 是 否
5 ties"));
String driverClassName=pro.getProperty("driverClassName");
Class.forName(driverClassName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection con()
{
Connection con=null;
String url=pro.getProperty("url");
try {
con=DriverManager.getConnection(url,pro);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
2.系统功能的实现
2.1 通过在前台 JSP 页面与全部 servlet 的链接路径映射, <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AppointingReportingOfficerServlet</servlet-name>
<servlet-class>com.servlet.AppointingReportingOfficerServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
6
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>SearchRoToUpdate</servlet-name>
<servlet-class>com.servlet.SearchRoToUpdate</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AppointROServlet</servlet-name>
<servlet-class>com.servlet.AppointROServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Login</servlet-name>
<servlet-class>com.servlet.Login</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>StaViewRO</servlet-name>
<servlet-class>com.servlet.StaViewRO</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ROViewStaff</servlet-name>
<servlet-class>com.servlet.ROViewStaff</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AppointingReportingOfficer_1</servlet-name>
<servlet-class>com.servlet.AppointingReportingOfficer_1</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AppointingReportingOfficer_2</servlet-name>
<servlet-class>com.servlet.AppointingReportingOfficer_2</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
7
<servlet-name>UpdateProfile_1</servlet-name>
<servlet-class>com.servlet.UpdateProfile_1</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>UpdateProfile_2</servlet-name>
<servlet-class>com.servlet.UpdateProfile_2</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>VerifyStaff</servlet-name>
<servlet-class>com.servlet.VerifyStaff</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>SaveStaffAervlet</servlet-name>
<servlet-class>com.servlet.SaveStaffAervlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>UpdateStaffProfileServlet</servlet-name>
<servlet-class>com.servlet.UpdateStaffProfileServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>UpdateStaffProfileSERvlet_2</servlet-name>
<servlet-class>com.servlet.UpdateStaffProfileSERvlet_2</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ROViewStaff_1</servlet-name>
<servlet-class>com.servlet.ROViewStaff_1</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AppointServlet</servlet-name>
<servlet-class>com.servlet.AppointServlet</servlet-class>
8
</servlet>
2.2.各种接口类的实现
本系统所有对数据库的操作都是在 java 的类中实现的,先声明一个接口,再去实现这个接口,实现时创建方法,在方法中调用链接数据库的方法再对需要操作的数据库进行操作。
public class StaffDaoImpl implements StaffDao { … … }
public class RODaoImpl implements com.Dao.RODao
{…
…}
public class MassageDaoImpl implements MassageDao {。
… … … }
public class CompanyDaoImpl implements CompanyDao { … … … } 2.3.查看主管
public List<RO> showRO(String sRONAME) {
List<RO> Ro =new ArrayList<RO>();
RO ro=new RO();
Connection con = null;
PreparedStatement sql = null;
ResultSet rs = null;
String query="select * from ro where ROName=?";
try {
con = jdbcUtil.con();
9
sql = con.prepareStatement(query);
sql.setString(1, sRONAME);
rs = sql.executeQuery();
while(rs.next()){
ro = new RO();
ro.setActive(rs.getString("Active"));
ro.setCompany(rs.getString("Company"));
ro.setCubiNo(rs.getString("CubiNo"));
ro.setDepartment(rs.getString("Department"));
ro.setEmail(rs.getString("Email"));
ro.setId(rs.getInt("ID"));
ro.setJobTitle(rs.getString("JobTitle"));
ro.setMobilePhone(rs.getString("MobilePhone"));
ro.setPassWord(rs.getString("passWord"));
ro.setRoName(rs.getString("ROName"));
ro.setSkills(rs.getString("skills"));
ro.setTeam(rs.getString("Team"));
ro.setUserName(rs.getString("UserName"));
ro.setWorkPhone(rs.getString("WorkPhone"));
Ro.add(ro);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Ro;
} 2.4 任命主管 public boolean insertRO(RO ro) {
Connection con = null;
PreparedStatement sql = null;
int rs ;
String query="insert
10 ro(ID,ROName,Company,Department,Email,CubiNo,WorkPhone,Active,Skills,MobilePhone,JobTitle,UserName,PassWord,Team) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,)";
int Id = ro.getId();
String Company = ro.getCompany();
String Department = ro.getDepartment();
String RoName = ro.getRoName();
String Email = ro.getEmail();
String CubiNo = ro.getCubiNo();
String WorkPhone = ro.getWorkPhone();
String Active = ro.getActive();
String Skills = ro.getSkills();
String MobilePhone = ro.getMobilePhone();
String JobTitle = ro.getJobTitle();
String UserName = ro.getUserName();
String PassWord = ro.getPassWord();
String Team = ro.getTeam();
try {
sql.setInt(1, Id);
sql.setString(2,
RoName);
sql.setString(3,
Company);
sql.setString(4,
Department);
sql.setString(5,
Email);
sql.setString(6,
CubiNo);
sql.setString(7,
WorkPhone);
sql.setString(8, Active);
sql.setString(9, Skills);
sql.setString(10, MobilePhone);
sql.setString(11, JobTitle);
sql.setString(12, UserName);
sql.setString(13, PassWord );
sql.setString(14, Team );
rs = sql.executeUpdate(query);
if(rs>=1){
return true;
}else {
return false;
11
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
六、课程设计总结与心得
每一次课程设计都是一次不可重现的学习与实践的机会,这一次 Oracle 大型数据库应用的应用系统的开发也不例外。通过这一次课程设计,我们得以将我们所学的数据库原理、Oracle 数据库特性、面向对象编程语言及其编程技术、软件开发技术、软件工程思想、软件体系结构乃至项目管理应用到实践中去,同时也是这些理论的再一次学习与深化,也是一次工程思想的飞跃。在这一次基于Oracle 应用的软件项目开发活动中,我们再一次体会到“计算机科学与技术是看不懂的,只有做才真正有所收获”的告诫。
七、小组成员:
黄增强:组长。工作任务:ro 数据库表设计,主管功能和部分员工功能的实现。
梁啟馆:成员。工作任务:员工表设计,员工的增删改查等设计。
12 蔡华宏:成员。工作任务:经理表设计,团队表设计,登陆,经理功能的实现。
八、源代码:
package com.DaoImpl;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
import com.entity.Hr; import com.entity.RO; import com.entity.Staff; import com.jdbcUtil.jdbcUtil;
public class LoginDaoImpl {
public RO findRO(String loginName, String password) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
RO ro= null;
String sql = "select * from ro where UserName=? and PassWord=?";
try {
con = jdbcUtil.con();
ps = con.prepareStatement(sql);
ps.setString(1, loginName);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
ro = new RO();
ro.setActive(rs.getString("Active"));
ro.setCompany(rs.getString("Company"));
ro.setDepartment(rs.getString("Department"));
ro.setRoName(rs.getString("ROName"));
ro.setEmail(rs.getString("Email"));
ro.setCubiNo(rs.getString("CubiNo"));
ro.setWorkPhone(rs.getString("WorkPhone"));
ro.setSkills(rs.getString("Skills"));
ro.setMobilePhone(rs.getString("MobilePhone"));
ro.setJobTitle(rs.getString("JobTitle"));
ro.setUserName(rs.getString("UserName"));
13
ro.setTeam(rs.getString("Team"));
ro.setId(rs.getInt("ID"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
jdbcUtil.closeq(con, ps, rs);
}
return ro;
}
public Hr findHr(String loginName, String password) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
Hr hr= null;
String sql = "select * from hr where UserName=? and PassWord=?";
try {
con = jdbcUtil.con();
ps = con.prepareStatement(sql);
ps.setString(1, loginName);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
hr = new Hr();
hr.setUserName(rs.getString("UserName"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
jdbcUtil.closeq(con, ps, rs);
}
return hr;
}
public Staff findStaff(String loginName, String password) {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
Staff staff= null;
14
String sql = "select * from staff where UserName=? and PassWord=?";
try {
con = jdbcUtil.con();
ps = con.prepareStatement(sql);
ps.setString(1, loginName);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
staff = new Staff();
staff.setActive(rs.getString("Active"));
staff.setCompany(rs.getString("Company"));
staff.setDepartment(rs.getString("Department"));
staff.setRoName(rs.getString("ROName"));
staff.setEmail(rs.getString("Email"));
staff.setCubiNo(rs.getString("CubiNo"));
staff.setWorkPhone(rs.getString("WorkPhone"));
staff.setSkills(rs.getString("Skills"));
staff.setMobilePhone(rs.getString("MobilePhone"));
staff.setJobTitle(rs.getString("JobTitle"));
staff.setUserName(rs.getString("UserName"));
staff.setTeam(rs.getString("Team"));
staff.setName(rs.getString("Name"));
staff.setId(rs.getInt("ID"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
jdbcUtil.closeq(con, ps, rs);
}
return staff;
} } package com.jdbcUtil;
import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
15 import java.util.Properties;
public class jdbcUtil {
private static Properties pro;
static{
pro=new Properties();
try {
pro.load(jdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
String driverClassName=pro.getProperty("driverClassName");
Class.forName(driverClassName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection con()
{
Connection con=null;
String url=pro.getProperty("url");
try {
con=DriverManager.getConnection(url,pro);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
public static void closeq(Connection con,Statement sql,ResultSet rs){
try {
if(con!=null)
con.close();
if(sql!=null)
sql.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
16
}
}
public static void closeq(Connection con,Statement sql ){
try {
if(con!=null)
con.close();
if(sql!=null)
sql.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} package com.entity;
public class RO {
private int id;
private String company;
private String department;
private String roName;
private String email;
private String cubiNo;
private String workPhone;
private String active;
private String skills;
private String mobilePhone;
private String jobTitle;
private String userName;
private String passWord;
private String team;
public int getId() {
return id;
}
17
public void setId(int id) {
this.id = id;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public String getRoName() {
return roName;
}
public void setRoName(String roName) {
this.roName = roName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCubiNo() {
return cubiNo;
}
public void setCubiNo(String cubiNo) {
this.cubiNo = cubiNo;
}
public String getWorkPhone() {
return workPhone;
}
public void setWorkPhone(String workPhone) {
this.workPhone = workPhone;
}
public String getActive() {
return active;
}
public void setActive(String active) {
this.active = active;
18
}
public String getSkills() {
return skills;
}
public void setSkills(String skills) {
this.skills = skills;
}
public String getMobilePhone() {
return mobilePhone;
}
public void setMobilePhone(String mobilePhone) {
this.mobilePhone = mobilePhone;
}
public String getJobTitle() {
return jobTitle;
}
public void setJobTitle(String jobTitle) {
this.jobTitle = jobTitle;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
}
推荐访问:数据库 人事管理系统 设计