职工工资管理系统.docx
- 文档编号:3762691
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:58
- 大小:363.69KB
职工工资管理系统.docx
《职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统.docx(58页珍藏版)》请在冰豆网上搜索。
职工工资管理系统
数据库课程实训报告
题目:
职工工资管理系统
目录
1课题内容和要求1
1.1课题描述1
1.2课题要求1
2需求分析1
2.1功能需求分析1
2.2数据需求分析2
3系统设计3
3.1功能模块设计3
3.2数据库概念设计3
3.3数据库逻辑设计5
3.4数据库物理设计5
3.5数据库表间联系6
4系统实现6
4.1添加模块实现6
4.2删除模块实现6
4.3修改模块实现7
5代码调试与功能测试8
5.1测试方案8
5.2测试结果8
6收获与体会11
参考文献12
附录1源程序部分清单13
附录1.1登陆代码13
附录1.2查询代码18
附录1.3添加代码23
附录1.4删除代码26
附录1.5修改代码28
附录1.6加工资代码36
附录1.7扣工资代码38
职工工资管理系统
1课题内容和要求
1.1课题描述
工资管理系统是针对企业的工资管理业务进行计算机处理而开发的应用软件。
该系统由系统维护、输入、查询、修改、输出、统计等子模块组成,功能基本涵盖普通企业的工资管理业务范围。
企业应用本系统后,可以有效的提高工资管理水平。
本文从需求分析、系统设计、系统实现及代码调试与功能测试等方面阐述了本应用系统的设计过程。
为便于说明,文中绘制了程序结构框图、数据流程图和部分界面图。
最后附有主要的源程序代码清单。
1.2课题要求
1)可以按照科室(经理室、财务科、技术科和销售科)增加、修改、删除职工的基本资料
2)职工信息应包含职称,分为高级、中级、初级,同一职称职工基本工资相同
3)职工工资由基本工资、奖金、扣除金额组成,其中奖金、扣除金额可每月输入不同数据
4)可以计算职工每月工资
5)可以按照科室、职称、月份统计职工工资
6)可以按照科室、职工号、职工名称查询职工工资
2需求分析
2.1功能需求分析
(1)注册登录功能
财务部人员先注册用户名和密码后,才可以用已经注册后的用户名进行登录,方可成功进入员工工资管理的主界面。
(2)添加/修改员工工资功能
财务部人员进入添加/修改员工工资的界面,可以添加职工编号、职工姓名、职工性别、现任职务、工资状况以及职工年龄。
如若需要进行修改,进入修改界面后需要输入已添加成功的职工编号,从而对其他信息进行修改,在主界面点击查询的时候会发现该员工的有些信息会有所改变。
(3)查询员工工资功能
财务部人员通过登录进入主界面后,输入已成功添加的职工编号,点击查询,会显示之前所添加的信息。
(4)删除员工工资功能
财务部人员进入删除员工工资的界面,输入已添加成功的职工编号,点击删除后,在进行查询的时候会发现查无此人。
(5)加工资
财务部人员根据员工表现在主界面点击加工资,进入加工资界面,输入所需加工资的职工编号以及所加工资的金额。
在主界面点击查询的时候会发现该员工的工资状况有所增加。
(6)扣工资
财务部人员根据员工表现在主界面点击扣工资,进入扣工资界面,输入所需扣工资的职工编号以及所扣工资的金额。
在主界面点击查询的时候会发现该员工的工资状况有所减少。
2.2数据需求分析
数据流图:
职工
信息基本
工资
职工信息
所属科室奖扣
工资
职工工资
信息信息
图2.2-1数据流图
数据字典:
表2.2-2用户信息数据字典表
字段名称
所属表名
编码
备注
登录1
Biao2
sa
主要字段、用户名、密码
登录2
Biao2
csy
主要字段、用户名、密码
表2.2-3职工基本信息数据字典表
字段名称
所属表名
编码
数据类型
长度
备注
职工编号
Biao1
zgbh
varchar
50
主键
职工姓名
Biao1
zgxm
nchar
10
职工性别
Biao1
zgxb
nchar
10
男or女
职工年龄
Biao1
zgnl
nchar
10
>18&&<60
现任职务
Biao1
xrzw
nchar
10
高级/中级/初级
工资状况
Biao1
hyzk
int
所在部门
Biao1
szbm
varchar
50
经理室/财务部/技术部/销售部
3系统设计
3.1功能模块设计
图3.1-1系统功能模块设计
3.2数据库概念设计
通过对员工工资管理系统的数据分析并根据管理员之间的联系,我们可以得出与系统相关的实体有:
职工编号、所在部门、职工姓名、现任职务、工资状况、职工年龄、工资金额。
员工工资管理的数据库管理模式用语义描述如下:
(1)每个员工只能属于一个部门,担任一个职务,但是可以拥有多个职称。
(2)每个部门可以有多名员工,有不同的职务。
(3)管理员可以进行对员工的各种处理。
根据如上描述,系统的E-R图如下所示:
图3.2-1工资管理系统ER图
实体属性图:
图3.2-2职工信息属性图
图3.2-4基本工资属性图
图3.2-5奖扣工资属性图
全局E-R图:
图3.2-6全局E-R图
3.3数据库逻辑设计
职工信息(职工编号,职工姓名,性别,年龄,所属科室)
基本工资(职工编号,职工级别,基本工资)
奖扣工资(职工号,奖金,扣款)
3.4数据库物理设计
图3.4-1用户登录密码表
图3.4-2职工基本信息表
3.5数据库表间联系
图3.5-1数据库表间联系图
4系统实现
4.1添加模块实现
在用户登录界面输入用户名和密码,当显示登录成功提示之后,则表明测试结果通过,进入到员工工资管理系统,输入职工编号,点击查询,就会显示该编号职工的基本信息,再点击下方的添加数据,出现添加界面,输入所要添加的信息,点击确定添加,则显示添加成功。
图4.1-1添加模块实现图
4.2删除模块实现
在用户登录界面输入用户名和密码,当显示登录成功提示之后,则表明测试结果通过,进入到员工工资管理系统,输入职工编号,点击查询,就会显示该编号职工的基本信息,再点击下方的删除数据,出现删除界面,输入所要删除的信息,点击删除,则显示删除成功。
图4.2-1删除模块实现图
4.3修改模块实现
在用户登录界面输入用户名和密码,当显示登录成功提示之后,则表明测试结果通过,进入到员工工资管理系统,输入职工编号,点击查询,就会显示该编号职工的基本信息,再点击下方的修改数据,出现修改界面,输入所要修改的信息,点击确定,则显示修改成功。
图4.3-1修改模块实现图
5代码调试与功能测试
5.1测试方案
编号
功能名称
输入/需求
输出/结果
测试结果
测试时间
1
用户登录界面
用户名,密码
登录成功提示
通过
2017/6/28
2
查询登录界面
职工编号
查询成功提示
通过
2017/6/28
3
加工资
通过工号添加员工的工资
增加工资成功提示
通过
2017/6/28
4
扣工资
通过工号扣去员工的工资
扣除工资成功提示
通过
2017/6/28
5
退出程序
点击退出
退出成功提示
欢迎再次使用
通过
2017/6/28
5.2测试结果
图5.2-1登录界面
图5.2-2输入职工编号后显示界面
图5.2-3加工资成功界面图
图5.2-4扣工资成功界面图
图5.2-5退出程序界面图
6收获与体会
在本次课程设计中,我们把本学期所学的SQL的数据库技术综合的运用到了此次课程设计中,在实验的过程中回顾到了自己一学期以来的学习成就,明白了自己学习好的地方和不好的地方。
总的来说,这次过程中学到了很多之前没有的知识,我想这对于我以后的学习以及系统开发都有很大的帮助,伴随着两周的课程设计,已经接近尾声,在其中学习不足之处的地方,以后还是要继续加强的。
第一次做这种带界面的系统课设,一开始拿到还真的是无从下手,对于数据的流向分析也不是很明确,系统各部分分析都还是很模糊的。
此系统的规划虽然已经完成,功能基本实现了目标规划一些重要功能,但由于时间仓促,所以只满足了基本要求,并没有过多考虑到系统的技术含量,在这次系统的开发过程中学到了好多知识,而且更加深入,而且更加熟练地掌握了MicrosoftSQLServer数据库,锻炼了我的项目开发能力,使我对数据库的知识有了更深刻的理解、更贴切的感受。
在这过程中有许多不顺利的时候,然后我就找同学讨论,实在讨论不出来,就到图书馆、上网查资料培养了自己查资料和同学讨论的好习惯,这些对将来走上工作岗位是有很大的帮助的,相信我以后工作时在这些方面会做的更好。
通过这次的数据库课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,掌握了软件Microsoftvisualstudio2012简单界面窗体的使用,以及E-R图转换为关系模式再到建表、插入数据等操作。
通过这次课程设计深刻认识来了系统功能设计的各个阶段之间都有一定的联系,系统设计答题可分为需求分析、概念结构设计、系统功能设计及调试测试六大步骤。
其中,让感触最深的是分析阶段,这个阶段,必须对索要设计的系统有总体的构思和了解,知道自己要做什么要实现什么,不能凭想象或者是自己的了解去设置需求,不然会在后续的设计阶段中遇到很多的问题。
从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,都需要熟练的掌握书本上的知识,然后将书本上的知识运用到实际中。
对许多原来不太清楚的知识点有了更进一步的了解,写代码的时候要细心,注意代码中的一切标点符号都要用英文,创建表插入记录时新插入的记录要加单引号,插入记录时新插入的元组顺序与属性的顺序要一致,常见存储过程时,需要用到变量的要先声明变量,创建了外键约束时,要先对不被约束的表进行操作。
通过本次课程设计,对SQL语言,数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表,学会了数据库的基本操作。
总的来说,职工工资管理作为企业内部财务管理的一个重要的方面,现在已经逐步被企业管理者所重视,通过计算机管理系统对员工工资进行全面的统计与管理,会更好的解决工资管理过程中所遇到的各种问题,并且克服了传统管理方式中的容易出错等问题。
职工工资管理系统成为企业现代化管理中的首选管理工具。
参考文献
[1]钱雪忠,王燕玲,林挺.数据库原理及技术[M].北京:
清华大学出版社,2011.
[2]钱雪忠,罗海驰,陈国俊.数据库原理及技术课程设计[M].北京:
清华大学出版社,2014.
[3]刘小彬.基于PHP技术网络考试系统的开发[J].电脑知识与技术,2013,11(15):
2522-2524.
[4]王珊,萨师煊.数据库系统概论(第四版).北京:
清华大学出版社,2005
[5]李红.数据库原理与应用.北京:
高等教育出版社,2002
[6]王能斌.数据库系统原理.北京:
电子工业出版社,2002
[7]郑阿奇,刘启芬,顾韵华.编著SQLServer教程[M].北京:
清华大学出版社,2002.
附 录
附录1源程序部分清单
附录1.1登陆代码
importjava.awt.*;
importjava.sql.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassRegisterextendsJFrameimplementsActionListener
{
Stringmm2;
Stringurl="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=xt";
Stringdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
Statementst;
Connectioncon;
privateJLabel[]jlArray={newJLabel("用户名"),newJLabel("密码")};
privateJTextFieldjName=newJTextField();
privateJPasswordFieldjPassword=newJPasswordField();
privateJButtonJB=newJButton("登录");
privateJButtonJB2=newJButton("退出");
privateJButtonJB3=newJButton("注册");
publicRegister()
{
ImageIconimg=newImageIcon("1.jpg");
JLabelimgLabel=newJLabel(img);
this.getLayeredPane().add(imgLabel,newInteger(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,img.getIconWidth(),img.getIconHeight());//设置背景标签的位置
Containercp=this.getContentPane();
cp.setLayout(null);
((JPanel)cp).setOpaque(false);
this.setLayout(null);
jlArray[0].setBounds(20,20,50,25);
jName.setBounds(70,20,170,25);
jlArray[1].setBounds(25,55,50,25);
jPassword.setBounds(70,55,170,25);
JB.setBounds(75,100,70,20);
JB2.setBounds(165,100,70,20);
JB3.setBounds(120,140,70,20);
this.add(jlArray[0]);
this.add(jlArray[1]);
this.add(jName);
this.add(jPassword);
this.add(JB);
this.add(JB2);
this.add(JB3);
jName.addActionListener(this);
jPassword.addActionListener(this);
JB.addActionListener(this);
this.setTitle("管理员登录");
JB2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
System.exit(0);
}
});
this.setResizable(false);
this.setBounds(543,250,280,220);
JB3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
RegisterUserfrm=newRegisterUser();
frm.setVisible(true);
}
});
}
publicvoidactionPerformed(ActionEvente)//登录
{
Stringyh=null;
yh=jName.getText();
try
{
Class.forName(driver);
}
catch(ClassNotFoundExceptionarg0)
{
System.out.print("无法创建驱动程式实体!
");
}
try{
Class.forName(driver);//加载驱动
}
catch(ClassNotFoundExceptionevent){System.out.print("无法创建驱动程式实体!
");}
try{
con=DriverManager.getConnection(url,"sa","123456");
con.setAutoCommit(true);
System.out.println("和数据库已经建立连接!
!
!
");
st=con.createStatement();
ResultSetrs=st.executeQuery("SELECTmimafrombiao2whereyonghu='"+yh+"'");
while(rs.next())
{
mm2=rs.getString("mima");
}
st.close();
con.close();
}
catch(SQLExceptione1){System.out.println("异常"+e1);}
if(String.valueOf(jPassword.getPassword()).equals(mm2))
{
JOptionPane.showMessageDialog(null,"登陆成功","提示",JOptionPane.INFORMATION_MESSAGE);
this.dispose();
Secondfrm1=newSecond();
frm1.setVisible(true);
jName.setText("");
jPassword.setText("");
}
else{
JOptionPane.showMessageDialog(null,"登录失败,请检查用户名和密码!
","提示",JOptionPane.ERROR_MESSAGE);
jName.setText("");
jPassword.setText("");
}
}
publicstaticvoidmain(String[]args)
{
Registerfrm=newRegister();
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
importjava.awt.Container;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.SQLException;
importjava.sql.Statement;
importjavax.swing.*;
classRegisterUserextendsJFrameimplementsActionListener
{
Stringurl="jdbc:
sqlserver:
//localhost:
1433;DatabaseName=xt";
Stringdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
Statementst;
Connectioncon;
privateJButtonJB01=newJButton("确定");
privateJLabelJL0=newJLabel("用户名");
privateJLabelJL1=newJLabel("密码");
privateJTextFieldJT0=newJTextField();
privateJPasswordFieldJT1=newJPasswordField();
publicRegisterUser()
{
ImageIconimg=newImageIcon("2.jpg");
JLabelimgLabel=newJLabel(img);
this.getLayeredPane().add(imgLabel,newInteger(Integer.MIN_VALUE));
imgLabel.setBounds(0,0,img.getIconWidth(),img.getIconHeight());//设置背景标签的位置
Containercp=this.getContentPane();
cp.setLayout(null);
((JPanel)cp).setOpaque(false);
this.setLayout(null);
this.setBounds(500,200,400,300);
this.setTitle("注册新用户");
JL0.setBounds(80,80,90,20);
JL1.setBounds(80,110,90,20);
this.add(JL0);
this.add(JL1);
JT0.setBounds(150,80,90,20);
JT1.setBounds(150,110,90,20);
this.add(JT0);
this.add(JT1);
JB01.setBounds(250,85,90,40);
this.add(JB01);
JB01.addActionListener(this);
}
publicvoidactionPerformed(ActionEventarg0)
{
Stringbh=JT0.getText();
Stringbm=JT1.getText();//接受文本框传来的数据
try
{
Class.forName(driver);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统