工资管理系统Word格式.docx
《工资管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《工资管理系统Word格式.docx(39页珍藏版)》请在冰点文库上搜索。
![工资管理系统Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/e2509fde-7901-4cae-9b87-8cee126b7cf3/e2509fde-7901-4cae-9b87-8cee126b7cf31.gif)
管理人员能够对员工信息进行增删改查,对员工工资进行操作。
迅速准确地完成各种工资信息的统计计算和汇总工作。
二.问题描述
2.1问题概述
设计一个工资管理系统,实现管理员对员工信息和员工工资管理的基本功能,能够进行基本的增删改查操作。
员工也可登录自己的账号,进行一系列信息查询操作。
2.2系统设计目标
员工信息管理软件目标在于减轻管理人员的负担,提高工作效率。
以及实现员工对自己信息查询功能。
该工资管理系统是实现员工信息管理,工资管理的基本功能。
2.3系统主要功能
1.登录系统:
区分管理员,员工,给予不同的操作权限。
2.工资管理:
管理员可以通过此功能,修改,添加新用户,及新用户工资信息。
普通员工则只能查询自己的工资,修改密码。
3.员工信息管理:
管理员可以添加,修改,删除,查询员工信息。
三.需求分析
3.1设计思想
工资管理系统是企业员工管理重要的一个环节,员工工资管理软件有助于减轻企业管理人员的负担,提高工作效率。
该员工管理系统是对员工信息管理,工资管理,进行管理和维护,实现员工管理的基本功能。
本系统要求运行稳定,图形界面符合用户的日常使用习惯,数据处理正确无误。
3.2可行性分析
可行性分析也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
该系统的可行性分析包括以下几个方面的内容。
A.技术可行性:
后台数据库采用Mysql,使用java编程,采用JDBC方式连接数据库,这些在目前都是容易实现的。
B.经济可行性:
在经济上,用此系统加强了企业员工管理效率,为企业管理人员提供了较高的效率,可节省人力资源的开支。
C.管理的可行性:
在工作上,企业员工工资管理信息量非常大,开发了此系统,可极大提高企业管理人员的工作的效率。
提高决策的管理能力等等,方便数据的储存和修改,及以后随时查询员工信息、工资信息,是一个比较人性化的管理系统。
由以上分析得出,本系统可进行开发。
3.3功能需求
3.3.1基本功能需求
区分不同的管理员,给予不同的操作权限
2.员工信息管理:
管理员可以通过此功能,添加新用户,添加员工相关信息,普通员工则只能修改自己的密码。
3.员工工资管理:
管理员添加员工工资相关信息,并进行工资统计计算。
4.员工查询个人工资:
员工查询自己工资相关信息。
5.修改密码:
员工可自行修改密码
3.3.2用户界面需求
界面对于用户来说至关重要,既是用户对软件评价的根据,也是用户最终使用的。
所以界面设计的怎么样,对于整个系统的成功与否有着密切联系。
当然,也许界面设计的好不会让其性能更好,但是设计的不好只会让它更差。
界面设计原则必须是,操作步骤少,随时提示用户系统正在进行哪些操作,减少用户记忆的东西。
3.4性能需求
1.硬件环境
处理器:
CPU1GHZ或更高
内存:
256M以上
硬盘空间:
120G以上
2.软件环境
操作系统:
Windows7
数据库:
Mysql
3.5系统设计基础
3.5.1系统数据流图
管理
图3.1顶级数据流图
图3.2添加或删除相关信息数据流图
登录
图3.3员工查询信息数据流图
四.概要设计
4.1功能描述
该系统的功能需求有如下方面
1.登录系统:
区分不同的人员,给予不同的操作权限。
2.员工信息管理:
管理员通过此功能,添加新用户,添加员工相关信息。
3.员工工资管理:
管理人员添加员工工资相关信息。
4.员工查询个人工资:
员工查询自己工资及相关信息。
5.修改密码:
员工可自行修改密码。
4.2系统模块
本系统分为三个模块:
系统模块:
管理系统用户的添加修改删除查询。
资源管理:
管理公司的员工,工资相关信息
数据管理:
管理本软件的数据库中的数据的导入,导出。
4.3系统功能模块图
图4.1系统功能模块图
五.数据库设计
5.1数据库简介
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
根据系统开发的需要,以及考虑到数据库存储量的大小及数据量的多少,我选择了Mysql数据库。
因为开发的时间比较短加上所需要做的事情比较多,只能对数据库进行增、删、改、查等操作的了解与学习。
5.2概念设计
图5.1员工信息E-R图
图5.2工资信息E-R图
图5.3津贴信息E-R图
5.3逻辑结构设计
员工(职工号,姓名,密码)
工资(职工号,姓名,基本工资,扣除金额)
津贴(职工号,姓名,奖金)
5.4物理结构设计
表5.1员工信息表:
列名
数据类型
可否为空
说明
主/外键
no
varchar(8)
NOTNULL
员工号
主键
name
varchar(10)
员工姓名
mi
Smallint
密码
表5.2基本工资表:
外键
NULL
jb
double
基本工资
表5.3津贴信息表
jt
津贴
六.详细设计
6.1基本信息模块
6.1.1登录系统
(1)模块功能
此模块用于登录管理系统,管理员和员工进行各自权限之内的操作。
(2)界面设计
图6.1登录界面
(3)实现代码
packagecom.salary;
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
importjava.sql.*;
publicclassDLextendsJFrameimplementsActionListener{
ImageIconim=newImageIcon("
2.jpg"
);
JLabela2=newJLabel(im);
JFrameframe=newJFrame("
职工/管理员登陆"
JLabellabel1=newJLabel("
用户名"
JLabellabel2=newJLabel("
密码"
JButtonlogonButton1=newJButton("
管理员登录"
JButtonlogonButton2=newJButton("
职工登录"
JButtoncancelButton=newJButton("
退出"
JTextFieldusername=newJTextField(9);
JPasswordFieldpassword=newJPasswordField(9);
staticStringt1;
staticStringt2;
voidcreate()
{
JPanelp=(JPanel)frame.getContentPane();
JPanelp1=newJPanel();
p.setLayout(newFlowLayout());
p.add(a2);
p.add(label1);
p.setSize(5,5);
p.setLocation(40,80);
p.add(username);
p.setSize(100,200);
p.setLocation(800,800);
p.add(label2);
p.setSize(50,20);
p.add(password);
p.setSize(100,20);
p.setLocation(80,120);
p.add(logonButton1);
p.add(logonButton2);
p.add(cancelButton);
p.setBackground(Color.cyan);
p.setVisible(true);
logonButton1.addActionListener(this);
logonButton2.addActionListener(this);
cancelButton.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200,100,500,220);
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente)
t1=username.getText();
t2=password.getText();
if(e.getSource()==logonButton1)
{
if(username.getText().equals("
admin"
)==true
&
&
(password.getText().equals("
)==true))
{
JOptionPane.showMessageDialog(this,"
登录成功!
"
GZGLZJMgz=newGZGLZJM();
gz.create();
frame.dispose();
}
else{
JOptionPane.showMessageDialog(null,"
输入用户名或密码错误!
}
}
if(e.getSource()==logonButton2)
try{
Connectioncon;
Statementps;
ResultSetrs;
Stringsql=null;
Class.forName("
com.mysql.jdbc.Driver"
).newInstance();
con=DriverManager.getConnection(
"
jdbc:
mysql:
//localhost:
3306/wagemanagement"
"
root"
sql="
select*fromworkerinfowherename='
+t1+"
'
andmi='
+t2+"
;
ps=(PreparedStatement)con.prepareStatement(sql);
rs=ps.executeQuery(sql);
if(rs.next())
{
if(rs.getString("
name"
).equals(t1)&
rs.getString("
mi"
).equals(t2))
{
YGGLZJMyg=newYGGLZJM();
yg.create();
frame.dispose();
JOptionPane.showMessageDialog(this,"
this.dispose();
}
}
else{
JOptionPane.showMessageDialog(this,"
}catch(Exceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
if(cancelButton.equals(e.getSource()))//退出
System.exit(0);
}
6.1.2工资管理
此模块用于实现对员工工资和信息的增删改查功能。
图6.2工资管理界面
packagecom.salary;
importjava.sql.SQLException;
importjavax.swing.JScrollPane;
importjavax.swing.JSplitPane;
importjavax.swing.JTable;
publicclassGZGLextendsJFrameimplementsActionListener{
JFramef=newJFrame("
工资管理"
JButtonb1=newJButton("
录入"
JButtonb2=newJButton("
修改"
JButtonb3=newJButton("
删除"
JButtonb4=newJButton("
查询所有"
JButtonb5=newJButton("
返回"
JTextFieldtf1=newJTextField(4);
JTextFieldtf2=newJTextField(4);
JTextFieldtf3=newJTextField(4);
JTextFieldtf4=newJTextField(4);
JTextFieldtf5=newJTextField(6);
JTextFieldtf6=newJTextField(7);
String[]cloum={"
职工号"
"
姓名"
津贴"
月基本工资"
总工资"
};
Object[][]row=newObject[50][5];
JTabletable=newJTable(row,cloum);
JScrollPanescrollpane=newJScrollPane(table);
JSplitPanesplitpane=newJSplitPane(JSplitPane.VERTICAL_SPLIT);
voidcreate(){
JPanelp=(JPanel)f.getContentPane();
p.add(scrollpane);
p.add(splitpane);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
JPanelp2=newJPanel();
p2.setBackground(Color.cyan);
p2.add(scrollpane);
JPanelp3=newJPanel();
p.add(newJLabel("
));
p.add(tf1);
p.add(tf2);
p.add(tf3);
p.add(tf4);
扣除"
p.add(tf5);
在此处输入职工号点击查询删除"
p.add(tf6);
splitpane.add(p1,splitpane.TOP);
splitpane.add(p2,splitpane.BOTTOM);
splitpane.setDividerLocation(50);
p.setBackground(Color.CYAN);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
f.setBounds(200,100,500,600);
f.setResizable(true);
//可以调整界面大小
f.setVisible(true);
publicvoidactionPerformed(ActionEvente){
if(b1.equals(e.getSource())){//录入
Connectioncon;
Statementsql;
}catch(ClassNotFoundExceptione1){
System.out.println("
+e1);
con=DriverManager.getConnection("
sql=con.createStatement();
StringinsertStr="
INSERTINTOwelfare(no,name,jt)VALUES('
+tf1.getText()+"
'
+tf2.getText()+"
+tf3.getText()+"
sql.executeUpdate(insertStr);
StringinsertStr1="
INSERTINTOwageinfo(no,name,jb)VALUES('
+tf4.getTex