java课程设计管理系统

2023-02-27 版权声明 我要投稿

第1篇:java课程设计管理系统

Java程序设计课程实训设计

[摘 要]Java技术是计算机科学与技术相关专业培养的核心技能,本课程设计是在《Java程序设计》课程上设置的,在高职高专人才的培养中占有核心地位。它是巩固学生所学理论知识、培养学生动手能力并使理论与实际相结合的重要实践环节。 Java程序设计课程实训部分在对于学生提高综合运用能力起到了至头重要的作用。

[关键词]Java程序设计 实训 设计

一、实训教学的性质和任务

Java技术是计算机科学与技术相关专业培养的核心技能,本课程设计是在《Java程序设计》课程上设置的,在高职高专人才的培养中占有核心地位。它是巩固学生所学理论知识、培养学生动手能力并使理论与实际相结合的重要实践环节。

本课程设计的目的和任务,是通过学生用Java语言设计一个完整的应用程序,使学生综合应用所学知识完成软件的分析、设计、调试和总结,提高学生对Java语言的综合应用能力和解决问题的能力。

二、实训教学方法手段和考核方法的设计

(1)实训教学方法和手段

任课教师根据课程《网络程序设计Java》教学大纲中的重点内容,给出相应的题目或项目,指导学生完成任务。实训前必须制定好上机步骤,弄清实训目的;要求学生掌握实训项目所需的知识、操作方法或步骤,并写出详细的实训报告。

(2)实训考核方法

通过设计答辩方式,并结合学生的动手能力,独立分析解决问题的能力和创新精神,实训报告和答辩水平以及学习态度综合考评。

考核标准包括:

1.设计与实训报告 (20%);

2.程序的可用性,实用性,通用性,可扩充性(30%) ;

3.学生的动手能力、综合解决问题能力、创新精神(20%) ;

4.答辩水平(20%)。

5.态度和纪律 10% (分为优、良、中、及格和不及格五档)

三、实训内容与要求

(1)java系统程序开发

资产管理系统、学生信息管理系统、电子商务系统、网络购物系统、网络聊天室、人事管理系统、选课系统、论文管理系统、新闻发布系统、考试管理系统、学生宿舍管理系统等。学生可以小组为单位任选其一完成。

(2)Applet程序开发

做一个广告屏,显示一段文字,如图1所示,能够对文字的颜色、风格、字体、字号等修改。

要求:做成APPLET程序或APPLICATION程序;用APPLETVIEWER运行;能够在网页中运行。

(3)游戏开发

1.五子棋双人对弈

开发游戏性程序,例如五子棋双人对弈程序、扫雷程序,根据学生情况,此部分为选做内容。

五子棋双人对弈程序要求:

①按“重新开具”可以开始新的一局。

②需提示当前该哪方下棋,并提示已下棋子的信息。

③一方赢时游戏结束。

2.俄罗斯方块游戏。

说明:以上内容为模板内容,其它题目也可自己设计,但难度要相当。具体内容可根据实际由指导老师审定。

(4)总体要求

1.对系统进行功能模块分析、控制模块分析正确;

2.系统设计要实用;

3.编程简练,可用,功能全面,具有较好的健壮性;

4.说明书、流程图要清楚。

四、授课计划与学时安排

(1)教师介绍本课程设计的目的、内容、要求、方法和安排。(4学时)

(2)学生消化信息、完成设计报告。(6学时)

(3)教师审查设计报告。通过审查的学生的设计报告,然后调整确定实施方案。 (4学时)

(4)学生完成课程设计的程序设计环节指导老师作必要的现场指导。(20学时)

(5)验收并简单考核。(4学时)

(6)撰写总结和实训报告。(2学时)

五、课程设计指导教师

由主讲教师和实验指导教师共同承担。

六、课程设计地点

计算机中心机房或者学院專业机房

参考文献:

[1]王唯,Java程序设计[M],北京理工大学出版社,北京,2007年

作者:王亮

第2篇:“Java程序设计”课程教学思考

摘 要: 目前,面向对象语言Java已成为Internet上最受欢迎的开发语言之一,许多高校纷纷将Java列为程序设计的核心课程。在多年Java教学经验的基础上,就Java语言的教学,包括教材的选择、开发环境的选取、教学内容的筛选、教学方法的运用、教学实例的选用等问题进行了较为深入的探讨,给出了可行性思路。

关键词: Java; 面向对象; 程序设计课程; 教学方法

Pondering over teaching of “java programming designing”

Lan Wenfei, Li Zimao

(School of Computer Science, South-central University of Nationalities, Wuhan, Hubei 430074, China)

Key words: Java; object-oriented; programming curriculum; teaching method

0 引言

在Java面世短短的十来年间,Java以其简单易学、安全可靠、面向对象、多线程及平台独立性等许多特点[1-3],被越来越多地推广和使用,它已成为Internet上最受欢迎的开发语言之一。

目前,许多高校已将“Java程序设计”列为程序设计的核心课程之一,肯定了它在培养计算机开发类人才中的地位和作用。

本人已连续多年担任高校计算机专业Java程序设计课程的主讲教师,针对Java教学中存在的问题,积累了一些教学经验,希望能与同仁共同探讨。

本文就Java语言的教学,包括教学时数的安排、教材的选择、开发环境的选取、教学内容的筛选、教学方法的运用、教学实例的选用等方面[4,5],给出了一些自己的做法,实践证明,这些方法是可行的。

1 教学准备环节

首先讨论Java程序设计课程教学的准备工作。

1.1 合理安排教学时数

我们授课的对象是软件工程实验班本科学生,该课程安排在大一第二学期,鉴于学生在大一第一学期已具备基本的计算机原理及专业基础知识,这样来安排教学计划是比较合理的。考虑到学生在大一已具备C/C++高级语言程序设计的基础,而多数学生在国内修完本科课程后会选择到国外继续深造学习,所以Java语言程序设计课程的教学设计必须考虑全方位,此外Java语言衍生自C++,它的基本语法同C语言,而其面向对象的基本特征同C++。鉴于此,我们将Java程序设计课程的上课时数设置为48个授课学时,18个实践学时,这样设置是比较合适的。

1.2 精选教材

选择合适的教材,是保证有效教学的重要手段之一[6]。合适的Java教材, 应具有较好的知识覆盖面,难度适中,适合学生的具体情况[4]。由于我们讲授的对象是实验班学生,需要使用全英文教学,此外,他们已具备一定的面向对象程序设计基础,所以诸如《Thinking in Java》、《Objects First with Java》、 《The Java Programming Language》等经典书籍都适合作为该课程的教材。

选择国外经典教材,能保证我们的教学内容与国外接轨[7]。学生在阅读英文原版教材的同时,可同时参考对应的中文翻译本,能使学生加强对所学知识的理解。

1.3 选择合适的实验环境

由于JDK(Java Development Kit)是命令行的编程环境,需要用编辑器建立Java源程序。如果选用Windows自带的记事本notepad来编辑程序,首先程序中若出现语法错误是很不容易被发现的;其次每次必须打开cmd窗口并输入一大堆命令,如编译命令、运行命令等;再就是对于applet小程序还要自编html文件,非常麻烦。但是,如果选用超智能、傻瓜型的集成开发环境,如JBuilder、NetBeans,因其耗内存,所以速度慢,慢到不能忍受;更重要的是不利于入门级的学生掌握Java的基本语法。因为Java上机实践的一个重要训练内容就是熟练使用Java编译器(java.exe)去检查语法错误,并能修改错误,这样做的目的是使学生能较快地掌握Java语法。

本文简要介绍一种既简单又方便入门者使用的Java编辑器TextPad。TextPad作为Java编辑器需要做简单配置,首先把TextPad装上(先装JDK),安装完毕就可按下面的方法配置:在菜单的Configure中选择Preference,选择Tools,点add下拉菜单,选择Java SDK commands。之后Tools中多了3项:Compile Java、Run Java Application、Run Java Applet。从这一点来看它确实比其他的Java编辑器更容易配置,如EditPlus。

按上述方法配置TextPad Java编辑器后,还可适当优化TextPad Java IDE环境,使它更适合编写、执行Java程序。优化环境方法在此省略,有兴趣的作者可参见文献[2]。

2 教学内容

根据多年的Java程序设计课程教学经验,我们认为讲授该课程的内容主要包括三个方面:一是Java语言基础;二是Java语言的新特性;三是在讲授上述内容时穿插介绍JDK类库的常用类。

Java语言基础包括:数据类型、表达式、基本语句、类和对象、继承和多态、异常处理机制、小程序、图形用户界面设计、输入/输出、多线程、网络编程和数据库编程。考虑到我们面授的学生已经掌握了C++面向对象程序设计基础内容,而且Java教学内容偏多、教学时数较少[8],因此对于衍生自C++的Java语言,它和C++类似的部分,包括数据类型和表达式、基本语句、类和对象、继承和多态及异常处理机制等,应讲授较少的学时数;而对于Java语言特有的部分,如小程序、图形用户界面设计、输入/输出、多线程、网络编程和数据库编程,则应讲授较多的学时数。由于篇幅有限,在此省去对每个章节学时数的具体编排。

1996年Sun公司发布了JDK1.0,在短短的十年时间里,JDK从1.0版本升级到6.0版本。特别值得一提的是2004年发布的JDK5.0版本,它在旧版本的基础上增加了一些非常有意义的新特性,比如,泛型编程、增强的for循环、自动装包/拆包、类型安全的枚举、可变参数和静态导入等,使用这些特性有助于我们编写更加清晰、精悍、安全的Java代码。为了与时俱进,让学生掌握较新的Java特性,我们认为很有必要在课堂上向学生传授新技术,以拓宽学生的知识面。

一方面为了节约有限的学时数,另一方面为了鼓励学生在课余积极使用、查阅JDK帮助文档,我们不安排专门的章节介绍JDK类库的使用,而是在讲授Java程序例子时,将重点介绍一些重要类的使用,比如,在讲授图形用户界面这一章时,则会讲授一些重要包的使用,包括java.awt、java.awt.event、java.applet、javax.swing等,概述这些包的类层次结构。这样做既节约了时间,也使学生通过对例子的学习较好地掌握了一些常用类的使用。特别需要说明的是,容器类很重要,这些类在程序设计中会普遍使用到。

总之,在教学内容的选择上,我们推崇简化的原则,忽略一些不常用的知识点,如带标号的跳转语句、复杂的表达式运算规则、嵌套类等,这样做既节约了课时,也能充分引导学生编写简单、可读性好的程序代码[4]。

3 教学方法

充分利用多媒体教学设施,为上课讲述的例子做编译、运行演示。对于学生编程时常常出现的错误,在编辑程序时可设置类似的错误障碍,让学生修改错误,以杜决今后再出现此类错误,此外还能现场教会学生如何使用JDK TextPad开发环境。到了学期的中后期,鉴于学生们已基本掌握Java的语法,上课可适当减少演示例子的次数。

对于Java基本类库的授课,根据多年的Java开发经历和教学实践,我们认为学生应该对基本类库有个整体了解,要重点掌握 Java类库中的Java.lang和Java.util两个包,特别是容器类的应用是难点,需要结合实际例子阐述。这两个包提供的是Java编程要用到的基本类,学生需要清楚这些类或接口的继承关系、主要功能[5]。我们在授课时适当介绍JDK API文档的使用和阅读,提倡使用最新版本的英文API文档;在教学中注意总结相关类的联系和区别,如String和StringBuffer在使用上的区别,以及FileInputStream和RandomAccessFile在用于读文件时的区别。

在实施Java教学时,应注意Java和C++的区别。Java和C++都是面向对象的语言,而且Java衍生自C++,在基本语法及面向对象特征方面均有很多相同之处。比如,我们在讲授Java的数据类型、常量、变量、表达式、语句、类和对象、继承和多态等内容时,应着重指出它和C++的区别,简略细节知识。这样既能节约课时,也能使学生快速掌握Java的基本语法和面向对象特征。

在学生掌握了Java的基本语法及面向对象特征的基础上,我们会考虑将重点放在图形用户界面、多线程、网络编程和数据库编程上,以使学生能进行一般的Java应用编程。

如果课堂教学时数比较宽裕,则可介绍Java和UML、Java和设计模式相关的知识,强调软件开发新技术,特别是对于软件工程专业的学生,更应该这么做。

4 教学实例

可将程序例子分为非算法型和算法型两种类型。在介绍Java基本语法时,我们提倡用非算法型的例程,利于学生对例子程序的阅读和理解。而在讲授计算机典型问题,如排序、查找、递归时,则使用算法型的例程,以加强学生对一些典型问题的掌握。

在选择例程时,以例程中是否含有JDK类作为筛选原则,目的在于能让学生掌握更多的JDK类。

此外,在期中阶段,可选择一两个游戏项目作为综合的例程,如用于Java学习的Robocode游戏实验项目。Robocode是IBM的一位工程师MatNelson用Java语言所创造的机器战斗仿真引擎,是一款专门为程序员设计的游戏半成品。利用该引擎,只要编写几行简单的代码,就可以创造出一个在屏幕上四处疾驰的机器人坦克,参加游戏对战[4]。这样能增强例子的实用性和趣味性,调动学生学习Java的积极性。在此基础上,再布置一个游戏项目,作为学生在课余时间的练兵题。

5 结束语

衍生于C++的Java语言,作为一种面世较晚的语言,它集中体现和充分利用了若干当代软件技术新成果,如面向对象、多线程、平台无关等[9],使其拥有众多优秀的特性,从而成为面向对象软件开发的首选语言。

出于“Java程序设计”这门课的重要性和教学中存在的问题,本文提出了“Java程序设计”教学实施的诸多方面,并在作者施教的班级进行了多次实践,实践表明,上述教学思路是可行的,能在一定程度上提高教学效果。

下一步我们将在“Java程序设计”实践教学和后续课程改革方面进行实践探讨。

作者多年从事Java教学和Java软件开发工作,积累了一些教学经验,本文将它提练总结,希望能给Java同仁一些启示。

参考文献:

[1] 秦学礼,汪迎,郑淑红.Java程序设计实用教程[M].清华大学出版社,2012.

[2] 刘正林等.Java技术基础(第2版)[M].华中科技大学出版社,2004:30-40

[3] 印旻.Java语言与面向对象程序设计(第二版)[M].清华大学出版社,2007.

[4] 叶恒舟.Java程序设计教学探讨[J].科技信息,2007.1:23-25

[5] 李纯玉,胡丽娜.Java语言程序设计教学中的几点思考[J].科技信息,2007.2:10-13

[6] 张延军,乔德军,温炎耿等.构建Java教学体系[J].邯郸学院学报,2007.17(9):41-44

[7] 蓝雯飞,郑波尽.高级语言程序设计课程建设思路[J].计算机教育,2012.6:30-32

[8] 陆萍.浅议Java程序设计教学改革[J].电脑知识与技术,2007.27:32-35

[9] 石瑞峰,边琦,冯小龙等.Java程序设计教程[M].清华大学出版社,2012.

作者:蓝雯飞 李子茂

第3篇:《Java程序设计》课程网站的设计与实现

摘要:为方便Java课程教学,加强师生之间课后交流,该文使用ASP.NET技术和SQL2000数据库设计并开发了《Java程序设计》教学网站。该网站分四大主要模块:网络考试中心,在线留言,资源中心,后台管理,同时还实现发布新闻和添加相关链接的功能。

关键词:ASP.NET;SQL2000;JAVA课程

Key words: ASP.NET;SQL2000; JAVA course

近年,Java面向對象程序设计语言因其具有的跨平台性、分布式及安全性等特点[1],在当今网络时代得到广泛应用和发展。作为一种有生产力的编程工具,学习《Java程序设计》课程有助于学生在掌握面向过程程序设计和可视化程序设计基础上,能够更深入地掌握面向对象编程技术,且更有利于开发网络环境下的应用程序。

目前师生之间Java课程的教与学多局限于课堂上面对面的方式,而课后教师与学生之间更深入的交流和探讨,因缺少一定场地而受到限制,最终导致师生互动的机会减少。针对此现状,本文使用ASP.NET[2]技术和SQL2000数据库[3]设计一个Java课程网上学习平台,以满足在线学习及便于师生随时随地交流的目的。

1 需求分析

Java课程网站建设的目标是使教学更加方便,方便学生自己学习,提高学生自学能力,也节省学生、老师的时间。要求所设计系统操作方便、更新及时、易于维护管理。拥有动态更改信息;网上答疑;课程教学等基本功能。学生进入网站后可根据系统功能对该课程进行信息浏览,查看课件,提出问题及学习等;教师进入网站后也可对课程的一些信息进行浏览,对学生提出的问题进行回复,而后台教师需要进入系统对网站进行维护,更新信息、修改信息或者删除某些信息。

因此该系统需要满足的需求为:具有良好的人机界面,以方便操作;学生查看教学信息,下载课件,网上发帖等;教师查看学生提出的问题并进行回答;教师发布,整理留言和教学资源等。

2 网站功能设计

按照需求分析的结果,网站总体结构设计如图1所示,角色上主要包括学生、教师和系统管理员;功能上主要包括网络考试中心,在线留言,资源中心及后台管理,同时还实现发布新闻和添加相关链接的功能。

3 网站主要功能分析

3.1用户注册及管理员登录

用户包括普通用户和管理员,所有用户先注册然后登录系统,权限不同则登录成功后相应的界面不同。

3.2网站功能显示

将网站的每个功能模块显示出来,如图2所示,包括:资源中心,考试中心,后台管理,在线留言及使用帮助等。

3.3资源中心

资源中心主要功能包括查看与课程相关的文档及任课教师等信息。

3.3.1电子文档

图3所示的主要功能是上传和下载电子文档。为便于学生课后复习,教师可将课堂上教学用的Java课件等文档进行上传供学生浏览。

3.3.2网站课程实践

为加强学生动手能力,从而将理论与实践相结合,每个知识点都对应有实践环节,每一实验都明确具体内容及相关要求(图4)。

3.4考试中心

图5所示Java课程的网上考试阅卷,在时间和空间上都不必受传统考试的限制,可提高考试和阅卷效率。

3.5后台管理

管理员可以对科目、试题库及发布的资源等信息进行增加或修改等管理。

3.5.1 科目大类管理

如图6所示,可以增加或删除科目大类,同时给大类编号。

3.5.2 具体科目管理

学好Java,还应该熟悉其课程体系,了解其所属大类的与其相关的其他科目(图7),从而明确该课程的重要性。

3.5.3试题库管理

图8所示为课程体系中各门课程的试题库。

3.6在线留言

师生均可在线留言,但需要事先进行注册(图9),然后通过登录界面进入留言板块。

4 结束语

为便于学生在线学习及师生之间随时随地进行Java课程教学的交流,本网站实现了Java教学资源管理与查看、试题库管理与查看、在线留言及发布相关新闻等功能,有助于学生更方便更深入地掌握Java语言。

参考文献:

[1] 张白一, 崔尚森.面向对象程序设计———Java[M] .西安: 西安电子科技大学出版社, 2013.

[2] 明日科技. ASP.NET从入门到精通[M]. 北京: 清华大学出版社, 2013.

[3] 赵增敏. SQL Server 2000 实用教程[M]. 北京: 电子工业出版社, 2008.

作者:王丽爱

第4篇:JAVA课程设计员工信息管理系统

JAVA员工管理系统

实验报告

姓名:张旭冉

学号:10105010117

班级:信10-1

北方工业大学理学院信息与计算科学系

2013年 12月 17日

员工管理系统

一、实验目的

通过该课程设计,使同学们进一步理解概JAVA的基本概念、理论和方法,初步掌握JDK、Eclipse的调试和应用,以及程序中错误的解决方法,明确JAVA在实际程序设计中的应用。使课堂中学习到理论得到应用,练习文件形式在JAVA程序设计中的应用。

二、实验内容

A.设计题目:员工管理系统

设计要求:(1)完成员工信息的添加、删除、查询、修改功能

(2)使用用户界面操作

(3)使用文件形式完成

设计思路:首先设计界面进入面板,在面板中添加菜单选项,并将要实现的功能选项添加其中,然后对这些选项实施监听,实现其功能。通过文件类型知识的应用,实现对员工信息的管理。 B.概要设计

面板设计:首先设计一个容器,然后再容器中添加菜单,在菜单中添加选项,并在容器中加入面板,面板布局设置为CardLayout,最后将面板添加进容器。

功能实现:在录入、查询、修改和删除界面中使用JButton、JLabel、ButtonGroup、JRadioButton、JTextField、Choice为界面中加入相应的组件,并对其进行监听,同时附加了文件流的处理。 C.详细设计

1、定义员工类:

public class Employee implements java.io.Serializable { String number,name,discipling,grade,borth,sex; public Employee() { } public 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 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; } public String getBorth() { return borth; } public void setSex(String sex) { this.sex=sex; } public String getSex() { return sex; }}

2、主程序:

import java.awt.*;

import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.Hashtable; public class EmployeeManager extends JFrame implements ActionListener { EmployeeSituation 基本信息录入=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("录入员工基本信息"); 修改=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.setFont(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(); con=getContentPane(); pCenter=new JPanel();

pCenter.setLayout(card); pCenter.setBackground(Color.yellow); file=new File("基本信息.txt"); if(!file.exists()) {

try

{

FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out);

objectOut.writeObject(基本信息);

objectOut.close();

out.close();

}

catch(IOException e)

{

} } 基本信息录入=new EmployeeSituation(file); 基本信息修改=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 void windowClosing(WindowEvent e) { System.exit(0); }}); setVisible(true); setBounds(100,50,420,380); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==录入) { card.show(pCenter,"录入界面"); } else if(e.getSource()==修改)

{ card.show(pCenter,"修改界面"); } else if(e.getSource()==查询) { 基本信息查询.setVisible(true); } else if(e.getSource()==删除) { card.show(pCenter,"删除界面"); } } public static void main(String args[]) { new EmployeeManager(); }}

3、实现员工信息的录入: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; public class EmployeeSituation extends JPanel implements ActionListener { Hashtable 基本信息表=null; 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 JTextField(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("重置"); 录入.addActionListener(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.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.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(); pCenter.add(boxH);

pCenter.setBackground(Color.yellow);

setLayout(new BorderLayout());

add(pCenter,BorderLayout.CENTER);

JPanel pSouth=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 ObjectInputStream(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.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(); } else { sex=女.getText(); } 员工=new Employee(); 员工.setNumber(number); 员工.setName(name); 员工.setDiscipling(discipling); 员工.setGrade(grade); 员工.setSex(sex); try { outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne);

基本信息表.put(number,员工); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close();

员工号.setText(null);

姓名.setText(null);

工资.setText(null); } catch(Exception ee) { System.out.println(ee); }}}} else { String warning="必须要输入员工号!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); }}

if(e.getSource()==重置)

{

员工号.setText(null);

姓名.setText(null);

部门.remove(部门.getSelectedIndex());

工资.setText(null); }}}

4、实现员工信息的修改: import java.awt.*; import java.awt.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=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File file=null; public ModifySituation(File file)

{ this.file=file; 员工号=new JTextField(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("录入修改"); 录入修改.setEnabled(false); 重置=new JButton("重置"); 员工号.addActionListener(this); 开始修改.addActionListener(this); 录入修改.addActionListener(this); 重置.addActionListener(this); 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.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.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(); pCenter.add(boxH); pCenter.setBackground(Color.yellow); setLayout(new BorderLayout()); add(pCenter,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.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 ObjectInputStream(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(); 工资.setText(stu.getGrade());

if(stu.getSex().equals("男")) { 男.setSelected(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="必须要输入员工号!"; 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 ObjectInputStream(inOne); 基本信息表=(Hashtable)inTwo.readObject(); inOne.close();

inTwo.close(); } catch(Exception ee) { } if(基本信息表.containsKey(number)) { String question="该员工基本信息已存在,您想修改他(她)的基本信息吗?"; JOptionPane.showMessageDialog(this,question,"警告",JOptionPane.QUESTION_MESSAGE); String m="基本信息将被修改!"; int ok=JOptionPane.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(); } else { sex=女.getText(); } Employee 员工=new Employee();

员工.setNumber(number);

员工.setName(name);

员工.setDiscipling(discipling);

员工.setGrade(grade);

员工.setSex(sex); try { outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,员工); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close();

员工号.setText(null); 姓名.setText(null); 部门.remove(部门.getSelectedItem()); 工资.setText(null); } catch(Exception ee) { System.out.println(ee); } 录入修改.setEnabled(false); } else if(ok==JOptionPane.NO_OPTION) { 录入修改.setEnabled(true); } }

else

{ String warning="该员工号没有基本信息,不能修改!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); 录入修改.setEnabled(false);

}

}

else

{

String warning="必须要输入员工号!"; JOptionPane.showMessageDialog(this,warning,"警告

",JOptionPane.WARNING_MESSAGE);

录入修改.setEnabled(false);

}

}

if(e.getSource()==重置)

{

员工号.setText(null);

姓名.setText(null);

部门.remove(部门.getSelectedItem());

工资.setText(null); }}}

5、实现员工信息的查询: import java.awt.*; import java.awt.event.*; 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 Inquest(JFrame f,File file) {

super(f,"查询对话框",false);

this.file=file;

员工号=new JTextField(10);

查询=new JButton("查询");

员工号.addActionListener(this);

查询.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 部门=new JTextField(10); 部门.setEditable(false); 工资=new JTextField(10); 工资.setEditable(false); 男=new 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.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=Box.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(); setVisible(false); setBounds(100,200,360,270);

addWindowListener(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=员工号.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 {

String warning="该员工号不存在!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); }} else { String warning="必须要输入员工号!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); }}}}

6、实现员工信息的删除: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; public class Delete extends JPanel implements ActionListener {

Hashtable 基本信息表=null;

JTextField 员工号,姓名,部门,工资;

JRadioButton 男,女;

JButton 删除;

ButtonGroup group=null;

FileInputStream inOne=null;

ObjectInputStream inTwo=null;

FileOutputStream outOne=null;

ObjectOutputStream outTwo=null;

File file=null;

public Delete(File file)

{

this.file=file;

员工号=new JTextField(10);

删除=new JButton("删除");

员工号.addActionListener(this);

删除.addActionListener(this);

姓名=new JTextField(10);

姓名.setEditable(false);

部门=new JTextField(10);

部门.setEditable(false);

工资=new JTextField(10);

工资.setEditable(false);

男=new 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.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 box6=Box.createHorizontalBox();

box6.add(new JLabel(" ",JLabel.CENTER));

Box box5=Box.createHorizontalBox();

box5.add(new JLabel("工资:",JLabel.CENTER));

box5.add(工资);

Box boxH=Box.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();

pCenter.add(boxH);

pCenter.setBackground(Color.yellow);

setLayout(new BorderLayout());

add(pCenter,BorderLayout.CENTER);

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 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); } String m="确定要删除该员工号及全部信息吗?"; int ok=JOptionPane.showConfirmDialog(this,m,"确认

",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION) { 基本信息表.remove(number); try { outOne=new FileOutputStream(file); outTwo=new ObjectOutputStream(outOne); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); 员工号.setText(null); 姓名.setText(null); 部门.setText(null); 工资.setText(null); } catch(Exception ee) { System.out.println(ee); } } else if(ok==JOptionPane.NO_OPTION) { 员工号.setText(null); 姓名.setText(null); 部门.setText(null);

工资.setText(null); } } else {

String warning="该员工号不存在!"; JOptionPane.showMessageDialog(this,warning,"警告

",JOptionPane.WARNING_MESSAGE); } } else {

String warning="必须要输入员工号!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); }}}}

三、实验结果体会

本次JAVA课程设计我所编写的程序是员工信息管理系统,程序中实现了对员工信息的添加、查询、修改、删除的功能,我是应用文件的形式完成的,其中还应用到了图形用户界面。我设计的程序简单易懂,操作简单,且 适用于不同的单位使用,只需按照自己的需要将所要录入的信息名称做添加或修改就可以实现。通过这次JAVA的程序设计,使我对JAVA有了更加深入的了解,巩固了我对JAVA基础知识的掌握。

第5篇:人员信息管理系统 java课程设计

大学人员信息管理系统

1 / 29

目录

目录 ....................................................................................................................................... 1 设计任务书 ............................................................................................................................... 2 课程设计任务 ........................................................................................................................... 2 程序功能实现: ....................................................................................................................... 3 1.程序主体 ............................................................................................................................ 3 2.流程图: ............................................................................................................................ 4 3.模块说明 ............................................................................................................................ 4 3.1、主菜单四个选项 ...................................................................................................... 4 3.

2、教师功能菜单 .......................................................................................................... 5 3.3、学生功能菜单 .......................................................................................................... 5 3.

4、查找菜单 .................................................................................................................. 6 4.源代码及说明 ................................................................................................................. 6 4.1、listStuTea 类 ............................................................................................................ 6 4.

2、Menu 类 ................................................................................................................ 10 4.3、StudnTeach 类 ....................................................................................................... 16 4.

4、Student 类 ............................................................................................................. 19 4.5、Teacher 类 ............................................................................................................. 19 4.

6、Person 类 ............................................................................................................... 20 4.7、lkExecption类 ........................................................................................................ 21 4.

8、MainStuTea类........................................................................................................ 23 5.操作方法和测试结果 ...................................................................................................... 24 5.1.1、教师信息显示 ..................................................................................................... 24 5.1.

2、教师信息添加 ..................................................................................................... 24 5.1.3、教师信息删除 ..................................................................................................... 25 5.1.

4、教师信息查找 ..................................................................................................... 26 5.2、学生菜单实现 ........................................................................................................ 28 6.设计体会 .......................................................................................................................... 28

Java程序设计 大学人员信息管理系统

2 / 29

设计任务书

问题描述:

编写程序对大学里的人员进行管理。大学里的人员主要由学生、教师和在职进修教师(既是学生又是教师)组成,各类人员均有姓名、电话和住址等信息,学生另有所属专业信息,教师另有所在系部、授课信息及工资信息,在职进修教师具备以上各类人员的信息。

要求:

1、设计Person类,保存各类人员均有的姓名、电话和住址等信息。

2、设计Student类或接口,继承Person类,并添加所属专业班级信息。

3、设计Teacher类接口,继承Person类,并添加所在系部信息,授课信息及工资信息。

4、设计StudenTeacher类,继承Student类接口和Teache类接口。其具备以上各类人员信息。

5、把创建的所有StudenTeacher对象按照其所属系部依次组织在一个文件中方便查询、修改、删除及添加等操作。

6、对各类的对象进行信息输入操作,输入信息包括该类对象的所有信息。

7、对各类的对象进行输出操作,显示输出该类对象的所有信息

课程设计任务及设计人

设计任务:

大学人员信息管理系统 课程目的:

1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;

2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;

Java程序设计 大学人员信息管理系统

3 / 29

3、培养学生在项目开发中团队合作精神、创新意识及能力。

课程要求:

1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;

2、系统设计要实用,编程简练,可用,功能全面

3、说明书、流程图要清楚

4、记录设计情况(备查,也为编写设计说明书作好准备);

5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。

6、本设计需要实现Java的面向对象开发运用到的有Java的接口,Java的继承,Java的异常处理,Java类的封装。能够在异常输入的情况下,能正确处理。最后得到正确结果。

程序功能实现:

一、

二、

三、

四、

五、

六、

按照课程的要求实现学生和教师的基本信息的录入。 把输入的教师和学生信息显示出来。

有姓名和专业两种查找方式去分别把老师和学生的信息查找并且显示出来。 删除选项可以删除相应学生和老师信息。

用switch语句实现菜单功能,字符界面做到简洁清晰

异常处理处理错误的输入并且返回错误的提示,更正后填入正确数据。

1.程序主体

1、 设计分析:

1.1、 实体是实现程序思想的主要方式,首先应该分为学生和老师2个入口,分别做查询和信息添加、显示、删除和查找的功能。

1.2、 学生和老师的信息输入考虑要求多名信息考虑用对象数组去实现。但是对象数组的删除不是本学期的内容。且排序麻烦。考虑用其他方式实现信息录入,查阅相关信息发现可以使用list对象实现信息录入和删除。

1.3、 菜单使用switch语句实现菜单功能,菜单的相互调用实现功能的循环。

Java程序设计 大学人员信息管理系统

4 / 29

2.流程图:

3.模块说明

3.1、主菜单四个选项

学生入口:

Java程序设计 大学人员信息管理系统

5 / 29

这个模块与学生功能模块相连。

教师入口:

这个模块与教师功能模块相连

显示全部信息:

这个模块显示所有的老师和学生信息

3.2、教师功能菜单

显示教师信息:

这个模块显示输入的教师信息,如果不存在提示输入信息

添加教师信息:

这个模块添加教师基本信息

删除教师信息:

这个模块按照序号删除教师信息,如果不存在提示信息输入

查找教师信息:

按照姓名和专业查找教师信息

返回上一级菜单: 返回主菜单

3.3、学生功能菜单

显示学生信息:

这个模块显示输入的教师信息,如果不存在提示输入信息

添加学生信息:

这个模块添加教师基本信息

删除学生信息:

这个模块按照序号删除教师信息,如果不存在提示信息输入

查找学生信息:

按照姓名和专业查找学生信息

返回上一级菜单: 返回主菜单

Java程序设计 大学人员信息管理系统

6 / 29

3.4、查找菜单

按照姓名查找:

查找模块,按照姓名查找,如果不存在则提示输入信息。 按照专业查找:

查找模块,按照专业查找,如果不存在则提示输入信息。

返回上一级菜单: 返回主菜单

4.源代码及说明

4.1、listStuTea 类

用来实现学生和教师数据添加、删除、查找的方法

import java.util.*; import lkExecption.LKExecption; public class listStuTea extends StudnTeach{

final int SIZE = 50;//最大学生和教师人数

listStuTea[] st = new listStuTea[SIZE];//学生和老师对象数组 Scanner into = new Scanner(System.in); List list1=new ArrayList(); List list2=new ArrayList(); public int getTeaNumber() //返回教师链表长度 { } public int getStuNumber() //返回学生链表长度 { } public int getNumber() { // TODO Auto-generated method stub return list2.size()+list1.size(); return list2.size(); return list1.size(); Java程序设计 大学人员信息管理系统

7 / 29

} public void FindStuName() {

} public void FindTeaName() {

String tpname; boolean zy = true; StudnTeach point; System.out.println("请输入教师姓名:"); tpname = into.nextLine(); for(int i = 0;i

} point =list1.get(i); if(tpname.equals(point.name)) {

} //break; System.out.println("要查找的姓名存在"); { showTea(i,point); zy = false; //标志位 } String tpname; boolean zy = true; StudnTeach point; System.out.println("请输入学生姓名:"); tpname = into.nextLine(); for(int i = 0;i

} if(zy) System.out.println("没有该学生"); if(getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); point =list2.get(i); if(tpname.equals(point.name)) {

} System.out.println("要查找的姓名存在"); showStu(i,point); zy = false; Java程序设计 大学人员信息管理系统

8 / 29

if(zy) System.out.println("没有该老师"); if(getTeaNumber()==0) System.out.println("警告!!!老师数据为空请添加数据");

} {

public void FindteaSpec() String tpSpec; boolean zy = true; StudnTeach point; System.out.println("请输入教师专业:"); tpSpec = into.nextLine(); for(int i = 0;i

} if(zy) System.out.println("没有该专业的老师"); if(getTeaNumber()==0) System.out.println("警告!!!老师数据为空请添加数据"); point =list1.get(i); if(tpSpec.equals(point.getteaSpeciality())) { showTea(i,point); zy = false;//标志位 }

} {

public void FindstuSpec() String tpStu; boolean zy = true; StudnTeach point; System.out.println("请输入学生专业:"); tpStu = into.nextLine(); for(int i = 0;i

} if(zy) System.out.println("没有选修该专业的学生"); point =list2.get(i); if(tpStu.equals(point.getstuSpeciality())) { showStu(i,point); zy = false;//标志位 } Java程序设计 大学人员信息管理系统

9 / 29

if(getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); } public void showStu(int n,StudnTeach point) { point=list2.get(n); System.out.println("学生编号:"+n);

System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);

System.out.println("电话:"+point.phone); System.out.println("地址:"+point.address); System.out.println("专业:"+point.getstuSpeciality()); System.out.println("班级:"+point.getClassname()); }

public void showTea(int n,StudnTeach point) { point=list1.get(n); System.out.println("教师编号:"+n);

System.out.println("姓名:"+point.name+" 性别:"+point.sex+" 年龄:"+point.age);

System.out.println("电话:"+point.phone); System.out.println("地址:"+point.address); System.out.println("专业:"+point.getteaSpeciality()); System.out.println("工资:"+point.getPay()); }

public void addstu(int n) throws LKExecption {

st[n] = new listStuTea(); st[n].add(); st[n].setClassname(); st[n].setstuSpeciality(); list2.add(st[n]); if(list2.size()!=0) System.out.println("添加学生成功");

}

public void addtea(int n) throws LKExecption {

st[n] = new listStuTea(); st[n].add(); st[n].setteaSpeciality(); Java程序设计 大学人员信息管理系统

10 / 29

}

st[n].setPay(); list1.add(st[n]); if(list1.size()!=0) System.out.println("添加教师成功");

}

public void delTea() {

}

public void delStu() {

} System.out.println("请输入被删的学生编号"); int k =into.nextInt(); if(list2.size()<=k||k<0) System.out.println("删除失败!编号不存在请重新输入!"); else { list2.remove(k); System.out.println("删除成功"); } System.out.println("请输入被删的教师编号"); int k =into.nextInt(); if(list1.size()<=k||k<0) System.out.println("删除失败!编号不存在请重新输入!"); else { list1.remove(k); System.out.println("删除成功"); } 4.2、Menu 类

字符菜单的实现

import java.util.*; import lkExecption.LKExecption; public class Menu {

Scanner into = new Scanner(System.in); int num = 0; List list=new ArrayList(); Java程序设计 大学人员信息管理系统

11 / 29

StudnTeach point = new listStuTea();//遍历指针 public Menu() throws LKExecption{ } public int setIn() {

} void MainMenu() throws LKExecption//主菜单 { System.out.println("================"); System.out.println("1.教师入口"); System.out.println("2.学生入口"); System.out.println("3.显示全部信息"); System.out.println("4.退出管理"); switchMainMenu(); } void FindMenu()//查找菜单 {

} void MenuTea1_1() throws LKExecption//老师菜单 {

System.out.println("----------------"); System.out.println("1.显示教师信息"); System.out.println("2.添加教师信息"); System.out.println("3.删除教师信息"); System.out.println("4.查找教师信息"); System.out.println("5.返回上一级菜单"); System.out.println("----------------"); System.out.println("1.按照姓名查找"); System.out.println("2.按照专业查找"); System.out.println("3.返回上一级菜单"); //switchMainMenu(); int t; String tpNum = null; try{

} catch(NumberFormatException e) { } return t; t = new LKExecption().Num1Execption(tpNum); System.out.println("请输入选项"); tpNum = into.nextLine(); t = Integer.parseInt(tpNum); MainMenu(); Java程序设计 大学人员信息管理系统

12 / 29

} switchMenuTea1_1(); void MenuStu1_1() throws LKExecption//学生菜单 {

} void switchFindStuMenu() throws LKExecption//查找学生菜单 {

} void switchFindTeaMenu() throws LKExecption//查找教师菜单 {

int t; t = setIn(); switch(t) { case 1: int t; t = setIn(); switch(t) { case 1:

} point.FindStuName(); FindMenu(); switchFindStuMenu(); break; point.FindstuSpec(); FindMenu(); switchFindStuMenu(); break; MenuStu1_1(); switchMenuStu1_1(); break; System.out.println("输入错误请重新输入"); switchFindStuMenu(); System.out.println("----------------"); System.out.println("1.显示学生信息"); System.out.println("2.添加学生信息"); System.out.println("3.删除学生信息"); System.out.println("4.查找学生信息"); System.out.println("5.返回上一级菜单"); switchMenuStu1_1(); case 2: case 3: default: Java程序设计 大学人员信息管理系统

13 / 29

} void switchMainMenu() throws LKExecption//主菜单 {

int t; t = setIn(); switch(t) { case 1:

MenuTea1_1();//老师显示菜单

break; MenuStu1_1();//学生显示菜单

break; if(point.getNumber()==0) System.out.println("警告!!!数据为空请添加数据"); else{

} for(int i = 0;i

point.showTea(i,point); point.showStu(i,point); for(int i = 0;i

} point.FindteaSpec(); FindMenu(); switchFindTeaMenu(); break; MenuTea1_1(); switchMenuTea1_1(); break; System.out.println("输入错误请重新输入"); switchFindTeaMenu();

point.FindTeaName(); FindMenu(); switchFindTeaMenu(); break; case 2: case 3: default: case 2: case 3: Java程序设计 大学人员信息管理系统

14 / 29

}

} MainMenu(); break; System.out.println("欢迎再次光临!大学人员信息管理系统!!"); break; System.out.println("输入错误请重新输入"); switchMainMenu(); case 4: default: void switchMenuTea1_1() throws LKExecption {

System.out.println("----------------"); int t; t = setIn(); switch(t) { case 1:

if(point.getTeaNumber()==0) System.out.println("警告!!!教师数据为空请添加数据"); for(int i = 0;i

FindMenu(); switchFindTeaMenu(); break; MainMenu(); break; case 2: case 3: case 4: case 5: Java程序设计 大学人员信息管理系统

15 / 29

}

} default:

} System.out.println("输入错误请重新输入"); switchMenuTea1_1(); void switchMenuStu1_1() throws LKExecption {

} System.out.println("----------------"); int t; t = setIn(); switch(t) { case 1:

} if(point.getStuNumber()==0) System.out.println("警告!!!学生数据为空请添加数据"); for(int i = 0;i

Java程序设计 大学人员信息管理系统

16 / 29

4.3、StudnTeach 类

继承于教师和学生接口实现它们抽象方法,且继承人类属性。

import java.util.*;

import lkExecption.LKExecption; class StudnTeach extends Person implements Student,Teacher{

Scanner into = new Scanner(System.in); float pay = 0;//工资

String classname = null;//班级 String stuSpec = null;//老师专业 String teaSpec = null;//学生专业

void add() throws LKExecption {

}

public void addstu(int n) throws LKExecption{

}

public void addtea(int n) throws LKExecption{

}

public void setPay() {

String tpNum = null; try{ //add();

//setteaSpeciality(); //setPay() ; //add();

//setClassname(); //setstuSpeciality(); setName(); setSex(); setAge(); setPhone (); System.out.println("请输入地址"); address = into.nextLine();

Java程序设计 大学人员信息管理系统

17 / 29

}

} System.out.println("请输入工资:"); tpNum = into.nextLine(); pay = Integer.parseInt(tpNum); catch(NumberFormatException e) { } pay = new LKExecption().Num1Execption(tpNum); public float getPay() {

}

public void setClassname() {

}

public String getClassname() {

}

public void setstuSpeciality() {

}

public String getstuSpeciality() {

}

return stuSpec;

System.out.println("请输入专业:"); stuSpec = into.nextLine();

return classname;

System.out.println("请输入班级:"); classname = into.nextLine();

return pay; Java程序设计 大学人员信息管理系统

public void setteaSpeciality() {

System.out.println("请输入专业:");

teaSpec = into.nextLine();

}

public String getteaSpeciality() {

return teaSpec; }

public void show(boolean b, int num, StudnTeach point) {

}

public void showStu(int num, StudnTeach point) {

}

public void showTea(int num, StudnTeach point) {

}

public int getStuNumber() {

return 0; }

public int getTeaNumber() {

return 0; }

public int getNumber() {

return 0; }

public void delStu() {

} Java程序设计

18 / 29 大学人员信息管理系统

19 / 29

} public void FindteaSpec() { } public void FindTeaName() { } public void FindstuSpec() { } public void FindStuName() { } public void delTea() { }

4.4、Student 类

接口、学生的抽象方法

public interface Student {

} abstract void setstuSpeciality(); abstract String getstuSpeciality(); abstract void setClassname(); abstract String getClassname();

4.5、Teacher 类

接口、教师的抽象方法

public interface Teacher { Java程序设计 大学人员信息管理系统

20 / 29

} abstract void setteaSpeciality(); abstract String getteaSpeciality(); abstract void setPay(); abstract float getPay();

4.6、Person 类

定义人类的基本属性

import java.util.*; import lkExecption.LKExecption; public class Person {

Scanner into = new Scanner(System.in); String name; int phone; String address; String sex; int age; public void setName() {

} public void setSex() throws LKExecption {

} public void setAge() { String tpAge = null; try{ System.out.println("请输入性别:"); sex = into.nextLine(); if(sex.equals("man")||sex.equals("woman")) {} else

} catch(LKExecption lk) { } sex = new LKExecption().sexExecption(sex); throw new LKExecption(); System.out.println("请输入姓名:"); name = into.nextLine(); Java程序设计 大学人员信息管理系统

21 / 29

}

} try{

} catch(NumberFormatException e) { } age = new LKExecption().NumExecption(tpAge); System.out.println("请输入年龄:"); tpAge = into.nextLine(); age = Integer.parseInt(tpAge); public void setPhone () {

} String tpNum = null; try{

} catch(NumberFormatException e) { } phone = new LKExecption().Num1Execption(tpNum); System.out.println("请输入电话号码:"); tpNum = into.nextLine(); phone = Integer.parseInt(tpNum);

4.7、lkExecption类

自定义异常类

package lkExecption; import java.util.Scanner; public class LKExecption extends Exception {

Scanner into = new Scanner(System.in); public String sexExecption(String mg) {

String str; boolean pd = true; do{

System.out.println(mg+" 不是正确的性别,正确的性别为 man 或者 woman"); str = into.next(); Java程序设计 大学人员信息管理系统

22 / 29

} //System.out.println(mg+" 验证");

if(str.equals("man")||str.equals("woman")) { } }while(pd); return str; pd = false; public int NumExecption(String mg) {

String num = null; int tpNum = 0; boolean pd = true; System.out.println(mg+" 请正确的数字或者不在范围内!请重新输入!!"); do{

try{

} catch(NumberFormatException e) { System.out.println(num+" 请正确的数字或者不在范围内!请重新输num = into.nextLine(); tpNum = Integer.parseInt(num); if(tpNum>120||tpNum<0) //范围判断 throw new NumberFormatException(); else pd = false; 入!!");

}

} public String charExecption(String mg) {

final String[] str={"null"};//这里指定 规定字段 boolean pd = true; do{ System.out.println(mg+" 不是正确字段,请输入指定的字段"); mg = into.next(); for(int i =0;i

23 / 29

}

} } }while(pd); return mg; public int Num1Execption(String mg) {

} String num; int tpNum = 0; System.out.println(mg+" 不是数字!请输入数字!!"); do{

try{

} catch(NumberFormatException e) { System.out.println(mg+" 不是数字!请输入数字!!"); } num = into.nextLine(); tpNum = Integer.parseInt(num); break; }while(true); return tpNum; 4.8、MainStuTea类

主函数调用

import lkExecption.LKExecption; public class MainStuTea {

} public static void main(String[] args) throws LKExecption { Menu lk = new Menu(); }

Java程序设计 大学人员信息管理系统

24 / 29

5.操作方法和测试结果 5.1.1、教师信息显示

选择一进入教师信息入口

选择一进入教师信息查看

因为我们没有添加教师信息,所以他要求我们添加教师信息

5.1.2、教师信息添加

选择二进入教师信息添加

Java程序设计 大学人员信息管理系统

25 / 29

教师信息添加成功,如果不是指定字段输入,出现异常则重新输入 如下为添加的信息输入显示

5.1.3、教师信息删除

Java程序设计 大学人员信息管理系统

26 / 29

5.1.4、教师信息查找

专业查找

现在添加三个教师信息,如下显示

首先使用专业查找,我们查找computer专业的

Java程序设计 大学人员信息管理系统

27 / 29

查找其他math专业

查找不存在的专业

姓名查找

再添加一个同名的教师

查找lisi Java程序设计 大学人员信息管理系统

28 / 29

5.2、学生菜单实现

学生信息采取同样测试

6.设计体会

这个课程设计可以的设计心得,可谓十分波折。全部的源代码都出自自己,其中的list排列我们还没有学习。在这里要感谢google感谢baidu。没有他们就没有今天的代码。当然网上只有相似的课题没有相同的代码,list排列经过自己一小时的摸索可以了解了部分的运用,首先写了一个test类来测试这个用法

import java.util.ArrayList; import java.util.LinkedList; import java.util.Iterator; import java.util.List; import java.util.Scanner;

public class test { public static void main(String[] args) {

System.out.println("开始:"); String a = "A", b = "B", c = "C", d = "D", e = "E"; List list = new LinkedList(); list.add(a); list.add(e); list.add(d); Java程序设计 大学人员信息管理系统

29 / 29

list.set(1, b);// 将索引位置为1的对象e修改为对象b list.add(2, c);// 将对象c添加到索引位置为2的位置 list.add(e); list.remove(1); Iterator it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }

System.out.println("结束!"); } } 再想了一下把它添加进了listStuTea对象,全都的代码完成用了一天的时间,在原来想起写500多行的代码几乎是不可能的,但是在这个课程设计中实现了。这个课程设计真的使自己学到了很多的东西。在接口的使用还不是很好的和实际模型很多的结合起来,这是锻炼较少的原因,前期的分析也幼稚的表现了自己在这方面的不足,在层次结构上浪费了较多的时间。 总之在这方面的锻炼还是比较少,我想不管是在以后布置下来的课程设计才去编写代码,这是不可行的,得在平时多多锻炼。

Java程序设计

第6篇:人事管理系统Java课程设计报告

湖南科技大学计算机科学与工程学院

数据库课程设计报告

题目:人事管理管理系统

学 号:1005030221 姓 名:艾向兵 指导教师:张黎

完成时间:2012年1月4日 组员:苏勇,成佳裕,艾向兵

企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配 1.1系统功能需求分析

人事管理系统主要有以下几项功能要求: .新员工资料的输入。

.自动分配员工编号,并且设置初始的用户密码: .人事变动的记载,包括岗位和部门的调整。 .员工信息的查询和修改,包括员工个人信息和密码 1.2 系统功能模块设计

根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图,

人事资源管理 包括:新员工档案输入,人事变更,员工档案查询

1.3 与其它系统的关系

本关系是公司管理信息系统的基础部分,为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,提供员工的基本信息。同时为其他系统提供了员工登录的密码认证和权限分配。 1.4数据库设计 数据库需求分析:

员工信息:员工号,密码,权限,姓名,性别,生日,专业,通讯地址,电话,Email,当前状态,其他。

人事变动:记录号,员工,变动,详细描述

部门设置:部门编号,名称

员工变动代号表

员工信息表

员工职位代码表

管理员登陆界面

信息查询,修改,删除主界面

查询单个员工的界面

总 结

这次的课程设计,是在学习了Java以后通过阅读课本及在图书馆借阅相关书籍同严景、孟珍三人共同完成的。在开发这个系统的过程中,碰到很多或大或小的问题,我们一起思考,一起努力,最后大部分都解决了,得到了现在的这个简单的人事管理系统。

在编制过程中,我们首先考虑到了界面的友好性,并在界面设计时不采用烦琐的细节,使界面简单、清晰,便于操作。一开始我们是想做个登录界面,实现用户的登录权限管理,但试了几次都没有达到预期的效果,最后不得不放弃。

通过这次课程设计,我知道了什么事情都不那么简单,只有努力去做了,你才会有收获,不管收获大小,付出的过程总是有的。有些事情只有亲身感受,你才知道它的价值有多大。同时在遇到困难的时候要沉着冷静,首先要冷静分析问题,对于很难解决的问题要学会请教他人,还可以与别人合作。

在这次数据库系统课程设计中,我主要进行的是界面的设计,以及进行进行整合操作,界面是我学习Java以来第一次做,以前不怎么用的JTabel等,现在都已经熟练的应用了,特别是这次的弹出窗口,我在做这个的时候可谓是一窍不通,因为把按钮JButton定义为了局部变量而在时间响应中而得不到另一个窗口的弹出。

还有就是在整个过程中的ID传递让我不知怎么办,一个简单的参数传递才得以搞定,基础知识还是不够牢靠。在得到修改表的数据库内容后未把值传给表格。

虽然这次课程设计付出了大量的时间,但是我知道我得到的收获远远不是这些时间可以衡量的,它将给我今后的学习和工作带来更多的收益。通过对此课题的开发,使我对用Java开发系统有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如没有设置登录界面,没有考虑到异常等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。

弹出登录程序的界面程序

public void actionPerformed(ActionEvent e){

if(e.getSource()==okButton){

String userID=text.getText(); String passWD=String.valueOf(passwd.getPassword()); if(userID.equals("1")&&passWD.equals("1")){

JOptionPane.showMessageDialog(null, "登陆成功!", "消息", JOptionPane.INFORMATION_MESSAGE);

new UserWindow2().userWindow2();//弹出第二个窗体

} else{

JOptionPane.showMessageDialog(null, "对不起您的用户名或密码错误!", "错误",JOptionPane.ERROR_MESSAGE);

text.setText(""); passwd.setText(""); } } if(e.getSource()==deleButton){

text.setText(""); passwd.setText(""); }

} 进行信息查询,修改,删除的程序响应代码:

public void actionPerformed(ActionEvent e){

if(e.getSource()==button1){

new UserWindow3();

} if(e.getSource()==button2){

UserWindow7 u= new UserWindow7(); u.userWindow7(); } if(e.getSource()==button3){ UserWindow5 u=new UserWindow5();

u.userWindow5(); }

public void actionPerformed(ActionEvent e){

if(e.getSource()==button){ int id= Integer.parseInt(text0.getText());//得到用户编号

String name=text1.getText();//得到用户姓名

String sex=text2.getText(); //得到性别

String birthDay=text3.getText(); //得到生日 String department=text4.getText();//得到所在部门 String job =text5.getText();//得到职位

String education=text6.getText();//得到教育程度 String spcialty=text7.getText();//专业技能 String address=text8.getText();//得到地址 String tel=text9.getText();//得到电话

String email=text10.getText();//得到电子邮箱 String state=text11.getText();//得到员工状态 String remark=text12.getText();//得到备注 Insert in=new Insert();//

boolean b;

b=in.insert(id,name,sex,birthDay,department,job,education,spcialty,address,tel,email,state,remark); if(b){ JOptionPane.showMessageDialog(null, "数据保存成功!", "消息", JOptionPane.INFORMATION_MESSAGE); }

} }

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

id = Integer.parseInt(text.getText());

if(e.getSource()==button){ UserWindow8 us = new UserWindow8(); us.userWindow8(id);

}

Container container=this.getContentPane(); container.setLayout(new BorderLayout());

JPanel pan =new JPanel(); JLabel lab = new JLabel("请输入工号:"); JTextField text=new JTextField(10); JButton button =new JButton("查询"); JButton button1=new JButton("删除"); pan.add(lab); pan.add(text); pan.add(button); pan.add(button1); container.add(pan);

String []titles={"员工编号","姓名","性别","生日","部门","职务","教育程度","专业技能","家庭住址","联系电话","电子邮箱"};

String [][]userInfo={};

JTable table =new JTable(userInfo,titles); table.isCellEditable(2,2); JScrollPane scrollpane

=new

JScrollPane(taboooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo......................le);

container.add(scrollpane,BorderLayout.SOUTH);

第7篇:Java程序设计课程设计学生考勤系统

信息与电子工程学院

课程设计报告

课程名称:

姓名: 学号: 班级: 指导老师: 完成时间:

2016年6月 Java程序设计课程设计

学生考勤系统

问题描述:

以班为单位,可以以日期为标识记录每个学生的考勤情况(正常、旷课、请假、迟到、早退)、可以查看某个学生的考勤情况、可以查看全班的考勤情况.

1.需求分析(标题,黑体,小四,段前段后0.5行)

(1)用户需求描述:

学生用户:学生对本系统的主要需求是在线请假以及查看学期内的上课出勤信息。 在线请假中,学生可以随时查看请假的进展情况。另外学生还可以修改本人的密码。

教师用户:任课老师对本系统的主要需求是查看班级信息,查看学生信息。并且在上课前进行点名,管理所教班级学生的上课出勤信息,查看学生上课出勤情况,对学生请假审请进行批准等。另外,教师还可以修改自己的密码。 (2)系统功能划分: 根据用户需求的描述,该考勤管理系统应该具备:在线请假模块,考勤管理模块这两大模块。

在线请假模块:

该模块主要操作用户是由学生,由学生登录并进行请假操作。可以选择请假开始时间,请假结束时间,请假的原因等,最后提交由教师和辅导员进行审核审批,审核通过后学生可以在请假记录里面实时查看请假通过情况。若教师或辅导员不允许该请假,学生可以在请假失败记录里面查看具体原因。

考勤管理模块:

该模块主要由教师登录并进行操作,自己操作界面中修改学生考勤。老师在上课时通过该模块可以对本课程考勤情况进行网上考勤,考勤结果会保存在后台,也可以通过选择导出为E表格,最后方便统计整个学期本课程所有学生的考勤情况。

2.总体设计

功能结构图;

ER图:

数据库设计: 1 数据库需求分析

学生考勤管理系统要实现在线请假、随堂考勤两大子系统,需要了解学生用户、教师用户两类用户的功能模块。然后,据此分析出数据需求。学生表:学生流水号、学生学号、学生名字、性别、宿舍号、联系方式、密码。请假表:请假开始时间、请假结束时间、请假原因、请假天数、审批时间。考勤表:考勤流水号、考勤的学生ID、考勤的课程ID、考勤时间、考勤课次、考勤结果。

3.主要功能的实现

(1)设计的思路: 根据用户需求的描述,该考勤管理系统应该具备:在线请假模块,考勤管理模块这三大模块。

在线请假模块:

该模块主要操作用户是由学生,由学生登录并进行请假操作。可以选择请假开始时间,请假结束时间,请假的原因等,最后提交由教师和辅导员进行审核审批,审核通过后学生可以在请假记录里面实时查看请假通过情况。若教师或辅导员不允许该请假,学生可以在请假失败记录里面查看具体原因。

考勤管理模块:

该模块主要由教师登录并进行操作,自己操作界面中修改学生考勤。老师在上课时通过该模块可以对本课程考勤情况进行网上考勤,考勤结果会保存在后台,也可以通过选择导出为E表格,最后方便统计整个学期本课程所有学生的考勤情况。 用户信息修改模块: 该模块主要操作用户是由学生和老师,由用户登录并进行操作。选择修改用户密码,验证旧的用户密码,输入新的用户密码,并且重复确认输入,点击确定之后,系统修改用户信息并保存。

(2)算法流程图:

(3)UML时序图:

学生输入用户名和密码,系统验证用户名和密码是否正确,如果正确,显示系统主页面。 (4)活动图:

学生登陆系统点击请假申请,然后填写假条信息,填写完成后点击提交,老师审批假条并返回信息给申请者。 (2)程序执行结果

4.小结

课程设计小结:该系统还有较多不完善之处,个人能力也有待进一步的提升。通过这次课程设计,重新掌握了一些以前掌握的不够牢固的知识和一些不懂的方法实现的思路及想法,让我们得到进一步的提高。

第8篇:数据结构课程设计—java通讯录管理系统

import java.io.*; import java.util.*; public class LittleProgram {

static boolean isDelete = true;

static boolean isFind = true;

public static void main(String [] args)//主方法,程序从这里开始运行

throws IOException,NumberNotFoundException

{

int choice=-1;

do{

LittleProgram lp = new LittleProgram();

System.out.println();

System.out.println("

#");

System.out.println();

System.out.println(" 通訊錄管理系统");

System.out.println("

请用号码插入,查找,修改,删除数据");

System.out.println();

System.out.println("

# ");

System.out.print("1.增加号码: "+

"2.查找号码: "+

"3.删除号码: "+ "4.清除所有号码: "+ "5.把号码全部打印到屏幕 "+ "6.把通讯录按号码排序 "+

"7.修改号码 "+

"8.统计通码讯录的总人数 "+

"9.关于作者 "+

"0.退出程序. " +

"输入:");

BufferedReader in =

//从终

new BufferedReader(

//端接

new InputStreamReader(System.in));//收数

String inputLine = in.readLine();

//字选

choice= Integer.valueOf(inputLine).intValue();//项;

switch(choice)

{

case 1: {//1.增加号码

String str = lp.inputData();

lp.addData(str);

System.out.println("增加号码成功.");

timeOut(1);

}break;

case 2: {//2.查找号码

long find = 0;

System.out.print("请输入你要查找的号码:");

BufferedReader inn =

new BufferedReader(

new InputStreamReader(System.in));

String inputLi = inn.readLine();

find = Integer.valueOf(inputLi).longValue();

lp.findData(find);

timeOut(2);

}break;

case 3: {//3.删除号码

long deleteNumber = 0;

System.out.print("请输入你想删除号码:");

BufferedReader bf =

new BufferedReader (

new InputStreamReader(System.in));

String inputL = bf.readLine();

deleteNumber = Integer.valueOf(inputL).longValue();

lp.deleteData(deleteNumber);

if(isDelete)

System.out.println("删除号码成功!");

timeOut(1);

}break;

case 4: {

lp.clearData();//4.清除所有号码

timeOut(1);

}break;

case 5: {

print();//5.把号码全部打印到屏幕

timeOut(2);

}break;

case 6: {

lp.numSort();//6.把号码按号码排序

System.out.println("按照号码从小到大排序成功! "+

"排序后: ");

print();

timeOut(2);

}break;

case 7: {

lp.rewrite();//7.修改号码

timeOut(2);

}break;

case 8: {

int count = lp.count();

System.out.println("共有"+count+"个号码记录.");

timeOut(2);

}break;

case 9: {

System.out.print(" 李雪萍 "+

" 安徽理工大學理學院 "+

" QQ:1154646392 ");

timeOut(4);

}break;

}}while (choice != 0);

System.out.println("Bye! ^-^");

System.exit(0);

}

public String inputData()//从终端接收数据的方法,返回字符串

throws IOException,NumberFormatException

{

System.out.print("请依次输入 :号码 姓名 地址 生日 " +

"每项数据请用空格隔开:");

String all = "";

try{

BufferedReader in =

//从终

new BufferedReader (

//端接

new InputStreamReader(System.in));

//收数

String inputLine = in.readLine();

//据

StringTokenizer str =

new StringTokenizer(inputLine," ");//接收的数据用空格隔开,这个类用来提取每个字符串

long num = Integer.valueOf(str.nextToken()).longValue();//号码

String name = (String)str.nextToken();

//姓名

String add = (String)str.nextToken();

// 地址

String birth = (String)str.nextToken();//出生年月

all = String.valueOf(num) +" , "+

name +" , "+

add +" , "+

String.valueOf(birth);//把所有的数据用" , "隔开然后在连起来放进字符串all

}catch (IOException e){}

catch (NumberFormatException e){}

return all;//返回字符串all

}

public void addData(String str)//增加号码的方法

throws IOException

{

String s1 ="",s2="" ,s3= "";

File file = new File("c:data.txt");

if (file.exists())//如果文件data.txt存在

{

try{

BufferedReader in =

new BufferedReader(

new FileReader(file));

while ((s1=in.readLine())!=null)

s2+=s1+" ";//把文件中的每行数据全部放进一个字符串s2

s2+=str+" ";

//再把s2于形参str相连放进s2

BufferedReader in2 =

//把字符

new BufferedReader(

//串s2也

new StringReader(s2));

//就是原

PrintWriter out =

//文件+

new PrintWriter(

//形参str(新输入的一行数据)

new BufferedWriter(

//重新写进data.txt

new FileWriter(file)));

//覆盖原来的数据

while ((s3=in2.readLine())!= null)

{

out.println(s3);

}

out.close();

//System.out.println("write data true.");

}catch (IOException e){}

}else{

System.err.println("File "data" Missing!");

}

}

public void clearData()//清除data.txt的所有数据的方法

throws IOException

{

File file = new File("c:data.txt");

if(file.exists())//如果文件在

{

try{

PrintWriter out =

new PrintWriter(

new BufferedWriter(

new FileWriter(file)));

out.print("");//在文件data.txt里写进一个空字符,所以清除了原来的内容

out.close(); //关闭文件

System.out.println("clear data true!");

}catch(IOException e){}

}else{

System.err.println("File "data" Missing!");

}

}

public void deleteData(long deleteNumber)//删除某条号码数据

throws IOException,FileNotFoundException

{

isDelete = true;

try{

DataMap mp = new DataMap();//生成一个自己编写的容器

long j=0;

String s1="",s2="",s3="";

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s1=in.readLine())!=null)

{

j=numberTokenizer(s1);

mp.put(j,s1);

}

try{

if(mp.containsKey( String.valueOf(deleteNumber).toString()))

{

mp.remove(deleteNumber);

}else

throw new NumberNotFoundException();

Collection c = mp.values();

Iterator iter = c.iterator();

while(iter.hasNext())

{

s1 = (String)iter.next();

s3 +=s1+" ";

}

BufferedReader in2 =

new BufferedReader(

new StringReader(s3));

PrintWriter out =

new PrintWriter(

new BufferedWriter(

new FileWriter("c:data.txt")));

//System.out.println("delete No"+deleteNumber);

while( (s1 = in2.readLine())!=null)

{

out.println(s1);

} out.close(); }catch (NumberNotFoundException e) {

isDelete = false;

System.out.println(deleteNumber+" no found :(");

}

}catch(IOException e){}

}

public long numberTokenizer(String s)

throws IOException

{

StringTokenizer st =

new StringTokenizer(s," ");

return Integer.valueOf((st.nextToken())).longValue();

}

public void findData(long find)//查找数据

throws IOException,NumberNotFoundException

{

isFind = true;

String s = "",findString =""; long i; DataMap dm = new DataMap(); BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

//in.close();

try{

if(dm.containsKey( String.valueOf(find).toString()))

{

findString = dm.get(find);

System.out.println("学号"+find+"学生的资料是:");

System.out.println(findString);

}else

throw new NumberNotFoundException();

}catch (NumberNotFoundException e){

System.out.println(find+" no found :(");

isFind = false;

}

}

public static void print()//读取文本文件把数据打印到终端的方法

throws IOException

{

try{

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

String read = "";

while ((read = in.readLine())!=null)

System.out.println(read);

}catch(IOException e){}

}

public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能

{

double seconds = sec;

long t = System.currentTimeMillis()+(int)(seconds*1000);

while ((System.currentTimeMillis())

;

}

public void numSort()//按学号排序

throws IOException

{

long i = 0;

String s = "";

try{

DataArrayList dal = new DataArrayList();

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

Collections.sort(dal);

DataMap dm = new DataMap();

BufferedReader in2 =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in2.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

PrintWriter out =

new PrintWriter (

new BufferedWriter(

new FileWriter("c:data.txt")));

Iterator it = dal.iterator();

long temp = 0;

String tempStr = "";

while (it.hasNext())

{

temp = Integer.valueOf((String)it.next()).longValue();

tempStr = dm.get(temp);

out.println(tempStr);

}

out.close();

}catch(IOException e){}

}

public void rewrite()

throws IOException,NumberNotFoundException

{

try{

System.out.print("请输入你要修改的学生号码:");

BufferedReader in =

new BufferedReader (

new InputStreamReader(System.in));

String inputLine = in.readLine();

long num = Integer.valueOf(inputLine).longValue();

findData(num);

if(isFind)

{ deleteData(num); System.out.print("请重新输入该号码:"); String str = inputData();

addData(str);

System.out.println("rewrite true!");

}

}catch(IOException e){}

catch(NumberNotFoundException e){}

}

public int count()

throws IOException

{

DataArrayList dal = new DataArrayList();

try{

String s = "";

long i =0;

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

}catch(IOException e){}

return dal.size();

} } /* *

* @author RangWei * TODO 这是个写的一个容器,继承公共类HashMap * 大概的功能就相当一个数组

*

*/ class DataMap extends HashMap//一个存储数据的Map

{

public void put(long i,String str)//把学号和数据放进这个Map

{

//以后一个学号(key)对应的是一个人的数据(value)

put(String.valueOf(i).toString(),str);

}

public void remove(long i)//接收学号,然后删除学号(key)和它对应的数据(value)

{

remove(String.valueOf(i).toString().toString());

}

public String get(long i)//接收一个学号,然后返回这个key对应的value

{

String s = String.valueOf(i).toString();

if (!containsKey(s))

{

System.err.println("Not found Key: "+s);

}

return (String)get(s);

} } /*

*

* @author RangWei * * TODO 这个类继承ArrayList * 用来按数字排序,在用号码排序时要用到它

*

*/ class DataArrayList extends ArrayList {

public void add(long num)

{

String numToString = String.valueOf(num).toString();

add(numToString);

} } /* *

* @author RangWei * * TODO 增加的一个Exception,主要是在文件里没有要找

* 的号码就抛出

*

*/ class NumberNotFoundException extends Exception {

public NumberNotFoundException()

{} }

第9篇:Java课程设计

统一要求:

设计成品 (按难度自选一个到两个完成)

可分组或单独完成,每组最多两人,19周前交 1设计报告

(1)本程序的功能描述

(2)程序设计思想(数据结构和各功能的实现办法) (3)核心程序清单(应有必要说明) 2结果分析

(1)本程序的局限性及改进方法

(2)应用本程序的设计方法可以编写哪些类似的程序 一:小型通讯管理系统

通讯录管理系统含有:输入 显示 查找 删除

要求

1通讯录的每一条信息包括姓名,单位,电话!(可用数组或数据库) 2输入功能:可以一次完成若干条信息的输入.

3显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示) 4查找功能:完成按姓名查找通讯信息. 5删除功能:完成按姓名删除通讯信息.

6应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

二:个人简历程序:(参照中华英才网http://的创建个人简历的选项)

通过文本框输入姓名,通过单选按钮设置性别,通过组合框选择籍贯(列出省、市),文化程度、出生日期、现居住地。以及填写教育经历、语言及方言等。

请按自行安排界面排版方式,注意美观性。

三:多小球运动程序:

请编写一个多小球运动的程序,要求可以设置每个小球的半径,初始书度,加速度。

当用户点击发射按钮时,程序按指定的弹出一个小球,当小球碰到边界线时,碰撞为完全碰撞。

要求每个小球为一个线程,不考虑小球之间的碰撞。

四:打字小程序。

从屏幕顶端随机落下不同的英文。如果在字符下落的过程中,用户正确输入对应字符,字符消失,加1分;到字符落到底端还没正确输入,扣一分。

给出最宗成绩。程序可设 重新开始,暂停,练习时间,字符出现的数量,速度等。

五:龟兔赛跑

龟兔在同一个圆赛跑,要求可以设置龟兔跑一周的时间,兔比龟快。龟兔同时其跑,当兔快龟一圈时,计算器加1,并显示在屏幕上。 六:学生成绩管理系统。

完成一个班学生的成绩管理。为完成程序功能,至少要有两个这样的功能模块:

l 输入成绩 2 查询成绩

因为查询模块中又分为:

l 按学生查询 2 按课程查询

所以为它们分别编写函数。因为上述这些操作中要输入某位学生和某门课程,所以再编写两个函数来输出数组中的学生信息和课程信息并请用户从中选择:

1显示学生信息从中进行选择 2显示课程信息从中进行选择

系统管理员需要管理系统所有用户的信息,包括用户编号、名称、备注等,可以对其添加删除修改和启用停用等操作。

还需要为系统用户划分角色和权限,保证不同身份的用户进入后可以有不同的权限,如某科目的老师可以录入本科目的成绩,学生只可以有查询权限等。

七:使用ServerSocket和Socket实现服务器支持多客户机通信。当有多个客户向服务器提出时请求时,服务器一端会分别为每个客户从一个包含多行文字的文本文件中读取一行文字,发送给每个客户,直到文件读完文件中所有行,服务器一端发出“bye”并停止运行,客户端也都停止运行。

八:编写一个图形用户界面的应用程序,在窗口中,有一个图片循环地从窗口的左面移动到窗口的右边。当鼠标点击窗口时,图片停止运动,再次点击图片恢复运动。 九:编写程序,在文件中输入若干个单词(每个单词可重复一次或多次)。编程实现统计每个单词重复次数,并对非重复的单词进行排序,将排序结果输出到文件中。 十. JDBC技术的应用

——校园卡信息/学生信息/教师信息/图书信息/宿舍信息/学生会/成绩/课程/教室管理/公务员招考系统的设计实现

以校园卡信息管理、学生信息管理、教师信息管理、图书信息管理、宿舍信息管理、学生会活动管理、成绩管理、教室管理等为例,使用JDBC-ODBC数据库接口,完成对后台数据库的插入、删除、修改、查询等操作。数据库系统可采用Sql Server、Access等,要根据完成的不同功能在数据库系统中定义有关的各种信息表:如在教师信息管理系统中要设计教师基本信息表、教师学习进修情况表、教师奖惩情况表、教师上课情况表等。其他几个子系统中数据表的设计由同学们根据实际的需求自主完成设计。 十一. 文本编辑器的设计与实现

设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。 十二..计算器的设计与实现

设计一个能实现计算器功能的Java程序,可以进行加、减、乘、除(另外可适当加上阶乘、正弦、余弦和指数)运算。 十三. 图象浏览器的设计与实现

设计一个能实现图象浏览与编辑功能的Java程序,包括如下功能:

1)从已有的图象文件列表中选择某一个,即可显示该图象,并可做旋转等变换。 2)在画布区域上可以进行各种规则图形的绘制(如:线段、矩形、多边形、圆等),还可通过鼠标的拖动自由绘图。

3)可以连续播放所选文件夹下的所有图象。 十四: 媒体播放器的设计与实现

利用JMF(Java Media Framework)提供的API,实现图像浏览、音频播放、视频播放功能。

十五:局域网聊天程序的设计与实现

该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。 客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。 服务器端程序:可将消息发送到客户端和接受客户端发送来的信息 十六:基于Web的应用

——网上超市/网上书店/网上花店/网上物流/网上招聘/同学录/网上选课/网上考试系统的设计

应用JSP技术,设计一个类似电子商务、电子政务类的简单应用系统,可以在网上动态展示各类信息,并根据相应的业务流程进行必要的逻辑处理,系统信息可以进行后台维护。需要动态显示的信息要存放数据库中,数据库可以用Sql Server、Access;后台管理要提供对数据库中信息进行动态维护(包括添加、删除、修改)的页面。 十七:益智类小游戏的设计与实现

运用多线程和多媒体技术设计一个简单的益智类小游戏,游戏内容自行构思,不得直接利用网上现有游戏程序,要求有人机交互和界面动画,游戏过程中有声音效果,游戏成绩能记录、显示。

上一篇:幼儿园传染病防治宣传下一篇:展览馆展览大纲