1、职工信息管理系统目录一、 绪论11.1关键技术介绍11。1。1JAVA技术11。1.2SQL数据库1二、需求分析2三、系统概要设计:33.1问题描述33。2要求33。3数据库设计3四、系统详细设计54.1新员工信息录入54.2显示员工信息64.3修改员工信息74.4查询员工信息94。5删除员工信息104.6员工信息排序114.7员工信息统计124。8注销13五、系统测试145.1系统登录145。2系统主界面145。3新员工信息录入155。4显示员工信息165.5修改员工信息175.6查询员工信息185.7删除员工信息195。8排列系统205.9统计界面205.10注销21六、 总结22八、 附
2、录23职工信息管理系统设计一、 绪论1。1关键技术介绍Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。主要工作是通过编程语言来制作互联网页面、制作动态效果以及网站等技术。1.1。1JAVA技术Java是目前最为流行的程序设计语言。Java中的高级技术,其中的多线程、集合、泛型、RTTI等。实际编程中GUI程序设计、多媒体程序设计、数据库和网络程序设计.1.1.2SQL数据库数据库指的是以一定方式储存在一起、能为多个用
3、户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合.在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。二、需求分析职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作
4、所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。 随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。而作为计算机应用的一部分,使用计算机对职工进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等.这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件.职工管理系
5、统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。三、系统概要设计:3.1问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能.3.2要求职工对象包括员工号(员工号不重复),姓名(字符串),性别(字符),年龄(数字),学历(字符串),部门(字符串),工资(数字),住址(字符串),电话(数字)等信息。(1)新增一名职工:将新增职工各项资料加入数据库。(2)删除一名职工:从数据库中删除一名职工对象。(3)查询:按照员工号、姓名、部门查询已存在的员工信息。(4)修改:检索某个职工对象,对其某些属性进行修改.(5)排序:按某种需要对职工对象文件进行排序。 系统功能结构图
6、3.3数据库设计共设计包括Manager、Employees两个表.表项如下:Manager表:员工号int姓名Char性别Char年龄int学历char部门char工资Int住址Varchar电话varcharMnager表:UsernameCharPasswordchar四、系统详细设计4.1新员工信息录入此部分在添加员工信息之前检索数据库有关表项,检查是否存在重复员工号,若存在,提示员工号码存在并停止录入操作,若不存在,则进行录入.也可通过设置数据库主键形式,对员工号的唯一性加以确认。关键代码如下:public void actionPerformed(ActionEvent e) St
7、ring sql1=”select EmployeeID from Employees where EmployeeID=+jTextField。getText(); ResultSet rs=DbConnection.dbQuery(sql1); tryif(rs。next()/对select结果的判断,若存在重复,则运行下面提示JOptionPane。showMessageDialog(null,该员工号码存在,请重新输入!,”警告,JOptionPane。PLAIN_MESSAGE);elseString Sex=null;if(jRadioButton.isSelected()Sex=
8、jRadioButton.getText();elseSex=jRadioButton1。getText();String DepartmentName=(String) jComboBox。getSelectedItem();String sql=”insert into Employees(EmployeeID,Name,Education,Birthday,Sex,WorkYear,Address,PhoneNumber,DepartmentName,InCome,Age)values(+jTextField。getText()+”,”+jTextField1。getText()+,”+
9、jTextField2.getText()+,”+jTextField3。getText()+”,+Sex+”,+jTextField8。getText()+,”+jTextField4。getText()+”,+jTextField5。getText()+”,+DepartmentName+,”+jTextField6。getText()+”,”+jTextField7.getText()+”)”;int n=DbConnection。dbUpdate(sql); if(n=1) JOptionPane。showMessageDialog(null,”新员工录入信息成功!”,查询结果”,JO
10、ptionPane。PLAIN_MESSAGE); catch(Exception se)se.printStackTrace();private JButton getJButton() if (jButton = null) jButton = new JButton();jButton。setBounds(new Rectangle(35, 531, 107, 31);jButton.setText(确定”);jButton。addActionListener(new java。awt.event.ActionListener() public void actionPerformed(
11、java.awt。event.ActionEvent e) );return jButton;private JButton getJButton1() if (jButton1 = null) jButton1 = new JButton();jButton1.setBounds(new Rectangle(165, 532, 107, 31));jButton1.setText(取消);jButton1.addActionListener(new java.awt.event。ActionListener() public void actionPerformed(java。awt.eve
12、nt。ActionEvent e) dispose();/点击取消按钮,关闭窗口);return jButton1;4。2显示员工信息此部分使用jTable显示员工各项信息.关键代码如下:private JTable getJTable() if (jTable = null) String a=new String3011;/定义数组用来存放员工信息String colname=员工号”,”姓名,”文化程度,出生日期”,”性别,工作年份”,”地址,电话”,”部门,”收入,”年龄; int i=0;String sql=”select * from Employees”;ResultSet r
13、s=DbConnection.dbQuery(sql);try while(rs。next())/a10表示第一个员工的11项信息 ai0=rs.getString(1); ai1=rs.getString(2); ai2=rs。getString(3); ai3=rs。getString(4); ai4=rs.getString(5); ai5=rs。getString(6); ai6=rs.getString(7); ai7=rs.getString(8); ai8=rs.getString(9); ai9=String.valueOf(rs。getFloat(10); ai10=Stri
14、ng。valueOf(rs.getInt(11)); i+; catch(SQLException e)e。printStackTrace();finallyDbConnection.close();jTable = new JTable(a,colname);jTable.setShowHorizontalLines(true);jTable。setShowVerticalLines(true);jTable。setBounds(new Rectangle(34, 61, 645, 342));jTable。setShowGrid(true);return jTable;public voi
15、d actionPerformed(ActionEvent arg0) 4.3修改员工信息此部分包括修改员工家庭住址、部门、学历、收入、电话号码等信息。在修改信息之前,可以检索数据库检查修改人员是否存在。由于时间有限,没有设计同时修改多项纪录的操作,是本设计的不足.由于修改功能各项代码大致相似,下文只贴出修改地址的关键代码:public void actionPerformed(ActionEvent e) String sql1=select EmployeeID from Employees where EmployeeID=+jTextField.getText(); ResultSet
16、 rs=DbConnection.dbQuery(sql1); try if(rs。next())/检索输入员工是否存在的判断语句String sql=select from Employees where EmployeeID=”+jTextField。getText(); ResultSet n=DbConnection。dbQuery(sql); String sql2=update Employees set Address=+jTextField1。getText()+ where EmployeeID=+jTextField。getText();/修改员工信息的SQL语句 DbCo
17、nnection.dbUpdate(sql2); JOptionPane.showMessageDialog(this,地址修改成功!,information”,JOptionPane。INFORMATION_MESSAGE);elseJOptionPane.showMessageDialog(null,该员工不存在,请重新输入!,”警告”,JOptionPane。PLAIN_MESSAGE); catch (Exception e1) e1.printStackTrace();if(jTextField1。getText()=null)JOptionPane.showMessageDialo
18、g(null,新地址不能为空!”,”错误,JOptionPane。PLAIN_MESSAGE);private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(70, 199, 100, 40));jButton。setText(确定);jButton。addActionListener(new java.awt.event。ActionListener() public void actionPerformed(java.awt.event.Act
19、ionEvent e) );return jButton;private JButton getJButton1() if (jButton1 = null) jButton1 = new JButton();jButton1.setBounds(new Rectangle(217, 199, 100, 40));jButton1。setText(”取消);jButton1。addActionListener(new java.awt。event.ActionListener() public void actionPerformed(java.awt。event.ActionEvent e)
20、 dispose();/点击取消按钮,关闭窗口);return jButton1;private JButton getJButton2() if (jButton2 = null) jButton2 = new JButton();jButton2。setBounds(new Rectangle(364, 199, 100, 40));jButton2。setText(”清除”);jButton2。addActionListener(new java.awt。event.ActionListener() public void actionPerformed(java。awt。event.A
21、ctionEvent e) jTextField。setText(”);jTextField1。setText(”);/点击清除按钮,将其置空);return jButton2;4。4查询员工信息此部分包括通过员工号、姓名、部门,查询员工其他信息。在查询信息之前,可以检索数据库检查修改人员是否存在。关键代码如下:/通过员工号查询其他信息public void actionPerformed(ActionEvent e) / TODO Autogenerated method stub String sql=”select from Employees where EmployeeID=+jTe
22、xtField。getText()+”; ResultSet rs=DbConnection。dbQuery(sql); try if(rs.next()) jTextField1。setText(rs.getString(EmployeeID); jTextField2。setText(rs。getString(”Name); jTextField3.setText(rs。getString(Sex”)); jTextField4.setText(rs.getString(WorkYear)); jTextField5。setText(rs。getString(”Education); jT
23、extField6.setText(rs。getString(DepartmentName); jTextField7。setText(rs。getString(”InCome)); jTextField8.setText(rs。getString(Address”); jTextField9.setText(rs。getString(PhoneNumber)); jTextField10.setText(rs.getString(Birthday”); elseJOptionPane.showMessageDialog(null,”本公司无该职工!”,”查找结果, JOptionPane.P
24、LAIN_MESSAGE); catch (Exception e1) e1.printStackTrace();/通过部门名称,查询部门员工信息public void actionPerformed(ActionEvent e) / TODO Autogenerated method stubString DepartmentName=(String) jComboBox.getSelectedItem();String sql=”select * from Employees where DepartmentName=+DepartmentName+”;ResultSet rs=DbCon
25、nection。dbQuery(sql);int i=0; try while(rs。next() ai0=rs。getString(1); ai1=rs。getString(2); ai2=rs.getString(3); ai3=rs。getString(4); ai4=rs。getString(5); ai5=String。valueOf(rs。getInt(6)); ai6=rs。getString(7); ai7=rs.getString(8); ai8=rs。getString(9); ai9=String。valueOf(rs。getFloat(10); ai10=rs。getS
26、tring(11); i+; catch (Exception e1) e1.printStackTrace();private JComboBox getJComboBox() /通过下拉菜单选择部门if (jComboBox = null) jComboBox = new JComboBox();jComboBox。addItem(”经理办公室);jComboBox.addItem(”人力资源部”);jComboBox.addItem(市场部);jComboBox.addItem(研发部”);jComboBox。addItem(财务部);jComboBox.setBounds(new Re
27、ctangle(353, 19, 157, 42));jComboBox.setFont(new Font(”Dialog, Font。BOLD, 18);return jComboBox;4.5删除员工信息此部分包括删除员工全部信息,删除员工地址、学历、电话等信息。由于时间有限,没有设计同时删除多项纪录的操作,是本系统的不足。在删除信息之前,可以检索数据库检查修改人员是否存在。关键代码如下:/删除员工全部信息public void actionPerformed(ActionEvent e) String sql1=select EmployeeID from Employees where
28、 EmployeeID=+jTextField。getText(); ResultSet rs=DbConnection。dbQuery(sql1); try if(rs。next()String sql=”select from Employees where EmployeeID=”+jTextField.getText();DbConnection con=new DbConnection();ResultSet rs2= con。dbQuery(sql);JOptionPane。showMessageDialog(this,”您确定要删除该员工的基本信息吗?”,警告 ,JOptionP
29、ane.QUESTION_MESSAGE);int ok=JOptionPane.showConfirmDialog(this,基本信息将被删除!”,确认 ,JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(e.getSource()=jButtone。getSource()=jTextField)tryif(ok=JOptionPane.YES_OPTION)sql=”Delete from Employees where EmployeeID=+jTextField。getText();con。dbUpdate(s
30、ql);JOptionPane。showMessageDialog(null,”删除成功!”,”提示”,JOptionPane。PLAIN_MESSAGE);catch(Exception e1)e1.printStackTrace();if(ok=JOptionPane.NO_OPTION)delect m=new delect();m。setEnabled(true); elseJOptionPane.showMessageDialog(null,该员工不存在,请重新输入!”,警告”,JOptionPane。PLAIN_MESSAGE); catch (Exception e1) / TO
31、DO Autogenerated catch blocke1.printStackTrace();4.6员工信息排序此部分包括按照员工号、工资顺序对员工信息进行排列,并通过表格的形式将信息显示出来。由于两部分代码相似,下文只给出收入排序关键代码:private JTable getJTable() if (jTable = null) String a=new String3011; String colname=”EmployeeID,Name”,”Education,”Birthday”,”Sex”,”WorkYear”,Address”,”PhoneNumber,DepartmentNa
32、me,”InCome”,Age”; /表头显示信息int i=0;String sql=”select from Employees ORDER BY InCome DESC;ResultSet rs=DbConnection。dbQuery(sql);try while(rs。next() ai0=rs。getString(1); ai1=rs.getString(2); ai2=rs.getString(3);/ ai3=rs。getLong(rs.getDate(4); ai3=rs。getString(4); ai4=rs。getString(5); ai5=rs。getString(
33、6); ai6=rs。getString(7); ai7=rs。getString(8); ai8=rs。getString(9); ai9=String.valueOf(rs。getFloat(10)); ai10=String。valueOf(rs。getInt(11)); i+; catch(SQLException e)e.printStackTrace();finallyDbConnection。close();jTable = new JTable(a,colname);jTable.setShowHorizontalLines(true);jTable.setShowVertic
34、alLines(true);jTable。setBounds(new Rectangle(34, 61, 645, 342));jTable。setShowGrid(true);return jTable;4.7员工信息统计此部分可以统计在用户给出的工资段内的员工人数.关键代码如下:public void actionPerformed(ActionEvent e) String sql=”select count(InCome) from Employees where InCome =”+jTextField。getText()+” and InCome=”+jTextField1。get
35、Text()+; ResultSet rs=DbConnection。dbQuery(sql); try while(rs。next()) jTextField2。setText(rs.getString(1); catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace();4.8注销此部分可以注销登录,并关闭系统。关键代码如下:private JMenuItem getJMenuItem17() if (jMenuItem17 = null) jMenuItem17 = new JMenuItem();j
36、MenuItem17。setText(”注销);jMenuItem17.addActionListener(new java.awt.event。ActionListener() public void actionPerformed(java。awt.event.ActionEvent e) int n=JOptionPane。showConfirmDialog(null,是否注销”,确认,JOptionPane.YES_NO_CANCEL_OPTION);if(n=0)dispose(););return jMenuItem17;五、系统测试5.1系统登录将java文件分别编译生成相应的字节码(class)文件。然后,用java解释器运行主类,输入数据库Manger表内存在的对应username、password,即可登录系统。六、 总结职工信息管理系统在插入图片美化界面的过程中使用简单的插入方法,需使用绝对路径,如果图片更换路径,就无法显示在界面上。在增加、删除、查询功能中,要对存在员工进行查重.从开始的数据库设置主键防止员工号重复到后来想到使用代码查询方式防止重复,中间遇到了很多困难.但通过查阅资料、询问老师和同学得到了基本的解决。系统不够美观,无法实现同时删除、查询多项信息是本系统的不足。21