1、1课程设计(论文)任务书学 院 理学院 专 业 信息与计算科学学生姓名 班级学号 0809010223课程名称 JAVA程序设计课程设计课程设计(论文)题目 员工信息管理系统设计题目:使用 JAVA语言及 Eclipse开发工具设计并实现员工信息管理系统。设计任务:1、设计一个员工管理系统2、利用图形用户界面实现程序的运行3、实现员工信息的添加、删除、查询、和修改等功能4、应用文件的相关知识来完成计划与进度安排:十七周:周一、周四选题进行程序的设计十八周:周一设计的辅导;周四课程设计检查答辩成绩:指导教师(签字):2010年 7月 8日 专业负责人(签字):2010年 7月 18日主管院长(签
2、字):2010年 7月 19日2摘 要JAVA不仅是一门最为流行的计算机语言,而且已经形成一种专门的技术,带来了 20世纪末和本世纪初网络科技和网络经济超常发展。JAVA 的与平台无关性、高可靠性、安全机制和内嵌网络支持等特性使它成为编写网络应用程序的首选工具之一。从另一方面来看,软件开发的规模也日渐扩大,对软件质量的要求越来越高,与之相对应的是,各种软件技术和工具层出不穷,各种软件开发、软件质量控制、软件管理法方法学业日渐成熟。面对软件发展的这一现状和趋势,无论是拥有计算机基础知识的学生还是 IT领域的起步者,熟练掌握一门语言都是至关重要的。JAVA 是一个面向对象的程序设计软件,它将重点放
3、在数据和对象的接口上,与 C+相比的主要不同在于多继承,在 JAVA中,取而代之的是简单的接口,以及 JAVA的元类模型。这也很大程度上给我们初学编程的人带来很呆的方便,也使我们更容易掌握 JAVA编程的一些基本要领和深层知识。该程序是利用文件来实现的,程序的重要作用是对员工信息进行管理,包括员工信息的添加、查询、修改、删除。通过该课程设计,使同学们进一步理解概 JAVA的基本概念、理论和方法,初步掌握 JDK、Eclipse 的调试和应用,以及程序中错误的解决方法,明确 JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用,练习文件形式在 JAVA程序设计中的应用。关键词:面向对象、软
4、件开发、继承、员工管理3目 录1 设计目的 12 设计问题 13 概要设计 14 详细设计 14.1 定义员工类 14.2 主程序 34.3 实现员工信息的录入 64.4 实现员工信息的修改 114.5 实现员工信息的查询 184.6 实现员工信息的删除 225 设计总结 26参考文献 27致 谢 274员工管理系统一、设计目的通过该课程设计,使同学们进一步理解概 JAVA的基本概念、理论和方法,初步掌握 JDK、Eclipse 的调试和应用,以及程序中错误的解决方法,明确JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用,练习文件形式在 JAVA程序设计中的应用。二、设计问题设计题目
5、:员工管理系统设计要求:(1)完成员工信息的添加、删除、查询、修改功能(2)使用用户界面操作(3)使用文件形式完成设计思路:首先设计界面进入面板,在面板中添加菜单选项,并将要实现的功能选项添加其中,然后对这些选项实施监听,实现其功能。通过文件类型知识的应用,实现对员工信息的管理。三、概要设计面板设计:首先设计一个容器,然后再容器中添加菜单,在菜单中添加选项,并在容器中加入面板,面板布局设置为 CardLayout,最后将面板添加进容器。功能实现:在录入、查询、修改和删除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice
6、为界面中加入相应的组件,并对其进行监听,同时附加了文件流的处理。四、详细设计1、定义员工类:public class Employee implements java.io.SerializableString number,name,discipling,grade,borth,sex;public Employee()public void setNumber(String number)this.number=number;public String getNumber()5return number;public void setName(String name)this.name=n
7、ame;public String getName()return name;public void setDiscipling(String discipling)this.discipling=discipling;public String getDisciping()return discipling;public void setGrade(String grade)this.grade=grade;public String getGrade()return grade;public void setBorth(String borth)this.borth=borth;publi
8、c String getBorth()return borth;public void setSex(String sex)this.sex=sex;public String getSex()return sex;62、主程序:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class EmployeeManager extends JFrame implements ActionListenerEmployeeS
9、ituation 基本信息录入=null; ModifySituation 基本信息修改=null; Inquest 基本信息查询=null; Delete 基本信息删除=null; JMenuBar bar; JMenu fileMenu;JMenuItem 录入,修改,查询,删除; Container con=null;Hashtable 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter;public EmployeeManager()录入=new JMenuItem(“录入
10、员工基本信息“);修改=new JMenuItem(“修改员工基本信息“);查询=new JMenuItem(“查询员工基本信息“);删除=new JMenuItem(“删除员工基本信息“);bar=new JMenuBar();fileMenu=new JMenu(“菜单选项“);fileMenu.add(录入);fileMenu.add(修改);fileMenu.add(查询);fileMenu.add(删除);bar.add(fileMenu);setJMenuBar(bar);label=new JLabel(“欢迎进入员工信息管理系统“,JLabel.CENTER);label.se
11、tFont(new Font(“SansSerif“,Font.BOLD+Font.ITALIC,25);label.setForeground(Color.red);基本信息=new Hashtable();录入.addActionListener(this);修改.addActionListener(this);查询.addActionListener(this);删除.addActionListener(this);card=new CardLayout();7con=getContentPane();pCenter=new JPanel();pCenter.setLayout(card
12、); pCenter.setBackground(Color.yellow);file=new File(“基本信息.txt“);if(!file.exists()tryFileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out);objectOut.writeObject(基本信息);objectOut.close();out.close();catch(IOException e) 基本信息录入=new EmployeeSituation(fi
13、le);基本信息修改=new ModifySituation(file);基本信息查询=new Inquest(this,file);基本信息删除=new Delete(file);pCenter.add(“欢迎语界面“,label);pCenter.add(“录入界面“,基本信息录入);pCenter.add(“修改界面“,基本信息修改); pCenter.add(“删除界面“,基本信息删除);con.add(pCenter,BorderLayout.CENTER);con.validate();addWindowListener(new WindowAdapter() public voi
14、d windowClosing(WindowEvent e)System.exit(0););setVisible(true);setBounds(100,50,420,380);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=录入)8card.show(pCenter,“录入界面“);else if(e.getSource()=修改)card.show(pCenter,“修改界面“);else if(e.getSource()=查询)基本信息查询.setVisible(true);else if(e.
15、getSource()=删除)card.show(pCenter,“删除界面“);public static void main(String args)new EmployeeManager();93、实现员工信息的录入:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class EmployeeSituation extends JPanel implements ActionListener Hashtable 基本信息表=n
16、ull; JTextField 员工号,姓名,工资; Choice 部门;JRadioButton 男,女;Employee 员工=null;ButtonGroup group=null;JButton 录入,重置;FileInputStream inOne=null;ObjectInputStream inTwo=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null; public EmployeeSituation(File file)this.file=file;员工号=new JT
17、extField(10);10姓名=new JTextField(10);部门=new Choice();部门.add(“请选择“);部门.add(“研发部“);部门.add(“销售部“);部门.add(“人事部“);部门.add(“安全部“);工资=new JTextField(10);group=new ButtonGroup();男=new JRadioButton(“男“,true);女=new JRadioButton(“女“,false);group.add(男);group.add(女);录入=new JButton(“录入“);重置=new JButton(“重置“);录入.a
18、ddActionListener(this);重置.addActionListener(this);Box box1=Box.createHorizontalBox(); box1.add(new JLabel(“员工号:“,JLabel.CENTER);box1.add(员工号);Box box2=Box.createHorizontalBox(); box2.add(new JLabel(“姓名:“,JLabel.CENTER);box2.add(姓名);Box box3=Box.createHorizontalBox(); box3.add(new JLabel(“性别:“,JLabel
19、.CENTER);box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox(); box4.add(new JLabel(“部门:“,JLabel.CENTER);box4.add(部门);Box box6=Box.createHorizontalBox();box6.add(new JLabel(“ “,JLabel.CENTER);Box box5=Box.createHorizontalBox(); box5.add(new JLabel(“工资:“,JLabel.CENTER);box5.add(工资);Box boxH=Box.
20、createVerticalBox(); boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue(); JPanel pCenter=new JPanel();11pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout();add(pCenter,BorderLayout.CENTER);JPanel p
21、South=new JPanel();pSouth.add(录入);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=录入)String number=“;number=员工号.getText();if(number.length()0)try inOne=new FileInputStream(file);inTwo=new ObjectInp
22、utStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();catch(Exception ee)if(基本信息表.containsKey(number) String warning=“该员工基本信息已存在,请到修改页面修改!“; JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);else String m=“基本信息将被录入!“;int ok=JOptionPane.showConfirm
23、Dialog(this,m,“确认“,JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);if(ok=JOptionPane.YES_OPTION)12String name=姓名.getText();String discipling=部门.getSelectedItem();String grade=工资.getText();String sex=null;if(男.isSelected()sex=男.getText();elsesex=女.getText();员工=new Employee();员工.setNumber(n
24、umber);员工.setName(name);员工.setDiscipling(discipling);员工.setGrade(grade);员工.setSex(sex);tryoutOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,员工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();员工号.setText(null);姓名.setText(null); 工资.setText(null);catch(Ex
25、ception ee) System.out.println(ee);else String warning=“必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE); if(e.getSource()=重置) 员工号.setText(null);姓名.setText(null);13部门.remove(部门.getSelectedIndex();工资.setText(null);144、实现员工信息的修改:import java.awt.*;import java.awt.
26、event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ModifySituation extends JPanel implements ActionListener Hashtable 基本信息表=null; JTextField 员工号,姓名,工资; Choice 部门;JRadioButton 男,女;ButtonGroup group=null;JButton 开始修改,录入修改,重置;FileInputStream inOne=null;ObjectInputStream inTwo
27、=null;FileOutputStream outOne=null;ObjectOutputStream outTwo=null;File file=null; 15public ModifySituation(File file)this.file=file;员工号=new JTextField(10);姓名=new JTextField(10); 部门=new Choice();部门.add(“请选择“);部门.add(“研发部“);部门.add(“销售部“);部门.add(“人事部“);部门.add(“安全部“);工资=new JTextField(10);group=new Butt
28、onGroup();男=new JRadioButton(“男“,true);女=new JRadioButton(“女“,false);group.add(男);group.add(女);开始修改=new JButton(“开始修改“);录入修改=new JButton(“录入修改“);录入修改.setEnabled(false);重置=new JButton(“重置“);员工号.addActionListener(this);开始修改.addActionListener(this);录入修改.addActionListener(this);重置.addActionListener(this
29、);Box box1=Box.createHorizontalBox(); box1.add(new JLabel(“输入要修改信息的员工号:“,JLabel.CENTER);box1.add(员工号);box1.add(开始修改);Box box2=Box.createHorizontalBox(); box2.add(new JLabel(“姓名:“,JLabel.CENTER);box2.add(姓名);Box box3=Box.createHorizontalBox(); box3.add(new JLabel(“性别:“,JLabel.CENTER);box3.add(男);box3
30、.add(女);Box box4=Box.createHorizontalBox(); box4.add(new JLabel(“部门:“,JLabel.CENTER);box4.add(部门);Box box6=Box.createHorizontalBox(); box6.add(new JLabel(“ “,JLabel.CENTER);Box box5=Box.createHorizontalBox(); box5.add(new JLabel(“工资:“,JLabel.CENTER);box5.add(工资);16Box boxH=Box.createVerticalBox(); b
31、oxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box6);boxH.add(box4);boxH.add(Box.createVerticalGlue(); JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.yellow);setLayout(new BorderLayout();add(pCenter,BorderLayout.CENTER);JPanel pSouth=new JPanel();pSout
32、h.add(录入修改);pSouth.add(重置);pSouth.setBackground(Color.yellow);add(pSouth,BorderLayout.SOUTH);validate();public void actionPerformed(ActionEvent e) if(e.getSource()=开始修改|e.getSource()=员工号)String number=“;number=员工号.getText();if(number.length()0)try inOne=new FileInputStream(file);inTwo=new ObjectInpu
33、tStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();catch(Exception ee)if(基本信息表.containsKey(number) 录入修改.setEnabled(true);Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName();部门.getSelectedItem();17工资.setText(stu.getGrade();if(stu.getSex().equals(“男“)男.setSele
34、cted(true);else女.setSelected(true); else 录入修改.setEnabled(false);String warning=“该员工号不存在!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);员工号.setText(null);姓名.setText(null); 部门.remove(部门.getSelectedItem();工资.setText(null);else 录入修改.setEnabled(false); String warning=“必须要输
35、入员工号!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);员工号.setText(null);姓名.setText(null); 部门.remove(部门.getSelectedItem();工资.setText(null); else if(e.getSource()=录入修改) String number=“;number=员工号.getText();if(number.length()0)try inOne=new FileInputStream(file);inTwo=new
36、ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();18inOne.close();inTwo.close(); catch(Exception ee)if(基本信息表.containsKey(number) String question=“该员工基本信息已存在,您想修改他(她)的基本信息吗?“;JOptionPane.showMessageDialog(this,question,“警告“,JOptionPane.QUESTION_MESSAGE);String m=“基本信息将被修改!“;int ok=JOptionP
37、ane.showConfirmDialog(this,m,“确认“,JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);if(ok=JOptionPane.YES_OPTION)String name=姓名.getText();String discipling=部门.getSelectedItem();String grade=工资.getText();String sex=null;if(男.isSelected()sex=男.getText();elsesex=女.getText();Employee 员工=new Emp
38、loyee();员工.setNumber(number);员工.setName(name);员工.setDiscipling(discipling);员工.setGrade(grade);员工.setSex(sex);tryoutOne=new FileOutputStream(file);outTwo=new ObjectOutputStream(outOne);基本信息表.put(number,员工);outTwo.writeObject(基本信息表);outTwo.close();outOne.close();19员工号.setText(null);姓名.setText(null); 部
39、门.remove(部门.getSelectedItem();工资.setText(null);catch(Exception ee) System.out.println(ee);录入修改.setEnabled(false); else if(ok=JOptionPane.NO_OPTION)录入修改.setEnabled(true);elseString warning=“该员工号没有基本信息,不能修改!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);录入修改.setEnabled(
40、false); elseString warning=“必须要输入员工号!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);录入修改.setEnabled(false);if(e.getSource()=重置) 员工号.setText(null);姓名.setText(null);部门.remove(部门.getSelectedItem();工资.setText(null);20215、实现员工信息的查询:import java.awt.*;import java.awt.event.*
41、;import javax.swing.*;import java.io.*;import java.util.*;public class Inquest extends JDialog implements ActionListener Hashtable 基本信息表=null; JTextField 员工号,姓名,部门,工资; JRadioButton 男,女;JButton 查询;ButtonGroup group=null;FileInputStream inOne=null;ObjectInputStream inTwo=null;File file=null; public In
42、quest(JFrame f,File file)super(f,“查询对话框“,false); this.file=file;员工号=new JTextField(10);查询=new JButton(“查询“);员工号.addActionListener(this);22查询.addActionListener(this);姓名=new JTextField(10);姓名.setEditable(false);部门=new JTextField(10);部门.setEditable(false);工资=new JTextField(10);工资.setEditable(false);男=n
43、ew JRadioButton(“男“,false);女=new JRadioButton(“女“,false);group=new ButtonGroup();group.add(男);group.add(女);Box box1=Box.createHorizontalBox(); box1.add(new JLabel(“输入要查询的员工号:“,JLabel.CENTER);box1.add(员工号);box1.add(查询);Box box2=Box.createHorizontalBox(); box2.add(new JLabel(“姓名:“,JLabel.CENTER);box2.
44、add(姓名);Box box3=Box.createHorizontalBox(); box3.add(new JLabel(“性别:“,JLabel.CENTER);box3.add(男);box3.add(女);Box box4=Box.createHorizontalBox(); box4.add(new JLabel(“部门:“,JLabel.CENTER);box4.add(部门);Box box5=Box.createHorizontalBox(); box5.add(new JLabel(“工资:“,JLabel.CENTER);box5.add(工资);Box boxH=Bo
45、x.createVerticalBox(); boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box5);boxH.add(box4);boxH.add(Box.createVerticalGlue(); JPanel pCenter=new JPanel();pCenter.add(boxH);pCenter.setBackground(Color.green);Container con=getContentPane();con.add(pCenter,BorderLayout.CENTER);con.validate();set
46、Visible(false);setBounds(100,200,360,270);23addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)setVisible(false); );public void actionPerformed(ActionEvent e) 姓名.setText(null);部门.setText(null);工资.setText(null);if(e.getSource()=查询|e.getSource()=员工号)String number=“;number=员工号
47、.getText();if(number.length()0)try inOne=new FileInputStream(file);inTwo=new ObjectInputStream(inOne);基本信息表=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();catch(Exception ee)if(基本信息表.containsKey(number) Employee stu=(Employee)基本信息表.get(number);姓名.setText(stu.getName();部门.setText(stu.getDisciping();工资.setText(stu.getGrade();if(stu.getSex().equals(“男“)男.setSelected(true);else女.setSelected(true); else 24String warning=“该员工号不存在!“;JOptionPane.showMessageDialog(this,warning,“警告“,JOptionPane.WARNING_MESSAGE);else String warning=“必须要输入员工号!“;JOptionPane.showMes