《Java程序设计》课程简介

2024-10-13

《Java程序设计》课程简介(精选8篇)

《Java程序设计》课程简介 篇1

《面向对象程序设计JAVA》课程设计大纲

课程名称:面向对象程序设计JAVA 适用专业:计算机及计算机相关专业

学时数:20(上机实验)学 分: 1 配套教材:《JAVA语言与面向对象程序设计》印旻 编著 清华大学出版社 大纲编写者:周斌 编写日期:2008.2

一、课程设计目的

1、课程设计的教学任务是让学生通过动手动脑解决实际问题,是学生学完课程后进行 的一次全面的综合训练,是一个非常重要的教学环节,通过课程设计,使学生经受一次综合动用所学知识,解决实际问题的方法。

2、使学生掌握使用各种计算机资料和有关参考资料,提高学生的基本设计能力。

3、培养学生理论联系实际和独立思考的能力,并激发学生的实际开发创造的意识和能力。

二、课程设计要求

1、利用JAVA进行应用程序的设计。

2、必须熟悉课程设计的各项内容和要求,明确课程设计的目的、方法和步骤;

3、设计中必须独立地地完成每一阶段的设计任务,禁止抄袭他人的设计成果;

4、所设计的程序必须满足实际使用要求,编译出可执行的程序。

5、要求程序结构简单,功能齐全,使用方便。

三、课程设计内容

课程设计题目:

1、已知银行整存整取存款不同期限的年息利率分别为: 0.63% 期限一年

0.66% 期限二年

年息利率= 0.69% 期限三年 0.75% 期限五年

0.84% 期限八年

要求输入存钱的本金和期限,求到期时能从银行的到的利息与本金的合计。

程序如下:

import java.io.*;public class myWork1 { public static void main(String args[]){ try { int m,n;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));System.out.print(“请输入金额: ”);m=Integer.parseInt(br.readLine());System.out.print(“请输入年限: ”);n=Integer.parseInt(br.readLine());System.out.println();switch(n){ case 1: System.out.println(“得到的总额为 ”+m*(1+n*0.0063));break;case 2: System.out.println(“得到的总额为 ”+m*(1+0.0066*n));break;case 3: System.out.println(“得到的总额为 ”+m*(1+0.0069*n));break;case 5: System.out.println(“得到的总额为 ”+m*(1+0.0075*n));break;case 8: System.out.println(“得到的总额为 ”+m*(1+0.0084*n));break;} } catch(IOException e){ System.out.println(e);} } } 截图如下:

2、输入n值,打印边长为n的空心正六边形,其边由“*”组成。

3、编写一个类,这个类同时求出n个学生成绩的最高分、最低分、平均分以及超过平均分的人数,并编写主类完成:(1)输入n个学生的成绩;(2)调用此类进行统计;(3)输出统计结果。

4、编程实现实时动态运行的模拟时钟。以下题目选做:

5、编程实现约瑟夫问题。8个人站成一圈,从第1个人开始报数,报到5的人出圈,第6个人再从1开始报。依次类推,求出圈的序列。

6、编程实现俄罗斯方块游戏。

说明:可以自行选择其他设计题目

四、编写课程设计报告书

课程设计报告书要求:

1、文字叙述清楚,结构结构简洁明了,理论正确,程序功能完备。

2、设计说明书要求文字工整,书写整齐。

3、附参考资料名称说明。

4、课程设计报告主要内容: 1)题目 2)问题需求分析 3)总体设计 4)详细设计

5)测试数据和调试报告 6)小结

五、成绩评定方式

根据平时设计完成质量和课程设计报告确定成绩。分优秀、良好、中等、及格、不及格五档。

《Java程序设计》课程简介 篇2

“Java程序设计”是计算机相关专业教学体系中的一门重要课程, 重点培养学生Java技术体系中的基础知识。目前的“Java程序设计”课程在实际教学中主要存在以下几个方面的问题:

(1) 学生普遍反映对Java程序设计有兴趣, 但同时也畏难。学生的兴趣来源于实际就业需要, Java的广泛应用是学生们想学习Java的主要原因。学生们通常对编程没有足够的了解, 在初学编程时, 很少会有学生真的因为爱好编程而学习Ja va。

由于程序设计不仅要求设计者具有很强的逻辑思维能力, 思路清晰, 也要求设计者能不断自我学习, 适应现代编程技术的变化。这对一些学生造成了学习压力, 进而导致这些学生畏难, 害怕编程。

(2) 希望获得更多实用技能和动手能力的培养。“Java程序设计”在课程改革以前, 主要通过传统的语言教学方法来进行, 在内容上从了解语言特征入手, 重点强调基础Java语法。尽管在实践教学中逐步引入了案例教学, 不过仍缺乏如何运用Java完成实际项目的内容。另外, 教学内容中也欠缺一些与编程相关的能力培养。包括使用参考文档的能力、使用开发工具的能力、debug的能力和项目部署的能力等。虽然这些内容均不属于传统教学范围, 但都是学生在实际动手环节中必须用到的能力。因此有必要在“Java程序设计”教学内容和方法上做一些调整, 以促进学生实用技能的提高。

2“Java程序设计”教学改革

2.1 课堂教学改革

为提高教学质量, 提高学生学习兴趣, 目前在“Java程序设计”的课堂教学中, 教学内容按难易程度被重新组织, 简化了难度较大但实用性不大的内容, 然后将与程序设计相关的一些技能如项目配置、部署和测试等引入到课堂教学内容中来。

(1) 合理安排教学内容, 引入项目教学法。目前的“Java程序设计”教学内容定位于Java SE知识范围之内, 而通用的教材中所包含的内容往往只是Java SE的一部分。如果完全按照教材上的知识点组织以及顺序讲解, 那么一方面学生将难于借助阶段性的学习内容完成小型项目, 其次某些知识点如流控语句等, 可能和其它语言的教学内容发生重复, 会导致学生感到乏味。因此为提高教学质量, 在实践中我们从教学内容和教学方法两方面入手进行了改革。

首先, 在内容上对全部Java SE知识点按类别以及难易程度加以区分。然后依据项目实践需要和学生能力水平, 精心选择具体的教学范围, 安排知识点的教学次序。实践中我们将“Java程序设计”的教学内容分成了基础部分、高级部分和扩展部分3类。其中基础部分注重Java语言的核心语法, 采取初期了解, 后期通过项目强化记忆的方法进行教学。高级部分与项目实践有紧密联系, 在课堂上借助小型项目重点讲解。扩展部分包括项目实践相关技能, 穿插到课堂、实验和练习中以帮助学生提高项目实践能力。

其次, 在实践教学中引入项目教学法。项目教学法是指在一个教学过程的某一个阶段, 借助项目来完成教学目标的活动。项目教学法通常将学生分成不同的小组, 完成一个具体项目的开发工作。在“Java程序设计”教学实践中, 选取了“数独”、“二维魔方”等常见的小型游戏程序作为项目教学的主要内容, 串联全部基础以及部分高级知识点, 按由易到难的次序进行讲解。然后以学生为主体, 参考老师讲解的内容分组完成目标项目。通过这种形式全面培养了学生分析问题和解决问题的能力。

(2) 通过小型案例讲解独立知识点, 以案例模仿的形式促进学生动手能力。在“Java程序设计”课堂教学中采用了案例教学方法对每一个单一知识点进行教学。选取的案例都尽可能小而精, 针对特定问题。例如讲解循环和条件时, 通过一个猜数字的游戏程序说明循环和条件在Java程序中的使用。在讲解类和对象时, 通过一个骑车程序来讲解类、对象、属性和行为之间的关系。为了达到更好的案例教学效果, 我们不仅要求学生读懂课上的案例, 还要求学生在练习和实验中以教学案例为模板, 通过模仿、修改、完善模板等形式来锻炼读写程序的能力。这样不仅能帮助学生巩固已学的知识, 同时也能帮助学生提高自学能力和设计能力, 强化案例教学的效果。

2.2 实验教学的改革

实验课是“Java程序设计”课程的重要组成部分, 是通过实际的上机操作来巩固和强化课堂上的理论知识的重要手段。目前的实验课内容往往全部来源于实验教材, 并且多数实验的类型属于独立完成的验证型实验。实践中我们借鉴国外大学的实验课的组织, 通过如下手段改进了实验教学过程。

(1) 增加综合性、设计性实验促进学生动手能力。首先将“Java程序设计”实验内容按难度分成基础复习、前后综合和提高3部分内容, 并按照一定比例组织, 如3:6:1。在基础复习部分, 主要以最近的课堂教学内容为基础, 在提供必要的参考资料、实验工具和实验方法后, 以验证型实验为主, 要求学生熟悉课堂教学内容。在前后综合部分, 以综合和设计型实验为主, 要求学生将以前所学的全部知识综合运用, 通过查阅参考资料, 设计出合乎目标要求的程序, 最终达到复习以前知识、提高动手能力的目的。在提高阶段, 以综合型实验为主, 要求学生提前了解一部分课堂上涉及较少的知识, 以提高学生的自学和研究能力。这样的实验安排表面上只花了少量的时间对基础内容进行复习, 但实际上每次综合阶段的实验都是对以前所学的一次强化。学生可以对以前所学的知识做到融会贯通。另外综合和设计型实验也迫使学生必须参与思考、研究和自主学习。因此这样一种安排可以显著提高学生学习能力。

(2) 采用分组实验组织形式。在实验的组织形式上, 除了采用独立实验对知识点进行强化熟悉之外, 我们在实践教学中也仿照国外大学补充了少数分组实验, 以完成小型任务为目标, 锻炼学生合作和设计能力。在分组实验中, 学生以3个人左右的小规模进行分组, 这样一方面可以保证每个学生都有动手实践的机会, 同时也能充分参与合作。学生个人的最终成绩取决于团队的最终成绩、个人在团队中的贡献以及教师对个人表现的评价。分组实验中通过竞争机制和团队成员的交流可以促进学生学习兴趣和提高团队合作能力。

3 实践效果与总结

在07至08年的实践教学过程中, 以上的系列改革措施在个别班级的实践教学中采用, 并同其它同年级没有采用改革措施的班级进行了跟踪比较。通过一段时间对学生上课情况的观察以及学习成绩的反馈, 发现在采用了改革措施的班级中, 学生的学习兴趣有明显提高, 学习成绩普遍比没有采用改革措施的班级提高5%~10%。另外在采用了新措施的班级中, 学生不仅积极完成课内任务, 同时也开始主动自学, 共同讨论和研究一些知识点, 学习气氛浓厚。特别是设计型实验以及Greenfoot等工具的引入, 激发了学生的学习兴趣和设计热情, 起到了非常理想的实践教学效果。事实证明, 这些改革措施不仅可以帮助学生对Java编程基础知识全面学习, 同时也能锻炼实际动手能力, 激发学习兴趣, 提高实践教学质量。

参考文献

[1]全成斌, 杨士强, 赵有健.计算机工程实践教学的改革与探索[J].计算机教育, 2008 (4) .

《Java程序设计》课程简介 篇3

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

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2013)01-37-03

Pondering over teaching of “java programming designing”

Lan Wenfei, Li Zimao

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

Abstract: Java is becoming one of the most popular object-oriented programming languages in developing areas based on Internet and one of the core programming curriculums for universities. In this paper, some Java teaching problems are discussed, such as the choice of teaching materials, the choice of developing environment, filtering of teaching content, using of teaching method, design of the teaching cases. The feasible ideas for above are given.

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

Java课程设计报告 篇4

课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 指导教师 刘科峰

2014 年 10 月 29

日 一.设计内容

自学Swing图形界面设计和数据库程序设计。开发用于某单位的人事管理系统。该系统要求实现以下功能:

1.员工信息管理包括:员工信息一览表、新员工的建立、修改 2.薪资福利管理:考勤与薪资的连动计算、薪资与福利的设置

3.考勤假期管理:考勤项目录入, 实现考勤信息的查询、统计、汇总 4.人事报表管理:按照员工性别,数目,薪酬自动生成相关报表, 可自定义统计分析条件并可对历史报表进行管理。

设计亮点

1.null布局方式

Swing图形界面设计中有很多布局方式,通过本次学习了解到了FlowLayout,BorderLayout,GridLayout以及null布局,就这四种布局方式而言,null布局的优点在于可以将组建的位置精准到坐标值,可以把组件放到任意想放置的位置,另外可以通过null去设置组件的大小,相较于其他布局方式来说是一个很大的优势。但同时它的缺点在于不能根据Frame的大小变化而改变位置。

2.组件部分属性的设计

Swing中有很多方法是用来实现组件属性设置的,比如button.setVisible(false);按钮通过调用这个方法实现不可见,这是我此次课程设计中的一个亮点,因为组件是没有设置大小的方法的,只有依靠于相应的布局方式才能改变它的大小,通过设置多几个按钮设为不可见,将所要可见按钮实现大小以及位置的控制是一种很好的方法。

二、设计方案

1主界面(只列出界面设计方面的代码)

JPanel panel=new JPanel();JTable table=null;JButton ibtn=new JButton(“员工信息”);JButton cbtn=new JButton(“考勤管理”);JButton mbtn=new JButton(“薪资管理”);JButton tbtn=new JButton(“人事报表”);ImageIcon rtou = new ImageIcon(“rentou.jpg”);

JLabel imgLabel=new JLabel(rtou);

//上面代码定义了一个面板与四个标签,并引入了一个图片

panel.setLayout(new FlowLayout());//设置面板为流布局

panel.add(ibtn);panel.add(cbtn);panel.add(mbtn);panel.add(tbtn);panel.setBackground(Color.GRAY);

//将按钮加到面板中,设置面板为灰色

this.add(imgLabel,BorderLayout.CENTER);this.add(panel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*图片标签以边框布局放置在中间,将面板也以边框布局放置在下面,可见,灰色,点击关闭程序*/

(2)查询员工界面(只列出界面设计方面的代码)

Label idlabel = new JLabel(“ID”);JLabel namelabel = new JLabel(“姓名”);JLabel bumenlabel = new JLabel(“部门”);JLabel zhiweilabel = new JLabel(“职位”);

JTextField idfiled = new JTextField(8);JTextField namefield = new JTextField(8);JComboBox bumenbox =new JComboBox();JComboBox zhiweubox = new JComboBox();

JButton btn=new JButton(“查询”);JButton ibtn=new JButton(“添加”)

JPanel spanel=new JPanel();JPanel vpanel=new JPanel();

/*定义和各个组件,4个标签,两个文本框,两个复选框,两个按钮,两个面板容器*/ spanel.setLayout(new FlowLayout());

vpanel.setLayout(new FlowLayout(FlowLayout.CENTER,45,25));

bumenbox.addItem(“");

bumenbox.addItem(”管理部“);

bumenbox.addItem(”生产部“);

bumenbox.addItem(”业务部“);

zhiweubox.addItem(”“);

zhiweubox.addItem(”部长“);

zhiweubox.addItem(”副部长“);

zhiweubox.addItem(”普工“);

spanel.add(idlabel);

spanel.add(idfiled);

spanel.add(namelabel);

spanel.add(namefield);

spanel.add(bumenlabel);

spanel.add(bumenbox);

spanel.add(zhiweilabel);

spanel.add(zhiweubox);

spanel.add(btn);

vpanel.add(ibtn);

spanel.setBackground(Color.GRAY);

vpanel.setBackground(Color.GRAY);

//将各个组件放进对应面板,设置相关属性

this.add(spanel,BorderLayout.NORTH);

this.add(vpanel,BorderLayout.SOUTH);

this.setBounds(300, 180, 600, 350);

this.setVisible(true);

this.getContentPane().setBackground(Color.GRAY);

//将面板以边框布局放入框架中,设置属性(3)增加员工信息界面

JPanel panel=new JPanel();

JLabel timeLabel=new JLabel(”时间“);JLabel allnumLabel=new JLabel(”员工总数“);

JLabel staffMoLabel=new JLabel(”考勤“);JLabel entryLabel=new JLabel(”全勤“);

JLabel quitLabel=new JLabel(”缺勤“);JLabel mwLabel=new JLabel(”性别比例“);

JLabel manLabel=new JLabel(”男“);

JLabel womanLabel=new JLabel(”女“);JLabel proportionLabel=new JLabel(”男女比例“);JLabel distributionLabel=new JLabel(”人员部门分布“);JLabel mdpLabel=new JLabel(”管理部“);

JLabel pdpLabel=new JLabel(”生产部“);JLabel bdpLabel=new JLabel(”业务部“);JLabel xmLabel=new JLabel(”项目“);JLabel xzLabel=new JLabel(”细则“);JLabel stLabel=new JLabel(”数据统计“);

JTextField timeFiled = new JTextField(8);

JTextField allnumFiled = new JTextField(8);JTextField entryFiled = new JTextField(8);JTextField quitFiled = new JTextField(8);JTextField manFiled = new JTextField(8);JTextField womanFiled = new JTextField(8);JTextField proportionFiled = new JTextField(8);JTextField mdpFiled = new JTextField(8);JTextField pdpFiled = new JTextField(8);JTextField bdpFiled = new JTextField(8);// 定义所需组件

public Selectrenshi(String tablename){

super(”人事管理“);

panel.setLayout(null);

panel.setBackground(Color.GRAY);

panel.add(xmLabel);

panel.add(xzLabel);

panel.add(stLabel);

panel.add(timeLabel);

panel.add(timeFiled);

panel.add(allnumLabel);

panel.add(allnumFiled);

panel.add(staffMoLabel);

panel.add(entryLabel);

panel.add(entryFiled);

panel.add(quitLabel);

panel.add(quitFiled);

panel.add(mwLabel);

panel.add(manLabel);

panel.add(manFiled);

panel.add(womanLabel);

panel.add(womanFiled);

panel.add(proportionLabel);

panel.add(proportionFiled);

panel.add(distributionLabel);

panel.add(mdpLabel);

panel.add(mdpFiled);

panel.add(pdpLabel);

panel.add(pdpFiled);

panel.add(bdpLabel);

panel.add(bdpFiled);

//将组件加到相应面板中

xmLabel.setBounds(120,20,100,30);

xzLabel.setBounds(240,20,100,30);

stLabel.setBounds(360,20,100,30);

timeLabel.setBounds(120,50,100,30);

timeFiled.setBounds(360,50,100,30);

allnumLabel.setBounds(120,100,100,30);

allnumFiled.setBounds(360,100,100,30);

staffMoLabel.setBounds(120,150,100,30);

entryLabel.setBounds(240,150,100,30);

entryFiled.setBounds(360,150,100,30);

quitLabel.setBounds(240,200,100,30);

quitFiled.setBounds(360,200,100,30);

mwLabel.setBounds(120,250,100,30);

manLabel.setBounds(240,250,100,30);

manFiled.setBounds(360,250,100,30);

womanLabel.setBounds(240,300,100,30);

womanFiled.setBounds(360,300,100,30);

proportionLabel.setBounds(240,350,100,30);

proportionFiled.setBounds(360,350,100,30);

distributionLabel.setBounds(120,400,100,30);

mdpLabel.setBounds(240,400,100,30);

mdpFiled.setBounds(360,400,100,30);

pdpLabel.setBounds(240,450,100,30);

pdpFiled.setBounds(360,450,100,30);

bdpLabel.setBounds(240,500,100,30);

bdpFiled.setBounds(360,500,100,30);

//采用null布局,设置组建坐标值

this.add(panel,BorderLayout.CENTER);

this.setBounds(300, 100, 600, 600);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.getContentPane().setBackground(Color.GRAY);

//将面板放入框架,设置相应属性(4)员工考勤界面

JLabel idlabel = new JLabel(”ID“);JComboBox idbox =new JComboBox();CheckTable model = null;

JButton wbtn=new JButton(”修改“);

JButton cbtn=new JButton(”查询“);JButton mbtn=new JButton(”创建薪资表“);JButton rbtn=new JButton(”创建人事表“);

JScrollPane scrollpane = null;JPanel spanel=new JPanel();JPanel vpanel=new JPanel();JTable table=null;spanel.add(idbox);panel.add(wbtn);spanel.add(cbtn);vpanel.add(mbtn);vpanel.add(rbtn);spanel.setBackground(Color.GRAY);vpanel.setBackground(Color.GRAY);this.add(spanel,BorderLayout.NORTH);this.add(vpanel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY);

(5)选择考勤表界面

JLabel checklabel = new JLabel(”选择考勤表“);JLabel newlabel = new JLabel(”创建考勤表“);JComboBox timebox =new JComboBox();JTextField newfield = new JTextField();JButton btn=new JButton(”确认“);JButton nbtn=new JButton(”创建");JPanel spanel=new JPanel();spanel.add(checklabel);

spanel.add(timebox);

spanel.add(btn);

spanel.add(newlabel);

spanel.add(newfield);

spanel.add(nbtn);

checklabel.setBounds(30,90,100,30);

timebox.setBounds(180,90,100,30);

btn.setBounds(360,90,100,30);

newlabel.setBounds(30,200,100,30);

newfield.setBounds(180,200,100,30);

nbtn.setBounds(360,200,100,30);

this.add(spanel);

this.setBounds(300, 180, 600, 350);

this.setVisible(true);

三、结果和数据处理

四、结论

1.Swing图形界面

图形用户界面(GUI)是程序不可或缺的一部分,它便于用户和程序的交互。在Swing界面中是以Frame为框架,采用合理的布局方式(FlowLayout,BorderLayout,GridLayout,null),将Panel加入框架之中,而实现界面的各个组件将调用各种方法设置自身属性实行可视化界面以及加入到面板之中。再通过事件监听器实现事件的监听预处理机制。

2.数据库

在这次课程设计中哦我主要负责Swing图像界面,对于数据库只做了最简单的了解。程序中采用了最流行的关系型数据库mysql,雪化了mysql的建立,删除,与修改以及使用sql语言对数据库进行一些简单的操作,将按钮等设置的监听事件与数据库相连接。

五、问题与讨论

1.组件的方法调用

在这次课程设计中,用到了很多的组件,例如Button,Jlabel,TextField,ComBox,等。Swing图形界面也确实提供了很多方法去设置相关组件的属性,例如label.setVisible(false);设置标签不可见等很多方法,只要查看API文档几乎就能实现很多功能,但是对于按钮等最常见的组件来说设置大小如果不依靠相关布局方式很难设置,我在程序中之所以运用了很多的bull布局方式就是为了实现组件大小的设置,如果说能有一个方法直接设置组件大小而不受其他组件或容器影响就能使代码很简洁了。2.相对布局

《Java程序设计》课程简介 篇5

设计课题名称..........................................................................1 二 设计目的与意义......................................................................1 三

系统描述..................................................................................1 四

运行环境..................................................................................1 五

系统的分析与设计..................................................................1

5.1

创建骑士游历程序......................................................................................................2 5.2

程序的基本组成............................................................................................................3 5.3

程序结构说明................................................................................................................3 5.4

AccessibleSquare算法实现.........................................................................................4 5.5

图形化界面....................................................................................................................5 5.6

主调用程序的设计和开发............................................................................................6 5.7 程序的源程序..................................................................................................................7

运行结果..................................................................................14 七

总结..........................................................................................16 八 参考文献....................................................................................19

设计课题名称

骑士游历程序的开发 二 设计目的与意义

Java是目前最流行的软件开发语言之一,有Sun Microsystem 公司推出,成为网络上的“世界语”。Java适合开发基于多媒体、与平台无关、面向对象的方法进行的基于Internet、Intranet、Extranet的Applet和应用程序。Java课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是学习完《Java程序设计》课程后进行的一次全面的综合练习。其目的在于通过课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对Java 编程的基础理论知识的理解,培养学生综合运用所学理论解决实际问题的能力,使学生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。

系统描述

骑士游历问题是一个古老而著名的问题,它最初是由大数学家Euler提出的.问题是这样的:国际象棋中的棋子(叫作骑士)在一个空棋盘内移动,问它能否经过64格中的每一格且只经过一次?(骑士按L行移动,即在某方向前进两格接着在与原方向垂直的方向上前进一格)本程序实现了骑士游历问题的求解,并能够演示起始位置在棋盘上任何位置的游历问题的实现.程序采用动态的图形演示,使算法的描述更形象,更生动,使教学能产生良好的效果.本程序采用Applet来编制整个程序,这样既可以使大家对算法的实现有了一定的了解,也可以熟悉一下Java图形界面, Applet以及Java语言的命名规范.作为本书的第一例子,希望能让大家熟悉Java的基本语言结构和强大的开发能力.在骑士游历的课程设计中,我们严格按照面向对象的思想进行开发,其中有AccessibleSquare 类,MyPanel类和KnightsTour类.读者应注意各个类之间的关系,以便更深入地理解Java中类的思想.四

运行环境

本程序是在windows xp,JBuild 9的环境下运行的.五

系统的分析与设计

此次骑士游历问题,在JBuild 9集成开发环境下完成编写调试等工作.JBuilder是Borland公司开发的针对java的开发工具,使用JBuilder将可以快速,有效的开发各类java应用,它使用的JDK与sun公司标准的JDK不同,它经过了较多的修改,以便开发人员能够像开发Delphi应用那样开发java应用。

JBuilder的核心有一部分采用了VCL技术,使得程序的条理非常清晰,就算是初学者,也能完整的看完整个代码。JBuilder另一个特点是简化了团队合作,它采用的互联网工作室技术使不同地区,甚至不同国家的人联合开发一个项目成为了可能。

Jbuilder 9是功能强大的可视化Java集成开发工具,可以快速开发包括复杂企业级应用系统的各种Java程序,包括独立运行程序、Applet程序、Servlet、JSP、EJB、Web Service等,最新的Jbuilder 9版本支持Sun的J2SE 1.4和J2EE 1.4。使用可视化工具开发程序有很多好处,其中最显著的是能够快速生成程序框架、设计图形界面、调试程序等,此外Jbuilder 9内置了对一些企业级服务器的支持,包括Borland服务器、Bea公司的WebLogic服务器、IBM的WebSphere服务器和iPlanet服务器。Jbuilder 9在以前版本的基础上,增强和增加了许多功能。

JBuilder9的代码预览功能(CodeInsight)可以在编辑器中显示一个与上下文相关的弹出窗口。它可以帮助用户快速、准确地编写Java代码。例如,单击一个对象,马上在相应位置出现其所有的属性和方法等内容,用户可以快速地选择所需要的内容。代码预览功能可帮助用户显示与上下文相关的数据成员与方法列表(MemberInsight)、当前代码中要使用的方法的参数列表(ParameterInsight)、可以通过当前类路径访问的类列表(ClassInsight)、结构窗口中的错误(ErrorInsight)以及在调试时显示变量值及表达式的值。

5.1

创建骑士游历程序

在对Jbuilder9的基本常识有了初步的了解后,就可以起步创建骑士游历程序了。

创建过程如下:

(1)单击桌面图标,启动Jbuilder9开发平台进入一个新的工程界面。

(2)命名新的工程并保存文件,方法是单击菜单FileNew Project,出现一个对话框窗口,将工程名为Knighttour,选择保存工程文件目录之后,单击Finish按钮完成骑士游历工程的创建。

5.2

程序的基本组成

下面着重介绍一下骑士游历程序的界面、程序结构以及程序效果显示图。程序运行的界面上主要包括6个按钮:

(1)Info:帮助信息。(2)Start:开始游历。(3)Stop:停止游历。(4)Exit:退出游历。

(5)NextTour:重新开始一个新的游历。(6)NextMoving:骑士要走的下一步

5.3

程序结构说明

整个程序界面由三部分组成,上方是由Info、Start、Stop和Exit四个按钮的工具栏,可以执行相应的操作;中间是骑士游历效果显示图,动态演示骑士游历的过程;最下边一排是Next Tour和Next Moving两个按钮,单击Next Tour按钮,可重新开始一个新的游历,单击Next Moving按钮,可显示骑士要走的下一步。如图 5-1 所示。(这是骑士在第一个格子起始位置进行游历的情况,如果想在其他位置开始游历,直接单击Next Tour按钮就可以了,程序实现的骑士骑士位置的方式是按照顺序从第一列第一个开始、直到组后一列、最后一行)。

另外,可以由边框颜色的不同,判断骑士初始的位置、上一步所走的位置和现在所处的位置。单击Next Moving按钮可以显示骑士游历的下一步。连续单击直到64个格子全部走完,可以清晰地显示整个游历的过程。图5-2显示的是骑士起始位置在第一个格子的游历的一个中间状态。当然,骑士可以在棋盘的任何位置开始,操作者可以自己运行程序,以获得更深的认识。

图5-1 骑士在第一个格子的请况

图5-2 骑士在第一个格子游历的中间状态

本程序由三个类组成一个工程文件.其中KnightsTour是主类,或者说是控制类, AccessibleSquare类主要是算法实现, MyPanel实现图形化显示结果.程序的运行关系如图5-3.图5-3 程序运行关系图

5.4

AccessibleSquare算法实现

AccessibleSquare类主要是算法实现,采用启发式算法.先把八个可能走的方向用两个数组(horizontal[ ]和vertical[ ])表示出来,选择走哪个方向就在原坐标上进行相应的加法,表示骑士到了一个新的位置.horizontal[ ]和vertical[ ]表示骑士8个方向走L形状所需的X坐标和Y坐标的变化量: horizontal[] = {2,1,-1,-2,-2,-1,1,2}, vertical [] = {-1,-2,-2,-1,1,2,2,1}.坐标图如下: 5 7 8 4 3 2 1

图5-4

骑士游历走向坐标图

(1)

由于程序采用启发式算法,应考察每一方格的可到达性.使用数组accessibility []表示可达到数,并当骑士游历时,程序动态修正剩余格子的可达到数.accessibility [ arrayPos ] = 0 表明格子已经被占据.(2)

使用冒泡法来查询最小数.冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数,将大数放前,小数放后,此时第一趟结束,在最后的数必是所有数中的最小数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将大数放前,小数放后,一直比较到最小数前的一对相邻数,将大数放前,小数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。由于在排序过程中总是大数往前放,小数往后放,相当于气泡往上升,所以称作冒泡排序。

5.5

图形化界面

由于目前用户对界面的要求逐步提高,因此,现在的可视化编程已经取代了传统的用户界面的设计方法。而在可视化编程中,人机之间的直接联系主要是通过一些窗口和对话框来实现。JBuilder9也不例外,它也是通过这些窗口和对话框来实现窗体。用户需要的控件则可以直接放置在窗体上,利用这些控件来实现复杂的功能。

用户界面设计器是用户在编写程序过程中最常用到的工具。用户在进行界面设计时,只需单击文件视图标签中的Design页,就会出现该用户界面设计

器。用户可以利用JBuilder提供的各种控件来搭建自己的程序界面。而且同时,JBuilder9还为这些界面自动生成了相应的代码,为用户提供了程序的环境。接下来,就要由用户设置属性,来编写一些实现用户特定功能的代码。这在很大程度上减少了用户界面设计的复杂度,使用户的主要精力投入到如何实现和加强功能上来。

本程序是Applet的图形界面以及如何利用图形用户界面的控件接受用户信息,并用图形或图像显示结果.(1)

MyPanel函数实现图形化显示结果, MyPanel类就是画图类.首先用两种不同颜色的方块(WHITE和BIACK)显示出棋盘,还有其他两种方块(WKNIGHT和BKNIGHT),这两种方块上都有骑士,但颜色不一样.在骑士游历过程中不断用后来两种有骑士的方块代替前两种方块,其中需要注意的是保持棋盘的颜色一致性.如5-3图所示.将其设置为静态变量,方便使用,防止修改时出错.5-5 骑士游历游戏中的棋盘用图

(2)

其次就是要显示骑士起始位置,刚走过的步的位置和现在的位置,用边框的不同来加以区别,采用函数g.setColor(Color.green)(刚走过的步显示为绿色)和g.setColor(Color.biue)(当步显示为蓝色)实现.这个类的对象在主类KnightsTour中被实例化.5.6

主调用程序的设计和开发

KnightsTour类是控制类,它完成对算法类和画图类的调用.由于JAVA的GUI编程是事件驱动的,因此在KnightsTour类中,通过监听前面介绍的几个Button的事件相应,完成程序的调用过程.采用二维数组表示初始位置位于某个位置的可达到数, 即以棋盘任意一点为初试位置,骑士游历完整个棋盘的路径数.利用access[][]数组来表示这个二维数组.{ 2, 3, 4, 4, 4, 4, 3, 2 },{ 3, 4, 6, 6, 6, 6, 4, 3 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 3, 4, 6, 6, 6, 6, 4, 3 },{ 2, 3, 4, 4, 4, 4, 3, 2 }};

本程序中在KnightsTour类中添加了两个按钮 JButton nextMoving = new JButton(“下一步”);

JButton nextTour = new JButton(“新起点重新开始”);用于用户对游戏进行操作,这两个按钮分别有事件响应.5.7 程序的源程序

package gao;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.image.*;public class KnightsTour extends JApplet {

// 初始位置位于某个位置的可达到数采用二维数组表示

//即以棋盘任意一点为初试位置,骑士游历完整个棋盘的路径数

public static int access[][] = {

{2,3,4,4,4,4,3,2},{3,4,6,6,6,6,4,3},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{3,4,6,6,6,6,4,3},{2,3,4,4,4,4,3,2}};

public static int accessbak[][] = arrayCopy(access);

int countMoving =-1;

int tourXpos [] = new int [ 64 ];//游历中,X,Y都有64个位置

int tourYpos [] = new int [ 64 ];

private int recordXpos [][];

private int recordYpos [][];

private int recordCount =1){

recordCount ++;

} else { recordCount = 0;}

myPanel.initboard(recordXpos [ recordCount ] ,recordYpos [ recordCount ]);

myPanel.repaint();

}

});//end call to addActionListener

}

public void paint(Graphics g)

{ super.paint(g);

} }//end of class KnightsTour class AccessibleSquares { //骑士8个方向走L形状所需的X坐标和Y坐标的变化量

private static int horizontal[] = {2,1,-1,-2,-2,-1,1,2};

private static int vertical [] = {-1,-2,-2,-1,1,2,2,1};

private int xpos[];//骑士所处X轴的坐标

private int ypos[];//骑士所处y轴的坐标

private int accessibility [];//表示可达到数

private int ownxpos ,ownypos;

private int ownAccessibility;

private int arrayPos;

private int countAccessibility;

public AccessibleSquares(int x , int y){//构造函数

int testXPos;

int testYPos;

xpos = new int [ 8 ];//骑士所处X轴的坐标

ypos = new int [ 8 ];

accessibility = new int [ 8 ];

arrayPos = 0;

ownxpos = x;

ownypos = y;

ownAccessibility = KnightsTour.access[ x ][ y ];

for(int i = 0;i < horizontal.length;i++){//有八种到达的情况

testXPos = x + horizontal[ i ];//得出X,Y坐标的测试位置

testYPos = y + vertical [ i ];

if((testXPos >= 0)&(testXPos < 8)&

(testYPos >= 0)&(testYPos < 8)){//判断测试位置是否在棋盘内

xpos [ arrayPos ] = testXPos;//由测试位置给出正确X,Y坐标

ypos [ arrayPos ] = testYPos;

accessibility [ arrayPos ] = KnightsTour.access [testXPos][testYPos];

//利用对应的X,Y坐标得出相应的可到达的路径总数

// accessibility [ arrayPos ] = 0 表明格子已经被占据

if(accessibility [ arrayPos ] > 0)

arrayPos ++;

}//寻找空格子结束

}// 结束for循环,寻找结束

countAccessibility = arrayPos;//统计可达到数

if(countAccessibility > 0)

{sortAll();}

arrayPos =-1;

}

public boolean hasMoreAccessible(){

// arrayPos + 1 指向下一个可行的

if((arrayPos + 1)< countAccessibility){

return true;} else { return false;}

}// hasMoreAccessible()方法结束

public AccessibleSquares nextAccessible(){

arrayPos ++;

return this;

}

public AccessibleSquares accessibleAt(int pos){

if((pos >= 0)&(pos < countAccessibility))

arrayPos = pos;

return this;

}

public int getXpos(){

return xpos[ arrayPos ];

}

public int getYpos(){

return ypos[ arrayPos ];

}

public int getAccessibility(){

return accessibility[ arrayPos ];

}

public int getTotalAccessible(){

return countAccessibility;

}

//冒泡排序法.冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。

private void sortAll(){

for(int begin = 0;begin < countAccessibility1){

displayCount ++;

chessboard [ xrecord [ displayCount ] ][ yrecord [ displayCount ] ] += 2;

repaint();

}

}

public void paintComponent(Graphics g){

//用于显示运行时态的颜色

for(int row = 0;row < 8;row ++){

for(int column = 0;column < 8;column ++){

images[ chessboard[ row ][ column ] ].paintIcon(this , g, 40 * row,40 * column);

}//end of inner for

}//end of outer for

if(displayCount > 0){

lastxpos = xrecord [ displayCount 1];

nextxpos = xrecord [ displayCount ];

nextypos = yrecord [ displayCount ];

g.setColor(Color.green);

g.drawRect(40 * xrecord [ displayCount1 ] + 2, 36, 36);

g.setColor(Color.green);//刚走过的步显示为绿色

g.drawRect(40 * xrecord [ displayCount ] + 2 ,40 * yrecord [ displayCount ] + 2, 36, 36);

g.setColor(Color.blue);//当前步显示为蓝色

g.drawRect(40 * Math.min(nextxpos, lastxpos),40 * Math.min(nextypos, lastypos),(Math.abs(nextxposlastypos)+ 1)* 40);

}//end of if

g.setColor(Color.red);//起始位置显示为红色

g.drawRect(40 * xrecord [ 0 ] + 2,40 * yrecord [ 0 ] + 2, 36, 36);

}// end of the method paintComponent }

运行结果

程序能正常运行,并得出正确的结果,其运行结果如下.图 6-1骑士游历游戏进入界面

图 6-2骑士游历游戏以(1,1)为起点运行图

图 6-3骑士游历游戏以(6,3)为起点

图 6-4 骑士游历游戏以(6,3)为起点运行图

总结

这一周的java课程设计,我收获了很多,学到了很多知识,同时也发现了自己许多的不足。

通过骑士游历程序的设计,初步熟悉了Jbuilder集成卡发环境的使用,让那个我熟悉了如何在Jbuilder下开发应用程序、程序设计的基本步骤等,另外熟悉了Java环境下图形用户界面的编程,为后续工作打下了基础。

虽然这个课题是所有的课题中最简单的,按照参考书上的程序可以得出正确结果.但是要了解所有程序的思路并不是一件很轻松的事情,在准备添加功能的时候,突然发现在菜单栏内的四个按钮不能更改,而且程序中也没有相关代码控制它,于是开始千方百计的对程序进行修改.但到最后仍没收获,请教了老师后才知道问题出在哪里.在JBuild9的开发环境中,在建立Application类型的文件时,如果其最后一项中的”Create a runtime configuration”没被选中的话(见图7-1),则不会出现菜单

栏中的”Info”,”Start”,”Stop”和”Exit”四个按钮(见图7-2).图7-1

JBuild9 新建Application文件截图

图7-2 无自动菜单栏的运行图

不找出问题的根本,就无法理解自己获得的是什么,在一个星期的课程设计中,我将掌握的专业理论知识很好地运用到对这个课题的理解中.做到了理论和实践相结合,在实践中加深了对专业理论知识的理解,并提升了对理论知识的运用能力,获得了许多宝贵的经验。

这个课程设计的顺利完成,离不开刘国清老师的指导和帮助,在他的细心指导和帮助下,我对骑士游历程序的开发的整个流程有了深刻地了解和系统

地掌握.通过这个星期的课程设计,我们更加理解了小组合作的重要性。真正理解了作为一个计算机学习者不仅仅要学好计算机知识,同时也要与自己的搭档配合,共同克服困难.骑士游历课程设计是我和同学一起探讨,最后慢慢理解的,所以说不管有什么样的困难,团队的合作都能把问题一一解决。总之,这次的课程设计让我受益匪浅。

八 参考文献

[1] 黄晓东等.Java课程设计案例精编(第2版)[M].北京:中国水利水电出版社,2007

《Java程序设计》课程简介 篇6

by wgc

1、构造方法

无返回值,和类名相同 new调用

2、方法的重载

(1同3不同)方法名称相同

参数个数 类型 顺序不同 与返回值类型无关

构造方法重载

普通方法重载

3、变量的作用域

成员变量

局部变量

局部变量隐藏成员变量 this

4、this关键字

得到当前对象的成员变量,代表当前对象

5、对象作为方法的参数

对象

传引用

基本类型

传值

6、包

pakage

import

7、访问控制修饰符

public 缺省的 属性和方法

private

缺省的 protected

public

8、static

类成员变量(静态成员变量)

实例成员变量

类方法(静态方法)

类成员变量在类加载时初始化(分配内存空间)

实例方法可以调用任何成员变量和方法

类方法只能调用类变量和类方法

9、继承

定义 extends

属性和方法的继承

public

不同包能继承

protected

不同包能继承(访问不一样,必须在子类中才能访问)友好的 同一包中能继承 private

不能被继承 总结:

(1)、当父子类定义在同一个包中时,父类的所有非私有属性和方法可以被子类

继承

(2)、当父子类定义在不同包中时(父类被public修饰),父类的被public和

protected 修饰的属性和方法可以被子类继承。

10、属性的隐藏

子类与父类成员变量名字相同时,子类成员变量隐藏了父类的成员变量

注意:

在子类中调用从父类继承的方法时,和子类的成员变量没关系。

11、方法的覆盖

子类与父类方法名字相同、参数类型、个数、顺序都相同时,子类方法覆盖

父类的方法。

12、继承关系中的构造方法

子类实例化时,会首先调用父类(或父类的父类)的构造方法,然后在调用自己 的构造方法。

13、super关键字

调用父类构造方法

默认无参super();

有参 super(a);

注:super关键字必须为子类构造方法的第一条语句。

调用父类被覆盖的普通方法,或被隐藏的成员变量

super.show();

super.a;

14、上转型对象(父、子类对象的使用与转化)

子类实例赋给父类的引用

上转型对象与父类对象唯一的区别为上转型对象调用子类覆盖(重写)的方法。

多态

15、abstract 抽象类与抽象方法

抽象类中可以有抽象方法和普通方法

抽象方法必须定义在抽象类中

抽象方法只有定义,没有实现。

通过继承抽象类的子类对象来调用抽象类中的方法

一个非抽象类继承抽象类,必须覆盖(重写)抽象类中的抽象方法。

16、final

修饰类

修饰成员变量

修饰局部变更

修饰方法

17、接口

interface

implements

接口中成员变量都是公共的、静态的常量

public static final int MIN=0;

接口中的方法都是公共的、抽象的public abstract void method();

接口之间可以多继承

// interface B extends A,Computable

类实现(implemnets)某个接口,必须实现里边所有方法

接口回调

把实现某个接口的类的对象赋给此接口的变量,称为接口回调

用法与对象的上转型对象相同。

18、abstract类与接口的比较

abstract类和接口都可以有abstract方法。

接口中只可以有常量,不能有变量;而abstract类中既可以有常量也可以有变量。abstract类中也可以有非abstract方法,接口不可以。

意义区别:

抽象类表示事物之间纵向的联系。如:车、汽车、公共汽车

接口表示事物之间横向的联系。

如:鸟、飞机、超人(都能飞)

《Java程序设计》课程简介 篇7

高等职业技术教育主要以培养生产第一线的技术人才为主, 它的目的是向社会输送大量的具有一定专业理论知识又有专业技能和综合技能的应用型人才。因此, 高职的培养应该紧跟社会潮流, 适应社会需求。高职计算机软件技术专业作为培养生产第一线的编程人员, 对流行的软件开发工具也应该要熟悉并能熟练应用。

Java作为目前功能强大、最流行的网络编程语言, 它所具有的面向对象以及平台无关等特性是当今企业电子商务开发、信息建设、WEB应用程序等应用软件开发的首选技术。为此, 高职院校计算机软件技术专业也开设了《Java程序设计》这门课程。但由于本课程的学习要求有较强的逻辑思维能力, 很多同学在学习的时候感觉抽象、枯燥、难懂。针对本课程难学的特点, 本人经过多年的教学探索, 改革《Java程序设计》课程的教学, 引入先进的教学理念、改变传统的教学模式、探索高效的实践方法, 经过实际检验, 效果反映良好。

1. 传统教学模式及其存在的问题

目前, 大多数高职的程序设计课都是按照传统的教学模式来进行[1]。在教学实施过程中, 很多教师发现有时精心准备、滔滔不绝讲解的内容没有达到预期的效果。这主要是因为课堂上很多老师都以课本为主、以程序设计语言自身的体系为教学路线, 侧重于编程语言的基本概念、基本语句和语法的详细讲解, 没有把逻辑与实际编程解题思路作为教学的主线。教师大多是向学生灌输大量的基本理论与概念, 却很少注重这些理论与概念的实践能力。此时, 学生往往处于被动学习状态, 教学内容难以适应学生的个体差异。而且, Java作为一门面向对象的语言和其它过程化语言比较起来, 需要转换思维, 有一定的理解难度。因此, 很多学生在学习这门课程时感到概念抽象、内容枯燥难懂。

作为培养学生实践能力的上机实验课没有真正起到其应有的作用。对学生进行问卷调查显示, 在学程序设计和算法分析时, 普遍反映就是看得清楚, 听得明白, 但遇到实际问题就无从下手, 显得很被动。究其原因, 主要是没对实验引起足够的重视, 导致动手能力相当差。传统的做法是老师事先布置几道编程题, 然后要求学生上机编程操作验证, 老师在机房不停的来回走动以解决同学们提出的各种问题。但由于学生上机目标不是很明确, 再加上这种实验方式同学们没有紧迫感, 甚至有学生觉得无事可做, 从而不利于对学生动手能力和自身解决问题能力的培养。这样的教学方式培养出来的学生不能很好地解决实际问题, 一旦进入企业, 就无法适应社会需要, 从而造成了高职教育与企业需求之间的鸿沟, 背离了高职教育的目的。

2. 教学的改革与实践

2.1 教学内容的改革

高等职业技术教育侧重培养企业需要的动手能力强的应用型技能人才, 为了使同学们能够适应社会的需求, 在课堂上真正做到有的放矢, 从教学内容上必须进行相应的改革。在理论课教学上以案例教学为主, 期间穿插理论教学。对于案例教学而言, 案例的选编是至关重要的, 案例作为案例教学的基本材料, 其质量对教学效果的影响至关重要。因此, 课堂上所要用到的案例要精挑细选, 必须具有代表性和适用性, 要考虑到学生的认知特点, 而且还要能覆盖Java语言大部分知识, 这些案例与平时的课堂举例既有联系又有区别。教师作为案例组织者, 需要在开课前有详细周密的教学安排, 其内容包括案例实施的过程及安排, 案例素材的发放等, 案例分析中哪些是理论分析, 哪些是应用操作分析等, 并对案例教学中可能出现的外延知识及对策做出安排。

作为培养学生实践能力的实验课, 要以"任务"或"课题"形式提出实验要求和具体的实验成果, 要求学生能综合利用课堂上学到的知识来设计、开发并最终完成实验项目。实验"任务"或"课题"目的性要强, 任务要明确, 这样才能很好的缓解Java语言的实验课中学生无事可做的现象。

通过采用案例教学, 可以实现理论与实践的有机结合。在课堂上, 让学生带着疑问进行案例分析, 教师在分析过程中穿插讲授专业理论知识, 学生在分析案例的时候, 一方面增长知识视野, 丰富分析应用技巧, 另一方面在探索思考如何把知识运用于实践, 从而及时有效地促进学生对知识的消化吸收, 真正达到理论与实践相结合的目的[2], 让学生在学习过程中就有一定的实战经验, 这样才能培养出更符合市场需求的实战型人才。

2.2 教学方法的改革

在教学方法上提倡小组教学。小组教学是指把整个班级划分为若干个学习小组, 组员自由搭配, 以3~5名为宜[3], 选举组长。刚开始通过讲解几个典型案例, 循序渐进地介绍Java语言, 帮助同学们理解、接受基本的要领和方法, 并对面向对象的概念有比较深入的了解。之后进行的案例分析, 为各小组分配编程任务, 提出纪律要求、技术要求和完成期限, 分析完成后要求个小组进行讨论给出最终的解决方案, 然后对各个小组的解决方案进行点评。这一阶段是学生自主学习的关键环节, 学生为主, 教师为辅, 给予必要的协助和引导。通过实行小组教学, 可以让不同思想的同学进行交流, 一方面提高他们对知识点的认知程度, 培养他们的团队协作能力;另一方面可以促进学生处理问题能力的提高。在整个教学过程中, 学生遇到的问题所产生的反馈信息可以及时的传递给教师, 便于教师迅速的对问题进行解决。

此外, 《Java程序设计》的教学具有很强的实践操作性, 教师应该根据其特点充分利用现代化的教学手段, 在教学活动中采取灵活多样的方法, 可充分调动同学们的学习积极性。在课堂上, 一方面充分利用多媒体技术的优势, 提升课堂的交互性, 激发学生的学习兴趣, 发挥认知主体的主观能动性。多媒体所提供外部刺激有利于学生对知识的获取与保持, 获得较好的教学效果。另一方面模糊讲课与辅导课的界限, 讲到一定程度便提出一些思考性和概念性都很强的问题, 让学生分析、研究和讨论, 引导学生得出正确的结论, 从而使教学质量得到最大程度的提高。

2.3 考核方式的改革

考核方式是教学管理中最重要的环节, 是检验教学效果的重要手段。传统的考核方式采用卷面考试, 往往以一次考试的成绩为最终成绩, 这种方式不利于全面真实地考核学生的知识、技能和能力。因此, 对考核方式的改革势在必行。通过制定合理的评价标准, 突出应用能力的培养, 从而能更好的评价学生的学习。在《Java程序设计》的课程考核中, 考核方式主要由两部分组成。第一, 结合案例教学的特点, 对分好的小组要求每组针对案例写出案例分析报告, 然后设计一个综合性的管理信息系统, 应用领域可以自己定, 给他们一个实际操作的机会, 最后完成代码设计、程序设计, 这样可以充分发挥学生的创造性, 使所学知识掌握更加系统、牢固, 这部分的成绩占总成绩的60%。第二, 在平时的课堂小组讨论中, 密切关注每个同学的表现, 对他们的表现予以记录, 学期末组织各个小组的成员互相评价、打分, 然后综合两部分的成绩给个综合的评定, 这部分的成绩占总成绩的40%。

3. 总结

当今社会对人才的需求提出了更高的标准, 以"职业能力"作为职业教育的培养目标在国际上已达成共识。作为一门理论和实践都很强的学科, 在《Java程序设计》课程的教学活动中引入案例教学和分组教学模式, 更有利于培养学生的编程兴趣, 提高学生解决问题的实际动手能力。教学实践表明, 通过改革, 教学效果良好, 培养出来的学生更能适应社会需求。

参考文献

[1].龚伟, 《C程序设计》课程教学的思考[J].福建电脑, 2007 (8) :213-215

[2].徐安凤黄河涛, 浅析案例教学在高校计算机语言课中的应用[J].教育与职业, 2005 (14) :38-40

《Java程序设计》课程简介 篇8

关键词:Java程序设计;项目驱动教学模式

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 10-0000-02

在目前的java程序设计教学中,普遍存在着课本不及时更新,无法摆脱应试模式框架,以及教育与实际脱轨等一系列的问题。而java程序设计是一个对学生的操作和实践很有依赖性的学科,所以,只有选择项目驱动教学的方式,才能使得学生的实践和操作能力得到一定的发展,更好地学习java的程序设计。

一、什么是项目驱动教学

项目驱动教学法是指通过进行一个完整的项目工作,来达到教学的目的,让知识和学生的动手能力都可以得到很好的进步。项目驱动教学模式主要应用于计算机软件这种比较复杂,学生可以借助项目的发展,来接受一些诸如程序设计之类的知识系统。

二、项目驱动教学模式的意义

项目驱动教学模式可以具体针对每一个学生来进行程序设计的教学。通过分组讨论等方式,可以使得学生的思路更清晰,更好地掌握java程序设计的知识理论。可以大大提高学生的学习兴趣和实践能力,使得高职院校更好的和社会接轨。所以,项目驱动教学模式是一种具有划时代意义的教学史上的重大改革。

三、就java程序设计对项目驱动教学模式的研究

(一)如何选择授课项目

项目的选择应该与当下社会的发展趋势相匹配,这样的授课项目才可以与时代的发展接轨。项目的选择要根据授课时间、授课地点以及学生的学习能力来判断。如果项目过难,学生不易接受,反而达不到预期的效果。反之,项目过易,学生的积极性不容易被调动起来,也容易达到事倍功半的效果。如果项目的基体过于庞大,教师很难完全的对项目进行细致的分析,会影响教学的完整性。而项目的技术含量如果太高,就会使得学生失去学习的兴趣,打击学生对项目研究的勇气和信心。所以,教师应该根据学生的接受能力,授课的周期来具体分析,为学生选择合适的项目来进行授课作业。

(二)如何合理安排学生分组和授课进度

授课项目的选择是为了完成整个学期的学业。所以项目的安排要合理地分散于学生学习的一个周期之内。根据授课的进度,适当增加项目的难度以及技术含量。这样比较利于学生的学习积极性和学习兴趣一直处于一个合理的状态,避免了填鸭式教学的传统弊病。

学生的分组可以按照学生的接受能力和领导组织能力。领导组织能力强的同学可以作为每个小组的组长,接受能力高的同学可以作为副组长。这样就能更有利地组织学生来一步步完成项目的每个阶段。并且能更好地激发学生的团体协作精神和部分同学的领导力,并且可以大幅度减少教师的教学负担。还能使得学生更好地适应今后的工作。

(三)如何进行项目驱动教学

1.教师讲解软件开发的环境

在授课的开始,教师一定要本着当下软件开发的环境为学生作深入细致的讲解。当下,软件开发企业为了降低成本,提高速度,使用的是一体化的集成设备,即把数据库,服务器等集成在一起,这就增加了学生学习的难度,使得原本简单的东西复杂化。

Java的后台程序都是英文版的,这就要求教师更合理地引导学生来正视软件开发的难度,同时借助语言,肢体,以及软件的实际操作来打消学生的负面心理,提高学习的积极性。

2.确定授课的软件

在教学过程中,一定要选择合适的授课软件及其辅助工具。因为java的程序设计不但要求学生知道程序设计的目标,更要让学生知道该过程及其原理,以及软件开发的条件和必备工具。在授课初期,教学过程一定要采用可视化的软件,这样可以使得学生更直观地看到程序的管理,编程等的产生和形成。在授课达到一定程度之后,再采用非可视化的开发工具,锻炼学生的能力,使得学生更好地掌握软件开发的知识,更好地锻炼学生的动手能力和操作能力。

3.授课的考核

在当下,传统的考核方式已经不再适应项目驱动授课的教学模式。在项目驱动的模式下,我们不应该只用笔试,口试的方法对学生的能力和知识量来进行评定。在此,我们应该在教学到了某一进度时,让学生亲自动手制作某软件或者某程序。例如:让学生自己动手来编程,而不是让学生在纸上填写编程代码。当学生的考核完成以后,由学校的权威专家来逐个评判考核的结果,并评分,计入考核档案。这样才能防止某些学生作弊,更好地体现考核的权威性和公平性。

4.教学实践

当学生的考核完成并且合格以后,就应该让学生来参加实践。实践可以是教师根据企业的发展来设计出的项目,也可以是学生自己寻找的项目,无论如何,都要和日后学生即将步入的社會相适应,不可以搞形式主义,让学生空有一身知识而无处倾泄。实践可以更好地锻炼学生的动手能力,以及对之前的知识更为系统地掌握和消化。并且能让学生更为自信的走向社会。

5.引导学生就业

当学生的知识掌控的比较随心所欲,并且动手操作能力也能得心应手时,教师应该主动引导学生走向社会,即让学生就业。根据学校的优惠政策和人脉关系,为学生选择一个适合的行业来发挥他们的最大才能。初入社会的学生并不懂得社会上的一些潜规则和人际交往,教师应该用委婉的语言向学生合理解释,如果话说的太直接,容易导致学生对社会产生恐惧的心态,打消学生走向社会的积极性。学生应该努力自己走向社会,用自己的知识和能力,选择合适的就业岗位,并且在教师的帮助下,把自己的一切做到最好,发挥自己最大的优势适合自己的空间。

四、小结

项目驱动的教学模式现在的我们已经不陌生,它的作用是把教学和实践完美的结合在了一起。杜绝了以往学生只知理论,不懂社会实践的尴尬局面。学生步入社会以后可以更快,更好地接受社会所给于的压力,及时把自己的知识应用在工作中。所以,项目驱动的教学模式是今后教育改革的必由之路。

参考文献:

[1]马玉青.计算机绘图教学中应用“任务驱动”教学法初探[J].职业教育研究,2005,(10)

[2]姜大源.职业教育专业教学论初探[J].教育研究,2004,(05)

[3]张哲,陈桂生.在Java语言教学中实施“项目驱动”教学法的实践探索[J].教育与职业,2007,(18)

[4]张党省.论职校教师在项目教学法中的角色[J]. 科教文汇(下半月),2006,(09)

[5]岳云峰,顾晖,李跃华.计算机硬件课程教学中的项目驱动教学法[J]. 南通大学学报(教育科学版),2007,(03)

[6]吴言.项目教学法[J]. 职业技术教育,2003,(07)

[7]兰景英,范勇.基于项目驱动的软件测试人才培养模式[J].计算机教育,2011,(6):10-13

[8]陆芸婷.基于工作过程的《数据库基础》课程设计[J]. 中国科技信息,2009,(15):269-271

[9]朱雄军,杨旭东,陈晴.高职计算机网络专业基于工作过程的课程体系设计[J].职业技术教育,2008,(5):32-33

[10]罗伟,张莹,张翠英.基于“工作过程”的铁道技术专业课程体系构建[J].陕西教育(高教版),2008,(3):34

上一篇:结构化系统分析报告下一篇:超拽霸气锁屏个人签名