工资管理系统设计报告1_第1页
工资管理系统设计报告1_第2页
工资管理系统设计报告1_第3页
工资管理系统设计报告1_第4页
工资管理系统设计报告1_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE0课程设计说明书设计名称:数据库课程设计题目:工资管理系统的设计学生姓名:专业:计算机应用技术班级:09计算机应用技术学号:309104指导教师:李娅日期:2011年05月19日课程设计任务书专业:09计算机应用技术年级:09级班:设计题目工资管理系统的设计主要内容通过对人事管理管理部门中的职称、工资、员工、部门、工资类别等相关内容进行分析,完成具有人员管理、工资管理、部门管理等相关功能的小型数据库管理应用系统,系统需要具备增减工资中应发、应扣类别的灵活性,以适应将来需求的变化。具体要求根据任务要求完成有关表的设计(表的设计需要遵循3FN)。完成进人员、部门、工资类别、职称表的维护。根据需要对工资类别进行添加。完成工资表的生成,并计算相关数据,进行查询。按部门计算平均工资。按人、年统计平均工资。完成用户管理功能。进度安排一:资料查找、系统分析,数据流程分析,概要设计。二:系统详细设计、功能设计。三:算法实现、编程调试。四:资料整理、课程设计说明书编写。完成后应上交的材料1、课程设计说明书(数据流程图、E-R关系图、功能模块图、数据库表结构、核心算法等)2、相关源程序文件总评成绩指导教师签名日期年月日系主任审核日期年月日目录一绪论3二需求分析3三概要设计图3四系统的详细设计5五结论24六参考文献24一、绪论随着计算机的日益普及和网络的发展,数据库的应用范围越来越广,数据库应用的功能也越来越强,因此编写管理信息系统应用程序也显得尤为重要,在强调管理,强调信息的现代社会中它变得越来越普及。人事管理是任何企事业单位都需要进行的一项工作,因此,开发制作人事管理系统具有较大的社会现实意义,同时人事管理系统是一切应用系统的典范,它具有一切应用系统的特征,系统结构与现实生活紧密结合,具体直观,具有典范的数据库系统的特性。人事管理系统主要用于企业内部员工的档案、工资、评价的管理,便于公司领导掌握人员的动向,及时调整人才的分配,同时也减少了手工操作带来的一些繁琐与不便,使员工情况的记录和统计变得十分简单.这些优点可以极大的提高企业对人事管理的效率.因此,人事管理系统是企事业信息化、智能化、科学化和正规化不可缺少的管理软件。本系统开发的目的一方面从提高人事管理工作的效率出发,摆脱过去由人用纸和笔进行的费时费力的繁重工作,即利用成熟的计算机系统来实现商品管理工作的自动化。本系统根据企业管理的一些实际情况而编制的一套自动化的人事管理系统。用户通过输入员工的基本信息,由系统自动生成相应的统计数据及工资统计报表以供用户查询、打印,人事管理系统力求以方便快捷的途径去管理手工操作的每繁琐数据。需求分析在界面的实现和对数据库的操作中,实现了管理员登陆。登陆后,进入到操作界面,实现了对员工数据库的基本信息的修改,增加一个员工的信息,对员工工作情况的登记,一个月份全部员工工资的查询以及全员的基本信息的查看。三、概要设计图部门部门管理职工职称姓名性别等..工号工资工资类别职称(它作为员工的属性,但是本身也是一个实体)职称名基本工资四、系统的详细设计登陆界面的详细设计在登陆上,管理员登陆后,有最大的权限。界面的布局如下图:图1其中以管理员身份登陆的具体实现的主要代码如下: 首先是建立了一个Land的类,并让此类继承了JFrame。在本类中的主要方法如下介绍。Land(Strings)此方法实现了对界面的大体布局,具体代码如下:LandFrame(Strings){ super(s); setLayout(null); setBounds(100,100,500,400); jLabel1=newJLabel("用户名:"); jLabel2=newJLabel("密码:"); jbtn=newJButton("登陆"); jbtn.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ test_manage(); } }); jbtn1=newJButton("退出"); jbtn1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ dispose(); } }); jtf1=newJTextField(10); jpwf=newJPasswordField(10); jpwf.setEchoChar('*'); jLabel1.setBounds(155,150,50,30); jLabel2.setBounds(155,190,50,30); jtf1.setBounds(210,150,100,25); jpwf.setBounds(210,190,100,25); jbtn.setBounds(120,250,80,40); jbtn1.setBounds(290,250,80,40); Containercon=getContentPane(); con.add(jLabel1); con.add(jtf1); con.add(jLabel2); con.add(jpwf); con.add(jbtn); con.add(jbtn1); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); getRootPane().setDefaultButton(jbtn); setVisible(true); }Test-manage()实现的是对管理员输入帐号的判断,主要代码如下叙述:publicvoidtest_manage(){ Stringstr1,str2; str1=jtf1.getText(); str2=newString(jpwf.getPassword()); Connectionconn=null; Conncon=newConn(); conn=con.GetConnectionData(); try{ PreparedStatementpsmt=conn .prepareStatement("select密码from数据库用户where用户名='" +str1+"'"); ResultSetres=psmt.executeQuery(); if((!res.next())){ JOptionPane.showMessageDialog(this,"查无此人","错误", JOptionPane.ERROR_MESSAGE); }else{ Stringpwd=res.getString(1); System.out.println(pwd); if(!(pwd.equals(str2))){ JOptionPane.showMessageDialog(this,"密码错误","错误", JOptionPane.ERROR_MESSAGE); }else{ loader1(); dispose(); } psmt.close(); conn.close(); } }catch(Exceptione){ e.printStackTrace(); } }操作界面的详细设计操作界面则是管理员登陆成功后,才能看到的界面。在操作界面上的布局如下图:图21)、在这个类中,没有多少的功能代码,其中只包含了query()、count()、lookover()三个方法。a、query()方法是实现了对员工整体工资在某月情况的查看,具体实现如下: publicvoidquery(){ finalJFramejf=newJFrame(); JButtonjbtn=newJButton("关闭"); jbtn.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ jf.dispose(); } }); jf.setBounds(100,100,700,500); jf.setLayout(newBoxLayout(jf.getContentPane(),BoxLayout.Y_AXIS)); jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Containercon=jf.getContentPane(); Stringstr; str=String.valueOf(jCbsurchmonth.getSelectedItem()); Objectname1[]={"职工号","基本工资(元)","实发工资(元)","月份"}; Objectb[][]; Connconn=newConn(); try{ Connectioncon1=conn.GetConnectionData(); Statementsql=con1 .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSetrs=sql .executeQuery("select职工号,基本工资,实发工资,月份" +"from工资where月份like'"+str+"'"); rs.last(); intnum=rs.getRow(); b=newObject[num][6]; intb_num=0; rs.beforeFirst(); while(rs.next()){ Strings_num=rs.getString(1); Stringbonus=rs.getString(2); Stringdeduct=rs.getString(3); Strings_basicsalary=rs.getString(4); Stringfact_salary=rs.getString(5); Stringmonth=rs.getString(6); b[b_num][0]=s_num; b[b_num][1]=(Object)bonus; b[b_num][2]=deduct; b[b_num][3]=s_basicsalary; b[b_num][4]=fact_salary; b[b_num][5]=month; b_num++; } JTabletable=newJTable(b,name1); con.add(newJScrollPane(table)); con.add(jbtn); jf.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } }b、count()方法则是对员工本月工作情况的结算,从界面上得到上班几天和缺勤几天来计算出本月的具体工作。实现代码如下:publicvoidcount(){ Stringstr1,str2,str3,str4; str1=jTextFieldid.getText(); str2=String.valueOf(jComboBoxmonth.getSelectedItem()); str3=jTfworkday.getText(); str4=jTfabsentday.getText(); Connconn=newConn(); try{ Connectioncon=conn.GetConnectionData(); PreparedStatementpsmt=con .prepareStatement("insertinto考勤values(?,?,?,?)"); psmt.setString(1,str1); psmt.setString(2,str3); psmt.setString(3,str4); psmt.setString(4,str2); psmt.executeUpdate(); psmt=con .prepareStatement("select职务from职工where职工号=?"); psmt.setString(1,str1); ResultSetrs=psmt.executeQuery(); rs.next(); Stringpost1=rs.getString(1); psmt=con .prepareStatement("select基本工资from职务where职务like'" +post1+"'"); ResultSetrs1=psmt.executeQuery(); rs1.next(); floatbonus1=Float.parseFloat(str3)*20; floatdeduct1=Float.parseFloat(str4)*50; floatbasic_salary1=rs1.getFloat(1); floatfact_salary1=basic_salary1+bonus1-deduct1; psmt=con .prepareStatement("insertinto工资values(?,?,?,?,?,?)"); psmt.setString(1,str1); psmt.setFloat(2,bonus1); psmt.setFloat(3,deduct1); psmt.setFloat(4,basic_salary1); psmt.setFloat(5,fact_salary1); psmt.setString(6,str2); JOptionPane.showMessageDialog(this,"成功输入","提示", JOptionPane.INFORMATION_MESSAGE); psmt.executeUpdate(); psmt.close(); con.close(); }catch(Exceptione){ JOptionPane.showMessageDialog(this,"请输入正确的职工号","错误", JOptionPane.INFORMATION_MESSAGE); } }c、lookover()方法既是查看全部员工信息情况,用JTable来显示所要查看的结果。此方法的具体实现如下:publicvoidlookover(){ finalJFramejf=newJFrame(); jf.setLayout(newBoxLayout(jf.getContentPane(),BoxLayout.Y_AXIS)); JButtonjbtn=newJButton("关闭"); jbtn.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ jf.dispose(); } }); jf.setBounds(100,100,700,500); jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Containercon1=jf.getContentPane(); JTabletable; Objecta[][]; Objectname[]={"职工号","姓名","性别","职务","部门"}; Connconn=newConn(); try{ Connectioncon=conn.GetConnectionData(); Statementsql=con .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSetrs=sql .executeQuery("select职工号,姓名,性别,职务,部门from职工"); rs.last(); intnumber=rs.getRow(); a=newObject[number][8]; rs.beforeFirst(); inta_num=0; while(rs.next()){ Stringnum1=rs.getString(1); Stringname1=rs.getString(2); Stringsex1=rs.getString(3); Stringpost=rs.getString(4); Stringdepartment=rs.getString(5); a[a_num][0]=num1; a[a_num][1]=name1; a[a_num][2]=sex1; a[a_num][3]=post; a[a_num][4]=department; a_num++; } table=newJTable(a,name); con1.add(newJScrollPane(table)); con1.add(jbtn); jf.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } }此方法操作后的结果如下:图3、操作界面上其他按钮的实现。确定按钮的实现,此按钮是通过单击调用了上面所描述的count()方法来计算、记录员工的一个月的工作情况和工资。查询按钮则调用了query()方法,来查看某月的员工工资情况。更改基本工资按钮,则是通过new一个S_change类来对基本工资的情况进行更改。在S_change类的主要实现如下:publicclassS_changeextendsJFrame{ S_change(Strings){ super(s); setLayout(null); setBounds(200,200,300,200); jLabel1=newJLabel("请选择职位名称:"); jLabel2=newJLabel("基本工资(元):"); jbtn=newJButton("提交"); jbtn1=newJButton("退出"); jbtn1.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ dispose(); } }); jcb=newJComboBox(); jcb.addItem("管理人员"); ………… jcb.addItem("销售人员"); jtf=newJTextField(10); jLabel1.setBounds(30,15,110,30); ………… jbtn1.setBounds(160,100,60,30); Containercon=getContentPane(); con.add(jLabel1); …………… con.add(jbtn1); jbtn.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ change(); } }); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setVisible(true); }//实现对表的操作 publicvoidchange(){ Stringstr1,str3; floatstr2; str1=(String)jcb.getSelectedItem(); str3=jtf.getText(); if(str3.equals("")) JOptionPane.showMessageDialog(this,"请输入基本工资","提示", JOptionPane.INFORMATION_MESSAGE); else{ str2=Float.parseFloat(str3); Connconn=newConn(); if(str2>3000.00){ JOptionPane.showMessageDialog(this,"输入的基本工资必须小于3000","提示", JOptionPane.INFORMATION_MESSAGE); }else{ try{ Connectioncon=conn.GetConnectionData(); PreparedStatementpsmt=con .prepareStatement("update职务set基本工资=?" +"where职务='"+str1+"'"); psmt.setFloat(1,str2); psmt.executeUpdate();psmt=con .prepareStatement("select职工号from职工" +"where职务='"+str1+"'"); ResultSetrs=psmt.executeQuery();rs.next(); Stringid=rs.getString(1);psmt=con .prepareStatement("update工资set基本工资=?" +"where职工号='"+id+"'");psmt.setFloat(1,str2); psmt.executeUpdate(); JOptionPane.showMessageDialog(this,"修改成功","提示", JOptionPane.INFORMATION_MESSAGE); dispose(); psmt.close(); con.close(); }catch(Exceptione){ e.printStackTrace(); } } } }所得的结果如下图:图4其中也做了对基本工资的最大值的判断,最大不能超过三千,如:str2>3000.00成立册对数据表的操作失败。d、修改员工信息按钮,则是对“职工”表的数据进行更新。在设计中,通过Alter类来实现。主要功能代码在Alter类中的alter()方法。publicvoidalter(){ Stringe_num1,name1,password1,sex1,stafftype,department; e_num1=jtfid.getText().trim(); name1=jtfname.getText(); password1=jtfpassw.getText(); sex1=(String)jcbsex.getSelectedItem(); stafftype=(String)jcbjob.getSelectedItem(); department=(String)jcbkeshi.getSelectedItem(); if(e_num1.equals("")){ JOptionPane.showMessageDialog(this,"请输入员工号","提示", JOptionPane.INFORMATION_MESSAGE); }else{ Connconn=newConn(); try{ Connectioncon=conn.GetConnectionData(); PreparedStatementpsmt1=con .prepareStatement("selectname,password,sex,post,department" +"fromemployee_infowheree_numLIKE'"+e_num1+"'"); ResultSetrs=psmt1.executeQuery(); booleanbl=rs.next(); if(bl){ if(name1.equals("")) name1=rs.getString(1); ……………//非空的判断 if(department.equals("")) department=rs.getString(6); psmt1.close(); con.close(); try{ Connectioncon1=conn.GetConnectionData(); PreparedStatementpsmt2=con1 .prepareStatement("updateemployee_infosetname=?,password=?,sex=?,post=?,"+"department=?wheree_num='" +e_num1+"'"); psmt2.setString(1,name1); …………… psmt2.setString(5,department); psmt2.executeUpdate(); JOptionPane.showMessageDialog(this,"修改成功","修改",JOptionPane.INFORMATION_MESSAGE); dispose(); psmt2.close(); con.close(); }catch(Exceptione){ e.printStackTrace(); } }else JOptionPane.showMessageDialog(this,"请输入正确的员工号","错误",JOptionPane.ERROR_MESSAGE); }catch(Exceptione){ e.printStackTrace(); }}更改按钮的操作结果图如下:图5增加员工和删除员工,则是对员工信息的增加和删除。增加是通过Increase类来实现的,删除则是通过Delete类来实现。在Increase类中,除了一些在界面上布局的代码外,在主要功能实现的代码则是此类中的add方法。Add方法的主要代码如下:publicvoidadd(){ try{ Stringstr1,str2,str3,str4,str5; str1=jtfid.getText(); str2=jtfname.getText(); str3=(String)jcbsex.getSelectedItem(); str4=(String)jcbjob.getSelectedItem(); str5=(String)jcbkeshi.getSelectedItem(); //str8=jtf8.getText(); if(str1.equals("")||str2.equals("")||str5.equals("")){ JOptionPane.showMessageDialog(this,"请完整输入","错误", JOptionPane.ERROR_MESSAGE); }else{ Connconn=newConn(); Connectioncon=conn.GetConnectionData(); PreparedStatementpsmt=con .prepareStatement("insertinto职工values(?,?,?,?,?)"); psmt.setString(1,str1); psmt.setString(2,str2); psmt.setString(3,str3); psmt.setString(4,str4); psmt.setString(5,str5); psmt.executeUpdate(); JOptionPane.showMessageDialog(this,"添加成功!","添加", JOptionPane.INFORMATION_MESSAGE); dispose(); psmt.close(); con.close(); } }catch(Exceptione){ JOptionPane.showMessageDialog(this,"职工号重复","错误", JOptionPane.ERROR_MESSAGE); } }而在Delete类中,实现删除的主要功能的是delete()方法。其主要的功能代码如下:publicvoiddelete(){ Stringstr; str=jtf.getText().trim(); Connconn=newConn(); try{ Connectioncon=conn.GetConnectionData(); PreparedStatementpsmt1=con .prepareStatement("select姓名from职工where职工号=?"); psmt1.setString(1,str); ResultSetrs=psmt1.executeQuery(); if(rs.next()){ Connectioncon1=conn.GetConnectionData(); PreparedStatementpsmt=con1 .prepareStatement("deletefrom工资where职工号=?"); psmt.setString(1,str); psmt.executeUpdate();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论