版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计(论文)任务书 学院 *学院 专业 * 学生姓名 班级学号 * 课程名称 Java语言程序设计 课程设计(论文)题目 员工信息管理系统 设计目的: 1)复习、巩固Java语言的基础知识, 2 )课程设计为学生提供了一个既动手又 理论知识和实际有机的结合起来, 锻炼 学生适应实际,实践编程的能力; 3)培养学生在项目开发中的团队合作精 设计要求(技术参数): 1)对系统进行需求分析及可行性分析 系统实现的目的,项目开发的背景, 开发环境,预期使用的用户等。 2)对系统进行总体设计 分析系统的功能结构模块,并给出系 求,实现相应功能;可以加以其他功 3)详细设计 设计所需的数据表,给出所需
2、数据表 字段说明,约束条件。编码实现每个- 计划与进度安排: 周一全天:设计解决问题方法 周 周一全天:调试程序周 进一步加深对 Java语言的理解和掌握; 动脑,独立实践的机会,将课本上的 K学生的分析解决实际问题的能力。 提高 神、创新意识及能力。 系统要达到的目标,开发系统所用的 统的功能结构图,设计要符合课题要 能或修饰,使程序更加完善、合理。 的字段名称,数据类型,字符长度, 子功能模块,并进行测试。 四14节:调试程序 四14节:完成论文,答辩 成绩: 指导教师(签字): 年月日 专业负责人(签字): 年月日 主管院长(签字): 年月日 摘要 Java 语言是当前最为流行的程序设计
3、语言之一,诸多优秀的的特性使其成 为被业界广泛认可和采用的工具。 随着目前公司规模的渐渐扩大, 员工管理将成为意见不得不总是的问题。 有 些公司人员流动较大,而且人数动辄上百人, ,若采用传统的方式进行管理,不 仅易出错更是一件令人痛疼的事。 随着计算机的诞生, 在此领域产生众多的信息 管理系统来管理信息, 不仅信息处理方便, 而且简单强大。 本系统正事其中的一 项,针对员工信息管理, 方便公司对员工的信息进行处理, 极大减少了人事管理 的工作量。另一方面,本系统中所涉及到图形用户界面设计是我们学习程序设计 这门课的难点兼重点, 通过审计本系统不仅巩固了我们的基础, 以及程序设计能 力,还锻炼
4、了我们对程序设计的流程及大体上的把握不仅如此,在设计过程中, 我们的调试能力也得到增强。使我们对设计“大程序”有了经验。目前,无论是 机关、事业单位、还是企业单位, 员工管理对于组织生存与长远发展所具备的重 要性都已经有了明确的认识,而员工管理水平的提升不仅需要高素质的管理人 员,而且也需要信息化工具进行辅助 . 在现代化的企业管理中,员工管理系统有 着十分重要的作用 ! 关键词: 文件和流 界面设计 GUI 异常处理 Hashtable 类 目录 一、设计目的 错误!未定义书签 、设计问题 错误!未定义书签 四、详细设计 错误!未定义书签。 错误!未定义书签 错误!未定义书签 错误!未定义书
5、签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签。 六、参考文献 错误!未定义书签 2.1 课设问题 错误!未定义书签。 2.2 设计思路 错误!未定义书签。 三、概要设计 6 3.1 程序功能模块设计的实现 错误!未定义书签。 3.2 系统总体结构 错误!未定义书签。 3.3 员工信息面板功能的实现 错误!未定义书签。 3.4 员工界面功能模块设计的实现 错误!未定义书签。 4.1 定义程序变量 4.2 程序面板设计 4.3 录入员工信息 4.4 查询员工信息 4.5 修改员工信息 4.6 删除员工信息 4.7 显示员工信息 五、设计总结 、设计目
6、的 随着现代社会的快速发展, 我们已进入信息化时代, 管理系统在人们的生活 中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面。为了适应 时代的发展,本次课程设计的主要任务是设计一个学生员工系统并完成一些基本 操作。其目的是: (1)提高员工信息管理的运作效率,通过对雇员全面的信息采集和处理; (2)运用已学的 java 知识编一些简单使用的程序,使我们初步具备综合运用所 学 Java 语言基础知识,面向对象程序设计的基本思想、方法与技术; (3)由计算机来代替人工执行一系列诸如增加新员工、删除、修改、查询、显 示等操作。这样就使管理人员轻松快捷的完成员工信息的管理工作。 二、设计问
7、题 2.1 课设问题: 员工管理系统 要求完成: ( 1) 完成员工的添加、删除、查询、修改功能 ( 2) 使用界面操作 ( 3) 使用文件完成 2.2 设计思路:首先设计面板,然后往面板里添加组件,点击各个组件来实现 要求的对员工信息的添加、删除、查询、修改功能。 三、概要设计 3.1 程序功能模块设计的实现 本段代码中主要的类有 EmployeeManager和ActionEvent,设置了监听接口 由 ActionEvent 类来实现,并且用 if 语句来为变量服务。后面设置了一个异常处 理,使用try和catch来捕获异常。使用GUI技术实现员工的图形界面。 3.2 系统总体结构 系统
8、总体结构 3.3 员工信息面板功能的实现 首先构造两个面板(JPanel ),分别为界面以及显示,并将其加入到容器中 主界面 显示界面 3.4 录入:提示员工信息是否被录入,选择是(丫),则员工信息录入到文件中 查询:在主界面中输入员工号,点击查找,若员工信息不存在则显示如图 若文本文件中存在所要查找的员工信息(例如工号 0801),则在主界面中显示该 员工信息(员工号、姓名和性别) 性别:男O女 删除:在主界面中输入员工号,点击删除按钮,弹出对话框,选择是(丫)程序将 删除词员工的所有信息。 四、详细设计 4.1定义程序变量 自定义 employee 类,其 中定义 number,name,
9、sex 三个变量,分别包含 setNumber、getNumber、setName、getName setSex 、getSex 方法。 class employeeimpleme ntsjava.io.Serializable Stri ng number , name, sex ; public employee(); public void setNumber(Stri ng nu mber) this . number =number; public Stri ng getNumber()return number ; public void setName(Stri ng n ame
10、) this . name=name; public Stri ng getName()return n ame; public void setSex(Stri ng sex) this . sex =sex; Public String getSex ()return sex ; 4.2 程序面板设计 定义 EmployeeManager类继承 JFrame,使用 JLabel、JTextField、JRadioBUtton、 Butt on Group、JButton等类构造各组件,使用。使用Hashtable类创建散列表 对象“员工表”存放employee对象,每个employee对象
11、用该对象的学号作为关 键字。使用exists()方法判断文本文件是否存在。若存在则进行数据的写入操 作。使用addActionListener() 方法对JButton进行注册监听。GridLayout布局 管理器对面板进行设计如下所示。 public class EmployeeMa nagerexte ndsJFrame JLabel lb =new JLabel(录入请先输入记录,查询、删除请先输入工 号,修改是对查询+ 内容改后的保存!); JRadioButton男, 女 ; ButtonGroupgroup =null ; JButton录入, 查询, 删除 , 修改, 显示; J
12、Panel a, b, c, d, f ; employee员工 =null ; Hashtable 员工表 =null File file =null FileInputStream ObjectInputStream FileOutputStream ObjectOutputStream public employee inOne =null ; inTwo =null ; outOne =null ; outTwo =null 工人; public EmployeeManager() super ( 沈阳理工员工基本信息管理系统 ); 工号 =new JTextField(10); 姓名
13、 =new JTextField(10); group =new ButtonGroup(); 男 =new JRadioButton( 女 =new JRadioButton( group .add( 男); group .add( 女); 录入 =new JButton( 查询 =new JButton( 删除 =new JButton( 修改 =new JButton( 显示 =new JButton( 男 ,true ); 女 , false ); 录入 ); 查询 ); 删除 ); 修改 ); 显示 ); 录入 .addActionListener( new LRAct(); 查询
14、.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(); b.add( new JLabel( 姓名 : ,JLabel. CENTER); b.add
15、( 姓名 ); 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); Hashtable员工表=
16、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=getC onten tPa ne(); con. setLayout( new BorderLayout
17、(); NORTH; CENTER); SOUTH; EXIT_ON_CLOSE); con.add(lb, BorderLayout. con. add(d,BorderLayout. con.add(f ,BorderLayout. setDefaultCloseOperati on( setBou nds(200,200,600,300); setVisible(true ); 4.3 录入员工信息 以员工的员工号作为关键字,调用 ObjectI nputStream( new FileInputStream ()中的readObject()方法读取文本文件中的数据。使用员工 表.con
18、tainsKey(number)对关键字进行检测,如果数据中包含该员工号,则弹出 对话框提示该员工信息已存在,请到修改页面进行信息的修改,如果数据中不包 含该关键字,则弹出确认对话框,点击确定,程序调用put()方法写入信息到散 列表中。调用writeObject()方法将散列表写入文本文件中。如果程序在获取员 工号时为空时,提示用户输入员工号。用try,catch对异常进行处理。以下为 具体代码: class LRActimpleme ntsActio nListe ner public void action Performed(Acti on Eve nt e) 修改.setEnable
19、d(false ); /功能尚未实现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= 该员工信息已存在,请到修改页面修 II 小 II 警
20、告 改!; JOptionPane. showMessageDialog ( null ,warning, JOptionPane. WARNING_MESSAG)E; 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=
21、null ; if (男.isSelected()sex=男.getText(); else sex= 女.getText(); 员工 =new employee(); 员工.setNumber( nu mber); 员工.setName( name); 员工 .setSex(sex); try outOne =new FileOutputStream( file ); outTwo =new ObjectOutputStream( outOne ); 员工表 .put(number,员工); outTwo .writeObject( 员工表 ); outTwo .close(); outOn
22、e .close(); catch (Exception ee)System. out .println( 输出出现问题! ); 工号.setText(n ull ); 姓名.setText(null ); else String warning=必须输入工号! ; JOptionPane.showMessageDialog ( null ,warning, 警告 ,JOptionPane.WARNING_MESSAG)E; 4.4 查询员工信息 构造CXAct类实现ActionListener接口,对事件监听。在该类中以员工的员工 号 作 为 关 键 字 , 调 用 ObjectInputS
23、tream(new FileInputStream () 中 的 readObject() 方法读取文本文件中的数据。使用员工表 .containsKey(number) 对关键字进行检测, 如果文本框中的员工号和文本文件中的数据相同, 程序调用 setText() 方法把散列表中的员工信息显示在文本框中,如果文本框中的员工号 和文本文件中的数据不相同, 则程序调用 JOptionPane.showMessageDialog() 方 法提示该员工信息不存在。 如果程序获取到员工号文本框中的内容为空, 则提示 用户输入员工号。以下程序实现为代码: class CXAct implements A
24、ctionListener public void actionPerformed(ActionEvent e) String number= ; number= 工号 .getText(); 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
25、.println( 员工表 有问题! ); if ( 员工表 .containsKey(number) 修改 .setEnabled(true ); employee stu=(employee)员工表 .get(number); 姓名.setText(stu.getName(); if (stu.getSex().equals( 男 )男.setSelected( true ); else 女.setSelected( true ); else 修改 .setEnabled( false ); String warning= 该员工不存在! II JOptionPane. showMessa
26、geDialog ( null ,warning, 警告 ,JOptionPane.WARNING_MESSAG)E; else 修改 .setEnabled(false ); String warning= 必须输入工号! ; JOptionPane. showMessageDialog ( null ,warning, 警告 ,JOptionPane.WARNING_MESSAG)E; class XGAct implements ActionListener public void actionPerformed(ActionEvent e) String number=工号 .getT
27、ext(); String name= 姓名 .getText(); String sex= null ; if (男.isSelected()sex=男.getText(); else sex= 女.getText(); employee员工 =new employee(); 员工.setNumber( nu mber); 员工.setName( name); 员工 .setSex(sex); try outOne =new FileOutputStream( file ); outTwo =new ObjectOutputStream( outOne ); 员工表.put(number,员
28、工); outTwo .writeObject( 员工表); outTwo .close(); outOne .close(); 工号 .setText(null ); 姓名 .setText(null ); catch (Exception ee) System. out .println( 录入修改出现异常 ! ); 修改 .setEnabled(false ); class SCAct implements ActionListener public void actionPerformed(ActionEvent e) 修改 .setEnabled( false ); String n
29、umber= 工号 .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 (s
30、tu.getSex().equals( 男 )男.setSelected( true ); else 女.setSelected( true ); String m= 确定要删除该员工的记录吗? ; int ok=JOptionPane. showConfirmDialog ( null ,m, 确认, JOptionPane. YES_NO_OPTION,JOptionPane. QUESTION_MESSAGE); if (ok=JOptionPane. YES_OPTION) 员工表 .remove(number); try file ); outOne ); outOne =new F
31、ileOutputStream( outTwo =new ObjectOutputStream( outTwo .writeObject( 员工表 ); outTwo .close(); outOne .close(); 工号 .setText( null ); 姓名 .setText( null ); catch (Exception ee)System. out .println(ee); else if (ok=JOptionPane. NO_OPTION) 工号 .setText( null ); 姓名 .setText( null ); String warning= else el
32、se String warning= 必须输入工号! II JOptionPane. showMessageDialog ( null ,warning, 警告 ,JOptionPane. WARNING_MESSAG)E; 该号不存在! JOptionPane.showMessageDialog( null ,warning, 警告,JOptionPane.WARNING_MESSAGE 4.5 修改员工信息 和添加员工信息方法类似,定义number、name sex三个局部变量,并使用 getText()方法初始化变量。调用 isSelected()方法设置单选按钮。创建 employee
33、类型的“员工”局部变量,调用Hastable类中的put()方法将要修改的 员工信息写入到散列表“员工表” 中。调用ObjectInputStream(new File In putStream () 中的writeObject()把散列表中的数据信息写入到文本文 件中。使用trycatch来捕获异常,并进行处理。以下是程序实现修改功能的 代码: class XGAct impleme ntsActio nListe ner public void action Performed(Acti on Eve nt e) Stri ng nu mber=工号.getText(); Stri ng
34、n ame=姓名.getText(); Stri ng sex=n ull if (男.isSelected()sex=男.getText(); else sex= 女.getText(); employee员工 =new employee(); 员工.setNumber( nu mber); 员工 .setName( name); 员工 .setSex(sex); try file ); out One ); out One =new FileOutputStream( outTwo =new ObjectOutputStream( 员工表.put(number,员工); outTwo .w
35、riteObject( 员工表); outTwo .close(); outOne .close(); 工号 .setText( null ); 姓名 .setText( null ); catch (Exception ee) System. out .println( 录入修改出现异常 ! ); 修改 .setEnabled(false ); 4.6 删除员工信息 构造 SCAct 类实现 ActionListener 接口,在该类中也是以员工信息中的员 工号作为关键字,调用ObjectInputStream(new FileInputStream ()中的 readObject() 方法
36、读取文本文件中的数据。使用员工表 .containsKey(number) 对关键字进行检测, 如果文本框中的员工号和文本文件中的数据相同, 程序调用 remove() 方法把散列表中的该项员工的信息删除, 如果文本框中的员工号和文本 文件中的数据不相同, 则程序调用 JOptionPane.showMessageDialog() 方法提示 该员工信息不存在。 如果程序获取到员工号文本框中的内容为空, 则提示用户输 入员工号。以下程序实现为代码: class SCAct implements ActionListener public void actionPerformed(ActionEv
37、ent 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(
38、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=JOptionPane. YES_OPTION) 员工表 .remove(numb
39、er); file ); outOne ); try outOne =new FileOutputStream( outTwo =new ObjectOutputStream( outTwo .writeObject( 员工表 ); outTwo .close(); outOne .close(); 工号.setText( n ull ); 姓名 .setText( null ); catch (Exception ee)System. out .println(ee); else if (ok=JOptionPane. NO_OPTION) 工号 .setText( null ); 姓名 .
40、setText( null ); JOptionPane. showMessageDialog ( null ,warning, else 警告 ,JOptionPane.WARNING_MESSAG)E; String warning= 必须输入工号! ; JOptionPane. showMessageDialog ( null ,warning, 警告 ,JOptionPane.WARNING_MESSAG)E; else String warning= 该号不存在! 4.7 显示员工信息 实现 ActionListener 接口对构造的 XSAct 类用于接收操作事件的侦听器接 口。而
41、使用该类创建的对象可使用组件的 addActionListener 方法向该组件注 册。在发生操作事件时, 调用该对象的 actionPerformed 方法。从而调用 SShow() 方法实现显示员工信息的功能。 class XSAct implements ActionListener public void actionPerformed(ActionEvent e) new SShow( file ); 编写SShow类继承JDialog,定义 Hashtable 类的“员工表”、JTextArea 类的“显示”和处理字符流的 FileInputStream 和 ObjectInput
42、Stream 类型的 inOne与in Two,并对他们初始化。在 SShow()方法中使用JTextArea类设置显 示面板,调用 JScrollPane 方法管理视口、 可选的垂直和水平滚动条以及可选的 行 和 列 标 题 视 口 , 最 终 设 置 如 图 所 示 的 显 示 面 板 。 inTwo=new ObjectInputStream(new FileInputStream(file);员 工 表 =(Hashtable)inTwo.readObject(); inTwo.close()对文本文件的读取,使用 isEmpty() 和 append() 方法判断散列表中的内容是否为
43、空并把信息显示在JTextArea 文本 显示区中。 实现 Enumeration 接口的对象, 它生成一系列元素, 一次生成一个。 连续调用 nextElement 方法将返回一系 列的连续元素。使用“显 示 .append(str) ” 代码: 方法将这些元素追加到显示区域中。以下为程序功能实现的 class SShow extends JDialog Hashtable 员工表= null ; JTextArea显示 =null ; FileInputStream inOne =null ; ObjectInputStream inTwo =null ; File file =null ; public SShow(File file) super ( new JFrame(), 显示对话框 ); this . file =file; 显示 =new JTextArea(16,30); try inTwo =new ObjectInputS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教 八年级 语文 下册 第3单元《11.核舟记 第1课时》课件
- 购买尿动力学分析仪项目可行性研究报告
- 克孜勒苏可行性研究报告
- 聚氨酯复合保温热水管项目可行性研究报告
- 刑事诉讼违法行为的法律后果
- 2026年及未来5年市场数据中国发酵工程行业市场全景评估及投资规划建议报告
- 钻孔灌注桩钢筋笼吊装方案
- 2025 高中信息技术数据与计算之算法的矩阵链乘法算法课件
- 急性ST段抬高型心肌梗死指南精要
- 智能农机装备应用与发展:技术赋能农业现代化
- 上交所2026校招笔试题
- 2026延安志丹县人力资源和社会保障局公益性岗位招聘(50人)笔试备考题库及答案解析
- 车间内部转运车管理制度
- 2026年山东省立第三医院初级岗位公开招聘人员(27人)笔试参考题库及答案解析
- 2026湖北武汉市江汉城市更新有限公司及其下属子公司招聘11人笔试备考题库及答案解析
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人笔试备考题库及答案解析
- 麻醉门诊评估指南解读
- 2026年广东省辅警笔试题库及1套参考答案
- 2026年高考数学二轮复习:专题13 数列的综合大题(含知识融合)9大题型(专题专练)(全国适用)(原卷版)
- 交通电路处理 11
- 2026年时事政治测试题库100道附完整答案【考点梳理】
评论
0/150
提交评论