当前位置:文档之家› 数据库与软件工程课程设计(企业人事管理系统)

数据库与软件工程课程设计(企业人事管理系统)

湖南师范大学工学院电子与信息工程系课程设计报告书

企业人事管理系统

2011-06-24

Hunan Normal University ELECTRONIC & INFORMATION ENGINEERING

DEPARTMENT

湖南师范大学工学院电子与信息工程系课程设计登记表

注:此表格内容中的任务要求为指导教师提供的课程设计要求,主要实施步骤是指课程设计的时间安排,结论是指通过课程设计得出的有关结论及课程设计不足之处或进一步开发方向。

课程设计题目 企业人事管理系统

指导教师姓名

指导老师职称 讲师 学生姓名

所属班级

任务要求

信息要求:

员工基本信息表。

员工婚姻情况表。反映员工的配偶信息。

员工学历信息表。反映员工的学历、专业、毕业时间、学校、外语情况等。 系统功能的基本要求:

人员管理,包括员工增加、修改、删除: 建立员工基本信息表。 员工各种信息的修改。

转出、辞职、辞退、退休员工信息的删除。

人事综合查询。可以按各种查询条件查询用户所需资料。

综合统计各类信息。分类统计员工的人数等数据,对在职人员分类统计、离职人员人数的统计、在职员工人数综合统计等。

主要实施步骤

1. 需求分析

2. 概念结构设计 生成基本E-R 图

3. 逻辑结构设计

由E-R 图导出关系模式

4. 功能模块实现、集成及调试

5. 填写实验报告

结 论

这次软件工程结合数据库的课程设计,让我觉得我们原来学的数据库的知识原来是这样运用的,而且也是第一次将软件工程的知识运用到实践中。最大的收获就是如何将数据库导入到程序中去

目录

1引言 (1)

1.1课程设计目标 (1)

1.2编程工具(编程环境)介绍 (1)

1.3实施时间及主要实施步骤 (1)

2需求分析 (2)

2.1问题描述 (2)

2.2功能需求 (2)

2.3性能需求 (3)

3系统总体设计 (4)

3.1企业人事管理系统内容和功能设计 (4)

3.2人员信息管理 (5)

3.3婚姻状况信息管理 (5)

3.4统计信息管理 (5)

4数据库设计 (8)

4.1数据库的概念设计 (8)

4.2数据库的逻辑设计 (9)

5主要功能模块的设计与实现 (12)

5.1企业人事管理的登录A CTION (12)

5.2员工信息的表M ODEL (14)

5.3企业人事管理系统插入员工信息D AO (15)

5.4数据库设计 (17)

5.5算法流程 (22)

5.6界面设计及设计结果 (22)

6调试分析 (23)

7用户手册 (23)

8测试结果 (25)

9结论 (330)

9.1结论 (330)

9.2进一步开发方向 (330)

10参考文献 (330)

1引言

随着计算机技术、网络技术和信息技术的发展,现在办公系统更趋于系统化、科学化和网络化。网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共享,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。现在许多的机关单位的人事管理水平还停留在纸质档,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。

1.1课程设计目标

企业人事管理系统,是为了迎合现在人们的工作而设计的。随着网络的覆盖面的增广,上网的人们也就越来越多了,人事管理的对象是一个单位或若干单位种的员工的基本信息,这些信息是在变化的。人事管理系统能够味用户提供充足的信息和快捷的查询手段。使用计算机对人事资料进行管理,会给应用者带来很多方便,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,同时,这也是企业的科学化、正规化管理以及与世界先进管理技术接轨的重要条件。

1.2编程工具(编程环境)介绍

开发工具:Java

DBMS:Oracle 11G

IDE:Eclipse

1.3实施时间及主要实施步骤

1.应用需求分析(3天)

2.系统功能模块划分(2天)

3. 系统数据库设计(2天)

4. 概念设计(2天)

5.逻辑设计(2天)

6.编写代码(5--8天)

7.调试(2天)

2需求分析

2.1问题描述

随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。不同的企业具有不同的人事管理制度,这就决定了不同的企业需要不同的人事管理系统。

2.2功能需求

(1) 员工档案管理

1)对公司里所有员工进行统一编号;将每一位员工的信息保存在员工档案记录中。

2)当员工的信息发生变动时,修改员工档案记录中相应的属性。

3)对新聘用的员工,将其信息加入到员工档案记录中;对于解聘的员工,将其信息从员工档案记录中删除以及转出、辞职、辞退、退休员工信息的删除,管理员可以添加、删除、修改员工相关方面的信息。

(2) 人事管理

通过该模块,能够进行人事档案浏览、人事资料查询和人事资料统计。

以便进入该企业的人能快速了解其他职工信息,也方便人事专员对信息的记录、增删和修改

(3) 综合统计各类信息

分类统计员工的人数等数据,对在职人员分类统计、离职人员人数的统计、在职员工人数综合统计等。

以下为人事管理系统的用例图

查询员工信息

增加职员

修改员工信息

删除员工

统计在职人员

统计离职人员

分类统计

管理员

人员管理

《include 》

人事综合查询

登陆

统计

系统用例图

2.3 性能需求

(1)记录了职工的基本信息,了解职工的基本情况,对企业的日常管理有很大的帮助,同时也可以通过这些对职工采取针对性的措施; (2)浏览功能,使用户能看到所有职工的信息,了解自己所需要的情况,互相了解,从而有利于交流;

(3)备份/还原数据库,保证信息的不流失; (4)对人事档案的浏览和查询;

(5)人员管理,包括员工增加、修改、删除。 (6)系统应最大限度地实现易维护性和易操作性。

3 系统总体设计

3.1 企业人事管理系统内容和功能设计

企业人事管理系统提供的主要功能如下:

(1)本企业人事管理系统录入职工的基本信息,如员工姓名,编号,性别,出生年月,婚姻状况,籍贯,参加工作时间,学历,所在单位或部门,职务,职称等很多设置;

(2) 人员管理,包括员工增加、修改、删除: (3)建立员工基本信息表。 (4)员工各种信息的修改。

(5)转出、辞职、辞退、退休员工信息的删除。

(6)人事综合查询。可以按各种查询条件查询用户所需资料。 (7)综合统计各类信息。分类统计员工的人数等数据,对在职人员分类统计、离职人员人数的统计、在职员工人数综合统计等。

(8)系统管理,使用正确的用户名和密码而且是管理员身份才能进入下系统。

系统功能图

企业人事管理系统

人事综合查询

人员管理

综合统计数据

3.2 人员信息管理

增加职工信息; 修改职工信息; 删除职工信息; 查询职工信息;

3.3 婚姻状况信息管理

查询职工配偶信息

3.4 统计信息管理

按性别统计员工人数; 按职称统计员工人数; 统计员工在职状态人数;

人员管理

添加员工

修改员工信息

删除员工

按状态统计

按性别统计

按职称统计

综合统计数据

数据流图:

Administration

ERP 系统

人员管理综合查询统计信息返回信息

0层数据流图

Administration

1、管理

2、查询

3、统计

人员管理

返回信息

综合查询

返回信息

统计信息返回信息

1层数据流图

3.1、性别统计

3.2、状态统计

3.3、职称统计

员工信息表

部门信息表

请求性别统计

请求状态统计

请求职称统计

员工信息表

返回性别统计信息

返回状态统计信息

返回职称统计信息

第2层数据流图

下图为时序图:

: 管理员

HibemateTempl

ate EmployAction EmployServiceIm

pl

EmployDaoImpl

1: 管理员提交查询请求

3: FindEmployByID(id)

2: FindEmployByID(id)

4: 根据id查找员工信息

6: 返回员工信息

5: 返回员工信息

7: 返回员工信息

8: 返回给管理员相应页面

4数据库设计

在开发应用程序时,对数据库的操作时必不可少的,数据库设计是根据程序的需求及其实现功能所制定的,数据库设计的合理性将直接影响到程序的开发过程。

4.1数据库的概念设计

数据库设计是系统开发的重要部分,它是通过管理系统的整体需求而制定的,数据库设计的好坏直接影响到系统的后期开发。

4.2数据库的逻辑设计

根据上面设计好的E_R图,可以在数据库中创建相应的数据表,企业人事管理系统中个数据表的结构如下。

根据上面设计好的E_R图,可以在数据库中创建相应的数据表,企业人事管理系统中个数据表的结构如下。

编号类型

员工类型

(1)员工类型

字段名数据类型主键描述

Staff_ID Varchar(8) 是员工编号Type Varchar(10) 否员工类型

(2)部门

字段名 数据类型 主键 描述 Dept_ID Varchar(8) 是 部门号 Name Varchar(20)

部门名称

(3)员工信息

字段名 数据类型 主键 描述 Staff_ID Varchar(8) 是 员工号 Name Varchar(20) 否 员工姓名 Sex Varchar(4)

否 性别 Birth date 否 出生年月 Marriage Char(4) 否 婚姻状况 Origo Varchar(20)

否 籍贯 WorkTime date 否 参加工作时间

Dept_ID Varchar(8) 否 部门号 Job Varchar(20) 否 职务号 JobTitle Varchar(20) 否 职称号 Academic Varchar(10) 否 学历 Profession Varchar(20) 否 专业 Gra_School Varchar(40)

否 毕业学校 Gra_Time date 否 毕业时间 EnglishLevel Varchar(10) 否 英语等级 部门

部门部门名

员工编号

员工信息

职称

姓名

籍贯

出生年月

性别

婚姻状况

参加工作时间

学历

(4)婚姻状况

字段名 数据类型 主键 描述 Staff_ID Varchar(8) 是 职工编号 SpouseName Varchar(20)

否 配偶姓名 Birth data 否 出生日期 Nation Char(4) 否 民族 Origo Varchar(20) 否 籍贯 Phone Varchar(15) 否 电话 WorkPlace

Varchar(20) 否 工作单位 Job Varchar(20)

职务

(5)离职表

字段名 数据类型 主键 描述 unemploy_ID Varchar(5) 是 离职编号 Reason

Varchar(8)

离职原因

离职表

编号

原因

员工编号

婚姻状况

电话

配偶姓名

籍贯

出生年月

职务

民族

工作单位

5主要功能模块的设计与实现

本章主要描述各功能模块的具体实现方法,并给出测试结果。

5.1企业人事管理的登录Action

package cn.mm.control.登陆;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.HashMap;

import cn.mm.dao.登陆.UserInfo;

import cn.mm.view.主界面.MainFrame;

import cn.mm.view.登陆.LoginFrame;

public class LoginFrameListener implements ActionListener { /**

* 该监听器是用于登录窗口

*/

private LoginFrame login;

HashMap data;

public LoginFrameListener(LoginFrame login) {

this.login = login;

}

public void actionPerformed(ActionEvent e) {

String btnName = e.getActionCommand();

// 按确定按钮或在密码框中输入回车键

if (btnName.equals("退出")) {

login.dispose();

}

if(btnName.equals("正式登录") || btnName.equals("密码")) { String name = login.getnameText().getText().trim();//

login.getwordText().getText().trim();// 输入的密码

// 得到从数据库中取出的用户信息表

data = UserInfo.selectUserInfo();

System.out.println("LoginFrameListener");

System.out.println(data.get("管理员标识0"));

System.out.println(data.get("密码0"));

System.out.println(data.get("类型0"));

System.out.println(data.get("当前状态0"));

if (name.equals("") && !password.equals("")) {

login.getTishi().setText("请输入管理员名称!!!");

} else if (password.equals("") && !name.equals("")) { login.getTishi().setText("请输入密码!!!");

} else if (name.equals("") && password.equals("")) { login.getTishi().setText("请输入管理员名称和密码!!!");

} else {

// 用户验证

int count = data.size();

for (int i = 0; i < count; i++) {

String userName = (String) data.get("管理员标识" + i);

String userPassword = (String) data.get("密码"+ i);

if (name.equals(userName) &&

password.equals(userPassword)) {

// 判断状态是否可用

if (!(data.get("当前状态"+ i).equals("在职")) || !(data.get("类型" + i).equals("4"))){

login.getTishi().setText("当前用户不可用");

break;

} else {// 验证成功的情况

login.dispose();// 登陆窗口消失,出现主界面

new MainFrame(null,"企业人事管理系统

",false);

login.getTishi().setText("用户名或密码错误,请核对后再登录");

}

}

}

}

}

public HashMap getData() {

return data;

}

public void setData(HashMap data) { this.data = data;

}

}

5.2员工信息的表Model

package cn.mm.model.人员管理;

import java.util.Vector;

import javax.swing.table.DefaultTableModel;

public class MyTableModel extends DefaultTableModel {

public MyTableModel() {

// TODO Auto-generated constructor stub

}

public MyTableModel(int rowCount, int columnCount) { super(rowCount, columnCount);

// TODO Auto-generated constructor stub

public MyTableModel(Vector columnNames, int rowCount) { super(columnNames, rowCount);

// TODO Auto-generated constructor stub

}

public MyTableModel(Object[] columnNames, int rowCount) { super(columnNames, rowCount);

// TODO Auto-generated constructor stub

}

public MyTableModel(Vector data, Vector columnNames) { super(data, columnNames);

// TODO Auto-generated constructor stub

}

public MyTableModel(Object[][] data, Object[] columnNames) { super(data, columnNames);

// TODO Auto-generated constructor stub

}

/**不能编辑单元格*/

public boolean isCellEditable(int row, int column) { return false;

}

}

5.3企业人事管理系统插入员工信息Dao

package cn.mm.dao.人事综合查询;

import java.util.Map;

import java.util.TreeMap;

import cn.mm.vo.人事综合查询.EmployeeVO;

/**

* 向数据库表中插入数据

*/

public class InsertTOTable {

private EmployeeVO dvo;

this.dvo=dvo;

}

/**

* 将界面数据保存到map中,再将map对象传到JDBC层,将值插入数据库表中

*

* 用于插入数据

*

*/

public void saveMap(){

//创建Map

Map map=new TreeMap();

String sno=null;

String name = dvo.getName();

try {

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(sno);

String sex = dvo.getSex();

String nation = dvo.getNation();

String remark = dvo.getRemark();

//把数据存入到map中

map.put("sno", sno);

map.put("NAME", name);

//向数据库的GOODS表插入数据

new DBManager().doInsert("studentinfo",map);

}

/**

* 从数据库中删除一条记录

*/

public void delmap() {

//创建Map

Map map=new TreeMap();

// String sno = dvo.getSno();

// map.put("sno", sno);

/**

* 从数据库中修改一条

*/

public void updateMap() {

//创建Map

Map map=new TreeMap();

String name = dvo.getName();

String sex = dvo.getSex();

String nation = dvo.getNation();

//向数据库的GOODS表更新数据

new DBManager().doUpdate("studentinfo",map);

}

}

5.4数据库设计

/*==============================================================*/ /* DBMS name: Sybase SQL Anywhere 11 */

/* Created on: 2011-5-28 14:29:56 */

/*==============================================================*/ /*==============================================================*/ /* Table: Department

-------Dept_ID 部门编号

-------Name 部门名称

/*==============================================================*/ create table Department

(

Dept_ID Varchar(8) not null,

Name Varchar(20) null,

constraint PK_DEPARTMENT primary key (Dept_ID)

);

DELETE FROM Department WHERE Dept_ID = '00004';

insert into Department values('00001','开发部');

insert into Department values('00002','市场部');

相关主题
文本预览
相关文档 最新文档