《员工薪资管理系统课程设计.pdf》由会员分享,可在线阅读,更多相关《员工薪资管理系统课程设计.pdf(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学院:班级:学号:姓名:余黎晨员工薪资管理系统课程设计李雪敏 敬翰林 颜学宏指导教师:李竹林一:绪论1.1 设计目的1.2 设计内容1.3 开发背景1.4 开发环境1.5 组内成员及分工二:需求分析2.1 题目分析2.2 功能分析2.3 数据流图目录2.4 数据字典2.5 系统功能三:系统分析与设计3.1 概念结构设计3.2 逻辑结构设计3.3 物理结构设计四:数据库实施及运行4.1 建基本表4.3 功能实现4.4 完整代码五:设计心得及体会一:绪论1.1 设计目的员工薪资系统的主要目的是通过操作计算机代替手工劳动,能够在该系统内完成员工的信息录入,查询,删除等操作,方便公司的高效化,规范化管
2、理,有利于员工更好更方便了解自己的薪资信息。系统开发的总体任务就是实现员工薪资管理的系统化、规范化和自动化。1.2 设计内容题目:员工薪资管理题目:员工薪资管理1)背景资料a)某单位现有 1000 名员工,其中有管理人员、财务人员、技术人员和销售人员。b)该单位下设 4 个科室,即经理室、财务科、技术科和销售科。c)工资由基本工资、福利补贴和奖励工资构成,失业保险和住房公积金在工资中扣除。d)每个员工的基本资料有姓名、性别、年龄、单位和职业(如经理、工程师、销售员等)。e)每月个人的最高工资不超过 3000 元。工资按月发放,实际发放的工资金额为工资减去扣除。2)设计要求:a)进行需求分析,编
3、写数据字典。b)设计 E-R 图。c)实现按照科室录入个人的基本资料、工资和扣除金额的数据。d)计算个人的实际发放工资。e)按科室、职业分类统计人数和工资金额。f)实现分类查询。g)能够删除辞职人员的数据。h)开发工具不限。1.3 开发背景当今社会,随着企业人数的不断增加,企业员工薪资的管理工作也越来越复杂,资金是企业生存的核心部分,而资金流动也是关键环节,随着计算机的普及,计算机管理系统已经原来越来越广泛的应用于各个中小型企业中,用计算机取代手工对企业管理的操作也是势在必行的,并且人为操作容易造成信息错误,纸质材料不易保存,可能会导致企业运转出现滞缓现象,影响企业发展。为了更好的、更方便地管
4、理企业中各个成员的工资发放情况,我们必须要有一个完善的、合理的、便捷的员工薪资管理系统来管理公司员工工资的发放情况。该员工薪资管理系统主要用于中小型企业员工的工资发放管理,此系统的建立和使用有利于员工更好的了解自己的薪资信息,提高公司员工薪资发放工作的效率,大大减少纸质管理对工作带来的失误。1.4 开发环境开发平台:SQLServer2005开发工具:EclipseJDBC开发语言:SQL 语言JAVA语言1.5 组内成员及分工李雪敏:系统框架撰写报告颜学宏:代码编写数据库的连接与运行余黎晨:概念结构设计代码调试敬翰林:逻辑结构设计需求分析2.1 题目分析二:需求分析该题目要求设计一个员工薪资
5、系统,实现员工信息的有序化,规范化,并能进行员工信息录入,查询,修改,删除等操作,能实现分类查询,2.2 功能分析该员工薪资系统能够实现的功能如下:员工信息的管理,包括姓名,性别,年龄,职业,员工号,部门编号基本信息的录入,查询,删除,修改等操作部门信息的管理,包括部门编号和部门名称,查询每个部门的业绩和员工薪资情况薪资信息的管理,包括员工号,部门编号,基本工资,福利补贴,奖励工资,失业保险,住房公积金,实发薪资等信息,统计出员工的基本工资,福利补贴,奖励工资,扣除失业保险,住房公积金后所得的工2.3 数据流图员工注册员工基本信息员工统计分析财务统计人员部门经理薪资信息管理部门工资查询员工薪资
6、信息形成员工工资记录查询2.4 数据字典数据字典在数据库设计中占有很重要的地位,数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。根据数据流图对员工薪资管理数据库数据字典的设计如下所示:2.41 数据结构名:员工含义说明:员工信息组成:姓名,性别,年龄,职业,员工号数据项名数据类型员工号员工姓名员工年龄部门名称员工职业charcharcharcharchar长度可否为空10no含义说明员工编号姓名年龄所属部门担任职务10no10no10no10no2.42 数据结构名:部门含义说明:部门信息组成:部门编号,部门名称数据项名数据类型部门编号部门名称charchar
7、长度可否为空410nono含义说明科室类别科室名称2.43 数据结构名:工资含义说明:员工薪资信息组成:员工号,部门编号,基本工资,福利补贴,奖励工资,扣罚工资,失业保险,住房公积金,实发薪资数据项名员工号员工工资奖励工资员工薪资数据类型长度可否为空charcharmoneymoney8488nononoyes含义说明员工编号所的工资基本工资福利和补贴工资2.5 系统功能该员工薪资系统的功能如下:三:系统分析与设计3.1 概念结构设计ER 图设计员工实体关系图姓名性别职业年龄部门编号员工号员工部门实体关系图部门编号部门部门名称工资实体关系图员工号部门编号基本工资实发薪资住房公积金失业保险总的
8、ER 图工资奖励工资福利补贴3.2 概念结构设计E-R 图表示的概念模型是用户数据要求的形式化,它不为任何一个 DBMS所支持,而逻辑结构设计的任务就是把概念模型结构转换成某个具体的DBMS所支持的数据模型,员工薪资管理 E-R 图转换为关系模式为:员工(姓名,性别,年龄,职业,员工号,部门编号)部门(部门编号,部门名称)薪资(员工号,员工工资,福利补贴,奖励工资,失业保险,住房公积金,实发薪资)4.1 建基本表四:数据库实施与运行员工信息表部门信息表工资信息表4.3 功能实现4.31 系统界面展示:4.32 员工信息查询功能按工号查询:按姓名查询:4.33 员工工资查询功能:4.34 修改员
9、工工资功能:4.35 添加员工功能:4.36 修改员工信息功能:4.37 删除员工信息功能:4.4 完整代码展示4.41 源程序代码/类 DBConnect 用于数据库的连接/导入 sql 包import java.sql.*;/创建数据库连接类 DBConnectpublic class DBConnect/静态方法提高数据库的连接效率public static Connection getConn()throws Exception/加载 JDBC 驱动Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/以系统默认用户身份,连接数据库StudentMa
10、nagerreturn DriverManager.getConnection(jdbc:odbc:Test,dmj,753);4.42 主框架代码:/系统主框架类/导入系统的包import java.awt.*;import java.awt.event.*;import javax.swing.*;/创建主框架类 MainFramepublic class MainFrame extends JFrame implements ActionListener/创建内容面板JPanel contentPane;/创建菜单栏组件的对象JMenuBar jMenuBar1=new JMenuBar
11、();/菜单条JMenu jMenu0=new JMenu(退出系统);/菜单JMenuItem jMenuItem0=new JMenuItem(退出);/子菜单JMenu jMenu1=new JMenu(员工管理);JMenuItem jMenuItem1=new JMenuItem(添加员工);JMenuItem jMenuItem2=new JMenuItem(修改员工);JMenuItem jMenuItem3=new JMenuItem(删除员工);JMenu jMenu2=new JMenu(工资管理);JMenuItem jMenuItem4=new JMenuItem(添加
12、工资);JMenuItem jMenuItem5=new JMenuItem(修改工资);JMenuItem jMenuItem8=new JMenuItem(工资查询);JMenu jMenu3=new JMenu(员工查询);JMenuItem jMenuItem6=new JMenuItem(按工号查询);JMenuItem jMenuItem7=new JMenuItem(按姓名查询);JMenuItem jMenuItem9=new JMenuItem(互动);/创建标签,用于显示信息JLabel jLabel1=new JLabel(欢迎使用员工薪资管理系统);/创建构造方法pub
13、lic MainFrame()/界面初始化方法private void jbInit()throws Exceptiontrycatch(Exception exception)exception.printStackTrace();/关闭框架窗口时的默认事件方法setDefaultCloseOperation(EXIT_ON_CLOSE);/调用初始化方法jbInit();/创建内容面板contentPane=(JPanel)getContentPane();/设置内容面板的布局为空contentPane.setLayout(null);/主框架的大小setSize(new Dimensio
14、n(400,360);/主框架的标题setTitle(员工薪资管理系统);/添加事件监听器jMenuItem0.addActionListener(this);jMenuItem1.addActionListener(this);jMenuItem2.addActionListener(this);jMenuItem3.addActionListener(this);jMenuItem4.addActionListener(this);jMenuItem5.addActionListener(this);jMenuItem6.addActionListener(this);jMenuItem7
15、.addActionListener(this);jMenuItem8.addActionListener(this);jMenuItem9.addActionListener(this);/添加菜单条到主框架setJMenuBar(jMenuBar1);/添加菜单到菜单条jMenuBar1.add(jMenu0);jMenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);jMenuBar1.add(jMenu3);/添加菜单项到菜单jMenu0.add(jMenuItem0);jMenu1.add(jMenuItem1);jMenu1.add(jMenuItem
16、2);jMenu1.add(jMenuItem3);jMenu2.add(jMenuItem4);jMenu2.add(jMenuItem5);jMenu2.add(jMenuItem8);jMenu3.add(jMenuItem6);jMenu3.add(jMenuItem7);/添加标签到主框架内容面板contentPane.add(jLabel1);/设置标签组件的大小和字体jLabel1.setFont(new java.awt.Font(黑体,Font.BOLD,20);jLabel1.setBounds(new Rectangle(65,70,275,55);/菜单项事件对应的处理
17、方法public void actionPerformed(ActionEvent actionEvent)/点击“系统”菜单下的“退出”菜单项if(actionEvent.getSource()=jMenuItem0)/点击“员工管理”菜单下的“添加员工”菜单项if(actionEvent.getSource()=jMenuItem1)/点击“员工管理”菜单下的“修改员工”菜单项if(actionEvent.getSource()=jMenuItem2)/创建“修改员工”面板对象ModifyEmployee ModifyEmp=new ModifyEmployee();this.remove
18、(this.getContentPane();/加载“修改员工”面板的对象到主框架this.setContentPane(ModifyEmp);/创建“添加员工”面板对象AddEmployee AddEmp=new AddEmployee();/移除主框架上原有的内容this.remove(this.getContentPane();/加载“添加职工”面板的对象到主框架this.setContentPane(AddEmp);/令界面可见this.setVisible(true);System.exit(0);this.setVisible(true);/点击“员工管理”菜单下的“删除员工”菜单
19、项if(actionEvent.getSource()=jMenuItem3)/点击“工资管理”菜单下的“添加工资”菜单项if(actionEvent.getSource()=jMenuItem4)/点击“工资管理”菜单下的“修改工资”菜单项if(actionEvent.getSource()=jMenuItem5)/创建工资添加的面板对象AddSalary AddSal=new AddSalary();this.remove(this.getContentPane();/加载工资添加面板的对象到主框架this.setContentPane(AddSal);this.setVisible(tr
20、ue);/创建“删除员工”面板对象DeleteEmployee DeleteEmp=new DeleteEmployee();this.remove(this.getContentPane();/加载“删除员工”面板的对象到主框架this.setContentPane(DeleteEmp);this.setVisible(true);/创建工资修改的面板对象ModifySalary ModifySal=new ModifySalary();this.remove(this.getContentPane();/加载工资修改面板的对象到主框架this.setContentPane(ModifySa
21、l);this.setVisible(true);/点击“工资管理”菜单下的“工资查询”菜单项if(actionEvent.getSource()=jMenuItem8)/点击“员工查询”菜单下的“按工号查询”菜单项if(actionEvent.getSource()=jMenuItem6)/创建“按工号查询”面板对象InquireOnGH OnGH=new InquireOnGH();/移除主框架上原有的内容this.remove(this.getContentPane();this.setContentPane(OnGH);/创建工资修改的面板对象SalaryInquire SalaryI
22、nq=new SalaryInquire();this.remove(this.getContentPane();/加载工资修改面板的对象到主框架this.setContentPane(SalaryInq);this.setVisible(true);this.setVisible(true);4.43 主函数 Main 代码:/系统的主程序类 Main/导入包import java.awt.*;import javax.swing.*;/创建主系统类class Mainpublic static void main(String args)/创建主界面,调用 MainFrame()构造函数和
23、方法MainFrame frame=new MainFrame();/获取屏幕尺寸Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();/获取主界面的窗体尺寸Dimension frameSize=frame.getSize();/令主界面窗体居中if(frameSize.heightscreenSize.height)/2);frameSize.height=screenSize.height;if(frameSize.widthscreenSize.width)frameSize.width=screenSize.
24、width;frame.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height/令主界面显示frame.setVisible(true);4.44 员工信息查询代码按工号查询代码/导入系统的类包import java.awt.*;im/按员工号查询面板类 InquireOnGHport java.sql.*;import javax.swing.*;import java.awt.event.*;/创建“按员工号查询”类public class InquireOnGH extends
25、 JPanel implements ActionListener/声明连接数据库对象Connection con;/声明 SQL 语句对象Statement st;/创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel(请输入员工号:);JTextField jTextField1=new JTextField();JButton jButton1=new JButton(查找);JTextArea jTextArea1=new JTextArea();/构造方法public InquireOnGH()/面板初始化方法private void jbInit()t
26、hrows Exception/连接数据库con=DBConnect.getConn();st=con.createStatement();/框架的布局this.setLayout(null);trycatch(Exception exception)exception.printStackTrace();/调用初始化方法jbInit();/设置各组件的大小jLabel1.setFont(new java.awt.Font(黑体,Font.BOLD,16);jLabel1.setBounds(new Rectangle(46,4,222,32);jTextField1.setBounds(ne
27、w Rectangle(47,37,247,31);jButton1.setBounds(new Rectangle(47,86,247,30);jTextArea1.setBounds(new Rectangle(24,一三 0,305,109);/添加按钮动作事件jButton1.addActionListener(this);/添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);/点击按钮事件public void actionPerformed(ActionEven
28、t e)/获取输入的员工号String EmployeeID=jTextField1.getText();/清空文本区原有的内容jTextArea1.setText();try/利用 st 对象执行 SQL 语句,返回结果集对象ResultSetrs=st.executeQuery(select*fromEmployee=+EmployeeID+);where员 工 号/处理结果集if(rs.next()jTextArea1.setText(员 工 号:+rs.getString(员 工 号)+n+员 工 姓名:+rs.getString(员工姓名)+n+员工性别:+rs.getString(
29、员工性别)+n+员工年龄:+rs.getString(员工年龄)+n+部门名称:+rs.getString(部门名称)+n+员工职业:+rs.getString(员工职业)+n);elseJOptionPane.showMessageDialog(this,没有这个员工号的员工!);catch(Exception ex)/利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,员工查询失败!);按姓名查询/按员工姓名查询面板类 InquireOnName/导入系统的类包import java.awt.*;import java.sql.*;import
30、javax.swing.*;import java.awt.event.*;/创建“按员工姓名查询”类public class InquireOnName extends JPanel implements ActionListener/声明连接数据库对象Connection con;/声明 SQL 语句对象Statement st;/创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel(请输入员工姓名:);JTextField jTextField1=new JTextField();JButton jButton1=new JButton(查找);JTextA
31、rea jTextArea1=new JTextArea();/构造方法public InquireOnName()/面板初始化方法trycatch(Exception exception)exception.printStackTrace();/调用初始化方法jbInit();private void jbInit()throws Exception/点击按钮事件public void actionPerformed(ActionEvent e)/获取输入的员工的姓名/连接数据库con=DBConnect.getConn();st=con.createStatement();/框架的布局th
32、is.setLayout(null);/设置各组件的大小jLabel1.setFont(new java.awt.Font(黑体,Font.BOLD,16);jLabel1.setBounds(new Rectangle(46,4,222,32);jTextField1.setBounds(new Rectangle(47,37,247,31);jButton1.setBounds(new Rectangle(47,86,247,30);jTextArea1.setBounds(new Rectangle(24,一三 0,305,109);/添加按钮动作事件jButton1.addAction
33、Listener(this);/添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);String EmployeeName=jTextField1.getText();/清空文本区原有的内容jTextArea1.setText();try/利用 st 对象执行 SQL 语句,返回结果集对象ResultSetrs=st.executeQuery(select*fromEmployeewhere员 工 姓 名=+EmployeeName+);/处理结果集if(rs.next()
34、jTextArea1.setText(员 工 号:+rs.getString(员 工 号)+n+员 工 姓名:+rs.getString(员工姓名)+n+员工性别:+rs.getString(员工性别)+n+员工年龄:+rs.getString(员工年龄)+n+部门名称:+rs.getString(部门名称)+n+员工职业:+rs.getString(员工职业)+n);elseJOptionPane.showMessageDialog(this,没有这个员工号的员工!);catch(Exception ex)/利用消息对话框提示查询失败JOptionPane.showMessageDialog
35、(this,员工查询失败!);4.45 员工工资查询代码/工资查询面板类 SalaryInquire/导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;/创建“工资查询”类public class SalaryInquire extends JPanel implements ActionListener/声明连接数据库对象Connection con;/声明 SQL 语句对象Statement st;/创建组件对象:标签、文本行、单选JLabel jLabel1=ne
36、w JLabel(请输入要查询的员工号:);JTextField jTextField1=new JTextField();JButton jButton1=new JButton(工资查询);JTextArea jTextArea1=new JTextArea();/构造方法public SalaryInquire()try/调用初始化方法jbInit();catch(Exception exception)exception.printStackTrace();/面板初始化方法private void jbInit()throws Exception/连接数据库con=DBConnect.
37、getConn();st=con.createStatement();/框架的布局this.setLayout(null);/设置各组件的大小jLabel1.setFont(new java.awt.Font(黑体,Font.BOLD,16);jLabel1.setBounds(new Rectangle(46,4,222,32);jTextField1.setBounds(new Rectangle(47,37,247,31);jButton1.setBounds(new Rectangle(47,86,247,30);jTextArea1.setBounds(new Rectangle(2
38、4,一三 0,305,109);/添加按钮动作事件jButton1.addActionListener(this);/添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jTextArea1);this.add(jButton1);/点击按钮事件public void actionPerformed(ActionEvent e)/获取输入的员工号String EmployeeID=jTextField1.getText();/清空文本区原有的内容jTextArea1.setText();try/利用 st 对象执行 SQL 语句,返回
39、结果集对象ResultSetrs=st.executeQuery(select*fromSalarywhere员 工 号=+EmployeeID+);/处理结果集if(rs.next()jTextArea1.setText(员 工 号:+rs.getString(员 工 号)+n+员 工 工资:+rs.getString(员工工资)+n);elseJOptionPane.showMessageDialog(this,该员工号的员工没有工资记录!);catch(Exception ex)/利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,工资查询失败
40、!);4.46 修改工资代码/“修改工资”面板类 ModifySalary/导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;/创建“修改工资”面板类public class ModifySalary extends JPanel implements ActionListener/声明连接数据库对象Connection con;/声明 SQL 语句对象Statement st;/创建组件对象:标签、文本行、单选JLabel jLabel1=new JLabel(请输入
41、员工号:);JTextField jTextField1=new JTextField();JButton jButton1=new JButton(查找该员工);JLabel jLabel2=new JLabel(员工号:);JTextField jTextField2=new JTextField();JLabel jLabel3=new JLabel(员工工资:);JTextField jTextField3=new JTextField();JButton jButton2=new JButton(修改工资);/构造方法public ModifySalary()/面板初始化方法priv
42、ate void jbInit()throws Exception/连接数据库con=DBConnect.getConn();st=con.createStatement();/框架的布局this.setLayout(null);/设置各组件的大小trycatch(Exception exception)exception.printStackTrace();/调用初始化方法jbInit();jLabel1.setFont(new java.awt.Font(楷体,Font.BOLD,14);jLabel1.setBounds(new Rectangle(40,25,140,30);jText
43、Field1.setBounds(new Rectangle(一八 5,25,120,30);jButton1.setBounds(new Rectangle(110,65,120,30);jLabel2.setFont(new java.awt.Font(楷体,Font.BOLD,14);jLabel2.setBounds(new Rectangle(90,125,80,30);jTextField2.setBounds(new Rectangle(170,125,80,30);jLabel3.setFont(new java.awt.Font(楷体,Font.BOLD,14);jLabel
44、3.setBounds(new Rectangle(90,160,80,30);jTextField3.setBounds(new Rectangle(170,160,80,30);jButton2.setBounds(new Rectangle(120,200,100,30);/添加按钮动作事件jButton1.addActionListener(this);jButton2.addActionListener(this);/添加组件到面板this.add(jLabel1);this.add(jTextField1);this.add(jButton1);this.add(jLabel2);
45、this.add(jTextField2);jTextField2.setEditable(false);this.add(jLabel3);this.add(jTextField3);this.add(jButton2);/点击按钮事件public void actionPerformed(ActionEvent actionevent)/点击“查找该员工”按钮if(actionevent.getSource()=jButton1)/获取输入的员工号String EmployeeID=jTextField1.getText();try/利用 st 对象执行 SQL 语句,返回结果集对象Res
46、ultSetrs=st.executeQuery(select*fromSalarywhere员 工 号=+EmployeeID+);/处理结果集if(rs.next()elsecatch(Exception ex)/利用消息对话框提示查询失败JOptionPane.showMessageDialog(this,没有这个员工号的员工!);jTextField2.setText(rs.getString(员工号);jTextField3.setText(rs.getString(员工工资);JOptionPane.showMessageDialog(this,工资修改失败!);/点击“修改工资”
47、按钮if(actionevent.getSource()=jButton2)/获取用户更改的工资try/利用 st 对象执行 SQL 语句,进行修改操作st.executeUpdate(update Salary set 员工工资=+jTextField3.getText()+where 员工号=+jTextField2.getText()+);4.47 员工添加代码/添加员工面板类 AddEmployee/利用消息对话框提示工资修改成功JOptionPane.showMessageDialog(this,工资修改成功!);catch(Exception ex)/利用消息对话框提示异常的信息J
48、OptionPane.showMessageDialog(this,工资修改失败!);ex.printStackTrace();/导入系统的类包import java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;/创建“添加员工“面板类public class AddEmployee extends JPanel implements ActionListener/声明连接数据库对象Connection con;/声明 SQL 语句对象Statement st;/创建组件对象:标签、文本行、单选JLa
49、bel jLabel1=new JLabel(员工号);JLabel jLabel2=new JLabel(员工姓名);JLabel jLabel3=new JLabel(员工性别);JLabel jLabel4=new JLabel(员工年龄);JLabel jLabel5=new JLabel(部门名称);JLabel jLabel6=new JLabel(员工职业);JTextField jTextField1=new JTextField();JTextField jTextField2=new JTextField();JTextField jTextField3=new JText
50、Field();JTextField jTextField4=new JTextField();JTextField jTextField5=new JTextField();JRadioButton jRadioButton1=new JRadioButton(男);JRadioButton jRadioButton2=new JRadioButton(女);ButtonGroup buttonGroup1=new ButtonGroup();JButton jButton1=new JButton(添加员工);/构造方法public AddEmployee()/界面初始化方法private