1、项目目标:对单位的人事情况进行管理,完成新职工的登记、职工信息的维护、调离和退休情况的登记,并能按指定的要求完成查询、统计、排序等功能。项目规模:1000行代码左右初步设想:用Java语言编写一个简单的能达成项目目标的人事档案管理系统可行性研究:如下2 可行性研究2.1 系统流程图图2-1 人事档案管理系统流程图2.2 高层数据流图图2-2 人事档案管理系统数据流图2.3 可行性分析2.3.1 技术可行性要求和目标:本系统要求对单位的人事情况进行管理,完成新职工的登记、职工信息的维护、调离和退休情况的登记,并能按指定的要求完成查询、统计、排序等功能。可能实现的方法:本组准备采用java语言编写
2、程序界面和数据处理部分,使用java链接数据库,用数据库完成人员信息的保存,修改。用SQL语言完成对数据库中的内容进行查询排序等功能。2.3.2 操作可行性本系统采用图形界面,有良好的中文提示和界面提示。能保证用户能够正常使用该系统完成需求的功能。2.3.3 经济可行性本系统为课程设计,不产生经济效益,故暂不考虑经济可行性2.4 开发计划人事档案管理系统的粗略计划阶段要用的时间(天)可行性研究1需求分析3概要设计2详细设计实现总计103 需求分析3.1 ER图图3-1 员工对象ER图3.2 细化的数据流图图3-2 细化的数据流图3.3 数据字典名称:员工信息别名:员工描述:员工的各项基本信息定
3、义:员工信息=员工编号+姓名+所在部门+性别+年龄+工资+是否退休+工龄员工编号=4数字4姓名=1字符4所在部门=1字符10性别=男|女年龄=1数字2工资=1数字10是否退休=是|否工龄=1数字2数字=0|1|2|3|4|5|6|7|8|9位置:员工信息数据库,输出到程序界面 3.4 状态转换图图3-4 人事档案管理系统状态转换图4 概要设计4.1 系统层次图图4-1 系统层次图4.2 IPO表IPO表系统:模块:修改员工信息编号:1.2作者: 任毅日期:2011.7.7被调用:信息维护1.0调用:输入: 员工编号X新员工信息Y输出:新员工信息 处理:IF X存在; THEN 删除编号为X的员
4、工信息; 添加新员工信息Y,该员工编号为X;局部数据元素:注释:图4-2(1) 修改员工信息模块的IPO表显示员工信息2.1信息查询2.0员工信息表显示全部员工信息 图4-2(2) 显示员工信息模块的IPO表4.3 数据库设计此系统中为员工信息涉及一个名为person的数据库,数据库中包含一个名为person的表。Person表含有8个字段,用来保存员工的各项信息。分别为:pID,员工编号 pname,姓名 psex,性别 pdept,所在部门 pwages,工资 pretire,是否退休 pworkyear,工龄表设计如图:图4-3 数据库表设计5 详细设计5.1 人机界面设计图5-1(1)
5、 编辑员工信息模块界面图图5-1(2) 显示员工信息模块界面图5.2 过程设计图5-2(1) 修改员工信息模块的N-S图图5-2(2) 显示员工信息模块的N-S图5.2.1 修改员工信息模块代码import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statem
6、ent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;public class Editperson extends JFrame implements ActionListener * * * private static final long serialVersionUID = 1L; private JLabel LID = new JLabel(员工编号
7、); private JTextField TID = new JTextField(); private JLabel Lname = new JLabel(姓名 private JTextField Tname = new JTextField(); private JLabel Lsex = new JLabel(性别 private JTextField Tsex = new JTextField(); private JLabel Lage = new JLabel(年龄 private JTextField Tage = new JTextField(); private JLab
8、el Ldept = new JLabel(所在部门 private JTextField Tdept = new JTextField(); private JLabel Lwages = new JLabel(工资 private JTextField Twages = new JTextField(); private JLabel Lretire = new JLabel(是否退休 private JTextField Tretire = new JTextField(); private JLabel Lworkyears = new JLabel(工龄 private JTextF
9、ield Tworkyears = new JTextField(); private JButton Bque = new JButton(查询 private JButton Bedi = new JButton(编辑 String sql = ; public Editperson() super(编辑员工信息 this.setSize(); this.setDefaultCloseOperation(HIDE_ON_CLOSE); this.setVisible(true); this.setLayout(new GridLayout(9,2); this.add(LID); this
10、.add(TID); this.add(Lname); this.add(Tname); this.add(Lsex); this.add(Tsex); this.add(Lage); this.add(Tage); this.add(Ldept); this.add(Tdept); this.add(Lwages); this.add(Twages); this.add(Lretire); this.add(Tretire); this.add(Lworkyears); this.add(Tworkyears); this.add(Bque); this.add(Bedi); Bque.ad
11、dActionListener(this); Bedi.addActionListener(this); Override public void actionPerformed(ActionEvent e) TODO Auto-generated method stub if(e.getSource()= Bque) String ID = TID.getText(); sql = SELECT * FROM person WHERE pID = +ID+ try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver catch(ClassNotFoundEx
12、ception a) JOptionPane.showMessageDialog(null, lianjieshibai Connection con; con = DriverManager.getConnection(jdbc:odbc:person1, Statement sta = con.createStatement(); ResultSet rs = sta.executeQuery(sql); if(rs.next() String name = rs.getString(pname String sex = rs.getString(psex String age = rs.
13、getString(page String dept = rs.getString(pdept String wages = rs.getString(pwages String retire = rs.getString(pretire String workyears = rs.getString(pworkyear Tname.setText(name); Tsex.setText(sex); Tage.setText(age); Tdept.setText(dept); Twages.setText(wages); Tretire.setText(retire); Tworkyears
14、.setText(workyears); else JOptionPane.showMessageDialog(null, 失败 catch (Exception ee)JOptionPane.showMessageDialog(null, jfkdalgj; if(e.getSource()=Bedi) String name = Tname.getText(); String sex = Tsex.getText(); String age = Tage.getText(); String dept = Tdept.getText(); String wages = Twages.getT
15、ext(); String retire = Tretire.getText(); String workyears = Tworkyears.getText();delete * from person where pID = int i = sta.executeUpdate(sql); if(i0) sql=INSERT INTO person VALUES (,+name+sex+age+dept+wages+retire+workyears+) sta.executeUpdate(sql);更新成功更新失败 public static void main(String args) n
16、ew Editperson();5.2.2 显示员工信息模块代码import javax.swing.JTextArea;public class Allinfo extends JFrame private JTextArea info = new JTextArea(); public Allinfo()员工信息 this.setLayout(new GridLayout(1,1); this.add(info); sql = select * from person try Class.forName( catch(ClassNotFoundException a) JOptionPan
17、e.showMessageDialog(null, Connection con; con = DriverManager.getConnection( Statement sta = con.createStatement(); ResultSet rs = sta.executeQuery(sql); String text = ID t 姓名 t 性别 t 年龄 t 所在部门 t 工资 t 是否退休 t 工龄 text += n info.append(text); while(rs.next() info.append(rs.getString(pID)+t catch (Except
18、ion ee)JOptionPane.showMessageDialog(null, 6 测试报告6.1 修改员工信息模块设定原数据库中含有如下图的员工信息:图6-1(1) 数据库中原有信息输入一个不存在的员工编号进行查询,显示查询失败:图6-1(2) 输入错误员工号的结果按下图所示修改存在的编号为0003的员工信息:图6-1(3) 修改员工信息观察数据库,修改员工信息成功图6-1(4) 成功修改员工信息6.2 显示员工信息模块能成功显示员工信息图6-2 显示员工信息7 总结本系统基本能够完成需求分析中要求的各项功能,既能够对员工信息进行添加,编辑,、删除操作,能够查看员工信息,能够编号、年龄、工资、工龄四个条件对员工信息进行排序查看。本系统还有很多能够改进之处。比如本系统数据库中只设计了一个表用来存储员工信息,我设想还可以再设计一个部门信息的表,与员工信息表连接。这样做能够更加完善系统结构,使系统更加实用。而且,本系统还可以增加按性别,部门等条件查看员工信息的功能(比如查看开发部的所有员工)。总之,虽然程序还有很多不足。但是经过这次课程设计,我还是有很多收获。在这次课程设计中,我第一次用java进行连接数据库操作,并且第一次设计比较复杂的程序界面。使我对数据库的重要性和易用性有了更深的理解。参考文献1张海藩编著. 软件工程导论(第5版). 北京: 清华大学出版社,2008
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1