职工工资管理系统.docx

上传人:b****6 文档编号:8915517 上传时间:2023-02-02 格式:DOCX 页数:27 大小:294.41KB
下载 相关 举报
职工工资管理系统.docx_第1页
第1页 / 共27页
职工工资管理系统.docx_第2页
第2页 / 共27页
职工工资管理系统.docx_第3页
第3页 / 共27页
职工工资管理系统.docx_第4页
第4页 / 共27页
职工工资管理系统.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

职工工资管理系统.docx

《职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统.docx(27页珍藏版)》请在冰豆网上搜索。

职工工资管理系统.docx

职工工资管理系统

 

数据库课程实训报告

题目:

职工工资管理系统

目录

目录2

1课题内容和要求1

1.1课题描述1

1.2课题要求1

2需求分析1

2.1功能需求分析1

2.2数据需求分析1

3.1功能模块设计3

3.1功能模块设计3

3.2数据库概念设计4

3.3数据库逻辑设计5

3.4数据库物理设计7

3.5数据库表间联系8

4系统实现8

4.1登录模块实现8

4.2数据库模块实现9

4.3查询职工信息模块实现9

5代码调试与功能测试10

5.1测试方案10

5.2测试结果11

6收获与体会13

参考文献14

附  录15

附录1源程序部分清单15

附录1.1登陆代码15

附录1.2修改职工工资代码18

附录1.3删除职工工资代码20

职工工资管理系统

1课题内容和要求

1.1课题描述

职工工资管理系统的功能是收集员工的个人信息,以便实现按照科室录入个人的基本资料,向各科室发放个人工资和计算个人的实际发放工资,可以让相关财务部门及领导查看各科室人数情况和工资金额,还可以让员工用自己的员工号去查看自己的工资和扣除金额的情况。

该系统主要完成的工作为:

录入各职工自身及工资情况、对已经存在的数据的修改、删除、可查询、统计系统中的数据等。

为此因此职工工资管理系统的功能:

读取文件信息、数据输入、显示、查找、增加、删除、修改、计算、列表等。

1.2课题要求

1)可以按照科室(经理室、财务科、技术科和销售科)增加、修改、删除职工的基本资料

2)职工信息应包含职称,分为高级、中级、初级,同一职称职工基本工资相同

3)职工工资由基本工资、奖金、扣除金额组成,其中奖金、扣除金额可每月输入不同数据

4)可以计算职工每月工资

5)可以按照科室、职称、月份统计职工工资

6)可以按照科室、职工号、职工名称查询职工工资

2需求分析

2.1功能需求分析

由于此处主要任务是练习所学知识点,针对于本系统的基本功能已经给出。

所以,仅需根据用户提出的功能要求分离出各个主体,从而设计出合理的数据结构。

主要包括:

(1)员工工资管理应涉及到职工的基本信息的录入、修改和删除。

(2)员工工资管理应按照公司工资标准的设定、查询和结算等。

(3)员工工资管理系统还应该满足工资的考勤和奖励制度对员工进行考勤。

2.2数据需求分析

DFD:

数据字典:

属性名

存储代码

类型

长度

员工号

Sno

char

10

员工名

Sname

char

10

性别

Ssex

char

2

部门号

Dno

Int

生日

Birth

Char

10

年龄

Age

Int

员工数据字典

属性名

存储代码

类型

长度

基本工资

wage

money

补贴

phoneance

money

月奖金

monthreward

money

总工资

sumsalary

money

工资标准数据字典

属性名

存储代码

类型

长度

用户号

ID

nchar

10

密码

psw

nchar

6

用户类型

stype

smallint

用户数据字典

3.1功能模块设计

3.1功能模块设计

1)用户管理模块添加、编辑、删除登录用户。

2)基本信息设置模块包括员工基本信息管理企业工资的管理津贴的管理。

3)查询模块可组合各种条件查找各个部门的员工的基本信息和工资信息。

4)打印报表模块工资报表的打印预览、打印。

3.2数据库概念设计

1.根据如上的信息可得到实体之间的关系E-R图如下:

3.3数据库逻辑设计

(1)员工考勤表(Checkstat):

 

考勤编号(CheckID),员工编号(Eno),员工姓名(Ename),加班天数(OvertimeDay),旷工天数(AbsentDay),请假天数(LeaveDay),考勤日期(CheckDate),加班类型(OvertimeType) 

(2)员工津贴表(Allowance):

 

加班类型(OvertimeType),加班津贴(Osubsidy) 

(3)员工信息表(Emplogee):

 

员工编号(Eno),员工姓名(Ename),性别(Esex),出生年月(Ebirth),职务(Eduty),学历(Eedu),电话(Etel),身份证号(IDidentity),住址(Eaddr) (4)员工工种表(Wageconfig):

 

职务(Eduty),基本工资(BaseWage),加班标准(OverDay),请假标准(LeaveDay),旷工标准(AbsentDay),奖金(Bonus) (5)员工工资表(Wage):

 

员工编号(Eno),员工姓名(Ename),基本工资(BaseWage),加班津贴

主管部门 员工 请假扣款 加班工资 旷工扣款 员工基本信息 

工资 年终奖 基本工资 属于 

领导 旷工 加班 请假 录入 设定 

工资计算 计算公式 天数 天数 天数 

加班标准 请假标准 旷工标准 奖金 

(Osubsidy0),加班费(OvertimeWage),请假扣款(LeaveDayWage),旷工扣款(AbsentDayWage),奖金(Bonus),实发工资(ActWage)  

依据上面的关系模式,设计数据表如下:

3.4数据库物理设计

3.5数据库表间联系

4系统实现

4.1登录模块实现

系统用户登录模块主要用于完成对登录系统的用户的验证,只有合法的用户和正确的数据库配置才可以进入系统,否则给与相应的错误提示

登录窗体:

验证用户名和密码是否正确,通过用户名和密码判断出改用户是否是本系统的合法用户,并且通过用户名和密码判断用户的权限是超级管理员还是一般用户,根据不同的用户权限授予相应的管理和使用本系统的权限。

控件:

lblField控件数组,2个JLabel控件,2个JButton控件,2个TextBox控件,1个GroupBox控件,1个PictureBox控件。

属性:

用户名,密码,管理员,普通用户。

事件:

用户进行登陆。

数据库连接:

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassDBConnectionpublicstaticConnectiongetConnection(){Connectionconn=null;Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";Stringurl="jdbc:

odbc:

schoolData";Stringusername="sa";Stringpassword="123456";try{Class.forName(driver);

conn=DriverManager.getConnection(url,username,password);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returnconn;}}工具:

SQLServerManagementStudio,eclipse。

4.2数据库模块实现

将数据库的连接包装在一个

DBConnect

类中,以便其他模块能够轻松调用,避免每次重写

数据库连接代码。

代码如下:

//创建数据库连接类DBConnectpackageJava_Design;importjava.sql.*;publicclassJDBConnect{//静态方法提高数据库的连接效率publicstaticConnectiongetConn()throwsException{//加载JDBC驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");returnDriverManager.getConnection("jdbc:

sqlserver:

//localhost:

1433;"+"databasename=SalaryManagement","sa","1sjk");}//关闭连接publicstaticvoidcloseConn(Connectionconn){if(conn!

=null){try{conn.close();}catch(Exceptione){e.printStackTrace();}}}//关闭执行对象publicstaticvoidcloseStatement(Statementstmt){if(stmt!

=null){try{stmt.close();}catch(Exceptione){e.printStackTrace();}}}//关闭结果集publicstaticvoidcloseResultSet(ResultSetrs){if(rs!

=null){try{rs.close();}catch(Exceptione){e.printStackTrace();}}}}

4.3查询职工信息模块实现

控件:

DataGrid控件,lblField控件,2个JLabel控件,2个JButton控件,1个TextBbox控件,JMenu控件,1个GroupBox控件,1个PictureBox控件。

属性:

工号,姓名,性别,年龄,生日,科室。

事件:

用户通过系统查询信息。

数据库连接:

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassDBConnection{publicstaticConnectiongetConnection(){Connectionconn=null;Stringdriver="sun.jdbc.odbc.JdbcOdbcDriver";Stringurl="jdbc:

odbc:

schoolData";Stringusername="sa";Stringpassword="123456";try{Class.forName(driver);

conn=DriverManager.getConnection(url,username,password);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returnconn;}}工具:

SQLServerManagementStudio,eclipse。

5代码调试与功能测试

5.1测试方案

登陆系统添加职工信息输入工号1,姓名张,性别选男,年龄32,生日911122,所在科室财务科;

添加职工工资,输入工号20,基本工资100,扣除金额工资100,奖金工资500,补助100.

查询职工工资,输入工号20;

修改职工信息,输入要修改工号20,值选择扣除,输入新的值10;

5.2测试结果

6收获与体会

过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。

同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。

在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。

拿到题目后的第一步,我们就确定了这次我们的系统前台界面和后台数据库用delphi实现,但是接下来我们就开始各自着手学习设计程序去了,没有想过要进行需求分析、数据流的分析等,所幸得到老师及时的指点,我们才知道系统的目标、业务流程、功能描述、数据流程分析、数据词典、数据流图、E-R图等这一系列的工作是非常重要的前期工作,前期工作没做好,后面也就无法进行。

因此,我们也做足充分的准备,我们搜索了大量的资料,尽可能模拟现实社会中的工资管理系统,建立模型。

由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够醒目等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。

在本系统的设计过程和论文报告编写过程中,老师、同学都给予了我许多无私的帮助,给我提出了很多宝贵的修改意见,在这里,我向这些无私帮助我的人表示衷心的感谢。

参考文献

[1]钱雪忠,王燕玲,林挺.数据库原理及技术[M].北京:

清华大学出版社,2011.

[2]钱雪忠,罗海驰,陈国俊.数据库原理及技术课程设计[M].北京:

清华大学出版社,2014.

附  录

附录1源程序部分清单

附录1.1登陆代码

packagestudent;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassdengluimplementsActionListener{

staticStringdbdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

staticStringdburl="jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=students";

staticStringuser="sa";

staticStringpass="123456";

Stringtype="管理员";

JFramef;

JLabelj1,j2,j3;

JTextFieldtf1;

JPasswordFieldtf2;

JButtonb1,b2;

JRadioButtonrb1,rb2;

denglu(){

f=newJFrame("登陆");

f.setLayout(null);

tf1=newJTextField(20);

tf2=newJPasswordField(20);

tf2.setEchoChar('*');

b1=newJButton("确定");

b2=newJButton("退出");

j1=newJLabel("请输入用户名");

j2=newJLabel("请输入密码");

j3=newJLabel("");

rb1=newJRadioButton("管理员");

rb2=newJRadioButton("普通用户");

ButtonGroupg1=newButtonGroup();

g1.add(rb1);

g1.add(rb2);

rb2.addActionListener(this);

rb1.addActionListener(this);

b1.addActionListener(this);

b2.addActionListener(this);

f.add(j1);

f.add(tf1);

f.add(j2);

f.add(tf2);

f.add(b1);

f.add(b2);

f.add(j3);

f.add(rb1);

f.add(rb2);

j1.setBounds(45,40,80,20);

j2.setBounds(45,90,80,20);

j3.setBounds(50,200,200,20);

b1.setBounds(60,180,70,30);

b2.setBounds(180,180,70,30);

tf1.setBounds(130,40,120,20);

tf2.setBounds(130,90,120,20);

rb1.setBounds(70,130,80,20);

rb2.setBounds(180,130,80,20);

f.setSize(350,270);

f.setVisible(true);

f.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(finalWindowEvente){

System.exit(0);

}

});

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource().equals(rb2)){

type="普通用户";

}

if(e.getSource().equals(rb1)){

type="管理员";

}

if(e.getSource().equals(b1)){

Strings1=String.valueOf(tf2.getPassword());

if(tf1.getText().equals("")||s1.equals(""))

{

//newJOptionPane().showMessageDialog(null,"用户名或密码不能为空!

");

j3.setText("用户名或密码不能为空!

");

}

else{

try{

Class.forName(dbdriver);

Connectioncon=DriverManager.getConnection(dburl,user,pass);

Statementstm=con.createStatement();

ResultSetres=stm.executeQuery(sql);

while(res.next()){

if(tf1.getText().trim().equals(res.getString("sid")))

{/if(tf2.getText().equals(res.getString("spw")))

{

javax.swing.JOptionPane.showMessageDialog(null,"登陆成功");

newStudent1();

}

else{

//javax.swing.JOptionPane.showMessageDialog(null,"密码不正确");

j3.setText("密码输入有误!

");

tf1.setText("");

tf2.setText("");

}

}

else{

j3.setText("用户名不存在!

");

}

}

ResultSetres=stm.executeQuery("select*fromsuserwheresid='"+tf1.getText()+"'");//读取数据库

if(!

res.next())

{

JOptionPane.showMessageDialog(null,"不存在此用户!

");

}

elseif(!

(res.getString("spw").trim().equals(s1))){

JOptionPane.showMessageDialog(null,"密码错误!

");

}

elseif(!

res.getString("type").trim().equals("普通用户")){

if(type.equals("普通用户")){

javax.swing.JOptionPane.showMessageDialog(null,"这是是管理员帐户请使用管理员权限!

");

}

else{

javax.swing.JOptionPane.showMessageDialog(null,"管理员账户登陆成功!

");

Stringsasa=res.getString("sid");

f.setVisible(false);

newStar(type,sasa);

}

}

else{

if(type.equals("管理员")){

javax.swing.JOptionPane.showMessageDialog(null,"这是普通用户请使用普通用户权限!

");

}

else{

javax.swing.JOptionPane.showMessageDialog(null,"普通用户账户登陆成功!

");

Stringsasa=res.getString("sid");

f.setVisible(false);

newStar("普通用户",sasa);

}

}

con.close();

}catch(Exceptionz){

z.printStackTrace();

System.out.println(z.getMessage());

}

}

}

if(e.getSource().equals(b2)){

System.exit(0);

}

}

publicstaticvoidmain(String[]args)

{newdenglu();

}

}

附录1.2修改职工工资代码

packagestudent;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassxiugaichengjiextendsJInternalFrameimplementsActionListener{

intn=0;

JLabelj1,j2,j3;

JTextFieldtf1,tf2;

JButtonb1,b2;

JRadioButtonrb1,rb2,rb3,rb4;

Stringss1="";

xiugaichengji(){

super("修改职工信息");

setLayout(null);

j1=newJLabel("输入要修改的工号");

j2=new

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1