数据库课程设计 工资管理系统.docx
《数据库课程设计 工资管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 工资管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
数据库课程设计工资管理系统
中北大学
课程设计说明书
学生姓名:
陈松
学号:
0606054112
学院:
电子与计算机科学技术学院
专业:
软件工程
题目:
工资管理系统
----职工考勤管理系统
指导教师:
韩燮职称:
教授
2008年6月27日
1系统设计
1.1目标设计
在工资管理中,需要从公司管理方式以及实际情况中提取相关信息,以反映工资管理情况。
传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。
使用计算机可以高速,快捷地完成以上工作。
避免重复劳动,规范工资管理行为,从而提高了管理效率和水平。
让人们的效率大大提高.
不难想象,正是资讯的迅速发展使得人们从过去繁复的手工劳作中得以解脱,从而使这种服务在现在才可能迅速普及。
同时,编写一套完整的工资管理系统的任务就显得尤为重要。
开发设计思想
本系统开发设计思想:
●对公司软硬件调查,从实际环境出发,以便充分利用公司现在资源,提高系统开发水平和应用效果。
●了解公司的需要及相关方面的规定,根据需要做出符合要求的软件,并达到操作过程中的直观、方便、实用、安全等要求。
●将系统按模块分工到人,提高效率,且模块化设计便于系统功能的各种组合和修改及日后的维护
●系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、等操作。
1.3开发和运行环境选择
开发工具:
SQL2000,java语言。
运行环境:
WindowsXP,Windows2000或VISTA操作系统。
1.4系统功能分析
本系统主要用于员工基本信息的管理,对员工以及其他信息的添加、修改、删除、查询等基本操作。
对于数据库的保护有数据备份和数据恢复的功能。
针对这些要求,设计本月工资信息管理系统。
该系统主要包括职工信息、职工考勤信息、职工津贴信息。
1)职工信息管理系统
功能为:
财务部门相关人员录入、修改、删除、查询员工个人信息;员工本人能通过用户名和密码查询自己的信息以及修改自己的密码;
2)职工工资管理系统
功能为:
根据工资生成公式,按照员工的考勤情况及各种表现按月生成相应的工资;财务部门相关人员能录入、修改、删除、查询每个月每个员工的工资信息以及工资汇总;员工本人能查询自己的工资信息以及工资汇总;
3)职工津贴管理系统
功能为:
财务部门相关人员录入、修改、删除、查询职工津贴信息;职工本人能查询自己的津贴;
4)职工考勤管理系统
功能为:
后勤管理人员录入、修改、删除、查询职工考勤信息;职工本人能查询自己的考勤情况。
采用模块化设计思想,可以大大提高设计的效率,并且可以最大限度地减少不必要的错误。
其系统结构框图如图所示:
图1.1系统功能模块图
2.数据库设计
2.1数据库需求分析
根据工资管理要求及用户需求调查分析,得到以下数据流图
图2.1第一层数据流图
图2.2职工信息的载入
图2.3工资的信息载入
图2.4考勤的信息载入
图2.5津贴的信息载入
图2.6信息查询及管理的流程图
2.2数据库概念设计
有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图2-2所示
1n
m
n
1n
m
n
1n
图2.7实体之间关系E-R图
2.3数据库逻辑设计
将以上E-R转换成如下关系模式
员工(职工号,姓名,工龄,部门岗位,电话号码,密码)
工资(职工号,个人所得税,基本工资,医疗保险,缺勤扣除)
考勤(职工号,缺勤天数,缺勤类别,时间)
津贴(职工号,年终奖金,加班奖金,其他奖金)
其中,标有下划线的字段表示为该数据表的主码,即主关键字。
在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。
工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。
每个表格表示在数据库中的一个表。
表一:
员工信息表:
列名
数据类型
可否取空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
name
Char(10)
NOTNULL
职工姓名
gw
Char(20)
NOTNULL
部门岗位
gl
Smallint
NOTNULL
工龄
hm
Char(11)
NULL
电话号码
mi
Smallint
NOTNULL
登录密码
表二:
工资表:
列名
数据类型
可否取空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
Jb
money
NOTNULL
基本工资
yl
money
NULL
医疗保险
Sw
money
NULL
个人所得税
kc
money
NULL
缺勤扣除
Jt
money
NULL
津贴
yz
money
NOTNULL
月总工资
表三:
员工考勤信息表
列名
数据类型
可否取空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
ts
Int(4)
NULL
缺勤天数
lb
Char(30)
NULL
缺勤类别
Sj
Char(10)
NULL
缺勤时间
表四:
津贴信息表
列名
数据类型
可否为空
备注说明
no
Char(8)
NOTNULL
职工号(主键)
Jiaban
money
NULL
月加班奖金
nz
money
NULL
年终奖金
qt
money
NULL
其他奖金
3.功能模块详细设计
3.1主界面及工资基本信息界面的设计
图2.8欢迎画面
图2.9登录界面
图3.0系统主界面
图3.1考勤信息录入,修改,删除,查询界面
3.2功能描述
1主界面
通过菜单将各个模块连接起来
2.工资基本信息模块
工资基本信息的添加、修改和删除等基本操作
3.3主要源代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.awt.*;
importjava.sql.*;
importjava.lang.*;
importjava.util.*;
importjavax.swing.table.*;
importjava.math.*;
classzzlcimplementsActionListener{
JFrameframe=newJFrame("欢迎进入ZZLC工资管理系统");
JLabellabel=newJLabel("制作人:
陈松张淑静张虎黎成",JLabel.CENTER);
JButtonbutton1=newJButton("进入系统");
JButtonbutton2=newJButton("退出系统");
ImageIconim=newImageIcon("1.jpg");
JLabela1=newJLabel(im);
voidCreate(){
JPanelpcontentPane=(JPanel)frame.getContentPane();
JPanelpcontentPane1=newJPanel();
pcontentPane.add(label);
pcontentPane.setLayout(newFlowLayout());
pcontentPane.add(button1);
pcontentPane.add(button2);
pcontentPane.add(newLabel(""));
pcontentPane.add(a1);
pcontentPane.setBackground(Color.pink);
pcontentPane.setVisible(true);
button1.addActionListener(this);
button2.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200,100,550,600);
frame.setVisible(true);
}
publicstaticvoidmain(String[]args){
zzlcdome=newzzlc();
dome.Create();
}
publicvoidactionPerformed(ActionEvente){
if(button1.equals(e.getSource())){
DLdl=newDL();
dl.create();
}
if(button2.equals(e.getSource())){//退出
System.exit(0);
}
}
}
classDLimplementsActionListener{
JFrameframe=newJFrame("职工/管理员登陆");
JLabellabel1=newJLabel("用户名");
JLabellabel2=newJLabel("密码");
JButtonlogonButton1=newJButton("管理员登录");
JButtonlogonButton2=newJButton("职工登录");
JButtoncancelButton=newJButton("退出");
JTextFieldt1=newJTextField(0);
JTextFieldt2=newJTextField(0);
ImageIconim=newImageIcon("2.jpg");
JLabela2=newJLabel(im);
JTextFieldusername=newJTextField(9);
JPasswordFieldpassword=newJPasswordField(9);
voidcreate(){
JPanelp=(JPanel)frame.getContentPane();
JPanelp1=newJPanel();
p.setLayout(newFlowLayout());
p.add(label1);
p.setSize(5,5);
p.setLocation(4,8);
p.add(username);
p.setSize(100,200);
p.setLocation(800,800);
p.add(label2);
p.setSize(50,20);
p.setLocation(40,80);
p.add(password);
p.setSize(100,20);
p.setLocation(80,120);
p.add(logonButton1);
p.add(newJLabel(""));
p.add(logonButton2);
p.add(newJLabel(""));
p.add(cancelButton);
p.add(newJLabel(""));
p.add(a2);
p.add(t1);
p.add(t2);
p.setBackground(Color.red);
p.setVisible(true);
logonButton1.addActionListener(this);
logonButton2.addActionListener(this);
cancelButton.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200,100,750,550);
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(logonButton1.equals(e.getSource())&&(username.getText().equals("123")==true)&&(password.getText().equals("123")==true)){
GZGLZJMgz=newGZGLZJM();
gz.create();
}
else{JOptionPane.showMessageDialog(null,"对不起,你输入的密码错误!
");
};
if(logonButton2.equals(e.getSource())&&(username.getText().equals(t1.getText())==true)&&(password.getText().equals(t2.getText())==true)){
XKxk=newXK();
xk.create();
Connectioncon;
Statementsql;
ResultSetrs;
Vectorvector=newVector();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione1){
System.out.println(""+e1);
}
try{
con=DriverManager.getConnection("jdbc:
odbc:
123","","");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
sql.executeQuery("SELECTGno,mmFROMYWHEREGno="+t1.getText()+"ANDmm="+t2.getText());
}catch(SQLExceptione1){
System.out.println(e1);
}
}
if(cancelButton.equals(e.getSource())){
System.exit(0);
}
}
}
classGZGLZJMextendsJFrameimplementsActionListener{
JFramef=newJFrame("工资管理系统");
JButtonb1=newJButton("津贴管理");
JButtonb2=newJButton("总查询");
JButtonb3=newJButton("工资管理");
JButtonb4=newJButton("后勤管理");
JButtonb6=newJButton("员工个人信息管理");
JButtonb5=newJButton("返回");
ImageIconim=newImageIcon("3.jpg");
JLabela3=newJLabel(im);
voidcreate(){
JPanelp=(JPanel)f.getContentPane();
JPanelp1=newJPanel();
p.setLayout(newFlowLayout());
p.add(b1);
p.add(newJLabel(""));
p.add(b6);
p.add(newJLabel(""));
p.add(b3);
p.add(newJLabel(""));
p.add(b4);
p.add(newJLabel(""));
p.add(b2);
p.add(newJLabel(""));
p.add(b5);
p.add(a3);
p.setBackground(Color.red);
p.setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
f.setBounds(200,100,800,600);
f.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(b5.equals(e.getSource())){//返回
DLd=newDL();
f.dispose();
}
if(b1.equals(e.getSource())){//津贴管理
JTGLjt=newJTGL();
jt.create();
}
if(b6.equals(e.getSource())){//员工个人信息管理
YGGLyg=newYGGL();
yg.create();
}
if(b2.equals(e.getSource())){//查询
XKxk=newXK();
xk.create();
}
if(b4.equals(e.getSource())){//后勤管理
KQGLkq=newKQGL();
kq.create();
}
if(b3.equals(e.getSource())){//工资管理
GZGLgz=newGZGL();
gz.create();
}
}
}
classKQGLimplementsActionListener{
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);
JButtonb6=newJButton("查询单人考勤");
String[]cloum={"职工号","缺勤天数","缺勤类别","缺勤时间"};
Object[][]row=newObject[50][4];
JTabletable=newJTable(row,cloum);
JScrollPanescrollpane=newJScrollPane(table);
JSplitPanesplitpane=newJSplitPane(JSplitPane.VERTICAL_SPLIT);
voidcreate()
{
JPanelp=(JPanel)f.getContentPane();
p.setLayout(newFlowLayout());
//p.add(scrollpane);
p.add(splitpane);
JPanelp1=newJPanel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b6);
p1.add(b5);
JPanelp2=newJPanel();
p2.setBackground(Color.red);
p2.add(scrollpane);
JPanelp3=newJPanel();
p.setLayout(newFlowLayout());
p.add(newJLabel(""));
p.add(newJLabel("职工号"));
p.add(tf1);
p.add(newJLabel("缺勤天数"));
p.add(tf2);
p.add(newJLabel("缺勤类别"));
p.add(tf3);
p.add(newJLabel(""));
p.add(newJLabel("缺勤时间"));
p.add(tf4);
p.add(newJLabel("在此处输入职工号点击查询删除"));
p.add(tf5);
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);
b6.addActionListener(this);
f.setBounds(200,100,500,600);
f.setResizable(true);