《小型工资管理系统 java 报告书.docx》由会员分享,可在线阅读,更多相关《小型工资管理系统 java 报告书.docx(89页珍藏版)》请在三一办公上搜索。
1、 10届 第2学年 1学期Java语言程序设计小组课程设计报告书小组名称: 致知小组 小组题目: 小型工资管理系统 专 业: 信息管理与信息系统 班 级: 6班 姓 名: 组长: 钱海燕 (组员:) 史丞玉 胡晓康 付爽 刘文婷 指导教师: 任 敏 贤 完成日期: 2012年1月4日 小型工资管理系统1、问题描述设计一个小型工资管理系统,为公司员工提供一套完整的信息,以便于公司对员工的管理。2、开发环境搭建Java开发环境的搭建包括三个部分:(1)JDK下载、安装及配置下载:在Oracle官网下载的jdk-7u2版本。安装:解压下载的JDK后,进入安装状态,下载好的JDK是一个可执行安装程序,
2、执行安装即可。安装完成在安装目录下会有jdk1.7.0和jre1.7.0两个文件夹。设置环境变量:打开“我的电脑 - 属性 - 高级 - 环境变量 - 系统变量”,设置以下三个变量:JAVA_HOME= 如:D:/Java/jdk1.7.0;CLASSPATH=.如:D:/Java/jdk1.70/lib;Path=;如:D:/Java/jdk1.7.0/bin;请注意:CLASSPATH变量的值是“.”(不包括引号).打开“windows”的“命令提示符”窗口,在提示符下输入javac,如果出现编译器的选项,说明编译器正常。输入java,如果出现解释器的选项,说明解释器正常。这样就可以使用J
3、DK编译和运行JAVA程序了。(2)eclipse下载、安装下载:在相应的官网上下载即可。安装:直接解压,在eclipse目录里面找到eclipse.exe(3)SQL Server 2000 4 in 1的下载、安装及配置下载:在微软官网上下载即可。安装:解压后选择个人版进行安装,选择windows用户混合验证模式。再安装补丁包,最后添加ODBC数据源。3、系统功能(1)进行系统的需求分析:随着科学技术的发展和整个社会的进步,计算机技术也得到了很大的提高,特别是微型计算机的大范围普及,是计算机的应用逐渐有科学计算、实时控制等方面向非数值处理的各个领域渗透并发挥着越来越重要的作用。尤其是以微型
4、计算机为处理核心,以数据库管理系统为开发环境的管理系统在办公室自动化以及商业信息管理等方面的应用,日益受到人们的关注。对一个企业而言,人力资源是企业最宝贵的资源,也势必企业的“生命线”。而工资管理是企业管理的一个重要环节,其管理方式和工具对企业的决策者和管理者来说至关重要。但一直以来大多企业内部人事和工资的管理基本上都是传统的手工操作,这种人管理的方式效率低,保密性差,而且很难满足及时记录、随时查询的需要,为信息的管理者带来诸多不便。利用计算机进行信息控制和数据处理,不仅从整体上大大提高了工作效率和安全性,而且具有存储量大,寿命长,成本低等优点,这些更是手工管理所无法比拟的。用计算机支持完成人
5、事管理的日常事务,能够使人事管理自动化和科学化,提高了信息处理得速度和准确性;工资管理更是一项琐碎、复杂而又十分细致的工作,如果实行手工操作,会浪费工作人员很多时间和精力,且失误在所难免,而使用计算机进行工资计算和发放,不仅能够保证工资核算准确无误,而且能对相关信息进行统计,使工资与考勤、奖惩等事项合理挂钩,是企业内部管理体制更加科学有效。总之,为了很好的实现数据的录入、插入、查询、统计、更新等功能,已达到使企业人事工资信息管理科学化、系统化、规范化和自动化的目的,建立人事工资管理的需求。系统的设计目标 1.设计出一套简单、方便的小型工资管理系统,方便公司对员工的管理。 2.在设计该人事管理系
6、统的过程中,深化对JAVA的学习,以便掌握JAVA中的各种知识。系统的可行性分析技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户提出的要求。此外,还要考虑开发人员的水平,经过学习,在编程方面有一定的基础。经济的可行性分析分为两个方面,一方面是支出的费用,另一方面是取得的收益。这是一个小型的工资管理系统,从投入的人力、财力与物力来讲是非常小的,只要有电脑就可以了。从节省人力方面,可以让管理人员从繁冗复杂的工作中解脱出来,做更多的工作,可以给工资管理提高一个层次。(2)系统的总体设计 建立系统的功能模型(各个模块的调用关系)小型工资管理系统按工号查询职工查询工资管理添加工资系统登录添
7、加职工系统退出删除职工修改职工系统设置工资查询修改工资职工管理按姓名查询帮助 图1 小型工资管理系统结构图建立系统的概念模型(E-R图:总体和局部)小型工资管理系统工资信息职工信息图2 总系统E-R图员工联系电话年龄姓名家庭住址性别工号部门籍贯图3 职工信息E-R图建立系统的数据模型(以文件的形式处理)管理员登录系统添加信息职工个人信息单职工工资信息单查询信息互动信息单匹配信息输入需删除的信息信息匹配并删除输入修改的信息修改后的工资信息单修改后的工资信息单删除后的职工信息单登录密码管理员1管理员2管理员4.1.1计算机3.1.1管理员5.1计算机J6J7删除信息管理员4.14.15.13管理员
8、输入查询条件3.1计算机匹配信息单J5J4J8合并信息单计算机7添加的工资信息添加的职工个人信息修改信息帮助J1J2管理员546管理员删除后的职工信息单删除后的职工信息单匹配的信息单修改后的工资信息单J3修改后的职工信息单修改后的职工信息单合并后的信息单删除后的信息单图4 小型工资管理系统数据模型图(3)系统的详细设计该小型工资管理系统共分为13个小模块,分别为:系统登录程序、主函数、界面框架、数据库的链接、职工信息添加、职工信息修改、职工信息删除、工资信息添加、工资信息修改、工资信息查询、按工号查询职工、按姓名查找职工以及帮助。关于各个模块的功能的说明,使用说明:主函数:程序的入口,运行程序
9、应该在主函数上进行。界面框架:该项目的整体框架,包含各种界面、按钮。与以下各个模块相连接,单机按钮,可以进入到不同的子模块。以便于使用者进行操作。数据库的链接:保存已经输入的职工信息与工资信息,需要时可以从数据库直接调用并进行运用。系统登录程序:输入用户名与密码,登陆人事管理系统。职工信息添加:进入该程序后,需要输入职工的信息,包括职工的姓名、工号、性别、年龄、家庭住址与联系电话。选择保存键可以保存该职工的信息。职工信息修改:进入该程序后,输入要修改的职工的工号,选择查找键进行查找,包括职工的姓名、性别、年龄、家庭住址与联系电话。选择修改键可以保存修改后职工的信息。职工信息删除:进入该程序后,
10、输入要删除的职工的工号,找出要删除的职工,选择删除键完全删除该职工的所有信息。 工资信息添加:进入该程序后,输入职工的工号,然后输入其工资,添加工资。工资信息修改:进入该程序后,输入职工的工号,选择查找键进行查找,修改相应的工资信息,选择修改键可以保存修改后工资的信息。工资信息查询:进入该程序后,输入要查询的职工的工号,选择工资查询,即可显示出该职工的工资。按工号查询职工:进入该程序后,输入要查询的职工的工号,然后选择查找,即可显示该职工信息。按姓名查找职工:进入该程序后,输入要查找的职工的姓名,然后选择查找,即可显示该职工信息。帮助:该程序主要为使用者在使用该系统时遇到的问题进行解答。主函数
11、界面设计数据库连接系统登录职工添加工资修改工资查询按工号查询职工删除职工修改系统退出工资添加职工系统工资系统查询系统按姓名查询小型工资管理系统整体框架登陆退出系统帮助系统图5 小型工资管理系统详细设计给出程序要达到的具体的要求。明确规定:该小型工资管理系统属于一个小型系统,受编程者水平及人数的限制,因此只能设计一个比较简单的系统。不过,我们将尽自己最大的努力,不断完善该系统,使之成为一个简洁大方、完整而极具应用性的小系统。具体要求如下:(1)界面漂亮大方,简洁易懂,操作性强;(2)每个模块分工明确,内容简明扼要,提示性强。 (3)代码准确无误,不含任何语法及逻辑错误,注释标注明确,使人一目了然
12、。(4)系统具有很高的实用性,可真正投入实际使用。(5)程序将由小组每位成员分工合作完成,在自己的努力与相互帮助下,深化对JAVA的学习。4、任务模块分配表: 成员 负责的功能模块说明钱海燕界面设计与数据库的连接付爽系统主函数、登录、退出与帮助胡晓康职工信息的添加、修改、删除史丞玉工资信息的添加、修改、查询刘文婷员工信息的查询(按工号查询与按姓名查询)5、测试数据登陆系统:输入用户名admin,密码1234,成功进入主界面;若用户名或密码错误,则跳出对话框,显示登录失败,无法进入主界面。数据库登陆:输入用户名sa,密码1234,成功进入数据库;若用户名或密码错误,则抛出异常。职工信息添加:输入
13、职工的信息,包括职工的姓名、工号、性别、年龄、家庭住址与联系电话。选择保存键可以保存该职工的信息。职工信息修改:输入要修改的职工的工号,选择查找键进行查找,包括职工的姓名、性别、年龄、家庭住址与联系电话。选择修改键可以保存修改后职工的信息。如果成功,则跳出对话框,显示修改成功;若无法找到该职工工号,跳出对话框,显示修改失败。 职工信息删除:输入要删除的职工的工号,找出要删除的职工,选择删除键完全删除该职工的所有信息。如果成功,则跳出对话框,显示删除成功;若无法找到该职工工号,跳出对话框,显示删除失败。 工资信息添加:输入职工的工号,然后输入其工资,添加工资。如果成功,则跳出对话框,显示添加成功
14、;若无法找到该职工工号,跳出对话框,显示添加失败。 工资信息修改:输入职工的工号,选择查找键进行查找,修改相应的工资信息,选择修改键可以保存修改后工资的信息。如果成功,则跳出对话框,显示修改成功;若无法找到该职工工号,跳出对话框,显示修改失败。 工资信息查询:输入要查询的职工的工号,选择工资查询,即可显示出该职工的工资。如果成功,则跳出对话框,显示查询成功;若无法找到该职工工号,跳出对话框,显示查询失败。 按工号查询职工:输入要查询的职工的工号,然后选择查找,即可显示该职工信息;若无法找到该职工工号,跳出对话框,显示查询失败。 按姓名查找职工:输入要查找的职工的姓名,然后选择查找,即可显示该职
15、工信息。若无法找到该职工姓名,跳出对话框,显示查询失败。 6、程序模块调用关系图登录小型工资管理系统系统职工管理工资管理职工查询帮助退出添加职工修改职工删除职工添加工资修改职工工资查询按工号查询按姓名查询互动登陆系统成功!密码或用户名错误!图6程序模块调用关系图7、源程序登陆系统源代码import javax.swing.*;import java.awt.*;import java.awt.event.*;public class LogOn public static void main(String args)final JFrame jfrmlogin=new JFrame(系统登录)
16、;/框标题是 系统登录jfrmlogin.setSize(400,280);/设置框的大小Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();jfrmlogin.setLocation(int) (screenSize.width-400)/2,(int)(screenSize.height-300)/2);/设置框出现的位置/构建面板 p1、p2、p3/p1-用户名+文本框JPanel p1=new JPanel();p1.add(new JLabel(用户名:);final JTextField jtxtuser
17、=new JTextField(14); /p2-密码+文本框JPanel p2=new JPanel();p2.add(new JLabel(密码:);final JPasswordField jspwd=new JPasswordField(14);/p3-登陆+退出 两按钮JPanel p3=new JPanel();JButton jbtok=new JButton(登录);JButton jbtexit=new JButton(退出);/将组件加入到面板中p1.add(jtxtuser);p2.add(jspwd);p3.add(jbtok);p3.add(jbtexit);/,登陆
18、键的监听器设置jbtok.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String a,b; a=jtxtuser.getText(); /密码框置为不可见的字符 b=jspwd.getText(); if(a.equals(admin)=true)&(b.equals(1234)=true) /如果成功则调用系统程序 隐藏当前登陆框 JOptionPane.showMessageDialog(null,你已成功登陆系统!,系统提示,JOptionPane.INFORMATION
19、_MESSAGE); MainFrame mf=new MainFrame(); mf.setVisible(true);jfrmlogin.dispose();elseJOptionPane.showMessageDialog(null,用户名或密码不一致,请重新输入!,系统提示,JOptionPane.ERROR_MESSAGE);/不正确则将用户框和密码框都置空jtxtuser.setText();jspwd.setText(););jbtexit.addActionListener(new ActionListener()public void actionPerformed(Acti
20、onEvent e)JOptionPane.showMessageDialog(null,您已成功退出系统!,系统提示,JOptionPane.CANCEL_OPTION);System.exit(0););/采用网格布局 jfrmlogin.getContentPane().setLayout(new GridLayout(3,1);jfrmlogin.getContentPane().add(p1);jfrmlogin.getContentPane().add(p2);jfrmlogin.getContentPane().add(p3);jfrmlogin.setVisible(true)
21、;主函数源代码/系统的主程序类Main /导入包import java.awt.*;import javax.swing.*;/创建主系统类class Mainpublic static void main (String args) /创建主界面,调用MainFrame()构造函数和方法MainFrame frame=new MainFrame();/获取屏幕尺寸Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();/获取主界面的窗体尺寸Dimension frameSize =frame.getSize();/令主
22、界面窗体居中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-frameSize.height)/2);/令主界面显示frame.setVisible(true);主界面源代码/系统主框架类 /导入系统的包import ja
23、va.awt.*;import java.awt.event.*;import java.awt.geom.Rectangle2D;import javax.swing.*;/创建主框架类MainFramepublic class MainFrame extends JFrame implements ActionListener/创建内容面板JPanel contentPane;/创建菜单栏组件的对象JMenuBar jMenuBar1=new JMenuBar();/菜单条JMenu jMenu0=new JMenu(系统);/菜单JMenuItem jMenuItem0=new JMen
24、uItem(退出);/子菜单JMenu jMenu1=new JMenu(职工管理);JMenuItem jMenuItem1=new JMenuItem(添加职工);JMenuItem jMenuItem2=new JMenuItem(修改职工);JMenuItem jMenuItem3=new JMenuItem(删除职工);JMenu jMenu2=new JMenu(工资管理);JMenuItem jMenuItem4=new JMenuItem(添加工资);JMenuItem jMenuItem5=new JMenuItem(修改工资);JMenuItem jMenuItem8=ne
25、w JMenuItem(工资查询);JMenu jMenu3=new JMenu(职工查询);JMenuItem jMenuItem6=new JMenuItem(按工号查询);JMenuItem jMenuItem7=new JMenuItem(按姓名查询);JMenu jMenu4=new JMenu(帮助);JMenuItem jMenuItem9=new JMenuItem(互动);/创建标签,用于显示信息JLabel jLabel1=new JLabel( 小型工资管理系统);JLabel jLabel2=new JLabel( 2011-Java课程设计);/创建构造方法publi
26、c MainFrame()try/关闭框架窗口时的默认事件方法setDefaultCloseOperation(EXIT_ON_CLOSE);/调用初始化方法jbInit();catch(Exception exception)exception.printStackTrace();/界面初始化方法private void jbInit() throws Exception/创建内容面板contentPane =(JPanel) getContentPane();/设置内容面板的布局为空contentPane.setLayout(null);/主框架的大小Dimension screenSiz
27、e=Toolkit.getDefaultToolkit().getScreenSize();setLocation(int) (screenSize.width-400)/2,(int)(screenSize.height-300)/2);setSize(new Dimension(400,360);/主框架的标题setTitle(小型工资管理系统);/添加事件监听器jMenuItem0.addActionListener(this);jMenuItem1.addActionListener(this);jMenuItem2.addActionListener(this);jMenuItem3
28、.addActionListener(this);jMenuItem4.addActionListener(this);jMenuItem5.addActionListener(this);jMenuItem6.addActionListener(this);jMenuItem7.addActionListener(this);jMenuItem8.addActionListener(this);jMenuItem9.addActionListener(this);/添加菜单条到主框架setJMenuBar(jMenuBar1);/添加菜单到菜单条jMenuBar1.add(jMenu0);j
29、MenuBar1.add(jMenu1);jMenuBar1.add(jMenu2);jMenuBar1.add(jMenu3);jMenuBar1.add(jMenu4);/添加菜单项到菜单jMenu0.add(jMenuItem0);jMenu1.add(jMenuItem1);jMenu1.add(jMenuItem2);jMenu1.add(jMenuItem3);jMenu2.add(jMenuItem4);jMenu2.add(jMenuItem5);jMenu2.add(jMenuItem8);jMenu3.add(jMenuItem6);jMenu3.add(jMenuItem
30、7);jMenu4.add(jMenuItem9);/添加标签到主框架内容面板contentPane.add(jLabel1);contentPane.add(jLabel2);/设置标签组件的大小和字体jLabel1.setFont(new java.awt.Font(黑体,Font.BOLD,20);jLabel1.setBounds(new Rectangle(65,70,275,55);jLabel2.setFont(new java.awt.Font(黑体,Font.BOLD,16);jLabel2.setBounds(new Rectangle(90,150,200,35);/菜单
31、项事件对应的处理方法public void actionPerformed(ActionEvent actionEvent)/点击“系统”菜单下的“退出”菜单项if(actionEvent.getSource()=jMenuItem0)JOptionPane.showMessageDialog(null,您已成功退出系统!,系统提示,JOptionPane.CANCEL_OPTION);System.exit(0);/点击“职工管理”菜单下的“添加职工”菜单项if(actionEvent.getSource()=jMenuItem1)/创建“添加职工”面板对象AddEmployee AddEm
32、p=new AddEmployee();/移除主框架上原有的内容this.remove(this.getContentPane();/加载“添加职工”面板的对象到主框架this.setContentPane(AddEmp);/令界面可见this.setVisible(true);/点击“职工管理”菜单下的“修改职工”菜单项if(actionEvent.getSource()=jMenuItem2)/创建“修改职工”面板对象ModifyEmployee ModifyEmp=new ModifyEmployee();this.remove(this.getContentPane();/加载“修改职
33、工”面板的对象到主框架this.setContentPane(ModifyEmp);this.setVisible(true);/点击“职工管理”菜单下的“删除职工”菜单项if(actionEvent.getSource()=jMenuItem3)/创建“删除职工”面板对象DeleteEmployee DeleteEmp=new DeleteEmployee();this.remove(this.getContentPane();/加载“删除职工”面板的对象到主框架this.setContentPane(DeleteEmp);this.setVisible(true);/点击“工资管理”菜单下
34、的“添加工资”菜单项if(actionEvent.getSource()=jMenuItem4)/创建工资添加的面板对象AddSalary AddSal=new AddSalary();this.remove(this.getContentPane();/加载工资添加面板的对象到主框架this.setContentPane(AddSal);this.setVisible(true);/点击“工资管理”菜单下的“修改工资”菜单项if(actionEvent.getSource()=jMenuItem5)/创建工资修改的面板对象ModifySalary ModifySal=new ModifySa
35、lary();this.remove(this.getContentPane();/加载工资修改面板的对象到主框架this.setContentPane(ModifySal);this.setVisible(true);/点击“工资管理”菜单下的“工资查询”菜单项if(actionEvent.getSource()=jMenuItem8)/创建工资修改的面板对象SalaryInquire SalaryInq=new SalaryInquire();this.remove(this.getContentPane();/加载工资修改面板的对象到主框架this.setContentPane(Sala
36、ryInq);this.setVisible(true);/点击“职工查询”菜单下的“按工号查询”菜单项if(actionEvent.getSource()=jMenuItem6)/创建“按工号查询”面板对象InquireOnGH OnGH=new InquireOnGH();/移除主框架上原有的内容this.remove(this.getContentPane();this.setContentPane(OnGH);this.setVisible(true);/点击“职工查询”菜单下的“按姓名查询”菜单项if(actionEvent.getSource()=jMenuItem7)/创建“按姓
37、名查询”面板对象InquireOnName OnName=new InquireOnName();/移除主框架上原有的内容this.remove(this.getContentPane();this.setContentPane(OnName);this.setVisible(true);/点击“帮助”菜单下的“互动”菜单项if(actionEvent.getSource()=jMenuItem9)/创建“帮助”面板对象EmployeeHelp EmployeeH=new EmployeeHelp();/移除主框架上原有的内容this.remove(this.getContentPane();
38、this.setContentPane(EmployeeH);this.setVisible(true);数据库源代码/类DBConnect用于数据库的连接 /导入sql包import java.sql.*;/创建数据库连接类DBConnectpublic class DBConnect/静态方法提高数据库的连接效率public static Connection getConn() throws Exception/加载JDBC驱动Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);/以系统默认用户身份,连接数据库Stude
39、ntManagerreturn DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;databaseNames=List,sa,1234);/加载JDBC驱动Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/以系统默认用户身份,连接数据库StudentManagerreturn DriverManager.getConnection(jdbc:odbc:List,sa,1234);职工信息输入系统源代码 /添加职工面板类AddEmployee /导入系统的类包impor
40、t java.awt.*;import java.sql.*;import javax.swing.*;import java.awt.event.*;/创建“添加职工“面板类public class AddEmployee extends JPanel implements ActionListener/声明连接数据库对象Connection con;/声明SQL语句对象Statement st;/创建组件对象:标签、文本行、单选JLabel 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 JTextField();JTextField jTextField4=new JTextField();