• 132.00 KB
  • 2022-05-17 13:47:15 发布

工资管理系统—职工考勤管理系统

  • 20页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
得分:课程设计报告工资管理系统--职工考勤管理系统姓名班级学号课程名称数据库原理及应用指导教师乔平安2021年6月20日目录1.工资管理系统需求分析…………………………11.1功能需求………………………………………1功能划分……………………………………1功能描述……………………………………11.2性能需求………………………………………11.3数据流图………………………………………2 1.4数据字典………………………………………51.4.1数据流的描述………………………………51.4.2处理逻辑的描述……………………………61.4.3数据存储的描述……………………………62.总体设计……………………………………………72.1数据库概念设计…………………………………72.2功能模块…………………………………………83.系统详细设计………………………………………93.1数据库逻辑设计…………………………………93.2各模块功能……………………………………103.2.1职工信息管理系统…………………………103.2.2职工工资管理系统…………………………103.2.3职工津贴管理系统…………………………103.2.4职工考勤管理系统…………………………104.系统实现……………………………………………114.1界面截图…………………………………………114.1.1主界面及工资基本信息界面………………114.1.2登录界面……………………………………124.1.3系统主界面…………………………………134.1.4考勤信息录入,修改,删除,查询界面……144.2设计代码………………………………………15 1、需求分析1.1功能需求功能划分(1)、员工考勤情况表;及时反映员工的出勤,以及缺勤扣款情况(2)、员工津贴表,反映员工的加班时间,加班类别、加班天数、津贴情况等;(3)、员工基本信息表,反映员工的基本信息,反映员工的工种、等级,基本工资等信息;(4)、员工月工资表,计算月工资,生成打印清单。(5)、银行表,用于员工工资的发放。(6)、后勤部门表;反映员工的水电扣款信息等功能描述(1)、员工每个工种基本工资的设定(2)、加班津贴管理,根据加班时间和类型给予不同的加班津贴;(3)、按照不同工种的基本工资情况、员工的考勤情况产生员工的每月的月工资;(4)、员工年终奖金的生成,员工的年终奖金计算公式=(员工本年度的工资总和+津贴的总和)/12;(5)、企业工资报表。能够查询单个员工的工资情况、每个部门的工资情况、按月的工资统计,并能够打印;(6)、系统维护功能;1.2性能需求 此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保留小数点后5位的精度。在时间特性上,当用户发出命令请求时的服务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互通,及共享。当服务器移植到其他的系统平台,如:Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。1.3数据流图根据工资管理要求及用户需求调查分析,得到以下数据流图数据库操作操作数据系统操作工资信息考勤信息进入基本界面职工信息津贴管理图1.1第一层数据流图修改职工信息删除职工记录输入职工基本信息职工表添加操作修改操作删除操作用户查询操作职工号图1.2职工信息的载入 修改工资信息删除工资信息输入工资基本信息工资表添加操作修改操作删除操作查询操作图1.3工资的信息载入修改考勤信息删除考勤信息输入考勤基本信息考勤表添加操作修改操作删除操作查询操作用户图1.4考勤的信息载入 修改津贴信息删除津贴信息输入津贴基本信息津贴表添加操作修改操作删除操作查询操作用户图1.5津贴的信息载入职工管理员进入系统进入员工(工资,考勤,津贴)表职工表工资表考勤表津贴表进行录入,修改,删除,查询操作图1.6信息查询及管理的流程图1.4数据字典工资管理系统各实体及联系的数据字典数据流的描述数据流的编号:D001数据流的名称:员工基本信息简述:与员工有关的基本信息数据流来源:员工基本信息表数据流去向:员工,部门数据流组成:员工编号+姓名+性别+年龄+部门+进入公司时间+住址数据流的编号:D002数据流的名称:工资结构信息简述:查询工资时所包含的相关信息数据流来源:工资信息表数据流去向:员工数据流组成:员工编号+加班加班+出差工资+迟到早退+矿工工资+应发工资 +实发工资数据流的编号:D003数据流的名称:职务部门信息简述:查询员工职务部门信息数据流来源:职务部门信息表数据流去向:员工数据流组成:员工编号+职务+部门数据流的编号:D004数据流的名称:员工变动信息简述:查询员工变动情况数据流来源:员工变动信息表数据流去向:员工数据流组成:员工编号+原职务+原部门+现职务+现部门处理逻辑的描述处理逻辑编号:p001处理逻辑名称:工资统计简述:对工资进行统计、计算输入的数据流:基本工资信息处理描述:根据职工的职位及其他相应情况计算出工资输出的数据流:工资信息处理逻辑编号:p002处理逻辑名称:员工信息处理简述:对员工信息进行处理输入的数据流:员工信息处理描述:根据员工的基本信息进行各种操作输出的数据流:员工信息处理逻辑编号:p003处理逻辑名称:变动处理简述:对员工的变动情况进行处理 输入的数据流:员工变动信息处理描述:可进行添加、修改和删除等操作输出的数据流:员工变动信息数据存储的描述数据存储编号:F001数据存储名称:员工基本信息表简述:员工的基本信息数据存储组成:员工编号+姓名+性别+年龄+部门+进入公司时间+住址关键字:员工编号相关联的处理:P002数据存储编号:F002数据存储名称:基本工资表简述:员工的工资信息数据存储组成:员工编号+加班加班+出差工资+迟到早退+矿工工资关键字:员工编号相关联的处理:P001数据存储编号:F003数据存储名称:变动信息表简述:员工的变动信息数据存储组成:员工编号+原职务+原部门+现职务+现部门关键字:员工编号相关联的处理:P002,P0032.总体设计2.1数据库概念设计有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图基本工资其他奖金加班奖金年终奖金职工号时间缺勤类别缺勤天数职工号医疗保险个人所得税职工号部门岗位工龄姓名职工号考勤工资津贴员工领取1n号码m缺勤扣除影响 n1nm密码影响n领取1n图2.1实体之间关系E-R图2.2功能模块工资管理系统员工管理模块考勤管理模块津贴管理模块工资生成模块系统模块3.系统详细设计3.1数据库逻辑设计将以上E-R转换成如下关系模式员工(职工号,姓名,工龄,部门岗位,号码,密码)工资(职工号,个人所得税,基本工资,医疗保险,缺勤扣除)考勤(职工号,缺勤天数,缺勤类别,时间)津贴(职工号,年终奖金,加班奖金,其他奖金)其中,标有下划线的字段表示为该数据表的主码,即主关键字。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。表一:员工信息表:列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)nameChar(10)NOTNULL职工姓名gwChar(20)NOTNULL部门岗位glSmallintNOTNULL工龄hmChar(11)NULL号码miSmallintNOTNULL登录密码表二:工资表:列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)JbmoneyNOTNULL基本工资ylmoneyNULL医疗保险SwmoneyNULL个人所得税kcmoneyNULL缺勤扣除JtmoneyNULL津贴 yzmoneyNOTNULL月总工资表三:员工考勤信息表列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)tsInt(4)NULL缺勤天数lbChar(30)NULL缺勤类别SjChar(10)NULL缺勤时间表四:津贴信息表列名数据类型可否为空备注说明noChar(8)NOTNULL职工号(主键)JiabanmoneyNULL月加班奖金nzmoneyNULL年终奖金qtmoneyNULL其他奖金3.2各模块功能职工信息管理系统功能为:财务部门相关人员录入、修改、删除、查询员工个人信息;员工本人能通过用户名和密码查询自己的信息以及修改自己的密码;职工工资管理系统功能为:根据工资生成公式,按照员工的考勤情况及各种表现按月生成相应的工资;财务部门相关人员能录入、修改、删除、查询每个月每个员工的工资信息以及工资汇总;员工本人能查询自己的工资信息以及工资汇总;职工津贴管理系统功能为:财务部门相关人员录入、修改、删除、查询职工津贴信息;职工本人能查询自己的津贴;职工考勤管理系统功能为:后勤管理人员录入、修改、删除、查询职工考勤信息;职工本人能查询自己的考勤情况。采用模块化设计思想,可以大大提高设计的效率,并且可以最大限度地减少不必要的错误。4.系统实现4.1界面截图主界面及工资基本信息界面登录界面 系统主界面考勤信息录入,修改,删除,查询界面4.2设计代码Java源程序:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.sql.*;importjava.lang.*;importjava.util.*;importjavax.swing.table.*;importjava.math.*;classDB_LSimplementsActionListener{JFrameframe=newJFrame("欢迎进入LS工资管理系统");JLabellabel=newJLabel("09网络2_54_李胜",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.green);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){DB_LSdome=newDB_LS();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.blue);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);//可以调整界面大小f.setVisible(true);}publicvoidactionPerformed(ActionEvente){if(b1.equals(e.getSource())){//添加Connectioncon;Statementsql;ResultSetrs;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione1){System.out.println(""+e1);}try{con=DriverManager.getConnection("jdbc:odbc:123","","");sql=con.createStatement();StringinsertStr="INSERTINTOKVALUES"+"("+"""+tf1.getText()+"""+","+tf2.getText()+","+"""+tf3.getText()+"""+","+tf4.getText()+")";sql.executeUpdate(insertStr);con.close();}catch(SQLExceptione1){System.out.println(e1);}}if(b2.equals(e.getSource())){//修改Connectioncon;Statementsql;ResultSetrs;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundExceptione1){System.out.println(""+e1);}try{con=DriverManager.getConnection("jdbc:odbc:123","","");sql=con.createStatement();sql.executeUpdate("UPDATEKSETts="+tf2.getText()+"WHEREKno="+tf1.getText()+"");sql.executeUpdate("UPDATEKSETlb="+tf3.getText()+"WHEREKno="+tf1.getText()+"");sql.executeUpdate("UPDATEKSETsj="+tf4.getText()+"WHEREKno="+tf1.getText()+"");con.close();}catch(SQLExceptione1){System.out.println(e1);}}if(b3.equals(e.getSource())){//删除Connectioncon;Statementsql;ResultSetrs;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.executeUpdate("DELETEFROMKWHEREKno="+tf5.getText());con.close();}catch(SQLExceptione1){System.out.println(e1);}}if(b4.equals(e.getSource())){//查询全部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","sa","");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);if(b4.equals(e.getSource())){for(inti=0;i<50;i++)for(intj=0;j<4;j++)table.setValueAt("",i,j);rs=sql.executeQuery("SELECT*FROMKORDERBYKnoDESC");intk=-1;while(rs.next()){++k;StringKno=rs.getString(1);Stringts=rs.getString(2);Stringlb=rs.getString(3);Stringsj=rs.getString(4);table.setValueAt(Kno,k,0);table.setValueAt(ts,k,1);table.setValueAt(lb,k,2);table.setValueAt(sj,k,3);}}}catch(SQLExceptione1){System.out.println(e1);}}if(b6.equals(e.getSource())){//查询关键字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","sa","");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);if(b6.equals(e.getSource())){for(inti=0;i<50;i++)for(intj=0;j<4;j++)table.setValueAt("",i,j);rs=sql.executeQuery("SELECT*FROMKWHEREKno="+tf5.getText());intk=-1;while(rs.next()){++k;StringKno=rs.getString(1);Stringts=rs.getString(2);Stringlb=rs.getString(3);Stringsj=rs.getString(4);table.setValueAt(Kno,k,0);table.setValueAt(ts,k,1);table.setValueAt(lb,k,2);table.setValueAt(sj,k,3);}}}catch(SQLExceptione1){System.out.println(e1);}}if(b5.equals(e.getSource())){//返回DLdl=newDL();f.dispose();}}}