1、得分:课程设计汇报企业工资管理系统姓名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、 需
2、求分析1.1 功效需求1.1.1功效划分(1)、职员信息表;立即反应职员基础信息 (2)、职员津贴表,反应职员津贴 (3)、职员基础工资表 1.1.2 功效描述(1)、基础工资设定(2)、津贴设定(3)、计算出月工资(4)、录入职员工资信息 (5)、添加职员工资信息 (6)、更改职员工资信息1.2性能需求此工资管理系统对工资数据精度计算能在默认情况之下正确到小数点后3位小数,即是正确到分计算。但在用户使用过程中,能自行依据实际情况进行小数计算精度设定,最大能许可保留小数点后5位精度。在时间特征上,当用户发出命令请求时服务器响应时间、对数据更新处理、工资数据查询检索等上,一样要求系统响应时间不会
3、超出0.5秒时间。系统支持多个操作系统运行环境,多不一样操作系统,不一样文件格式磁盘上数据均能实现信息互通,及共享。当服务器移植到其它系统平台,如:Linux平台下时,一样能和其它系统进行数据存取同时,不会出现系统之间互不兼容情况,系统支持多系统之间互连互通,系统有巨大强壮性。本课程设计是用Java语言编写,mysql数据库。1.3数据流图依据工资管理要求及用户需求调查分析,得到以下数据流图图1.1第一层数据流图修改职员信息删除职员统计输入职员基础信息工资表添加操作修改操作删除操作用户查询操作职员号 图1.2职员信息载入津贴表添加操作修改操作删除操作查询操作用户图1.4考勤信息载入2.总体设计
4、2.1数据库概念设计有了数据流图,用E-R图来说明工资信息管理系统数据库概念模式,图姓名基础工资职员号工资职员职员号领取1 nm影响姓名津贴 领取姓名津贴密码职员号图2.1实体之间关系E-R图2.2功效模块工资管理系统 职员管理模块 职员登陆模块 工资管理模块 系统模块3系统具体设计3.1数据库逻辑设计将以上E-R转换成以下关系模式职员(职员号,姓名,密码)工资(职员号,姓名,基础工资,)津贴(职员号,姓名,奖金)其中,标有下划线字段表示为该数据表主码,即主关键字。在上面实体和实体之间关系基础上,形成数据库中表格和各个表格之间关系。工资信息管理系统数据库中各个表格设计结果以下面多个表格所表示。
5、每个表格表示在数据库中一个表。表一:职员信息表:列名数据类型可否取空备注说明no Char ( 8 )NOT NULL职员号(主键)nameChar(10)NOT NULL职员姓名miSmallintNOT NULL登录密码表二:基础工资表:列名数据类型可否取空备注说明noChar ( 8 )NOT NULL职员号(主键)nameChar(10)NOT NULL职员姓名JbmoneyNOT NULL基础工资表四:津贴信息表列名数据类型可否为空备注说明noChar ( 8 )NOT NULL职员号(主键)nameChar(10)NOT NULL职员姓名JtmoneyNOT NULL津贴3.2各模
6、块功效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
7、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(退出系统);ImageIco
8、n 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.ad
9、dActionListener(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 (butt
10、on1.equals(e.getSource() DL dl = new DL();dl.create();frame.dispose();if (button2.equals(e.getSource() / 退出System.exit(0);登陆DL.javapackage wage_management;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connectio
11、n;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.swin
12、g.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 logon
13、Button1 = 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 =
14、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(
15、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.
16、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.cr
17、eate();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( j
18、dbc: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();fram
19、e.dispose();JOptionPane.showMessageDialog(this, 登录成功!);this.dispose();else JOptionPane.showMessageDialog(this, 输入用户名或密码错误!);catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace();if (cancelButton.equals(e.getSource() / 退出System.exit(0);GZGLZJM.java/工资管理主界面package wage_management;
20、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 Action
21、Listener 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.a
22、dd(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.
23、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.javapackage wage_management;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import ja
24、va.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.JPane
25、l;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
26、 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 = 职员号, 姓名, 津贴, 月基础工资,月薪;
27、Object row = new Object505;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);JPane
28、l 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 JLab
29、el(津贴);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.addActionLi
30、stener(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(or
31、g.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.getT
32、ext()+);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, 入录失败!);i
33、f (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
34、= 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
35、(); 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:/
36、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, 删除成功!)
37、;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,
38、 连接数据库失败!);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.e
39、xecuteQuery(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,