资源描述
(完整word版)数据库课程设计—企业工资管理系统(java版+完整代码)
得分:
课程设计报告
企业工资管理系统
姓名
XXX
班级
XXXXX
学号
XXXXXX
课程名称
数据库原理及应用
指导教师
201X年X月X日
目 录
一.工资管理系统需求分析…………………………………
1.1功能需求…………………………………………………
1.1.1功能划分………………………………………
1.1.2功能描述……………………………………………
1.2性能需求…………………………………………………
1.3数据流图………………………………………………
二.总体设计…………………………………………………
2.1数据库概念设计…………………………………………
2.2功能模块…………………………………………………
三.系统详细设计……………………………………………
3.1数据库逻辑设计…………………………………………
3.2各模块功能………………………………………………
3.2.1职工信息管理系统…………………………………
3.2.2职工工资管理系统…………………………………
3.2.3职工津贴管理系统…………………………………
四.系统实现…………………………………………………
4.1界面截图…………………………………………………
4.1.1主界面及工资基本信息界面……………………
4.1.2登录界面…………………………………………
4.1.3系统主界面………………………………………
4.1.4信息录入,修改,删除,查询界面…………
4.2设计代码…………………………………………………
五.实验总结…………………………………………………
1、 需求分析
1.1 功能需求
1.1.1功能划分
(1)、员工信息表;及时反映员工的基本信息
(2)、员工津贴表,反映员工津贴
(3)、员工基本工资表
1.1.2 功能描述
(1)、基本工资的设定
(2)、津贴的设定
(3)、计算出月工资
(4)、录入员工工资信息
(5)、添加员工工资信息
(6)、更改员工工资信息
1.2性能需求
此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保留小数点后5位的精度。在时间特性上,当用户发出命令请求时的服务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互通,及共享。当服务器移植到其他的系统平台,如:Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。本课程设计是用Java语言编写,mysql数据库。
1.3数据流图
根据工资管理要求及用户需求调查分析,得到以下数据流图
图1.1第一层数据流图
修改职工信息
删除职工记录
输入职工基本信息
工资表
添加操作
修改操作
删除操作
用户
查询操作
职工号
图1.2职工信息的载入
津贴表
添加操作
修改操作
删除操作
查询操作
用户
图1.4考勤的信息载入
2.总体设计
2.1数据库概念设计
有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图
姓名
基本工资
职工号
工资
员工
职工号
领取
1 n
m
影响
姓名
津贴
领取
姓名
津贴
密码
职工号
图2.1实体之间关系E-R图
2.2功能模块
工资管理系统
员工管理模块
职工登陆模块
工资管理模块
系统模块
3.系统详细设计
3.1数据库逻辑设计
将以上E-R转换成如下关系模式
员工(职工号,姓名,密码)
工资(职工号,姓名,基本工资,)
津贴(职工号,姓名,奖金)
其中,标有下划线的字段表示为该数据表的主码,即主关键字。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。
工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。
表一:员工信息表:
列名
数据类型
可否取空
备注说明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
mi
Smallint
NOT NULL
登录密码
表二:基本工资表:
列名
数据类型
可否取空
备注说明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
Jb
money
NOT NULL
基本工资
表四:津贴信息表
列名
数据类型
可否为空
备注说明
no
Char ( 8 )
NOT NULL
职工号(主键)
name
Char(10)
NOT NULL
职工姓名
Jt
money
NOT NULL
津贴
3.2各模块功能
3.2.1职工信息管理系统
功能为:财务部门相关人员录入、修改、删除、查询员工个人信息
3.2.2职工工资管理系统
功能为:根据工资生成公式,按照员工的考勤情况及各种表现按月生成相应的工资;财务部门相关人员能录入、修改、删除、查询每个月每个员工的工资信息以及工资汇总;员工本人能查询自己的工资信息以及工资汇总;
3.2.3职工登陆查询系统
功能为:员工本人能通过用户名和密码查询自己的信息以及修改自己的密码;
4.系统实现
4.1界面截图
4.1.1主界面
4.1.2登录界面
4.1.3管理员管理工资界面
4.1.4信息录入,修改,删除,查询界面
4.1.5职工信息查询界面
4.1.6职工密码修改界面
4.2设计代码
DB.java
package wage_management;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class DB extends JFrame implements ActionListener {
JFrame frame = new JFrame("欢迎进入企业工资管理系统");
JLabel label = new JLabel("", JLabel.CENTER);
JButton button1 = new JButton("进入系统");
JButton button2 = new JButton("退出系统");
ImageIcon im = new ImageIcon("1.jpg");
JLabel a1 = new JLabel(im);
void Create() {
JPanel pcontentPane = (JPanel) frame.getContentPane();
pcontentPane.add(a1);
pcontentPane.add(label);
pcontentPane.setLayout(new FlowLayout());
pcontentPane.add(button1);
pcontentPane.add(button2);
pcontentPane.setVisible(true);
button1.addActionListener(this);
button2.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setBounds(200, 100, 550, 180);
frame.setVisible(true);
}
public static void main(String[] args) {
DB dome = new DB();
dome.Create();
}
public void actionPerformed(ActionEvent e) {
if (button1.equals(e.getSource())) {
DL dl = new DL();
dl.create();
frame.dispose();
}
if (button2.equals(e.getSource())) {// 退出
System.exit(0);
}
}
}
登陆
DL.java
package wage_management;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.mysql.jdbc.PreparedStatement;
import Query.Querypad;
class DL extends JFrame implements ActionListener
{
ImageIcon im = new ImageIcon("2.jpg");
JLabel a2 = new JLabel(im);
JFrame frame = new JFrame("职工/管理员登陆");
JLabel label1 = new JLabel("用户名");
JLabel label2 = new JLabel("密码");
JButton logonButton1 = new JButton("管理员登录");
JButton logonButton2 = new JButton("职工登录");
JButton cancelButton = new JButton("退出");
JTextField username = new JTextField(9);
JPasswordField password = new JPasswordField(9);
static String t1;
static String t2;
void create()
{
JPanel p = (JPanel) frame.getContentPane();
JPanel p1 = new JPanel();
p.setLayout(new FlowLayout());
p.add(a2);
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(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);
}
public void actionPerformed(ActionEvent e)
{
t1 = username.getText();
t2 = password.getText();
if(e.getSource()==logonButton1)
{
if( username.getText().equals("admin") == true
&& (password.getText().equals("admin") == true))
{
JOptionPane.showMessageDialog(this, "登录成功!");
GZGLZJM gz = new GZGLZJM();
gz.create();
frame.dispose();
}
else {
JOptionPane.showMessageDialog(null, "输入用户名或密码错误!");
}
}
if (e.getSource()==logonButton2)
{
try {
Connection con;
Statement ps;
ResultSet rs;
String sql = null;
Class.forName("org.gjt.mm.mysql.Driver");
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/wage management","root","jxb");
sql="select * from workerinfo where name='"+t1+"' and mi='"+t2+"'";
ps=(PreparedStatement) con.prepareStatement(sql);
rs = ps.executeQuery(sql);
if(rs.next())
{
if(rs.getString("name").equals(t1) && rs.getString("mi").equals(t2))
{
YGDLJM yg = new YGDLJM();
yg.create();
frame.dispose();
JOptionPane.showMessageDialog(this, "登录成功!");
this.dispose();
}
}
else {
JOptionPane.showMessageDialog(this, "输入用户名或密码错误!");
}
}catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if (cancelButton.equals(e.getSource())) // 退出
{
System.exit(0);
}
}
}
GZGLZJM.java//工资管理主界面
package wage_management;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
class GZGLZJM extends JFrame implements ActionListener {
JFrame f = new JFrame("工资管理系统");
JButton b1 = new JButton("工资管理");
JButton b2 = new JButton("员工信息管理");
JButton b3 = new JButton("返回");
ImageIcon im = new ImageIcon("3.jpg");
JLabel a1 = new JLabel(im);
void create() {
JPanel p = (JPanel) f.getContentPane();
p.setLayout(new FlowLayout());
p.add(a1);
p.add(b1);
p.add(b2);
p.add(b3);
p.setBackground(Color.cyan);
p.setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
f.setBounds(200, 100, 500, 200);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (b3.equals(e.getSource())) {// 返回
DL d = new DL();
d.create();
f.dispose();
}
if (b2.equals(e.getSource())) {// 员工信息管理
YGGL yg = new YGGL();
yg.create();
f.dispose();
}
if (b1.equals(e.getSource())) {// 工资管理
GZGL gz = new GZGL();
gz.create();
f.dispose();
}
}
}
//////工资管理
GZGL.java
package wage_management;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class GZGL extends JFrame implements ActionListener {
JFrame f = new JFrame("工资管理");
JButton b1 = new JButton("录入");
JButton b2 = new JButton("修改");
JButton b3 = new JButton("删除");
JButton b4 = new JButton("查询所有");
JButton b5 = new JButton("返回");
JTextField tf1 = new JTextField(4);
JTextField tf2 = new JTextField(4);
JTextField tf3 = new JTextField(4);
JTextField tf4 = new JTextField(4);
JTextField tf5 = new JTextField(6);
JTextField tf6 = new JTextField(7);
String[] cloum = { "职工号", "姓名", "津贴", "月基本工资","月薪"};
Object[][] row = new Object[50][5];
JTable table = new JTable(row, cloum);
JScrollPane scrollpane = new JScrollPane(table);
JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
void create() {
JPanel p = (JPanel) f.getContentPane();
p.setLayout(new FlowLayout());
p.add(scrollpane);
p.add(splitpane);
JPanel p1 = new JPanel();
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
JPanel p2 = new JPanel();
p2.setBackground(Color.cyan);
p2.add(scrollpane);
JPanel p3 = new JPanel();
p.setLayout(new FlowLayout());
p.add(new JLabel(""));
p.add(new JLabel("职工号"));
p.add(tf1);
p.add(new JLabel("姓名"));
p.add(tf2);
p.add(new JLabel("津贴"));
p.add(tf3);
p.add(new JLabel("月基本工资"));
p.add(tf4);
p.add(new JLabel("月薪"));
p.add(tf5);
p.add(new JLabel("在此处输入职工号点击查询删除"));
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);
}
public void actionPerformed(ActionEvent e) {
if (b1.equals(e.getSource())) { // 录入
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String insertStr = "INSERT INTO welfare (no,name,jt)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"');";
sql.executeUpdate(insertStr);
String insertStr1 = "INSERT INTO wageinfo (no,name,jb)VALUES('"+tf1.getText()+"','"+tf2.getText()+"','"+tf4.getText()+"');";
sql.executeUpdate(insertStr1);
con.close();
JOptionPane.showMessageDialog(this, "入录成功!");
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this, "入录失败!");
}
}
if (b2.equals(e.getSource())) {// 修改
Connection con;
Statement sql;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement();
String updateStr = "UPDATE welfare SET jt='"+tf3.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr);
String updateStr1 = "UPDATE wageinfo SET jb='"+tf4.getText()+"',name='"+tf2.getText()+"'where no='"+tf1.getText()+"';";
sql.executeUpdate(updateStr1);
JOptionPane.showMessageDialog(this, "修改成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this, "信息不存在!");
}
}
if (b3.equals(e.getSource())) {// 删除
Connection con;
Statement sql;
ResultSet rs;
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
System.out.println("" + e1);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
sql.executeUpdate("DELETE FROM wageinfo where no='"+tf6.getText()+"';");
sql.executeUpdate("DELETE FROM welfare where no='"+tf6.getText()+"';");
JOptionPane.showMessageDialog(this, "删除成功!");
con.close();
} catch (SQLException e1) {
JOptionPane.showMessageDialog(this, "删除失败!");
}
}
if (b4.equals(e.getSource())) {// 查询全部
Connection con;
Statement sql;
ResultSet rs;
//Vector vector = new Vector();
try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e1) {
JOptionPane.showMessageDialog(this, "连接数据库失败!");
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wage management","root","jxb");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
if (b4.equals(e.getSource())) {
for (int i = 0; i < 50; i++)
for (int j = 0; j < 4; j++)
table.setValueAt("", i, j);
rs = sql.executeQuery("select distinct * from wageinfo ,welfare where wageinfo.name=welfare.name");
int k = -1;
while (rs.next()) {
++k;
String no = rs.getString(1);
String name = rs.getString(2);
String jb = rs.getString(3);
String jt = rs.getString(6);
int sum= rs.getInt(3)+rs.getInt(6);
table.setValueAt(no, k, 0);
table.setValueAt
展开阅读全文