还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计(论文)任务书学院*学院专业*******学生姓名班级学号*******课程名称Java语言程序设计课程设计(论文)题目员工信息管理系统设计目的1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力提高学生适应实际,实践编程的能力;3)培养学生在项目开发中的团队合作精神、创新意识及能力设计要求(技术参数)1)对系统进行需求分析及可行性分析系统实现的目的,项目开发的背景,系统要达到的目标,开发系统所用的开发环境,预期使用的用户等2)对系统进行总体设计分析系统的功能结构模块,并给出系统的功能结构图,设计要符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理3)详细设计设计所需的数据表,给出所需数据表的字段名称,数据类型,字符长度,字段说明,约束条件编码实现每个子功能模块,并进行测试计划与进度安排周一全天设计解决问题方法周四1~4节调试程序周一全天调试程序周四1~4节完成论文,答辩成绩指导教师(签字)年月日专业负责人(签字)年月日主管院长(签字)年月日摘要Java语言是当前最为流行的程序设计语言之一,诸多优秀的的特性使其成为被业界广泛认可和采用的工具随着目前公司规模的渐渐扩大,员工管理将成为意见不得不总是的问题有些公司人员流动较大,而且人数动辄上百人,,若采用传统的方式进行管理,不仅易出错更是一件令人痛疼的事随着计算机的诞生,在此领域产生众多的信息管理系统来管理信息,不仅信息处理方便,而且简单强大本系统正事其中的一项,针对员工信息管理,方便公司对员工的信息进行处理,极大减少了人事管理的工作量另一方面,本系统中所涉及到图形用户界面设计是我们学习程序设计这门课的难点兼重点,通过审计本系统不仅巩固了我们的基础,以及程序设计能力,还锻炼了我们对程序设计的流程及大体上的把握不仅如此,在设计过程中,我们的调试能力也得到增强使我们对设计“大程序”有了经验目前,无论是机关、事业单位、还是企业单位,员工管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而员工管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助.在现代化的企业管理中,员工管理系统有着十分重要的作用!关键词文件和流界面设计GUI异常处理Hashtable类目录TOC\o1-3\h\z\u
一、设计目的2
二、设计问题
32.1课设问题
32.2设计思路
43.1程序功能模块设计的实现
63.2系统总体结构
73.3员工信息面板功能的实现
73.4员工界面功能模块设计的实现8
四、详细设计
84.1定义程序变量
84.2程序面板设计
94.3录入员工信息
104.4查询员工信息
104.5修改员工信息
104.6删除员工信息
104.7显示员工信息10
五、设计总结10
六、参考文献11
七、致谢11
一、设计目的随着现代社会的快速发展,我们已进入信息化时代,管理系统在人们的生活中的应用越来越广泛,它已深入到我们工作、学习、生活的各个方面为了适应时代的发展,本次课程设计的主要任务是设计一个学生员工系统并完成一些基本操作其目的是
(1)提高员工信息管理的运作效率,通过对雇员全面的信息采集和处理;
(2)运用已学的java知识编一些简单使用的程序,使我们初步具备综合运用所学Java语言基础知识,面向对象程序设计的基本思想、方法与技术;
(3)由计算机来代替人工执行一系列诸如增加新员工、删除、修改、查询、显示等操作这样就使管理人员轻松快捷的完成员工信息的管理工作
二、设计问题
2.1课设问题员工管理系统要求完成
(1)完成员工的添加、删除、查询、修改功能
(2)使用界面操作
(3)使用文件完成
2.2设计思路首先设计面板,然后往面板里添加组件,点击各个组件来实现要求的对员工信息的添加、删除、查询、修改功能
三、概要设计
3.1程序功能模块设计的实现本段代码中主要的类有EmployeeManager和ActionEvent,设置了监听接口由ActionEvent类来实现,并且用if语句来为变量服务后面设置了一个异常处理,使用try和catch来捕获异常使用GUI技术实现员工的图形界面
3.2系统总体结构系统总体结构
3.3员工信息面板功能的实现首先构造两个面板(JPanel),分别为界面以及显示,并将其加入到容器中.主界面显示界面
3.4员工界面功能模块设计的实现录入提示员工信息是否被录入,选择是Y,则员工信息录入到文件中查询在主界面中输入员工号,点击查找,若员工信息不存在则显示如图若文本文件中存在所要查找的员工信息(例如工号0801),则在主界面中显示该员工信息(员工号、姓名和性别)删除在主界面中输入员工号,点击删除按钮,弹出对话框,选择是Y程序将删除词员工的所有信息
四、详细设计
4.1定义程序变量自定义employee类,其中定义numbernamesex三个变量,分别包含setNumber、getNumber、setName、getName、setSex、getSex方法classemployeeimplementsjava.io.Serializable{Stringnumbernamesex;publicemployee{};publicvoidsetNumberStringnumber{this.number=number;}publicStringgetNumber{returnnumber;}publicvoidsetNameStringname{this.name=name;}publicStringgetName{returnname;}publicvoidsetSexStringsex{this.sex=sex;}PublicStringgetSex{returnsex;}}
4.2程序面板设计定义EmployeeManager类继承JFrame,使用JLabel、JTextField、JRadioBUtton、ButtonGroup、JButton等类构造各组件,使用使用Hashtable类创建散列表对象“员工表”存放employee对象,每个employee对象用该对象的学号作为关键字使用exists方法判断文本文件是否存在若存在则进行数据的写入操作使用addActionListener方法对JButton进行注册监听GridLayout布局管理器对面板进行设计如下所示publicclassEmployeeManagerextendsJFrame{JLabellb=newJLabel录入请先输入记录,查询、删除请先输入工号,修改是对查询+内容改后的保存!;JTextField工号姓名;JRadioButton男女;ButtonGroupgroup=null;JButton录入查询删除修改显示;JPanelabcdf;employee员工=null;Hashtable员工表=null;Filefile=null;FileInputStreaminOne=null;ObjectInputStreaminTwo=null;FileOutputStreamoutOne=null;ObjectOutputStreamoutTwo=null;publicemployee工人;publicEmployeeManager{super沈阳理工员工基本信息管理系统;工号=newJTextField10;姓名=newJTextField10;group=newButtonGroup;男=newJRadioButton男true;女=newJRadioButton女false;group.add男;group.add女;录入=newJButton录入;查询=newJButton查询;删除=newJButton删除;修改=newJButton修改;显示=newJButton显示;录入.addActionListenernewLRAct;查询.addActionListenernewCXAct;修改.addActionListenernewXGAct;删除.addActionListenernewSCAct;显示.addActionListenernewXSAct;修改.setEnabledfalse;a=newJPanel;a.addnewJLabel工号:JLabel.CENTER;a.add工号;b=newJPanel;b.addnewJLabel姓名:JLabel.CENTER;b.add姓名;c=newJPanel;c.addnewJLabel性别:JLabel.CENTER;c.add男;c.add女;d=newJPanel;d.setLayoutnewGridLayout61;d.adda;d.addb;d.addc;f=newJPanel;f.add录入;f.add查询;f.add修改;f.add删除;f.add显示;file=newFile员工信息.txt;Hashtable员工表=newHashtable;if!file.exists{try{FileOutputStreamout=newFileOutputStreamfile;ObjectOutputStreamobjectOut=newObjectOutputStreamout;objectOut.writeObject员工表;objectOut.close;out.close;}catchIOExceptione{}}Containercon=getContentPane;con.setLayoutnewBorderLayout;con.addlbBorderLayout.NORTH;con.adddBorderLayout.CENTER;con.addfBorderLayout.SOUTH;setDefaultCloseOperationEXIT_ON_CLOSE;setBounds200200600300;setVisibletrue;}
4.3录入员工信息以员工的员工号作为关键字,调用ObjectInputStreamnewFileInputStream中的readObject方法读取文本文件中的数据使用员工表.containsKeynumber对关键字进行检测,如果数据中包含该员工号,则弹出对话框提示该员工信息已存在,请到修改页面进行信息的修改,如果数据中不包含该关键字,则弹出确认对话框,点击确定,程序调用put方法写入信息到散列表中调用writeObject方法将散列表写入文本文件中如果程序在获取员工号时为空时,提示用户输入员工号用try,catch对异常进行处理以下为具体代码classLRActimplementsActionListener{publicvoidactionPerformedActionEvente{修改.setEnabledfalse;//功能尚未实现Stringnumber=;number=工号.getText;ifnumber.length0{try{inTwo=newObjectInputStreamnewFileInputStreamfile;员工表=HashtableinTwo.readObject;inOne.close;inTwo.close;}catchExceptionee{System.out.println创建表出现问题!;}if员工表.containsKeynumber{Stringwarning=该员工信息已存在,请到修改页面修改!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}else{Stringm=确定该员工被录入?;intok=JOptionPane.showConfirmDialognullm确认JOptionPane.YES_NO_OPTIONJOptionPane.INFORMATION_MESSAGE;ifok==JOptionPane.YES_OPTION{Stringname=姓名.getText;Stringsex=null;if男.isSelected{sex=男.getText;}else{sex=女.getText;}员工=newemployee;员工.setNumbernumber;员工.setNamename;员工.setSexsex;try{outOne=newFileOutputStreamfile;outTwo=newObjectOutputStreamoutOne;员工表.putnumber员工;outTwo.writeObject员工表;outTwo.close;outOne.close;}catchExceptionee{System.out.println输出出现问题!;}工号.setTextnull;姓名.setTextnull;}}}else{Stringwarning=必须输入工号!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}}
4.4查询员工信息构造CXAct类实现ActionListener接口,对事件监听在该类中以员工的员工号作为关键字,调用ObjectInputStreamnewFileInputStream中的readObject方法读取文本文件中的数据使用员工表.containsKeynumber对关键字进行检测,如果文本框中的员工号和文本文件中的数据相同,程序调用setText方法把散列表中的员工信息显示在文本框中,如果文本框中的员工号和文本文件中的数据不相同,则程序调用JOptionPane.showMessageDialog方法提示该员工信息不存在如果程序获取到员工号文本框中的内容为空,则提示用户输入员工号以下程序实现为代码classCXActimplementsActionListener{publicvoidactionPerformedActionEvente{Stringnumber=;number=工号.getText;ifnumber.length0{try{inOne=newFileInputStreamfile;inTwo=newObjectInputStreaminOne;员工表=HashtableinTwo.readObject;inOne.close;inTwo.close;}catchExceptionee{System.out.println员工表有问题!;}if员工表.containsKeynumber{修改.setEnabledtrue;employeestu=employee员工表.getnumber;姓名.setTextstu.getName;ifstu.getSex.equals男{男.setSelectedtrue;}else{女.setSelectedtrue;}}else{修改.setEnabledfalse;Stringwarning=该员工不存在!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}else{修改.setEnabledfalse;Stringwarning=必须输入工号!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}}classXGActimplementsActionListener{publicvoidactionPerformedActionEvente{Stringnumber=工号.getText;Stringname=姓名.getText;Stringsex=null;if男.isSelected{sex=男.getText;}else{sex=女.getText;}employee员工=newemployee;员工.setNumbernumber;员工.setNamename;员工.setSexsex;try{outOne=newFileOutputStreamfile;outTwo=newObjectOutputStreamoutOne;员工表.putnumber员工;outTwo.writeObject员工表;outTwo.close;outOne.close;工号.setTextnull;姓名.setTextnull;}catchExceptionee{System.out.println录入修改出现异常!;修改.setEnabledfalse;}}}classSCActimplementsActionListener{publicvoidactionPerformedActionEvente{修改.setEnabledfalse;Stringnumber=工号.getText;ifnumber.length0{try{inTwo=newObjectInputStreamnewFileInputStreamfile;员工表=HashtableinTwo.readObject;inOne.close;inTwo.close;}catchExceptionee{}if员工表.containsKeynumber{employeestu=employee员工表.getnumber;姓名.setTextstu.getName;ifstu.getSex.equals男{男.setSelectedtrue;}else{女.setSelectedtrue;}}Stringm=确定要删除该员工的记录吗?;intok=JOptionPane.showConfirmDialognullm确认JOptionPane.YES_NO_OPTIONJOptionPane.QUESTION_MESSAGE;ifok==JOptionPane.YES_OPTION{员工表.removenumber;try{outOne=newFileOutputStreamfile;outTwo=newObjectOutputStreamoutOne;outTwo.writeObject员工表;outTwo.close;outOne.close;工号.setTextnull;姓名.setTextnull;}catchExceptionee{System.out.printlnee;}}elseifok==JOptionPane.NO_OPTION{工号.setTextnull;姓名.setTextnull;}else{Stringwarning=该号不存在!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}else{Stringwarning=必须输入工号!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}}
4.5修改员工信息和添加员工信息方法类似,定义number、name、sex三个局部变量,并使用getText方法初始化变量调用isSelected方法设置单选按钮创建employee类型的“员工”局部变量,调用Hastable类中的put方法将要修改的员工信息写入到散列表“员工表”中调用ObjectInputStreamnewFileInputStream中的writeObject把散列表中的数据信息写入到文本文件中使用try{}catch来捕获异常,并进行处理以下是程序实现修改功能的代码classXGActimplementsActionListener{publicvoidactionPerformedActionEvente{Stringnumber=工号.getText;Stringname=姓名.getText;Stringsex=null;if男.isSelected{sex=男.getText;}else{sex=女.getText;}employee员工=newemployee;员工.setNumbernumber;员工.setNamename;员工.setSexsex;try{outOne=newFileOutputStreamfile;outTwo=newObjectOutputStreamoutOne;员工表.putnumber员工;outTwo.writeObject员工表;outTwo.close;outOne.close;工号.setTextnull;姓名.setTextnull;}catchExceptionee{System.out.println录入修改出现异常!;修改.setEnabledfalse;}}}
4.6删除员工信息构造SCAct类实现ActionListener接口,在该类中也是以员工信息中的员工号作为关键字,调用ObjectInputStreamnewFileInputStream中的readObject方法读取文本文件中的数据使用员工表.containsKeynumber对关键字进行检测,如果文本框中的员工号和文本文件中的数据相同,程序调用remove方法把散列表中的该项员工的信息删除,如果文本框中的员工号和文本文件中的数据不相同,则程序调用JOptionPane.showMessageDialog方法提示该员工信息不存在如果程序获取到员工号文本框中的内容为空,则提示用户输入员工号以下程序实现为代码classSCActimplementsActionListener{publicvoidactionPerformedActionEvente{修改.setEnabledfalse;Stringnumber=工号.getText;ifnumber.length0{try{inTwo=newObjectInputStreamnewFileInputStreamfile;员工表=HashtableinTwo.readObject;inOne.close;inTwo.close;}catchExceptionee{}if员工表.containsKeynumber{employeestu=employee员工表.getnumber;姓名.setTextstu.getName;ifstu.getSex.equals男{男.setSelectedtrue;}else{女.setSelectedtrue;}}Stringm=确定要删除该员工的记录吗?;intok=JOptionPane.showConfirmDialognullm确认JOptionPane.YES_NO_OPTIONJOptionPane.QUESTION_MESSAGE;ifok==JOptionPane.YES_OPTION{员工表.removenumber;try{outOne=newFileOutputStreamfile;outTwo=newObjectOutputStreamoutOne;outTwo.writeObject员工表;outTwo.close;outOne.close;工号.setTextnull;姓名.setTextnull;}catchExceptionee{System.out.printlnee;}}elseifok==JOptionPane.NO_OPTION{工号.setTextnull;姓名.setTextnull;}else{Stringwarning=该号不存在!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}else{Stringwarning=必须输入工号!;JOptionPane.showMessageDialognullwarning警告JOptionPane.WARNING_MESSAGE;}}}
4.7显示员工信息实现ActionListener接口对构造的XSAct类用于接收操作事件的侦听器接口而使用该类创建的对象可使用组件的addActionListener方法向该组件注册在发生操作事件时,调用该对象的actionPerformed方法从而调用SShow方法实现显示员工信息的功能classXSActimplementsActionListener{publicvoidactionPerformedActionEvente{newSShowfile;}}编写SShow类继承JDialog,定义Hashtable类的“员工表”、JTextArea类的“显示”和处理字符流的FileInputStream和ObjectInputStream类型的inOne与inTwo,并对他们初始化在SShow方法中使用JTextArea类设置显示面板,调用JScrollPane方法管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口,最终设置如图所示的显示面板inTwo=newObjectInputStreamnewFileInputStreamfile;员工表=HashtableinTwo.readObject;inTwo.close;对文本文件的读取,使用isEmpty和append方法判断散列表中的内容是否为空并把信息显示在JTextArea文本显示区中实现Enumeration接口的对象,它生成一系列元素,一次生成一个连续调用nextElement方法将返回一系列的连续元素使用“显示.appendstr”方法将这些元素追加到显示区域中以下为程序功能实现的代码classSShowextendsJDialog{Hashtable员工表=null;JTextArea显示=null;FileInputStreaminOne=null;ObjectInputStreaminTwo=null;Filefile=null;publicSShowFilefile{supernewJFrame显示对话框;this.file=file;显示=newJTextArea1630;try{inTwo=newObjectInputStreamnewFileInputStreamfile;员工表=HashtableinTwo.readObject;inTwo.close;}catchExceptionee{}if员工表.isEmpty显示.append目前还没有员工的信息记录!\n;else{显示.setText工号姓名性别\n;forEnumerationenm=员工表.elements;enm.hasMoreElements;{employeestu=employeeenm.nextElement;Stringsex=;ifstu.getSex.equals男sex=男;elsesex=女;Stringstr=stu.getNumber++stu.getName++sex+\n;显示.appendstr;}}JScrollPanescroll=newJScrollPane显示;Containercon=getContentPane;con.addCenterscroll;con.validate;setVisibletrue;setBounds100100400300;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{setVisiblefalse;}};}}}在Eclipse下运行程序,截图如下
五、设计总结通过这几天的课程设计的学习的亲身实践对我来说收获颇丰从一开始的懵懵懂懂到现在可以理解编译简单的程序经历了一段难忘的过程Java语法很多要想熟练掌握在记下来的同时还要很好的理解,看见身边精通java的同学可以自由的在电脑上书写他们想要做到的操作我心里不禁倍感羡慕,对于我来说java不好理解一些应该知道的基本知识都还没有很好的掌握比如GUI和接口还有监听接口对我来说都是难点究其原因是平时应该下的功夫太少,没有好好温习老师传授的知识至此有机会温习并实践书本上的知识对我来说也是一个机会通过对知识的复习以及老师同学的指导对Java有了更深层次的领悟一对今后如何学习Java积累了经验当看到自己写的东西在屏幕上运行是心中的喜悦不言而喻这不是Java课程设计的结束而是Java学习新的开始,快餐式的学习方法不可取,今后我要踏踏实实地从平日里就勤加练习,多多实践,只有实践的多,写代码才能熟练参考文献
[1]赵毅主.跨平台程序设计语言——Java.西安西安电子科技大学出版社,2006
[2]龚永罡、陈昕.Java程序设计[M].清华大学出版社,2009
[3]《java2程序设计教程》作者HarveyM.Deitel和PaulJ.Deitel机械工业出版社2008
[4]黄晓东等.Java课程设计案例精编(第2版)[M].北京中国水利水电出版社,2007致谢本论文是在***老师指导下完成的他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我在此,我向谭老师致以诚挚的谢意和崇高的敬意同时我还要感谢我的同学们,在论文设计中,他们给了我很多的建议和帮助我还要感谢我的论文中被引用或参考的文献的作者员工信息管理系统信息添加信息查询信息修改信息删除信息显示。