还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
jf.setDefaultCloseOperationJFrame.DISPOSE_ON_CLOSE;Container con=jf.getContentPane;String str;str=String.valueOf jCbsurchmonth.getSelectedltemO;Object namelU={职工号,〃基本工资元,”实发工资元〃,〃月份};Object b[]□;Conn conn=new Conn;Connection coni=conn.GetConnectionDataO;Statement sql=coni.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY;ResultSet rs=sql,executeQuery^select职工号,基本工资,实发工资,月份”+”from工资where月份like+str+•、rs.last;int num=rs.getRow;b=new Object[num]
[6];int b_num=0;rs.beforeFirst;while rs.next{String s_num=rs.getStringl;String bonus=rs.getString2;String deduct=rs.getString3;String s_basicsalary=rs.getString4;String fact_salary=rs.getString5;String month=rs.getString6;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++;JTable table=new JTableb,namel;con.addnew JScrollPanetable;con.addjbtn;jf.setVisibletrue;}catch Exceptione{e.printStackTrace;b、count方法则是对员工本月工作情况的结算,从界面上得到上班几天和缺勤几天来计算出本月的具体工作实现代码如下public voidcount{String strl,str2,str3,str4;strl=jTextFieldid.getTextO;str2=String.valueOf jComboBoxmonth.getSelectedltemO;str3=jTfworkday.getText;str4=jTfabsentday.getTextO;Conn conn=new Conn;try Connection con=conn.GetConnectionDataO;PreparedStatement psmt=con.prepareStatement Cinsert into考勤values,,,;psmt.setString1,strl;psmt.setString2,str3;psmt.setString3,str4;psmt.setString4,str2;psmt.executeUpdate;psmt=con.prepareStatement^select职务from职工where职工号=;psmt.setString1,strl;ResultSet rs=psmt.executeQuery;rs.next;String postl=rs.getStringl;psmt=con.prepareStatement^select基本工资from职务where职务like+postl+;ResultSet rsl=psmt.executeQuery;rsl.next;float bonus1=Float.parseFloatstr3*20;float deduct1=Float.parseFloatstr4*50;float basic_salaryl=rsl.getFloat1;float fact_salaryl=basic_salaryl+bonus1-deduct1;psmt=conprepareStatement*insertinto工资values,,,,,;・psmt.setString1,strl;psmt.setFloat2,bonus1;psmt.setFloat3,deduct1;psmt.setFloat4,basic_salaryl;psmt.setFloat5,fact_salaryl;psmt.setString6,str2;JOptionPane.showMessageDialogthis,“成功输入,提示,JOptionPane.INFORMATION_MESSAGE;psmt.executeUpdate;psmt.close;con.close;}catch Exceptione{JOptionPane.showMessageDialogthis,”请输入正确的职工号,错误,JOptionPane.INFORMATION_MESSAGE;c、lookover方法既是查看全部员工信息情况,用able来显示所要查看的结果此方法的具体实现如下public voidlookover{final JFramejf=new JFrame;jf.setLayoutnew BoxLayoutjf.getContentPane,BoxLayout.Y_AXIS;JButton jbtn=new JButton关闭;jbtn.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{jf.dispose;};jf.setBounds100,100,700,500;jf.setDefaultCloseOperationJFrame.DISPOSE_ON_CLOSE;Container coni=jf.getContentPane;JTable table;Object a[][];Object name口={〃职工号,姓名〃,〃性别,职务,〃部门〃};Conn conn=new Conn;try Connection con=conn.GetConnectionDataO;Statement sql=con.createStatementResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY;ResultSet rs=sql.executeQuery select职工号,姓名,性别,职务,部门from职工;rs.last;int number=rs.getRowO;a=new Object[number]
[8];rs.beforeFirst;int a_num=0;while rs.next{String numl=rs.getStringl;String namel=rs.getString2;String sexi=rs.getString3;String post=rs.getString4;String department=rs.getString5;a[a_num]
[0]=numl;a[a_num]
[1]=namel;a[a_num]
[2]=sexi;a[a_num]
[3]=post;a[a_num]
[4]=department;a_num++;table=new JTablea,name;coni,addnew JScrollPanetable;coni,addjbtn;jf.setVisibletrue;}catch Exceptione{e.printStackTrace;职工号_________________柱名tt»—百—妓理001禹用光员室经班002fegTIWLAJI-;室报理003屈的管理人员室004加生科005♦豆文海延术人员戟采科006更海西一一.一■[技术007底伟$千一一帆术人科员麻采欠同}此方法操作后的结果如下两国图32)、操作界面上其他按钮的实现a、确定按钮的实现,此按钮是通过单击调用了上面所描述的count方法来计算、记录员工的一个月的工作情况和工资b、查询按钮则调用了query方法,来查看某月的员工工资情况c、更改基本工资按钮,则是通过new一个S_change类来对基本工资的情况进行更改在S_change类的主要实现如下public classS changeextends JFrame{S_changeString s{super s;setLayout null;setBounds200,200,300,200;jLabe11=new JLabel〃请选择职位名称:〃;jLabe12=new JLabel〃基本工资元〃;jbtn=new JButton〃提交〃;jbtnl=new JButton〃退出〃;jbtnl.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{dispose;!};jcb=new JComboBox;jcb.addltem〃管理人员〃;jcb.addltem〃销售人员〃;jtf=new JTextFieldlO;jLabel
1.setBounds30,15,110,30;jbtnl.setBounds160,100,60,30;Container con=getContentPaneO;con.addjLabell;con.addjbtnl;jbtn.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{change;;setDefaultCloseOperation JFrame.DISPOSE_0N_CLOSE;setVisibletrue;}//实现对表的操作public voidchange{String strl,str3;float str2;strl=String jcb.getSelectedltemO;str3=jtf.getText;if str
3.equals JOptionPane.showMessageDialogthis,请输入基本工资,提示,JOptionPane.INFORMATION_MESSAGE;else{str2=Float.parseFloatstr3;Conn conn=new Conn;if str
23000.00{JOptionPane.showMessageDialogthis,“输入的基本工资必须小于3000,提示,JOptionPane.INFORMATION_MESSAGE;}else{try{Connection con=conn.GetConnectionDataO;PreparedStatement psmt=con.prepareStatement^update职务set基本工资?”+where职务=+strl+;psmt.setFloat1,str2;psmt.executellpdate;psmt=con.prepareStatement^select职工号from职工”+where职务=+strl+ResultSet rs=psmt.executeQuery;rs.next;String id=rs.getStringl;psmt=con.prepareStatement^update工资set基本工资=+where职工号』+id+;psmt.setFloat1,str2;psmt.executeUpdate;JOptionPane.showMessageDialogthis,修改成功,提示,JOptionPane.INFORMATION_MESSAGE;dispose;psmt.close;con.close;}catch Exceptione{e.printStackTrace;所得的结果如下图图4其中也做了对基本工资的最大值的判断,最大不能超过三千,如str
23000.00成立册对数据表的操作失败d、修改员工信息按钮,则是对“职工”表的数据进行更新在设计中,通过Alter类来实现主要功能代码在Alter类中的alter方法public voidalter{String c_numl,namcl,passwordl,sexi,stafftype,department;e_numl=jtf id.getText.trim;namel=jtfname.getText;password1=jtfpassw.getText;sexi=String jebsex.getSelectedltemO;stafftype=String jebjob.getSelectedltemO;department=String jebkeshi.getSelectedltemO;if enuml.equals z,,z{JOptionPane.s力例Message〃id/ogthis,〃请输入员工号〃,〃提示“,JOptionPane.INFORMATIONJIESSAGI^;}else{Conn conn=new Conn;try Connectioncon=conn.GetConnectionDataO;PreparedStatement psmtl=con.prepareStatement selectname,password,sex,post,department〃+“from employee_info where e_num LIKE〃+e_numl+〃〃;ResultSet rs=psmtl.executeQuery;boolean bl=rs.next;if bl{if namel.equals〃〃namel=rs.getStringl;〃非空的判断if department,equals,z,/department=rs.getString6;psmtl.close;con.close;try{Connection coni=conn.GetConnectionDataO;PreparedStatement psmt2=coni,prepareStatement updateemployee infoset name=?,password=?,sex=?,post=?,〃+“department二?wheree_num=,〃+e_numl+〃’〃;psmt
2.setStringd,namel;psmt
2.setString5,department;psmt
2.executeUpdate;JOptionPane.showMessageDia1ogthis,〃修改成功〃,〃修改〃,JOptionPane.INFORMATIONJfESSAGE;dispose;psmt
2.close;con.close;}catch Exceptione{e.printStackTrace;}elseJOptionPane.showMessageDia
77.gthis,〃请输入正确的员工号〃,〃错误JOptionPane.ERROR_MESSAG^;}catch Exceptione{e.printStackTrace;}更改按钮的操作结果图如下职工号1001—I I姓名除墙光I-I I注别9i▼职务管理人一[,]部门经理室图5d、增加员工和删除员工,则是对员工信息的增加和删除增加是通过Increase类来实现的,删除则是通过Delete类来实现在Increase类中,除了一些在界面上布局的代码外,在主要功能实现的代码则是此类中的add方法Add方法的主要代码如下public voidadd{try String strl,str2,str3,str4,str5;strl=jtfid.getText;str2=jtfname.getText;str3=String jcbsex.getSelectedltemO;str4二String jcbjob.getSelectedltemO;str5=String jcbkeshi.getSelectedltemO;//str8=jtf
8.getText;if strl.equals,,z,||str2equals〃〃||str5equals〃〃{・・JOptionPane.showMessageDialogthis,〃请完整输入〃,〃错误〃,JOptionPane.ERROR MESSAGE;}else{Conn conn=new Conn;Connectioncon=conn.GetConnectionDataO;PreparedStatement psmt=con.prepareStatement,zinsert into职工values,,,,,z;psmt.setStringd,strl;psmt.setString2,str2;psmt.setString3,str3;psmt.setString4,str4;psmt.setString5,str5;psmt.executeUpdate;JOptionPane.showMessageDialogthis,〃添加成功!〃,〃添加〃,JOptionPane.INFORMATIONJIESSAGE;dispose;psmt.close;con.close;}catch Exceptione{JOptionPane.showMessageDialogthis,〃职工号重复〃,〃错误〃,JOptionPane.ERROR_MESSAGE;}而在Delete类中,实现删除的主要功能的是delete方法其主要的功能代码如下:public voiddelete{Stringstr;str=jtf.getText.trim;Conn conn=new Conn;try{Connectioncon=conn.GetConnectionDataO;PreparedStatement psmtl=con.prepareStatement^select姓名from职工where职工号=”;psmtl.setString1,str;ResultSet rs=psmtl.executeQuery;if rs.next{Connection coni=conn.GetConnectionDataO;PreparedStatement psmt=coni.prepareStatement^delete from工资where职工号二?”;psmt.setString1,str;psmt.executeUpdate;psmt=coni.prepareStatement^delete from考勤where职工号二”;psmt.setString1,str;psmt.executeUpdate;psmt=coni.prepareStatement^delete from职工where职工号二?”;psmt.setString1,str;psmt.executeUpdate;JOptionPane.showMessageDialogthis,删除成功,删除,JOptionPane.INFORMATION_MESSAGE;psmt.close;con.close;}elseJOptionPane.showMessageDialogthis,无此职工,错误,JOptionPane.ERROR_MESSAGE;}catch Exceptione{e.printStackTrace;从上面的代码中可以看到,在删除员工信息时,同时也删除了工资这两个方法的效果如下:图
63、其他类的作用在整个系统运行中,对数据库的连接,是通过一个Conn类来实现,这样对在代码上节约了不少同时也比较方便,不用每次连接数据库的时候都去重复写一样的代码Conn类用一个GetConnectionDataO方法来实现连接,其主要代码如下public ConnectionGetConnectionData{Connection conn=null;try Class.forName^s\ix\.jdbc.odbc.JdbcOdbcDriver,z;conn=DriverManager.getConnection[MrV;}catch Exceptione{e.printStackTrace;return conn;}经过本学期的不断实践与探索,人事管理统的设计与实现己经完成,基本上达到了预期的设计要求和目的一个完整的人事信息管理系统就创建完毕了在本系统的设计与实现的过程中主要讲述了人事管理信息系统的系统设计部分,包括功能模块设计、数据库结构设计等系统设计为整个程序构建了骨架,各个功能模块实现各个细节部分系统的详细设计根据系统分析阶段的结论将系统具体化,并完成了各个模块的添加、修改、删除与查询的功能,直到最后形成一个完整的可行性的管理系统在整个设计阶段的工作和本论文的写作过程的经历将会使我终生受益,并对我今后的工作和发展产生深远的影响由于设计时间比较仓促,所以该系统还有许多不尽如意的地方,比如联机文档比较少,用户界面不够美观,出错处理不够等多方面问题这些都有待于进一步的改善
六、参考文献
[1]丁宝康,《数据库原理》,经济科学出版社,200
[2]萨师娟王珊,《数据库系统概论》,高等教育出版社2003
[3]汤庸叶小平汤娜,《数据库理论及应用基础》,清华大学出版社,2004
[4]杨文龙《软件工程》,电子工业出版社,2003
[5]薛华成,《管理信息系统》,清华大学出版社,2002
[6]苑森淼,康辉《数据库系统教程》清华大学出版社,2008
[7]施伯乐,丁宝康,汪卫《数据库系统教程》高等教育出版社,2008
[8]李梓《数据库系统及应用》科学出版社,2009
一、绪论随着计算机的日益普及和网络的发展,数据库的应用范围越来越广,数据库应用的功能也越来越强,因此编写管理信息系统应用程序也显得尤为重要,在强调管理,强调信息的现代社会中它变得越来越普及人事管理是任何企事业单位都需要进行的一项工作,因此,开发制作人事管理系统具有较大的社会现实意义,同时人事管理系统是一切应用系统的典范,它具有一切应用系统的特征,系统结构与现实生活紧密结合,具体直观,具有典范的数据库系统的特性人事管理系统主要用于企业内部员工的档案、工资、评价的管理,便于公司领导掌握人员的动向,及时调整人才的分配,同时也减少了手工操作带来的一些繁琐与不便,使员工情况的记录和统计变得十分简单.这些优点可以极大的提高企业对人事管理的效率.因此,人事管理系统是企事业信息化、智能化、科学化和正规化不可缺少的管理软件本系统开发的目的一方面从提高人事管理工作的效率出发,摆脱过去由人用纸和笔进行的费时费力的繁重工作,即利用成熟的计算机系统来实现商品管理工作的自动化本系统根据企业管理的一些实际情况而编制的一套自动化的人事管理系统用户通过输入员工的基本信息、,由系统自动生成相应的统计数据及工资统计报表以供用户查询、打印,人事管理系统力求以方便快捷的途径去管理手工操作的每繁琐数据
二、需求分析在界面的实现和对数据库的操作中,实现了管理员登陆登陆后,进入到操作界面,实现了对员工数据库的基本信息的修改,增加一个员工的信息,对员工工作情况
三、概要设计的登记,一个月份全部员工工资的查询以及全员的基本信息的查看图
四、系统的详细设计
1、登陆界面的详细设计在登陆上,管理员登陆后,有最大的权限界面的布局如下图:图1其中以管理员身份登陆的具体实现的主要代码如下首先是建立了一个Land的类,并让此类继承了JFrame在本类中的主要方法如下介绍Land Strings此方法实现了对界面的大体布局,具体代码如下LandFrameString s{super s;setLayout null;setBounds100,100,500,400;jLabe11=new JLabel用户名“;jLabel2=new JLabel“密码〃;jbtn=new JButton〃登陆〃;jbtn.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{test_manage;}};jbtnl=new JButton〃退出“;jbtnl.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{dispose;}};jtf1=new JTextFieldlO;jpwf=new JPasswordFieldlO;jpwf.setEchoChar,*;jLabell.setBounds155,150,50,30;jLabe
12.setBounds155,190,50,30;jtfl.setBounds210,150,100,25;jpwf.setBounds210,190,100,25;jbtn.setBounds120,250,80,40;jbtnl.setBounds290,250,80,40;Container con=getContentPaneO;con.addjLabell;con.add jtfl;con.addjLabe12;con.add jpwf;con.addjbtn;con.add jbtnl;setDcfaultCloseOperationJFrame.DISPOSE_ON_CLOSE;getRootPane.setDefaultButton jbtn;setVisible true;}Test-manage实现的是对管理员输入帐号的判断,主要代码如下叙述:public voidtest_manage{String strl,str2;strl=jtfl.getText;str2=new Stringjpwf.getPasswordO;Connection conn=null;Conn con=new Conn;conn=con.GetConnectionDataO;try{PreparedStatement psmt=conn.prepareStatement^select密码from数据库用户where用户名=+strl+ResultSet res=psmt.executeQuery;if!res.next{JOptionPane.showMessageDialogthis,”查无此人,错误,JOptionPane.ERROR_MESSAGE;}else{String pwd=res.getStringl;System,out.print Inpwd;if!pwd.equals str2{JOptionPane.showMessageDialogthis,密码错误,错误,JOptionPane.ERROR_MESSAGE;}else{loaderl;dispose;psmt.close;conn,close;}catch Exceptione{e.printStackTrace;
2、操作界面的详细设计操作界面则是管理员登陆成功后,才能看到的界面在操作界面上的布局如下图:图
21、在这个类中,没有多少的功能代码,其中只包含了querycount、lookoverO三个方法a、query方法是实现了对员工整体工资在某月情况的查看,具体实现如下public voidquery{final JFramejf=new JFrame;JButton jbtn=new JButton关闭〃;jbtn.addActionListenernew ActionListener{public voidactionPerformedActionEvent e{jf.dispose;};jf.setBounds100,100,700,500;jf.setLayoutnew BoxLayoutjf.getContentPane,BoxLayout.Y_AXIS;。