《小型工资管理系统---java---报告书.docx》由会员分享,可在线阅读,更多相关《小型工资管理系统---java---报告书.docx(67页珍藏版)》请在课桌文档上搜索。
1、10届第2学年1学期Java语言程序设计小组课程设计报告书小组名称:致知小组小组题目:小型工资管理系统专业:信息管理与信息系统班级:6班姓名:组长:钱海燕(组员:)史丞玉刘文婷指导教师:任敏贤完成日期:2012年1月4日小型工资管理系统1、问题描述设计一个小型工资管理系统,为公司员工提供一套完整的信息,以便于公司对员工的管理。2、开发环境搭建Java开发环境的搭建包括三个局部:(1) JDK下载、安装及配置下载:在OraCle官网下载的jdk-7u2版本。安装:解压下载的JDK后,进入安装状态,下载好的JDK是一个可执行安装程序,执行安装即可。安装完成在安装目录下会有jdk和两个文件夹。设置环
2、境变量:翻开“我的电脑-属性-高级-环境变量-系统变量,设置以下三个变量:JAVA_H0ME=如:D:/Java/jdk;CLASSPATH=.如:D:/Java/jdkl.70/lib;Path=V原Path;如:D:/Java/jdk/bin;请注意:CLASSPATH变量的值是“.(不包括引号).翻开“windows的“命令提示符窗口,在提示符下输入javac,如果出现编译器的选项,说明编译器正常。输入java,如果出现解释器的选项,说明解释器正常。这样就可以使用JDK编译和运行JAVA程序了。(2) eclipse下载、安装下载:在相应的官网上下载即可。安装:直接解压,在eclipse
3、目录里面找到eclipse.exe(3) SQLSerVer20004in1的下载、安装及配置下载:在微软官网上下载即可。安装:解压后选择个人版进行安装,选择windows用户混合验证模式。再安装补丁包,最后添加ODBC数据源。3、系统功能(1)进行系统的需求分析:随着科学技术的开展和整个社会的进步,计算机技术也得到了很大的提高,特别是微型计算机的大范围普及,是计算机的应用逐渐有科学计算、实时控制等方面向非数值处理的各个领域渗透并发挥着越来越重要的作用o尤其是以微型计算机为处理核心,以数据库管理系统为开发环境的管理系统在办公室自动化以及商业信息管理等方面的应用,日益受到人们的关注。对一个企业而
4、言,人力资源是企业最珍贵的资源,也势必企业的“生命线。而工资管理是企业管理的一个重要环节,其管理方式和工具对企业的决策者和管理者来说至关重要。但一直以来大多企业内部人事和工资的管理根本上都是传统的手工操作,这种人管理的方式效率低,保密性差,而且很难满足及时记录、随时查询的需要,为信息的管理者带来诸多不便。利用计算机进行信息控制和数据处理,不仅从整体上大大提高了工作效率和平安性,而且具有存储量大,寿命长,本钱低等优点,这些更是手工管理所无法比较的。用计算机支持完成人事管理的日常事务,能够使人事管理自动化和科学化,提高了信息处理得速度和准确性;工资管理更是一项琐碎、复杂而又十分细致的工作,如果实行
5、手工操作,会浪费工作人员很多时间和精力,且失误在所难免,而使用计算机进行工资计算和发放,不仅能够保证工资核算准确无误,而且能对相关信息进行统计,使工资与考勤、奖惩等事项合理挂钩,是企业内部管理体制更加科学有效。总之,为了很好的实现数据的录入、插入、查询、统计、更新等功能,已到达使企业人事工资信息管理科学化、系统化、标准化和自动化的目的,建立人事工资管理的需求。系统的设计目标L设计出一套简单、方便的小型工资管理系统,方便公司对员工的管理。2.在设计该人事管理系统的过程中,深化对JAVA的学习,以便掌握JAVA中的各种知识。系统的可行性分析技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足
6、用户提出的要求。此外,还要考虑开发人员的水平,经过学习,在编程方面有一定的根底。经济的可行性分析分为两个方面,一方面是支出的费用,另一方面是取得的收益。这是一个小型的工资管理系统,从投入的人力、财力与物力来讲是非常小的,只要有电脑就可以了。从节省人力方面,可以让管理人员从繁冗复杂的工作中解脱出来,做更多的工作,可以给工资管理提高一个层次。(2)系统的总体设计建立系统的功能模型(各个模块的调用关系)系统登录小型工资管理系统图1小型工资管理系统结构图建立系统的概念模型(E-R图:总体和局部)部门图3职工信息E-R图建立系统的数据模型(以文件的形式处理)匹配的伯息单查询信息删除信息修改信息管理员管理
7、员3.1输入查询条件计算机输入需删除的信息管理员4.1管理员5.1输入修改的信息管理员合并后的信息单匹配信息计算机匹配信息单修改后的工资信息单修改后的工资估息单删除后的职工信息单删除后的职工信息单修改后的工资信息单州除后的职工信息单J4信计:修改后的职工信息单合并信息单计算机图4小型工资管理系统数据模型图(3)系统的详细设计该小型工资管理系统共分为13个小模块,分别为:系统登录程序、主函数、界面框架、数据库的链接、职工信息添加、职工信息修改、职工信息删除、工资信息添加、工资信息修改、工资信息查询、按工号查询职工、按姓名查找职工以及帮助。关于各个模块的功能的说明,使用说明:主函数:程序的入口,运
8、行程序应该在主函数上进行。界面框架:该工程的整体框架,包含各种界面、按钮。与以下各个模块相连接,单机按钮,可以进入到不同的子模块。以便于使用者进行操作。数据库的链接:保存已经输入的职工信息与工资信息,需要时可以从数据库直接调用并进行运用。系统登录程序:输入用户名与密码,登陆人事管理系统。职工信息添加:进入该程序后,需要输入职工的信息,包括职工的姓名、工号、性别、年龄、家庭住址与联系。选择保存键可以保存该职工的信息。职工信息修改:进入该程序后,输入要修改的职工的工号,选择查找键进行查找,包括职工的姓名、性别、年龄、家庭住址与联系。选择修改键可以保存修改后职工的信息。职工信息删除:进入该程序后,输
9、入要删除的职工的工号,找出要删除的职工,选择删除键完全删除该职工的所有信息。工资信息添加:进入该程序后,输入职工的工号,然后输入其工资,添加工资。工资信息修改:进入该程序后,输入职工的工号,选择查找键进行查找,修改相应的工资信息,选择修改键可以保存修改后工资的信息。工资信息查询:进入该程序后,输入要查询的职工的工号,选择工资查询,即可显示出该职工的工资。按工号查询职工:进入该程序后,输入要查询的职工的工号,然后选择查找,即可显示该职工信息。按姓名查找职工:进入该程序后,输入要查找的职工的姓名,然后选择查找,即可显示该职工信息。帮助:该程序主要为使用者在使用该系统时遇到的问题进行解答。图5小型工
10、资管理系统详细设计给出程序要到达的具体的要求。明确规定:该小型工资管理系统属于一个小型系统,受编程者水平及人数的限制,因此只能设计一个比较简单的系统。不过,我们将尽自己最大的努力,不断完善该系统,使之成为一个简洁大方、完整而极具应用性的小系统。具体要求如下:(1)界面漂亮大方,简洁易懂,操作性强;(2)每个模块分工明确,内容简明扼要,提示性强。(3)代码准确无误,不含任何语法及逻辑错误,注释标注明确,使人一目了然。(4)系统具有很高的实用性,可真正投入实际使用。(5)程序将由小组每位成员分工合作完成,在自己的努力与相互帮助下,深化对JAVA的学习。4、任务模块分配表:成员负责的功能模块说明钱海
11、燕界面设计与数据库的连接付爽系统主函数、登录、退出与帮助胡晓康职工信息的添加、修改、删除史丞玉工资信息的添加、修改、查询刘文婷员工信息的查询(按工号查询与按姓名查询)5、测试数据登陆系统:输入用户名admin,密码1234,成功进入主界面;假设用户名或密码错误,那么跳出对话框,显示登录失败,无法进入主界面。数据库登陆:输入用户名sa,密码1234,成功进入数据库;假设用户名或密码错误,那么抛出异常。职工信息添加:输入职工的信息,包括职工的姓名、工号、性别、年龄、家庭住址与联系。选择保存键可以保存该职工的信息。职工信息修改:输入要修改的职工的工号,选择查找键进行查找,包括职工的姓名、性别、年龄、
12、家庭住址与联系。选择修改键可以保存修改后职工的信息。如果成功,那么跳出对话框,显示修改成功;假设无法找到该职工工号,跳出对话框,显示修改失败。职工信息删除:输入要删除的职工的工号,找出要删除的职工,选择删除键完全删除该职工的所有信息。如果成功,那么跳出对话框,显示删除成功;假设无法找到该职工工号,跳出对话框,显示删除失败。工资信息添加:输入职工的工号,然后输入其工资,添加工资。如果成功,那么跳出对话框,显示添加成功;假设无法找到该职工工号,跳出对话框,显示添加失败。工资信息修改:输入职工的工号,选择查找键进行查找,修改相应的工资信息,选择修改键可以保存修改后工资的信息。如果成功,那么跳出对话框
13、,显示修改成功;假设无法找到该职工工号,跳出对话框,显示修改失败。工资信息查询:输入要查询的职工的工号,选择工资查询,即可显示出该职工的工资。如果成功,那么跳出对话框,显示查询成功;假设无法找到该职工工号,跳出对话框,显示查询失败。按工号查询职工:输入要查询的职工的工号,然后选择查找,即可显示该职工信息;假设无法找到该职工工号,跳出对话框,显示查询失败。按姓名查找职工:输入要查找的职工的姓名,然后选择查找,即可显示该职工信息。假设无法找到该职工姓名,跳出对话框,显示查询失败。6、程序模块调用关系图退 出工 资 查 询添 加 职 工按工 号 查 询按 姓 名 查 询互 动修 改 职 工图6程序模
14、块调用关系图7、源程序登陆系统源代码importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassLogOnpublicstaticvoidmain(Stringargs)finalJFramejfrmlogin=newJFrame(系统登录);/框标题是系统登录jfrmloginsetSize(400,280);/设置框的大小DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();jfrmlogin.setLocation(int)(SCre
15、enSiZe.width-400)2,(int)(screenSize.height-300);设置框出现的位置构建面板pl、P2、3pl-用户名+文本框JPanell=newJPanel();pl.add(newJLabel(用户名:”);finalJTextFieldjtxtuser=newJTextField(14);p2-密码+文本框JPanelp2=newJPanel();2.add(newJLabe1(密码:);finalJPasswordFieldjswd=newJPasswordField(三);p3登陆+退出两按钮JPanelp3=newJPanel();JButtonjbt
16、ok=newJBUttOn(“登录);JButtonjbtexit=newJBUtton(“退出”);将组件参加到面板中pLadd(Jtxtuser);p2.add(jspwd);3.add(jbtok);p3.add(jbtexit);,登陆键的监听器设置jbtok.addActionListener(newActionListenerOpublicvoidactionPerformed(ActionEvente)Stringa,b;a=gtxtuser.getText();/密码框置为不可见的字符b=jspwd.getText();if(a.equals(admin)=true)&(b.e
17、quals(nl234)=true)(/如果成功那么调用系统程序隐藏当前登陆框JOPtiOnPane.showMessageDialog(nullJ你已成功登陆系统!”系统提示”,JOptionPane.INFORMATION_MESSAGE);MainFramemf=newMainFrame();mf.setVisible(true);jfrmlogin.dispose();)elseJOptionPane.showMessageDialog(null,用户名或密码不一致,请重新输入!系统提示”,JOptionPane.ERROR_MESSAGE);不正确那么将用户框和密码框都置空jtxtu
18、ser.setText();jspwd.setText(););jbtexit.addActionListener(newActionListenerOpublicvoidactionPerformed(ActionEvente)JOtionPane.showMessageDialog(null,您已成功退出系统!系统提示”,JOptionPane.CANCEL_OPrnoN);System.exit(O););采用网格布局jfrmlogin.getContentPane().setLayout(newGridLayout(3,l);jfrmlogin.getContentPane().add
19、(pl);jfrmlogin.getContentPane().add(2);jfrmlogin.getContentPane().add(3);jfrmlogin.setVisible(true);)主函数源代码系统的主程序类Main/导入包importjava.awt.*;importjavax.swing.*;创立主系统类classMainpublicstaticvoidmain(Stringargs)/创立主界面,调用MainFrame()构造函数和方法MainFrameframe=newMainFrameO;/获取屏幕尺寸DimensionscreenSize=Toolkit.get
20、DefaultToolkit().getScreenSize();获取主界面的窗体尺寸DimensionframeSize=frame.getSize();令主界面窗体居中if(frameSize.heightscreenSize.height)frameSize.height=screenSize.height;if(frameSize.widthscreenSize.width)frameSize.width=screenSize.width;frame.setLocation(screenSize.width-frameSize.width)2,(screenSize.height-fr
21、ameSize.height)2);令主界面显示frame.setVisible(true);主界面源代码系统主框架类导入系统的包importjava.awt.*;importjava.awt.event.*;importjava.awt.geom.Rectangle2D;importjavax.swing.*;/创立主框架类MainFramepublicclassMainFrameextendsJFrameimplementsActionListener(创立内容面板JPanelcontentPane;创立菜单栏组件的对象JMenuBarjMenuBarl=newJMenUBar();菜单条
22、JMenujMenuO=newJMenU(系统”);/菜单JMenuItemjMenuItemO=newJMenUItem(“退出”);子菜单JMenujMenu1=newJMenU(职工管理”);JMenuItemJMenuIteml=newJMenUItem(添加职工”);JMenuItemjMenuItem2=newJMenUItem(修改职工”);JMenuItemjMenuItem3=newJMenUltemC删除职工”);JMenujMenu2=newJMenU(工资管理”);JMenuItemjMenuItem4=newJMenUItem(添力口工资”);JMenuItemjMe
23、nuItem5=newJMenUltem(修改工资”);JMenuItemjMenuItem8=newJMenuItem(n工资查询”);JMenujMenu3=newJMenU(职工查询”);JMenuItemjMenuItem6=newJMenUltem(按工号查询);JMenuItemjMenuItem7=newJMenUItem(按姓名查询”);JMenujMenu4=newJMenU(帮助”);JMenuItemjMenuItem9=newJMenUltem(“互动);创立标签,用于显示信息JLabeljLabell=newJLabel(小型工资管理系统”);JLabeljLabel
24、2=newJLabel(2023-JaVa课程设计”);创立构造方法publicMainFrameO(try(关闭框架窗口时的默认事件方法setDefaultCloseOperation(EXIT_ON_CLOSE);调用初始化方法jblnit();)catch(Exceptionexception)exception.rintStackTrace();界面初始化方法privatevoidjblnit()throwsException(/创立内容面板ContentPane=(JPanel)getContentPane();设置内容面板的布局为空contentPane.setLayout(nul
25、l);主框架的大小DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();setLocation(int)(screenSize.width-400)2,(int)(screenSize.height-300)2);setSize(newDimension(400,360);主框架的标题SetTitIe(小型工资管理系统”);添加事件监听器jMenuItemO.addActionListener(this);JMenuItem1.addActionListener(this);jMenuItem2.addActionLis
26、tener(this);jMenuItem3.addActionListener(this);jMenuItem4.addActionListener(this);jMenuItem5.addActionListener(this);jMenuItem6.addActionListener(this);jMenuItem7.addActionListener(this);jMenuItem8.addActionListener(this);jMenuItem9.addActionListener(this);添加菜单条到主框架SetJMenuBar(JMenuBarl);/添加菜单到菜单条JM
27、enuBar1.add(jMenuO);JMenuBar1.add(jMenu1);JMenuBar1.add(jMenu2);JMenuBar1.add(jMenu3);JMenuBar1.add(jMenu4);/添加菜单项到菜单jMenuO.add(jMenuItemO);jMenul.add(jMenuItem1);jMenu1.add(jMenuItem2);jMenul.add(jMenuItem3);jMenu2.add(jMenuItem4);jMenu2.add(jMenuItem5);jMenu2.add(jMenuItem8);jMenu3.add(jMenuItem6)
28、;jMenu3.add(jMenuItem7);jMenu4.add(jMenuItem9);添加标签到主框架内容面板contentPane.add(jLabel1);contentPane.add(jLabel2);设置标签组件的大小和字体jLabeILSetFCmt(newjava.awt.Font(黑体”,Font.BOLD,20);jLabel1.setBounds(newRectangle(65,70,275,55);jLabel2.setFont(newjava.awt.Font(黑体”,Font.Bc)LDj6);jLabel2.setBounds(newRectangle(90
29、,150,200,35);菜单项事件对应的处理方法publicvoidactionPerformed(ActionEventactionEvent)(点击“系统菜单下的“退出菜单项if(actionEvent.getSource()=jMenuItemO)(Je)PtionPane.showMessageDiakg(nullJ您已成功退出系统!,系统提示“JOPtionPane.Canceljdption);System.exit(O);)点击“职工管理菜单下的“添加职工菜单项if(actionEvent.getSource()=jMenuItem1)创立“添加职工面板对象AddEmploye
30、eAddEmp=newAddEmployeeO;/移除主框架上原有的内容this.remove(this.getContentPane();/加载“添加职工面板的对象到主框架this.SetContentPane(AddEmp);令界面可见this.setVisible(true);)点击“职工管理菜单下的“修改职工菜单项if(actionEvent.getSource()=jMenuItem2)(创立“修改职工面板对象ModifyEmployeeModifyEmp=newModifyEmployeeO;this.remove(this.getContentPane();加载“修改职工面板的对
31、象到主框架this.SetContentPane(ModifyEmp);this.setVisible(true);)点击“职工管理菜单下的“删除职工菜单项if(actionEvent.getSource()=jMenuItem3)/创立“删除职工面板对象DeleteEmployeeDeleteEm=newDeleteEmployeeO;this.remove(this.getContentPane();加载“删除职工面板的对象到主框架this.setContentPane(DeleteEmp);this.setVisible(true);)点击“工资管理菜单下的“添加工资菜单项if(acti
32、onEvent.getSource()=jMenuItem4)(创立工资添加的面板对象AddSalaryAddSal=newAddSalaryO;this.remove(this.getContentPane();加载工资添加面板的对象到主框架this.setContentPane(AddSal);this.setVisible(true);)点击“工资管理菜单下的“修改工资菜单项if(actionEvent.getSource()=jMenuItem5)创立工资修改的面板对象ModifySalaryModifySal=newModifySalaryO;this.remove(this.get
33、ContentPane();/加载工资修改面板的对象到主框架this.SetContentPane(ModifySal);this.setVisible(true);/点击“工资管理菜单下的“工资查询菜单项if(actionEvent.getSource()=jMenuItem8)(创立工资修改的面板对象SalaryInquireSalarylnq=newSalaryInquireO;this.remove(this.getContentPane();加载工资修改面板的对象到主框架this.SetContentPane(SalaryInq);this.setVisible(true);)/点击
34、“职工查询菜单下的“按工号查询菜单项if(actionEvent.getSource()=jMenuItem6)(创立“按工号查询面板对象InquireOnGH0nGH=newInquireOnGHO;移除主框架上原有的内容this.remove(this.getContentPane();this.SetContentPane(OnGH);this.setVisible(true);)点击“职工查询菜单下的“按姓名查询菜单项if(actionEvent.getSource()=jMenuItem7)/创立“按姓名查询面板对象InquireOnName0nName=newInquireOnNa
35、meO;移除主框架上原有的内容this.remove(this.getContentPane();this.setContentPane(OnName);this.setVisible(true);)点击“帮助菜单下的“互动菜单项if(actionEvent.getSource()=jMenuItem9)(/创立“帮助面板对象EmployeeHelpEmployeeH=newEmployeeHelpO;移除主框架上原有的内容this.remove(this.getContentPane();this.setContentPane(EmployeeH);this.setVisible(true)
36、;)数据库源代码类DBConnect用于数据库的连接/导入sql包importjava.sql.*;创立数据库连接类DBConnectpublicclassDBConnect(静态方法提高数据库的连接效率publicstaticConnectiongetConn()throwsException/加载JDBC驱动lserver.SQLServerDrivern);以系统默认用户身份,连接数据库SuIdentManagerreturnDriverManager.getConnection(njdbc:microsoft:sqlserver:/l27.0.0.1:1433databaseNameS
37、=LiStYsaJ1234);/加载JDBC驱动Class.forName(nsun.jdbc.odbc.JdbcOdbcDriver);以系统默认用户身份,连接数据库StudentManagerreturnDriverManager.getConnection(jdbcdbcList,sa,l234);)职工信息输入系统源代码添加职工面板类AddEmployee导入系统的类包importjava.awt.*;importjava.sql.*;importjavax.swing.*;importjava.awt.event.*;创立“添加职工”面板类publicclassAddEmployee
38、extendsJPanelimplementsActionListener/声明连接数据库对象Connectioncon;/声明SQL语句对象Statementst;创立组件对象:标签、文本行、单项选择JLabeljLabel1=newJLabe1(职工工号”);JLabeljLabel2=newJLabe1(“职工姓名”);JLabeljLabel3=newJLabel(职工性别);JLabeljLabel4=newJLabe1(“职工年龄”);JLabeljLabe15=newJLabel(家庭住址);JLabeljLabel6=newJLabe1(“联系”);JTextFieldJTex
39、tField1=newJTextFieldO;JTextFieldjTextField2=newJTextFieldO;JTextFieldjTextField3=newJTextFieldO;JTextFieldjTextField4=newJTextFieldO;JTextFieldjTextField5=newJTextFieldO;JRadioButtonJRadioButtonl=newJRadioButton(n男);JRadioButtonjRadioButton2=newJRadioBUtton(女”);ButtonGroupbuttonGroup1=newButtonGrou
40、pO;JButtonjButton1=newJBUtton(添加职工”);构造方法publicAddEmployeeO(try调用初始化方法jblnit();)catch(Exceptionexception)exception.printStackTrace();)界面初始化方法privatevoidjblnit()throwsException连接数据库con=DBConnect.getConn();st=con.createStatement();框架的布局this.setLayout(null);设置各组件的大小jLabel1.setBounds(newRectangle(21,17,
41、64,24);jLabe12.setBounds(newRectangle(21,51,53,22);jLabel3.setBounds(newRectangle(21,86,61,27);jLabel4.setBounds(newRectangle(21,122,59,25);jLabe15.setBounds(newRectangle(21,168,54,24);jLabel6.setBounds(newRectangle(21,205,54,24);JTextField1.setBounds(newRectangle(l02,10,200,30);jTextField2.setBound
42、s(newRectangle(l02,49,200,30);jTextField3.setBounds(newRectangle(102,117,80,33);jTextField4.setBounds(newRectangle(l02,163,200,29);jTextField5.setBounds(newRectangle(l02,200,200,29);JRadioButtonl.setBounds(newRectangle(102,83,65,30);jRadioButton2.setBounds(newRectangle(190,85,85,30);jButton1.setBoun
43、ds(newRectangle(l30,240,150,32);设置单项选择按钮被选中JRadioButtonl.setSelected(true);添加按钮动作事件jButtonl.addActionListener(this);添加组件到面板this.add(jLabell);this.add(jTextField1);this.add(jLabel2);this.add(jLabel3);buttonGroupl.add(jRadioButton1);buttonGroupl.add(jRadioButton2);this.add(jRadioButton1);this.add(jRad
44、ioButton2);this.add(jLabel4);this.add(jTextField3);this.add(jLabel5);this.add(jTextField4);this.add(jLabel6);this.add(jTextField5);this.add(jButtonl);)点击按钮事件publicvoidactionPerformed(ActionEvente)(获取用户输入的信息StringEmployeeID=JTextFieldkgetTextO;StringEmployeeNamejTextField2.getText();StringEmployeeSex=;if(jRadioButtonl.isSelected()EmPIOyeeSex+=男;if(jRadioButton2.isSelected()EmployeeSex+=女;StringEmPlOyeeAge=JTeXtField3.getText();StringEmployeeAddress=jTextField4.getText();StringEmployeePhone=jTextField5.getText();try