资源描述
赣南师范学院科技学院数学与信息科学系数据库课程设计报告
设计题目:职工工资管理系统
专 业:计算机科学与技术
班 级:计算机111班
学 号: 1120061102
姓 名: 陈泰安
指导老师: 谢辅雯
日 期: 2013年 12 月 20日
成绩:
摘 要
企业的工资管理是公司管理的一个重要内容。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理连接住房公积金和医疗保险等等,来生成企业每个职工的基本工资、福利补贴、实际发放工资等。资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分。但考虑到学生的开发时间,本次设计主要阐述员工工资管理系统主要是以企业员工工资情况为对象而开发的。涉及系统比较小,有利于学生单独编写。其系统的设计主要包括数据库的设计、维护和应用界面的设计与后台数据库的连接。经分析用Eclipse为开发工具,Microsoft SQL sever 2000 为后台数据库。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。并且Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK),Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,
关键词:职工工资管理系统、设计、开发工具
摘要………………………………………………………………………………………………2
目录………………………………………………………………………………………………3
1、系统需求分析…………………………………………………………………………………4
1.1系统的用户管理…………………………………………………………………………4
1.2职工的信息管理…………………………………………………………………………4
1.3职工的工资管理…………………………………………………………………………4
1.4部门的信息管理………………………………………………………………………………4
1.5职工的奖惩管理…………………………………………………………………………4
1.6职工的培训管理…………………………………………………………………………4
2、功能需求分析…………………………………………………………………………………4
2.1系统管理…………………………………………………………………………………5
2.2信息管理…………………………………………………………………………………5
2.3信息查询…………………………………………………………………………………6
3、系统设计…………………………………………………………………………………………8
3.1数据库逻辑结构设计 ………………………………………………………………………8
3.1.1系统E-R图…………………………………………………………………………………8
3.2 数据库物理结构设计…………………………………………………………………………9
3.2.1表之间的E-R图…………………………………………………………………………11
3.3数概念结构设计……………………………………………………………………………12
3.3.1数据流程图………………………………………………………………………………12
4、职工工资管理系统应用设计…………………………………………………………………14
4.1 职工工资管理系统模块设计………………………………………………………………14
4.1.1“登陆模块”详细设计……………………………………………………………………14
4.1.2主界面”的详细设计………………………………………………………………16
4.2 管理员界面子模块的设计………………………………………………………………17
4.2.1薪资信息………………………………………………………………………………….17
4.2.2 培训信息…………………………………………………………………………………22
4.2.3奖惩信息…………………………………………………………………………………25
4.2.4部门信息…………………………………………………………………………………28
5、总结……………………………………………………………………………………………31
6、参考文献………………………………………………………………………………………32
1、系统需求分析
企业工资管理系统的主要任务是用计算机对各种工资信息和职工基本信息进行日常的管理,如查询、修改、添加、删除等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:
1.1系统的用户管理
本模块主要功能包括用户的添加、删除、密码修改,重新登入,退出系统等。
1.2职工的信息管理
本模块主要功能包括职工信息的添加,查询,修改,删除等。
员工基本信息:工龄、员工编号、员工姓名、员工性别、出生日期、单位、籍贯、学历、职业、部门、部门编号、婚姻、是否在职
1.3职工的工资管理
本模块主要功能包括职工工资的查询,添加,删除,修改,计算,统计等。
1.4部门的信息管理
本模块主要功能包括部门查询,添加,修改,删除等。
1.5职工的奖惩管理
本模块主要功能包括对职工奖惩信息的查询,添加,修改,删除等。
1.6职工的培训管理
本模块主要功能包括职工培训计划的查询、添加、删除、修改等。
2功能需求分析
员工工资管理系统功能分析总图2
2.1.系统管理:功能分析图
2.2信息管理:功能分析图
职工信息管理:功能分析图
基本信息管理:功能分析图
奖惩信息管理:功能分析图
培训信息管理:功能分析图
薪资信息管理:功能分析图
2.3信息查询:功能分析图
员工信息查询:功能分析图
3、系统设计
3.1数据库逻辑结构设计
3.1.1系统E-R图
3.2数据库物理结构设计
需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。此次课程设计的使用者是企业的员工,主要是针对系统的管理员。其进行的操作就是对公司员工、部门等一些方面改动的改善。由此对员工需求分析如下。
用户的需求就是对员工工资和使用用户的添加、删除、修改和查询。这就要求各种信息中存在实体完整性、参照完整性和用户自定义完整性。搜集了各项要求,故数据项要求设计如下:
表2.1登入信息表
列名
数据类型
长度
允许空
username
Char
30
不可以
userpassword
Char
20
不可以
competence
Char
10
不可以
表2.2职工信息表
列名
数据类型
长度
允许空
工龄
Int
4
不可以
职工编号(主键)
Char
20
不可以
性别
Varchar
10
不可以
姓名
Varchar
4
不可以
籍贯
Varchar
4
不可以
出生日期
Datatime
8
不可以
单位
varchar
30
不可以
部门
Varchar
30
不可以
职业
Varchar
20
不可以
学历
Varchar
10
不可以
婚姻
Varchar
4
不可以
部门编号
Int
4
不可以
在职否
Varchar
4
不可以
表2.3部门信息表
列名
数据类型
长度
允许空
部门名称
Varchar
10
不可以
部门编号(主键)
Int
4
不可以
部门人数
Int
4
不可以
表2.4薪资信息表
列名
数据类型
长度
允许空
顺序号
Int
4
不可以
薪资编号
Int
4
不可以
职工编号(主键)
Char
10
不可以
基本工资
decimal
9
不可以
福利补贴
Decimal
9
不可以
奖金
Decimal
9
不可以
住房公积金
Decimal
9
不可以
失业保险
Decimal
9
不可以
总薪资
Int
4
可以
部门名称(外键)
varchar
10
不可以
表2.5奖惩信息表
列名
数据类型
长度
允许空
奖罚
Varchar
4
不可以
顺序号
Int
4
不可以
奖惩编号
Int
4
不可以
职工编号(主键)
Char
20
不可以
奖惩时间
Datatime
8
不可以
奖惩地点
Varchar
50
不可以
奖惩原因
Varchar
200
不可以
备注
varchar
500
可以
表2.6培训信息表
列名
数据类型
长度
允许空
顺序号
Int
4
不可以
培训编号
Int
4
不可以
培训内容
Varchar
100
不可以
职工编号(主键)
Char
10
不可以
培训天数
Int
4
不可以
培训费用
Int
4
不可以
培训时间
datatime
8
不可以
3.2.1表之间的E-R图
3.3数概念结构设计
3.3.1数据流程图
0层流程图
1层流程图
2层流程图
4、职工工资管理系统应用设计
4.1职工工资管理系统模块设计
系统实现,胡庆敏完成了系统管理,胡君完成了信息查询和普通用户界面
我完成了信息管理
4.1.1 “登陆模块”详细设计
“登录模块”的设计主要是针对用户登录界面的设计,判断用户是管理员还是普通用户,从而进入不同主界面。
登陆界面主要由用户名和密码还有权限的信息,还有标题的设置,登录和取消按钮的设置。用户只有选择用户名后填入相应的密码后点击“登录”才能进入主界面,点击“取消”会退出系统。由此,登陆界面设计如图4.1所示
图4.1
若用户密码、用户名或权限其中有一个没有匹配成功的话,则点击“登入”时会提示以下消息框
代码段:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
try
{
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement stmt=dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String username=jTextField.getText();
String userpassword=new String(jPasswordField.getPassword());
String competence =jRadioButton.getText();
String competence1 =jRadioButton1.getText();
String sql;
if( grp.getSelection()==jRadioButton1.getModel())
{ sql="select * from log where username='"+username+"'and userpassword='"+userpassword+"'and competence='"+competence1+"'";
ResultSet rs1=stmt.executeQuery(sql);
if(rs1.next()){
setVisible(false);
function x=new function();
x.setVisible(true);}
else JOptionPane.showMessageDialog(null,"登入失败!");
}
if (grp.getSelection()==jRadioButton.getModel()){
sql="select * from log where username='"+username+"'and userpassword='"+userpassword+"'and competence='"+competence+"'";
ResultSet rs=stmt.executeQuery(sql);
if(rs.next()){
setVisible(false);
function1 y=new function1();
y.setVisible(true);
}
else JOptionPane.showMessageDialog(null,"登入失败!");
}
}
catch (Exception eo)
{
eo.printStackTrace();
}
}
4.1.2 “主界面”的详细设计
主界面有两个,其中管理员主界面的设计是由菜单编辑器生成,主要由系统管理、信息管理、信息查询、三个模块组成。其作用是使程序更加有条有理,有利于管理。另外一个为普通用户操作,主要有基本信息查询,基本工资查询两个模块组成,两个主界面设计如图4.2所示:
管理员主界面
职工主界面
4.2 管理员界面子模块的设计
4.2.1选择“信息管理”→“薪资信息管理→“删除”、“”修改”、“添加”菜单,分别实现删除职工,修改职工,添加职工薪资信息。
删除薪资信息
代码段:String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
String num = JOptionPane
.showInputDialog("请输入要删除的职工编号");
String delete = "delete from 薪资信息表 where 职工编号='"
+ num + "'";
if (num == null) {
return;
}
if (JOptionPane.showConfirmDialog(null, "确认要删除吗?") == JOptionPane.YES_OPTION)
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL,
userName, userPwd);
Statement stmt = dbConn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
if (stmt.executeUpdate(delete) != 0)
JOptionPane.showMessageDialog(null,
"职工薪资信息删除操作,执行成功!");
else
JOptionPane.showMessageDialog(null,
"没有该职工,执行失败!");
}
catch (Exception e2) {
e2.printStackTrace();
}
}
修改薪资信息
代码段:
ll = JOptionPane.showInputDialog("请输入需要修改薪资的职工编号");
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=txl";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL,
userName, userPwd);
java.sql.Statement stmt = dbConn
.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql1 = "select 职工编号 from 薪资信息表 where 职工编号='"
+ ll + "'";
ResultSet rs1 = stmt.executeQuery(sql1);
if (rs1.next()) {
薪资修改 x1 = new 薪资修改();
x1.setVisible(true);
} else {
JOptionPane.showMessageDialog(null,
"没有该职工,请重新输入!");
}
}
catch (Exception e1) {
e1.printStackTrace();
}
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
String 顺序号=jTextField1.getText();
String 薪资编号=jTextField2.getText();
String 基本工资=jTextField3.getText();
String 福利补贴=jTextField4.getText();
String 奖金=jTextField5.getText();
String 住房公积金=jTextField6.getText();
String 部门名称=jTextField7.getText();
String 失业保险=jTextField61.getText();
int a1=Integer.parseInt(基本工资);
int b1=Integer.parseInt(福利补贴);
int c1=Integer.parseInt(奖金);
int d1=Integer.parseInt(住房公积金);
int f1=Integer.parseInt(失业保险);
int x=a1+b1+c1-d1-f1;
String s=Integer.toString(x);
jTextField62.setText(s);
try
{
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement st=dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
st.executeUpdate("update 薪资信息表 set 顺序号='"+顺序号+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 薪资编号='"+薪资编号+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 基本工资='"+基本工资+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 福利补贴='"+福利补贴+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 奖金='"+奖金+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 住房公积金='"+住房公积金+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 失业保险='"+失业保险+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 部门名称='"+ 部门名称+"' where 职工编号='"+jTextField.getText()+"'");
st.executeUpdate("update 薪资信息表 set 总薪资='"+s+"' where 职工编号='"+jTextField.getText()+"'");
JOptionPane.showMessageDialog(null,"薪资信息修改成功!");
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
添加薪资信息
代码段:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
String 职工编号=jTextField.getText();
String 顺序号=jTextField1.getText();
String 培训编号=jTextField2.getText();
String 培训天数=jTextField3.getText();
String 培训费用=jTextField4.getText();
String 培训内容= jTextArea.getText();
String 培训时间=jTextField5.getText();
try
{
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement st=dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
st.executeUpdate("insert into 培训信息表 values('"+顺序号+"','"+培训编号+"','"+培训内容+"','"+职工编号+"','"+培训天数+"','"+培训费用+"','"+培训时间+"')");
JOptionPane.showMessageDialog(null,"培训信息添加成功!");
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
统计人数/工资总额
4.2.2选择“信息管理”→“培训信息管理→“删除”、“添加”菜单,分别实现删除职工,添加职工培训信息。
添加职工培训信息
代码段:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
String 职工编号=jTextField.getText();
String 顺序号=jTextField1.getText();
String 培训编号=jTextField2.getText();
String 培训天数=jTextField3.getText();
String 培训费用=jTextField4.getText();
String 培训内容= jTextArea.getText();
String 培训时间=jTextField5.getText();
try
{
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement st=dbConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
st.executeUpdate("insert into 培训信息表 values('"+顺序号+"','"+培训编号+"','"+培训内容+"','"+职工编号+"','"+培训天数+"','"+培训费用+"','"+培训时间+"')");
JOptionPane.showMessageDialog(null,"培训信息添加成功!");
}
catch (Exception e1)
{
e1.printStackTrace();
}
删除职工培训信息
由于没有该职工培训信息所以弹出以下窗口:
如果含有该职工信息则会弹出以下窗口
代码段:
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=login";
String userName = "sa";
String userPwd = "123456";
Connection dbConn = null;
String num = JOptionPane
.showInputDialog("请输入要删除的培训信息的职工编号");
if (num == null) {
return;
}
String delete = "delete from 培训信息表 where 职工编号='" + num
+ "'";
if (JOptionPane.showConfirmDialog(null, "确认要删除吗?") == JOptionPane.YES_OPTION)
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL,
userName, userPwd);
Statement stmt = dbConn.createStatement(
ResultSet.TYPE_
展开阅读全文