资源描述
得分:
课程设计汇报
企业工资管理系统
姓名
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(name, k, 1);
table.setValueAt(jb, k, 3);
table.setValueAt(jt, k,
展开阅读全文