《员工管理系统Java课程设计(共21页).doc》由会员分享,可在线阅读,更多相关《员工管理系统Java课程设计(共21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课程设计(论文)任务书学院*学院专 业*学生姓名班级学号*课程名称Java语言程序设计课程设计(论文)题目员工信息管理系统设计目的:1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中的团队合作精神、创新意识及能力。设计要求(技术参数):1)对系统进行需求分析及可行性分析系统实现的目的,项目开发的背景,系统要达到的目标,开发系统所用的开发环境,预期使用的用户
2、等。2)对系统进行总体设计分析系统的功能结构模块,并给出系统的功能结构图,设计要符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理。3)详细设计 设计所需的数据表,给出所需数据表的字段名称,数据类型,字符长度,字段说明,约束条件。编码实现每个子功能模块,并进行测试。计划与进度安排:周一 全天:设计解决问题方法 周四14节:调试程序周一 全天:调试程序 周四14节:完成论文,答辩成绩:指导教师(签字): 年月日 专业负责人(签字):年月日主管院长(签字): 年月日摘要Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具。随着目前公
3、司规模的渐渐扩大,员工管理将成为意见不得不总是的问题。有些公司人员流动较大,而且人数动辄上百人,若采用传统的方式进行管理,不仅易出错更是一件令人痛疼的事。随着计算机的诞生,在此领域产生众多的信息管理系统来管理信息,不仅信息处理方便,而且简单强大。本系统正事其中的一项,针对员工信息管理,方便公司对员工的信息进行处理,极大减少了人事管理的工作量。另一方面,本系统中所涉及到图形用户界面设计是我们学习程序设计这门课的难点兼重点,通过审计本系统不仅巩固了我们的基础,以及程序设计能力,还锻炼了我们对程序设计的流程及大体上的把握不仅如此,在设计过程中,我们的调试能力也得到增强。使我们对设计“大程序”有了经验
4、。目前,无论是机关、事业单位、还是企业单位,员工管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而员工管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助.在现代化的企业管理中,员工管理系统有着十分重要的作用!关键词:文件和流 界面设计GUI 异常处理 Hashtable类目 录一、设计目的随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。为了适应时代的发展,本次课程设计的主要任务是设计一个学生员工系统并完成一些基本操作。其目的是:(1)提高员工信息管理的运作效率,通过对雇员全面的信息采
5、集和处理;(2)运用已学的java知识编一些简单使用的程序,使我们初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术;(3)由计算机来代替人工执行一系列诸如增加新员工、删除、修改、查询、显示等操作。这样就使管理人员轻松快捷的完成员工信息的管理工作。二、设计问题2.1 课设问题:员工管理系统要求完成:(1)完成员工的添加、删除、查询、修改功能(2)使用界面操作(3)使用文件完成2.2 设计思路:首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对员工信息的添加、删除、查询、修改功能。三、概要设计3.1 程序功能模块设计的实现本段代码中主要的类有Employ
6、eeManager和ActionEvent,设置了监听接口由ActionEvent类来实现,并且用if语句来为变量服务。后面设置了一个异常处理,使用try和catch来捕获异常。使用GUI技术实现员工的图形界面。3.2 系统总体结构系统总体结构员工信息管理系统信息添加信息查询信息修改信息删除信息显示3.3 员工信息面板功能的实现 首先构造两个面板(JPanel),分别为界面以及显示,并将其加入到容器中.主界面显示界面3.4 员工界面功能模块设计的实现录入:提示员工信息是否被录入,选择是(Y),则员工信息录入到文件中查询:在主界面中输入员工号,点击查找,若员工信息不存在则显示如图若文本文件中存在
7、所要查找的员工信息(例如工号0801),则在主界面中显示该员工信息(员工号、姓名和性别) 删除:在主界面中输入员工号,点击删除按钮,弹出对话框,选择是(Y)程序将删除词员工的所有信息。四、详细设计4.1 定义程序变量 自定义employee类,其中定义number,name,sex三个变量,分别包含setNumber 、getNumber 、setName 、getName、 setSex 、getSex方法。class employee implements java.io.Serializable String number,name,sex; public employee(); pub
8、lic void setNumber(String number) this.number=number; public String getNumber() return number; public void setName(String name) this.name=name; public String getName() return name; public void setSex(String sex) this.sex=sex; Public String getSex () return sex; 4.2 程序面板设计定义EmployeeManager类继承JFrame,使
9、用JLabel、JTextField、JRadioBUtton、ButtonGroup、JButton等类构造各组件,使用。使用Hashtable类创建散列表对象“员工表”存放employee对象,每个employee对象用该对象的学号作为关键字。使用exists()方法判断文本文件是否存在。若存在则进行数据的写入操作。使用addActionListener()方法对JButton进行注册监听。GridLayout布局管理器对面板进行设计如下所示。public class EmployeeManager extends JFrame JLabel lb=new JLabel(录入请先输入记录,
10、查询、删除请先输入工号,修改是对查询 + 内容改后的保存!); JTextField 工号,姓名; JRadioButton 男,女; ButtonGroup group=null; JButton 录入,查询,删除,修改,显示; JPanel a,b,c,d,f; employee 员工=null; Hashtable 员工表=null; File file=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTw
11、o=null;public employee 工人; public EmployeeManager() super(沈阳理工员工基本信息管理系统); 工号=new JTextField(10); 姓名=new JTextField(10); group=new ButtonGroup(); 男=new JRadioButton(男,true); 女=new JRadioButton(女,false); group.add(男); group.add(女); 录入=new JButton(录入); 查询=new JButton(查询); 删除=new JButton(删除); 修改=new JB
12、utton(修改); 显示=new JButton(显示); 录入.addActionListener(new LRAct(); 查询.addActionListener(new CXAct(); 修改.addActionListener(new XGAct(); 删除.addActionListener(new SCAct(); 显示.addActionListener(new XSAct(); 修改.setEnabled(false); a=new JPanel(); a.add(new JLabel(工号:,JLabel.CENTER); a.add(工号); b=new JPanel(
13、); b.add(new JLabel(姓名:,JLabel.CENTER); b.add(姓名); c=new JPanel(); c.add(new JLabel(性别:,JLabel.CENTER); c.add(男); c.add(女); d=new JPanel(); d.setLayout(new GridLayout(6,1); d.add(a); d.add(b); d.add(c); f=new JPanel(); f.add(录入); f.add(查询); f.add(修改); f.add(删除); f.add(显示); file=new File(员工信息.txt); H
14、ashtable 员工表=new Hashtable(); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(员工表); objectOut.close(); out.close(); catch(IOException e) Container con=getContentPane(); con.setLayout(new BorderLayo
15、ut(); con.add(lb, BorderLayout.NORTH); con.add(d, BorderLayout.CENTER); con.add(f, BorderLayout.SOUTH); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200,200,600,300); setVisible(true); 4.3 录入员工信息 以员工的员工号作为关键字,调用ObjectInputStream(new FileInputStream ()中的readObject()方法读取文本文件中的数据。使用员工表.containsKe
16、y(number)对关键字进行检测,如果数据中包含该员工号,则弹出对话框提示该员工信息已存在,请到修改页面进行信息的修改,如果数据中不包含该关键字,则弹出确认对话框,点击确定,程序调用put()方法写入信息到散列表中。调用writeObject()方法将散列表写入文本文件中。如果程序在获取员工号时为空时,提示用户输入员工号。用try,catch对异常进行处理。以下为具体代码: class LRAct implements ActionListener public void actionPerformed(ActionEvent e) 修改.setEnabled(false);/功能尚未实现
17、String number=; number=工号.getText(); if(number.length()0) try inTwo=new ObjectInputStream(new FileInputStream(file); 员工表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee)System.out.println(创建表出现问题!); if(员工表.containsKey(number) String warning=该员工信息已存在,请到修改页面修改!; JOption
18、Pane.showMessageDialog(null,warning,警告, JOptionPane.WARNING_MESSAGE); else String m=确定该员工被录入?; int ok=JOptionPane.showConfirmDialog(null,m,确认, JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String sex=null; if(男.isSelected()sex=男.g
19、etText(); elsesex=女.getText(); 员工=new employee(); 员工.setNumber(number); 员工.setName(name); 员工.setSex(sex); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 员工表.put(number,员工); outTwo.writeObject(员工表); outTwo.close(); outOne.close(); catch(Exception ee)System.out.println(输
20、出出现问题!); 工号.setText(null); 姓名.setText(null); else String warning=必须输入工号!; JOptionPane.showMessageDialog(null,warning, 警告,JOptionPane.WARNING_MESSAGE); 4.4 查询员工信息构造CXAct类实现ActionListener接口,对事件监听。在该类中以员工的员工号作为关键字,调用ObjectInputStream(new FileInputStream ()中的readObject()方法读取文本文件中的数据。使用员工表.containsKey(nu
21、mber)对关键字进行检测,如果文本框中的员工号和文本文件中的数据相同,程序调用setText()方法把散列表中的员工信息显示在文本框中,如果文本框中的员工号和文本文件中的数据不相同,则程序调用JOptionPane.showMessageDialog()方法提示该员工信息不存在。如果程序获取到员工号文本框中的内容为空,则提示用户输入员工号。以下程序实现为代码: class CXAct implements ActionListener public void actionPerformed(ActionEvent e) String number=; number=工号.getText();
22、 if(number.length()0) try inOne=new FileInputStream(file); inTwo=new ObjectInputStream(inOne); 员工表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee)System.out.println(员工表有问题!); if(员工表.containsKey(number) 修改.setEnabled(true); employee stu=(employee)员工表.get(number); 姓名.s
23、etText(stu.getName(); if(stu.getSex().equals(男)男.setSelected(true); else女.setSelected(true); else 修改.setEnabled(false); String warning=该员工不存在!; JOptionPane.showMessageDialog(null,warning, 警告,JOptionPane.WARNING_MESSAGE); else 修改.setEnabled(false); String warning=必须输入工号!; JOptionPane.showMessageDialo
24、g(null,warning, 警告,JOptionPane.WARNING_MESSAGE); class XGAct implements ActionListener public void actionPerformed(ActionEvent e) String number=工号.getText(); String name=姓名.getText(); String sex=null; if(男.isSelected()sex=男.getText(); elsesex=女.getText(); employee 员工=new employee(); 员工.setNumber(num
25、ber); 员工.setName(name); 员工.setSex(sex); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 员工表.put(number,员工); outTwo.writeObject(员工表); outTwo.close(); outOne.close(); 工号.setText(null); 姓名.setText(null); catch(Exception ee) System.out.println(录入修改出现异常!); 修改.setEnabled(fals
26、e); class SCAct implements ActionListener public void actionPerformed(ActionEvent e) 修改.setEnabled(false); String number=工号.getText(); if(number.length()0) try inTwo=new ObjectInputStream(new FileInputStream(file); 员工表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee)
27、if(员工表.containsKey(number) employee stu=(employee)员工表.get(number); 姓名.setText(stu.getName(); if(stu.getSex().equals(男)男.setSelected(true); else女.setSelected(true); String m=确定要删除该员工的记录吗?; int ok=JOptionPane.showConfirmDialog(null,m,确认, JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=J
28、OptionPane.YES_OPTION) 员工表.remove(number); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); outTwo.writeObject(员工表); outTwo.close(); outOne.close(); 工号.setText(null); 姓名.setText(null); catch(Exception ee)System.out.println(ee); else if(ok=JOptionPane.NO_OPTION) 工号.setTex
29、t(null); 姓名.setText(null); else String warning=该号不存在!; JOptionPane.showMessageDialog(null,warning, 警告,JOptionPane.WARNING_MESSAGE); else String warning=必须输入工号!; JOptionPane.showMessageDialog(null,warning, 警告,JOptionPane.WARNING_MESSAGE); 4.5 修改员工信息和添加员工信息方法类似,定义number、name、sex三个局部变量,并使用getText()方法初始
30、化变量。调用isSelected()方法设置单选按钮。创建employee类型的“员工”局部变量,调用Hastable类中的put()方法将要修改的员工信息写入到散列表“员工表” 中。调用ObjectInputStream(new FileInputStream ()中的writeObject()把散列表中的数据信息写入到文本文件中。使用trycatch来捕获异常,并进行处理。以下是程序实现修改功能的代码:class XGAct implements ActionListener public void actionPerformed(ActionEvent e) String number=
31、工号.getText(); String name=姓名.getText(); String sex=null; if(男.isSelected()sex=男.getText(); elsesex=女.getText(); employee 员工=new employee(); 员工.setNumber(number); 员工.setName(name); 员工.setSex(sex); try outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 员工表.put(number,员工); outTwo
32、.writeObject(员工表); outTwo.close(); outOne.close(); 工号.setText(null); 姓名.setText(null); catch(Exception ee) System.out.println(录入修改出现异常!); 修改.setEnabled(false); 4.6 删除员工信息构造SCAct类实现ActionListener接口,在该类中也是以员工信息中的员工号作为关键字,调用ObjectInputStream(new FileInputStream ()中的readObject()方法读取文本文件中的数据。使用员工表.contai
33、nsKey(number)对关键字进行检测,如果文本框中的员工号和文本文件中的数据相同,程序调用remove()方法把散列表中的该项员工的信息删除,如果文本框中的员工号和文本文件中的数据不相同,则程序调用JOptionPane.showMessageDialog()方法提示该员工信息不存在。如果程序获取到员工号文本框中的内容为空,则提示用户输入员工号。以下程序实现为代码:class SCAct implements ActionListener public void actionPerformed(ActionEvent e) 修改.setEnabled(false); String number=工号.getText(); if(number.length()0) try inTwo=new ObjectInputStream(new FileInputStream(file); 员工表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(员工表.containsKey(number) employee stu=(employee)员工表.get(number); 姓名.setText(stu.getName(); if(stu.get