java模式设计实训报告

2024-10-30

java模式设计实训报告(共7篇)

1.java模式设计实训报告 篇一

摘要

随着自动化技术的不断发展,电子产业对工艺生产的要求越来越高。本次实训主要熟悉手工焊锡的常用工具的使用及其与修理。手工电烙铁的焊接技术,能够独立的简单电子产品的安装与焊接。熟悉电子产品的生产流程,印制电路板设计的和方法,能够读懂电路原理图,熟悉元器件实物,常用电子器件的类别、型号、规格、性能及其使用范围,并会简单的元器件测量,掌握焊接工艺的编排,电路调试过程。能够识别和选用常用的电子器件,并且能够熟练使用普通万用表和数字万用表。培养检测能力及一丝不苟的科学作风。

第一章JAVA开发环境

1.1NetBeans IDE简介

NetBeans 由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的Java IDE。NetBeans当前可以在Solaris、Windows、Linux和Macintosh OS X平台上进行开发,并在SPL(Sun公用许可)范围内使用。

NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeans IDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C /C + +等开发语言。

由于Java的跨平台性,在任一平台中编写的Java程序可以很好的移植到其他平台上。为了运行程序,计算机上必须安装JVM,它包含Java运行时的解释器与及时编译器,二者构成Java的运行环境。如图1.1所示:

=

图1.1Java的运行环境

{

JFileChooser fc = new JFileChooser();

int r=fc.showOpenDialog(this);

if(r== JFileChooser.APPROVE_OPTION){

File file=fc.getSelectedFile();

try{jTextArea1.read(new FileReader(file),null);}

catch(IOException e){}

}

} void saveFile()//保存文件函数 {

JFileChooser fc=new JFileChooser();

int r=fc.showSaveDialog(this);

if(r== JFileChooser.APPROVE_OPTION){

File file=fc.getSelectedFile();

try{jTextArea1.write(new FileWriter(file));}

catch(IOException e){}

}

} 2.2计算器

要求编写一个模拟计算器Applet,使用面板和网络布局,添加一个文本框,10个数字按钮(0~9),四个加减乘除按钮,一个等号,一个清除按钮。计算器效果如图2.2:

}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt){

show(4);}

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt){

show(5);}

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt){

show(6);}

private void jButton8ActionPerformed(java.awt.event.ActionEvent evt){

show(7);}

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt){

show(8);}

private void jButton10ActionPerformed(java.awt.event.ActionEvent evt){

show(9);}

//点击小数点按钮

private void jButton11ActionPerformed(java.awt.event.ActionEvent evt){

String text=jTextField1.getText();

if(text.lastIndexOf(“.”)==-1)//判断该数字是否已经有小数点

jTextField1.setText(text+“.”);

}

//点击运算符

private void jButton12ActionPerformed(java.awt.event.ActionEvent evt){

t1=Double.parseDouble(jTextField1.getText());//将第一个数转换成Double类型保存在t1中

jTextField1.setText(“ ”);

图3.1文件打开

图3.2文件保存

3.2计算器调试

计算器可以实现加减乘除运算,并可以清零,BACK按钮还可以一位一位清除,基本完成了计算器的基本功能。

2.java模式设计实训报告 篇二

关键词: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

3.java实训报告总结4000 篇三

java实训报告总结4000【1】

一、实训目的

1.熟练掌握Java面向对象程序设计的基础知识。

2.熟练掌握Java中常用的Swing组件的使用方法。

3.熟练掌握Java程序中图形用户界面设计的方法。

4.熟练掌握使用JDBC操作数据库的方法。

5.通过实训,培养学生分析和解决实际问题的能力,提高调试和分析应用程序的能力,并为后续Java高级编程等专业课程的学习奠定良好的基础。

二、课程设计报告内容

2.1 实训内容

本课程设计的题目是设计一个简化的图书管理系统。

该系统从图书馆管理人员的角度出发,实现对图书信息、读者信息的浏览、添加、删除和查询,同时还可以对读者借书、还书过程进行操作和控制。

设计内容主要包括系统分析、数据库、数据表的创建、系统各个窗体的布局及其编码实现。

系统功能分析是在系统开发的总体任务的基础上完成的。

该管理系统需要完成的基本功能主要有:

用户管理:主要包括用户的添加、修改和删除。

读者管理:主要包括读者信息的浏览、添加、删除和查询。

图书管理:主要包括图书信息的浏览、添加、删除和查询。

借还书管理:主要包括借书、还书和续借。

2.2 实训设备或软、硬件

硬件:PⅣ及以上性能的PC机;

软件:Windows 或Windows XP系统;JDK工具;JCreator4.0环境

2.3 功能设计及思想

首先设计测试登录窗口:Text.java

接下来设计LoginFrame.java(登录窗口)、MainFrame(主窗体)

Addbookframe.java(图书入库窗口)、AddReaders.java(添加读者窗口)、AddUserframe.java(添加用户窗口)、Borrowframe.java(借书窗口)、Retumframe.java(还书窗口)、Queryframe.java(图书查询窗口)。

导入部分及实现的接口

三、结论

Java实训在不知不觉中就结束了,我感觉自己还有好多东西要学,还有好多的东西不懂呢!这是我大学以来第3次实训,每次实训我都感觉学到了好多东西!因为是一天到晚的不间断训练,所以记的会非常牢固。

不像平时上课,每上两次的理论课却只有45分钟的实际操作。

在课上,有老师在前面演示我们都还能跟着做,可轮到我们独立完成的时候,因为实际操作的少,早就忘光了!我很感谢学校有实训这样的安排,把我们这一学期学的东西系统的集中的进行训练,对我们计算机水平的提高发挥着重要作用!还要感谢我们的侯老师,侯老师学识渊博,也很有耐心,即使老师讲了很多遍的问题,我们不会,老师还是会走进我们给我们耐心的指导,还给我们讲一些学习java的方法,让我们知道自己在哪方面不足,需要加强,也让我们了解到哪些需要认真的学习,那些是重点,不是没有方向的乱学一通,什么也学不好!

经过这次的实训,我真真确确的感受到了这些开发工具能让我们提高工作的效率,更直观更便捷的切入主题。

这次我们学习的是制作图书信息管理系统,由老师给我们指导。

当然,在学习的过程中并不是一帆风顺的,在这之中,因为要操作的东西很多,有时错一步,后面的结果就无法显示,而自己的耐心与细心又太差,根本检查不出来是哪里出了错!这时候,侯老师都会耐心的过来帮助我,我很感谢侯老师也很感谢学校能安排这么优秀的侯老师来教我们!只是,我们太顽皮,有很多东西老师讲了我们也没能记住,我想在此说一句:老师,您辛苦了,下学期我们一定认认真真的好好学!

实训课是在学习与探索中度过的,短暂的15天实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如图书管理数据库的初步设置、JDBC和SQL Server服务器的连接、数据备份与还原的步骤,报表的设计与实现、如何设置数据源、通过ADO访问数据库的方法、探听器、各种Java Swing组件的使用,绑定控件的属性设置、如何实现Click事件、实现它的获得方法、设置注册焦点

探听器、获取当前日期、以及利用函数之间的相互转换等等一系列的问题,正是在老师和同学的共同努力之下,我才一步步把问题解决了,最终完成了不可能完成的任务。

为期15天的实训课就这样结束了,我发现我对java有了新的认识,以前只知道玩游戏、娱乐和简单的应用。

通过这次的实训,我了解到,要真真正正的掌握这些开发工具还不是一件简单容易的事儿,但真正掌握后,它带个我们的将是无穷的`便捷与科技,我喜欢高端便捷的生活。

我希望我能做计算机这个万能机器人的主人而不是奴隶,我会努力加油的!

通过实训,我不仅巩固了旧知识,也学到了新的知识,并且把所学的应用到实际操作中,提高了我们的实际动手能力和逻辑思维能力。

也让我们对软件开发的流程有一定了解,并且对开发软件有了一些初步的经验。

真正做到了学习与实际应用相结合,真的很感谢老师为我们争取的这次实训机会,在这次实训期间我获益匪浅。

最后,谢谢老师在实习过程给予的帮助!老师辛苦了!感谢学校,感谢老师给我的帮助,让我的思想、技能又上了一个台阶!

四、结束语

java毕业实习报告范文【2】

作为就业>培训,项目的好坏对培训质量的影响非常大,常常是决定性的作用。

这篇文章是关于在学习JAVA软件开发时练习项目的总结,简单总结为以下几点:

1、项目一定要全新的项目,不能是以前做过的

2、项目一定要企业真实项目,不能是精简以后的,不能脱离实际应用系统

3、在开发时要和企业的开发保持一致

4、在做项目的时候不应该有参考代码

长话短说就是以上几点,如果你想要更多的了解,可以继续往后看。

一:项目的地位

因为参加就业培训的学员很多都是有一定的计算机基础,大部分都具备一定的编程基础,尤其是在校或者是刚毕业的学生,多少都有一些基础。

他们欠缺的主要是两点:

(1)不能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是皮毛,不能满足就业的需要。

(2)没有任何实际的开发经验,完全是想象中学习,考试还行,一到实际开发和应用就歇菜了。

解决的方法就是通过项目练习,对所学知识进行深化,然后通过项目来获取实际开发的经验,从而弥补这些不足,尽快达到企业的实际要求。

二:如何选择项目

项目既然那么重要,肯定不能随随便便找项目,那么究竟如何来选择呢?根据Java的研究和实践经验总结,选择项目的时候要注意以下方面:

1:项目不能太大,也不能太小

这个要根据项目练习的阶段,练习的时间,练习的目标来判断。

不能太大,太大了做不完,也不能太小,太小了没有意义,达不到练习的目的。

2:项目不能脱离实际应用系统

项目应该是实际的系统,或者是实际系统的简化和抽象,不能够是没有实战意义的教学性或者是纯练习性的项目。

因为培训的时间有限,必须让学员尽快地融入到实际项目的开发当中去。

任何人接受和掌握一个东西都需要时间去适应,需要重复几次才能够真正掌握,所以每个项目都必须跟实际应用挂钩。

3:项目应能覆盖所学的主要知识点

学以致用,学完的知识点需要到应用中使用,才能够真正理解和掌握,再说了,软件开发是一个动手能力要求很高的行业,什么算会了,那就是能够做出来,写出代码来,把问题解决了,你就算会了。

4:最后综合项目一定要是实际应用系统

学员经过这个项目的练习,就要走上实际的工作岗位了,如果这个系统还达不到实际应用系统的标准,学员练习过后也还是达不到企业实际的需要,那么这个培训应该说质量就不高了。

理想的状况是这个项目就是实际项目,到时候学员就业到另外一个公司,不过是换个地方干活而已,完全没有技能上的问题。

三:Java怎么选择项目

这个不是靠想象,而是根据实际的情况一步一步分析出来的(呵呵要卖弄一下:这也算是逻辑思维),当然这里只是讨论方法,不涉及具体的项目案例。

我们可以采用倒推的方式来分析:

(1)最终的项目一定是真实的项目,也就是要把学员训练到能够独立开发实际应用,通常我们还不能选最简单的项目,因为学员的吸收还要有一个折扣,所以最终的项目应该选实际项目中中等难度的项目

(2)最终项目定下来过后,开始分解这个项目,看看为了达到完成这个项目需要哪些技术和知识点,以及每部分知识点的深度,然后定出每个分阶段的任务

(3)然后开始选择分阶段的项目,分阶段的项目应该比刚才分析出来的分阶段任务稍稍复杂点,这样才能达到训练的目标。

定下分阶段项目后,同样去分解,定出为了完成他所需要的各部分知识点和深度。

(4)然后是选择上课期间的演示项目,演示的项目是为了做分阶段项目服务的,可以认为是分阶段项目的分阶段项目

(5)最终把要求掌握的知识点和要求掌握的深度,分散到日常教学和练习中。

好了,把上面的分析用正向描述就是:日常教学和练习中学习和掌握的知识

==〉演示项目

==〉分阶段项目

==〉综合项目

==〉胜任企业实际开发需要。

附注:有了好的项目还要有好的训练方法(这个另外立文讨论),最最基本和重要的一条就是:绝对要指导学生亲自动手做,而不是看和听,所以尽量不要选择有现成代码的项目,演示用的项目也最好不配发代码,让学生能够跟着做出来才是真的掌握了。

上面阐述了Java对项目的态度和基本选择方法,这里再把其中几个重要的、与众不同的特点阐述如下:

1:真项目

项目一定要真实,要是企业实际应用的,不能是教学性的项目,否则会脱离实达不到项目实训的效果。

还有一个一定要是最新的项目,企业的要求也是在不断变化的,应用技术的方向和层次也在不断变化,这些都体现在最新项目的要求上,旧项目所要求的技术和层次很可能已经过时了,根本达不到训练的目的。

Java的做法是:没有固定项目,每个班做项目之前会从企业获取最新的项目需求,然后经过挑选和精心设计,以保证既能训练技术,又能得到实际的开发经验。

这样实现了跟企业的同步,企业做什么,我们就学什么,然后也跟着做什么。

2:真流程

开发的流程也要跟企业的实际开发保持一致。

从项目立项开始,到需求分析、概要设计、详细设计、编码、测试的各个环节,都要完全按照真实的开发流程来做。

Java的主力老师都是实战出身,在Java开发方面都至少有七年以上的开发经验,同时具备多年的项目管理经验,所以能够完全按照企业开发的流程来训练学生。

3:真环境

开发的环境也要跟企业一样,包括常用的开发工具、开发平台、应用服务器、常用插件、测试工具、项目管理工具、项目管理文档等等。

Java的做法是:构建跟企业完全一样的环境,然后跟企业开发一样,分团队开发。

老师就相当于项目经理,一个班分成多个小组,每个组有自己的Team

Leader,大家分工合作,共同完成项目。

4:真开发

这是Java最与众不同的一点,Java深知:软件是做出来的,而不是听出来或者看出来的,企业需要能实际开发的人员,而不是只听过、看过但不能做的人。

所以Java非常强调:项目一定要让学生动手写出来。

Java的做法是:老师做为项目经理,带领着大家一起去做需求分析、概要设计、数据结构设计、接口设计、重要业务流程的分析设计等,然后由学生们分团队进行开发,实现整个项目。

这里有几个与众不同:

(1):现场带领学生一起做分析和设计,而不是预先做好了来讲讲。

因为需要学生学习的是分析设计的过程和方法,而不是已经做好的结果。

(2):Java选用的项目基本都是企业最新的项目,很多都是Java的学生和企业在同期开发,所以是不配发源代码的。

这样也断绝了学生的依赖思想,认认真真去开发。

可能有同学会问:为什么不选择有源代码的项目呢,那样还可以参考学习啊!

这是一个典型的误区:觉得通过看人家的代码能够加快自己的学习。

这个方法对有经验的人来讲是对的,但是对于还在学习期间,没有经验的学员来讲,就是一个认识的误区了。

因为你也许能看懂代码的语法,但根本看不懂代码背后的含义,看不懂代码的设计,看不懂为什么要这么实现,看不懂代码所体现的思想,其实,看了跟没看没有多大区别。

事实上,Java界最不缺的就是代码了,那么多开源软件,小到一个工具,到企业级ERP都有开源的,而且很多都是大师级的作品,说实话比你参考的那些代码质量高多了,但是又有多少人能真正看明白呢,原因就在于达不到那个水平,看不懂代码背后所体现的设计和思想以及为什么要这么做,效果也就不好了。

当然不排除有这样的高人是能够完全能理解和掌握这些大师级作品的,但估计不会是刚开始学习Java开发的学生,所以Java根据多年的培训经验,友情提示:在初学阶段,看一千遍,听一千遍,都不如自己动手写一遍所达到的学习效果。

自己能写出来的功能才是你真正掌握的功能,而不是你看得代码或者是听老师讲的,就算讲过看过,但是自己做不出来,那都不算会。

(3):Java在课堂上除了带领学生去分析设计外,还会分析一些重点、难点功能的实现机制和原理,然后指导学生去实现。

5:真技术

Java在每个项目中,特别会抽取有难度的部分让学生们在老师指导下实现,专门啃硬骨头,那才能真正锻炼学生的开发能力。

比如:在做OA类的项目时,会重点去做工作流、公文收发、在线Office控制等;

在做CRM类项目时:会重点去做销售>自动化和市场块的业务;在做人力资源类项目的时候会重点去做人力跟踪和人力评测模型等……

Java在每个项目中,都会使用目前企业最新最流行的技术,按照最新的难度去要求,从而让学员能更符合企业的需要。

6:真经验

Java的项目都是企业最新的真实项目,经过开发训练,学员能够积累足够的真实的开发经验,以胜任企业的工作需要。

在进行项目分析时,还会全面讲解项目所要求的业务,让学员从业务和技术上都能充分积累。

7:真实力

作为就业培训,项目的好坏对培训质量的影响非常大,常常是决定性的作用。

这篇文章是关于在学习JAVA软件开发时练习项目的总结,简单总结为以下几点:事实上,不采用有源代码的教学性项目对Java的要求非常高。

试想一下,如果项目分发下去,老师带着分析后,学生都不会做会出现什么样的后果?这对Java的教学质量提出了极高的要求,如果教学质量达不到让学员独立开发的水平,对依靠质量取胜和口碑发展的Java将是毁灭性的。

另外一个,由于是全真的项目,在开发的过程中,肯定会有很多的问题出现,这些都要老师去解决,由于不像教学项目那样预先做好,又需要老师能很快地解决各个问题,这对老师的真实开发水平有极高的要求,这可是需要真功夫的。

总结

4.java课程设计报告 篇四

题 目:指导老师:姓 名:专 业:班 级:日 期:课程设计报告

目 录

一、系统总体设计.......................................1

(一)设计目标及完成功能..............................1

(二)系统结构设计...................................1

二、数据库设计........................................1

三、详细设计..........................................1(一)界面设计........................................1(二)系统设计........................................2(三)关键技术及算法..................................2

四、测试..............................................2

五、安装使用说明.......................................2 总结(体会)..........................................2 参考文献:............................................2

《Java语言程序设计》课程设计报告

一、系统总体设计

(一)设计目标及完成功能

此部分可以包括如下内容:

1.窗口功能说明:设计了几个窗口,分别实现什么功能.2.菜单栏或工具栏说明:如果设计了菜单或工具栏,分别说明包括哪些项及其各自实现什么操作.……

(二)系统结构设计

说明:要绘出系统结构图

二、数据库设计

必须包含以下内容:E-R图(说明所有实体及其属性)、表结构列表(字段名、类型、主键、备注等)。

没有用到数据库的不用写此部分

三、详细设计

(一)界面设计

界面抓图,图要有编号和标题(格式:图1 主界面图),位于图的下方居中对齐。

《Java语言程序设计》课程设计报告

(二)系统设计

1.共设计了几个类或接口,是否有继承关系,各实现什么功能,绘图(列表)说明。

2.列表说明各类的方法及其功能。

(三)关键技术及算法

使用的主要算法分析、关键技术说明。如数据库连接技术、加密解密算法等。

四、测试

五、安装使用说明

1.系统配置说明。是否需要配置数据源或安装补丁包、导入数据库等。

2.登录的用户名、密码。3.其他特殊说明。

总结(体会)

(谈谈本次课程设计的心得体会)

参考文献:

[1] 窦万峰.软件工程方法与实践[M].机械工业出版社,2009 [2] 李兆锋,张得生.Java Web项目开发案例精粹[M].电子工业出版社,2010 [3] 沈泽刚,秦玉平.Java Web编程技术[M].清华大学出版社,2009

《Java语言程序设计》课程设计报告

包括书籍、网站、论坛等。

说明:(以下内容作为要求)

正文部分一律用小四号字,宋体,1.5倍行距。一级大标题黑体四号字靠左,加粗。二级大标题黑体四号靠左,不加粗。

参考文献:

5.java设计模式面试题 篇五

你用过哪种设计模式?

设计:design

模式:pattern

框架:framework

创建模式,结构模式和行为模式

GoF设计模式

A.创建模式

设计模式之Factory(工厂模式)

使用工厂模式就象使用new一样频繁.

设计模式之Prototype(原型模式)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,

设计模式之Builder

汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。

设计模式之Singleton(单态模式)

保证一个类只有一个实例,并提供一个访问它的全局访问点

B.结构模式

设计模式之Facade

可扩展的使用JDBC针对不同的`数据库编程,Facade提供了一种灵活的实现.

设计模式之Proxy

以Jive为例,剖析代理模式在用户级别授权机制上的应用

设计模式之Adapter

使用类再生的两个方式:组合(new)和继承(extends),这个已经在“thinking in java”中提到过.

设计模式之Composite

就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于和单位做买卖。文章中还对Jive再进行了剖析。

设计模式之Decorator

Decorator是个油漆工,给你的东东的外表刷上美丽的颜色.

设计模式之Bridge

将“牛郎织女”分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合)

设计模式之Flyweight

提供Java运行性能,降低小而大量重复的类的开销.

C.行为模式

设计模式之Template

实际上向你介绍了为什么要使用Java 抽象类,该模式原理简单,使用很普遍.

设计模式之Memento

很简单一个模式,就是在内存中保留原来数据的拷贝.

设计模式之Observer

介绍如何使用Java API提供的现成Observer

设计模式之Chain of Responsibility

各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个.

设计模式之Command

什么是将行为封装,Command是最好的说明.

设计模式之State

状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换.

设计模式之Strategy

不同算法各自封装,用户端可随意挑选需要的算法.

设计模式之Mediator

Mediator很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以.

设计模式之Interpreter

主要用来对语言的分析,应用机会不多.

设计模式之Visitor

访问者在进行访问时,完成一系列实质性操作,而且还可以扩展.

设计模式之Iterator

6.java聊天室课程设计报告 篇六

2011 ~ 2012 学年 第 一 学期

学 号 20104053020 姓 名 胡勇昌 院 系 信息工程与技术 专 业 计算机工程系 课 程 名 称 JAVA程序设计 课程设计名称 局域网内的多功能聊天室

学 时 学 分 1 指 导 教 师 许烁娜

2011年 12 月 25 日

目录

课程设计报告..........................................................................................................................................1 第1章 引言............................................................................................................................................3 1.1 背景...............................................................................................................................................3 1.2 相关技术.......................................................................................................................................3 1.2.1 JAVA概述...............................................................................................................................3 1.2.2 Socket......................................................................................................................................3 1.2.3 TCP 三次握手.....................................................................................................................4 1.3 术语...............................................................................................................................................4 第2章 需求分析与系统设计................................................................................................................5 2.1 需求分析.......................................................................................................................................5 2.2 系统设计.......................................................................................................................................6 2.2.1多用户在线方案.....................................................................................................................6 2.2.2 系统功能................................................................................................................................6 第3章 系统实施....................................................................................................................................6 3.1聊天室窗口....................................................................................................................................6 3.2 建立客户端窗口...........................................................................................................................8 3.3 内嵌“私聊”窗口.......................................................................................................................9 3.4客服端类继承客户端窗口类,并内嵌私聊程序......................................................................10 第4章 测试..........................................................................................................................................15 4.1 测试环境与使用方法.................................................................................................................15 4.2 功能测试.....................................................................................................................................15 4.2.1聊天室窗口...........................................................................................................................15 4.2.2 客户端窗口..........................................................................................................................16

4.2.3 内嵌“私聊”窗口..........................................................................................................................16

参考文献................................................................................................................................................16

第1章 引言

1.1 背景

网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。聊天室可以建立在即时通讯软件(如MSN Messenger、QQ)、P2P软件、万维网(如 Halapo,Meebo)等基础上,万维网方式更为普通和种类繁多,交谈的手段不局限于文本,更包括语音、视频。通常聊天室是按照房间或频道为单位的,在同一房间或频道的网人可以实时地广播和阅读公开消息。一般情况下,与其它网络论坛、即时通讯不同的是,聊天室不保存聊天记录。

1.2 相关技术 1.2.1 JAVA概述

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

1.2.2 Socket Socket是java中需一要编写较低层次的网络通信程序(例如Cljent/server应用程序)时提供的一种通讯机制。Socket是两个程序进行双向数据传输的网络通信的端点,一般 由一个地址加上一个端口号来标一识。每个服务程序都在一个众所周知的端口上提供服 务,而想使用服务的客户端程序则需要连接该端口。通过Socket的数据是原始字节流信 息,通信双方必须根据约定的协议对数据进行处理与解释。

Socket通信机制提供了两种通信.方式:有连接方式(TCP)和无连接方式(UDP数

据报)。有连接方式中,通信双方在开始时必须进行一次连接过程,建立一条通信链路。通信链路提供了可靠的,全双工的字节流服务。无连接力一式中,通信双方不存在一个连 接过程,一次网络I/O以一个数据报形式进行,而每次网络I /O可以和不同.主机的不 同进程进行。无连接方式开销小于有连接方式,但是所提供的数据传输服务不可靠,不 能保证数据报一定到达目的地”」·。

JAVA的有连接通信采用流式I/O模式。Socket是两个进程间通信链的端点,每个 Sockct有两个流:一个输入流和一个输出流。只要向Sockct的输出流写,一个进程就可 以通过网络连接向其他进程发送数据;同样,通过读Sockt的输入流,就可以读取传输 来的数据。

有连接通信一般要经历以下四个基本步骤ii

(1)创建Sockct,建立连接;

(2)打开连接到Sockct的输入/输出流;

(3)按照一定的一脚议对Socket进行读/写操作;

(4)关闭Socket。

第(3)步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种 程序中基本相同。

1.2.3 TCP 三次握手

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-way handshake),过程如下图所示。

1.3 术语

暂无

第2章 需求分析与系统设计

2.1 需求分析

从技术发面来看,Java语言的优点一要表现在:简.单、面向对象、多线程、安全性 等方面。1.简单性

Java与C++语言灰常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对 必要的功能,如头文件、顶处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了内存管理的一作。这使程序一设计更加简便,同时减少了出错的可能。2.面向对象

Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的一方法,从而既实现了代码的复用,又提供了一种动态的解决方案。

Java是一种完全面向对象的程序设计语一言,它除了数组、布尔和字符二个基本数据类型外的其它类都是对象,它不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。

Java同样支持继承特性,Java的类可以从其它类中继承行为,但Java只支持类的 单重继承,即每个类只能从一个类中继承。

Java支持界面,界面允许程序员定义方法但又不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。3.多线程

多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容.易实现网络上的实时交互操作。

Java程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线 程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率。4.安全性

Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。2.2 系统设计 2.2.1多用户在线方案 2.2.2 系统功能

聊天室程序通常需要完成以下一些基本功能:

(I)登录聊天室;

(2)启动服务器;

(3)关闭服务器;

(4)用户之间的聊天;

(5)退出聊天室。

本系统其体功能需求如下:

(1)聊天室管理员经登录界面登录到管理界而,即系统的服务器端。用户经登录界而 都进入聊天大厅。

(2)不论是管理员还是用户都需一要在登录界面输入正确的用户名和密码后才可以登录 到各自的界面中去。

(3)系统的两个主要界面都是为方便管理员和用户操作的。首先,管理员进入到管理 界而后可以方便的启动/停止服务器,看到在线用户的信息和聊人信息、。用户进入到聊天 大厅中可以聊天,查看服务器状态。

(4)一个用户退出聊天室对其他用户不能产生影响,而服务器断开与客户端的连接则所有的用户都失去与服务器的连接。

(5)用户的聊天信息录入,重写,发送,接收方便,快捷。

(6)服务器状态,聊天信息和在线用户人数及时刷新。

(7)聊天室系统运行稳定、安全性高、性能可靠。

第3章 系统实施

3.1聊天室窗口

建立服务端窗口类:窗口程序如下 import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.List;import java.awt.TextArea;

import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTextField;

public class chatroomW { JFrame f=new JFrame(“局域网聊天室”);JLabel label1=new JLabel(“端口”);JLabel label2=new JLabel(“发送”);Button button1=new Button(“启动服务”);Button button2=new Button(“发送”);Button button3=new Button(“刷新用户列表”);JTextField text1=new JTextField(5);JTextField text2=new JTextField(25);TextArea area1=new TextArea(26,84);List userList=new List(27);JScrollPane scro1,scro2;public chatroomW(){

chat();} public void chat(){

area1.setBackground(new Color(204,255,255));

area1.setForeground(Color.black);

userList.setBackground(Color.gray);

userList.setForeground(Color.white);

f.setLayout(new FlowLayout());f.add(area1);f.add(userList);f.add(label1);f.add(text1);f.add(button1);f.add(text2);f.add(button2);f.add(button3);

f.setBounds(300,200,750,485);

f.setResizable(false);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

area1.setEditable(false);text1.setText(“10000”);

myEvent();

} public static void main(String args[]){

new chatroomW();} public void myEvent(){} }

3.2 建立客户端窗口

import java.awt.Color;import java.awt.FlowLayout;import java.awt.TextArea;

import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTextField;

public class ClientW {

JFrame f=new JFrame(“聊天室”);JScrollPane js;TextArea area=new TextArea(19,67);JTextField text1=new JTextField(12);JTextField text2=new JTextField(5);JTextField text3=new JTextField(5);JTextField text4=new JTextField(20);JButton button1=new JButton(“连接”);JButton button2=new JButton(“发送”);JButton button3=new JButton(“私聊”);JLabel label1=new JLabel(“服务器地址”);JLabel label2=new JLabel(“服务器端口”);JLabel label3=new JLabel(“昵称”);public ClientW(){ } public void chat(){

area.setBackground(new Color(204,255,255));area.setForeground(Color.black);f.setLayout(new FlowLayout());f.setBounds(300,200,500,410);f.add(label1);f.add(text1);f.add(label2);chat();//

}

} f.add(text2);f.add(button1);f.add(area);f.add(label3);f.add(text3);f.add(text4);f.add(button2);f.add(button3);f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setResizable(false);area.setEditable(false);text2.setText(“10000”);text4.setText(null);myEvent();public void myEvent(){} public static void main(String args[]){ } new ClientW();

3.3 内嵌“私聊”窗口

class netchat{ JFrame f=new JFrame(“私聊”);JLabel label1,label2,label3;Button button1,button2;JTextField text1,text2,text3,text4;TextArea textarea;

f.setLayout(new FlowLayout());f.setBounds(300,200,400,310);//设置窗口大小和位置; label1=new JLabel(“对方主机”);label2=new JLabel(“本地端口”);label3=new JLabel(“对方端口”);button1=new Button(“连接”);button2=new Button(“发送”);text1=new JTextField(7);text2=new JTextField(3);text3=new JTextField(3);public netchat(){ f.setResizable(false);//让窗口大小固定;

// 闭;

} text4=new JTextField(20);textarea=new TextArea(13,53);textarea.setEditable(false);textarea.setBackground(new Color(204,250,255));f.add(label1);f.add(text1);f.add(label2);f.add(text2);f.add(label3);f.add(text3);f.add(button1);f.add(textarea);f.add(text4);f.add(button2);f.setVisible(true);f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//关闭窗口程序同时关myEvent();

3.4客服端类继承客户端窗口类,并内嵌私聊程序

import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.Socket;

import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;

public class Client extends ClientW{ Socket s=null;public Client(){} public void myEvent(){

button1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

try{

s=new Socket(text1.getText().toString(),Integer.parseInt(text2.getText()));

new Thread(new LinkC()).start();

area.append(“[系统消息]:连接成功n”);

}catch(Exception ex){area.append(“[系统消息]:连接失败n”);}

}

});

button2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new SentC();

}

});

button3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

new netchat();

}

});} public static void main(String args[]){

new Client();}

class LinkC implements Runnable{

public void run(){

try{

BufferedReader bufIn=

new BufferedReader(new InputStreamReader(s.getInputStream()));

String msg=null;

PrintStream ps=new PrintStream(s.getOutputStream());

ps.println(text3.getText());

while(true){

try{

while((msg=bufIn.readLine())!=null){

area.append(msg+“n”);

}

}catch(Exception ex){break;}

}

}catch(Exception e){}

}

}

class SentC {

public SentC(){

try{

PrintStream ps=new PrintStream(s.getOutputStream());

if(!text4.getText().equals(“")){

ps.println(text4.getText());//

area.append(text4.getText());//服务器自动会返回

text4.setText(”“);

}

}catch(Exception e){}

}

} //私聊类

class netchat{

JFrame f=new JFrame(”私聊“);

JLabel label1,label2,label3;

Button button1,button2;

JTextField text1,text2,text3,text4;

TextArea textarea;

public netchat(){

f.setLayout(new FlowLayout());

f.setBounds(300,200,400,310);

//设置窗口大小和位置;

f.setResizable(false);

//让窗口大小固定;

label1=new JLabel(”对方主机“);

label2=new JLabel(”本地端口“);

label3=new JLabel(”对方端口“);

button1=new Button(”连接“);

button2=new Button(”发送“);

text1=new JTextField(7);

text2=new JTextField(3);

text3=new JTextField(3);

text4=new JTextField(20);

textarea=new TextArea(13,53);

textarea.setEditable(false);

textarea.setBackground(new Color(204,250,255));

text2.setText(”10000“);

text3.setText(”10000“);

f.add(label1);

f.add(text1);

f.add(label2);

f.add(text2);

f.add(label3);

f.add(text3);

f.add(button1);

f.add(textarea);

f.add(text4);

f.add(button2);

f.setVisible(true);//

f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);//关闭窗口程序同时关闭;

myEvent();

}

public void myEvent(){

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e){

try{

DatagramSocket ds=new DatagramSocket();

byte[] buf=”对方已下线“.getBytes();

DatagramPacket dp=

new DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(text3.getText()));

ds.send(dp);

ds.close();

}catch(Exception ex){}

}

});

button2.addActionListener(new ActionListener()//事件源是button2

{

public void actionPerformed(ActionEvent e)

{

if(!text4.getText().equals(”“))

new Thread(new Send()).start();

}

});

button1.addActionListener(new ActionListener()//事件源是button1

{

public void actionPerformed(ActionEvent e)

{

new Thread(new Rece()).start();

}

});

}

class Send implements Runnable{

public void run(){ try{UdpSend();}catch(Exception e){textarea.append(”[系统消息]:发送失败n“);}}

public void UdpSend()throws Exception{

DatagramSocket ds=new DatagramSocket();

byte[] buf=text4.getText().getBytes();

DatagramPacket dp=

new DatagramPacket(buf,buf.length,InetAddress.getByName(text1.getText()),Integer.parseInt(text3.getText()));

textarea.append(”[我]: “+text4.getText()+”n“);

text4.setText(”“);

ds.send(dp);

ds.close();

}

}

class Rece implements Runnable{

int index=0;

public void run(){

try{

UdpRece();

}catch(Exception e){

textarea.append(”[系统消息]:连接失败n“);

}

}

public void UdpRece()throws Exception{

while(true){

DatagramSocket ds=new DatagramSocket(Integer.parseInt(text2.getText()));

if(index==0){textarea.append(”[系统消息]:连接成功n“);}

byte[] buf=new byte[1024];

DatagramPacket dp=new DatagramPacket(buf,buf.length);

ds.receive(dp);

String data=new String(dp.getData(),0,dp.getLength());

textarea.append(dp.getAddress()+” “+data+”n");

index++;

ds.close();

}

}

}

} } 第4章 测试

4.1 测试环境与使用方法

测试环境:测试环境:电脑安装Java JDK 服务器端使用方法:打开服务启动,点击“启动服务”,提示“启动服务成功”表示正常启动。否则,先关闭服务端,再重新打开,启动服务。客户端使用方法:打开客户端,输入“服务器地址”,点击“连接”,如成功连接系统提示“成功连接”,并收到服务端返回的“欢迎”信息,否则关闭并重新启动。

私聊功能使用方法:点击面板上的“私聊”按钮,输入对方的IP地址,点击连接,如连接成功系统会提示“连接成功”。当对方断开时会收到“对方已下线”提示。如果要同时跟多人私聊,则要改变本地端口值,并告知对方。

4.2 功能测试 4.2.1聊天室窗口

4.2.2 客户端窗口

4.2.3 内嵌“私聊”窗口

参考文献

用JAVA程序实现参考文献的录入与生成 刘玮玮 2009 《福建电脑》

基于Java移动Agent系统的安全参考模型 周屹 2007 《黑龙江工程学院学报》

7.五子棋JAVA语言课程设计报告 篇七

课程设计报告

学 院: 信息科学技术学院 班 级: 软件技术2班 姓 名: 王更新 学 号: 1108900505 指导教师: 郭韶升 课设时间: 2014-03-17 至2014-03-26

二O一四 年 三月 二十六 日

目 录

一、设计要求…………………………………………....2

二、设计步骤…………………………………………....2 2.1程序流程图………………………….…………...2 2.2程序的功能分配……………………….………...3

三、设计正文…………………………………………....6 3.1创建棋盘类……………………………………….6 3.2判断输赢功能实现……………………………….9 3.3测试结果……………………………………….....9

四、心得体会…………………………………………...12

五、参考文献…………………………………………...12 附录(源代码)……………………………………….13

一、课程设计要求

设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示

并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。最后判断某一方是否为五子连珠。

实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌(执黑、执白)。

(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);

二、设计步骤

2.1程序流程图

2.2 程序的功能分配

a.棋盘的绘制

public void draw_qipan(Graphics G)//画棋盘 15*15{

G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);

G.setColor(Color.black);

for(int i=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);

} } b.添加按钮

Button b1=new Button(“开始”);Button b2=new Button(“重置游戏”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);public void init(){

ckbHB[0]=new Checkbox(“执白”,ckgHB,false);

ckbHB[1]=new Checkbox(“执黑”,ckgHB,false);

ckbHB[2]=new Checkbox(“观看”,ckgHB, false);}

c.鼠标棋子的触发事件

public void mouseClicked(MouseEvent e){

Graphics g=getGraphics();

int x1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){ y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);}

d.按钮的触发事件

public void actionPerformed(ActionEvent e){

Graphics g=getGraphics();

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

Game_start();

}

else{

Game_re();

}

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

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+“输了!”);

intGame_Start=0;

}

e.判断落子的位置及画出相应的黑白棋子 public void set_Qizi(int x,int y)//落子{

if(intGame_Start==0)//判断游戏未开始{

return;

}

if(intGame_Body[x/20][y/20]!=0){

return;

}

Graphics g=getGraphics();

if(color_Qizi==1)//判断黑子还是白子{

g.setColor(Color.black);

color_Qizi=0;

}

else{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;}

f.判断胜负

if(Game_win_1(x/20,y/20))//判断输赢1{

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;

}

if(Game_win_2(x/20,y/20))//判断输赢2{

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;} if(Game_win_3(x/20,y/20))//判断输赢3{ lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);intGame_Start=0;} if(Game_win_4(x/20,y/20))//判断输赢4{ lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;} }

三、设计正文

3.1创建棋盘类

Public class WcyChess extends Applet ActionListener,MouseListener,MouseMotionListener,ItemListener{ int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子

int intGame_Start=0;//游戏开始标志 0未开始 1游戏中

int intGame_Body[][]=new int[16][16];//设置棋盘棋子状态

int m=-1;Button b1=new Button(“开始”);Button b2=new Button(“重置游戏”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);CheckboxGroup ckgHB=new CheckboxGroup();NetchatClient chat=new NetchatClient();public void init(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=new Checkbox(“执白”,ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=new Checkbox(“执黑”,ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=new Checkbox(“观看”,ckgHB, false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

lblWin.setText(“胜利者!”);//没有显示?

ckbHB[2].setBounds(440, 20,60, 30);

add(exist);

exist.setBounds(330,130,80,30);

implements

//

exist.addActionListener(this);add(chat);chat.setBounds(20, 500, 300, 300);chat.frame();chat.setVisible(true);Game_start_csh();setSize(500,600);setVisible(true);} public void itemStateChanged(ItemEvent e){ if(ckbHB[0].getState())//选择黑子还是白子{

color_Qizi=0;} else{

color_Qizi=1;} } public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e){ Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();if(e.getX()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300){

return;} if(x1%20>10){

x1+=10;} if(y1%20>10){

y1+=10;} x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1);} public void actionPerformed(ActionEvent e){ Graphics g=getGraphics();if(e.getSource()==b1){

Game_start();} else {

Game_re();}

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

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+“输了!”);

intGame_Start=0;} } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} public void paint(Graphics g){ draw_qipan(g);

3.2判断输赢功能实现

if(Game_win_1(x/20,y/20)){ //判断输赢1

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;} if(Game_win_2(x/20,y/20)){ //判断输赢2

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;}

if(Game_win_3(x/20,y/20))//判断输赢3{

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;}

if(Game_win_4(x/20,y/20))//判断输赢4{

lblWin.setText(Get_qizi_color(color_Qizi)+“赢了!”);

intGame_Start=0;}

3.3 测试结果

a.进入游戏界面

游戏开始的界面有三个选择项,用户可以选择相应的角色,选择 完毕后点击开始进入游戏。

b.选择角色,开始下棋

首先达到五个棋子连在一块的赢了,并在红色区域显示谁赢了!c.下完后,重新开始

下完一盘后游戏停止,点击重新开始,界面回到初始界面,选择角色继续游戏.d.游戏中点退出,自动判输

在下棋的过程当中谁中途退出,即点击退出,系统自动判断谁输

四、课程设计心得体会

通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。

五、参考文献

1.吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社 2.柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社 3.丁振凡 Java 语言实用教程 :北京邮电大学出版社

附录(源代码)

import java.net.*;import java.io.*;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.awt.Color;Public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener{ int color_Qizi=0;//旗子的颜色标识 0:白子 1:黑子 int intGame_Start=0;//游戏开始标志 0未开始 1游戏中

int intGame_Body[][]=new int[16][16];//设置棋盘棋子状态

int m=-1;Button b1=new Button(“开始”);Button b2=new Button(“重新开始”);Label lblWin=new Label(“ ”);Checkbox ckbHB[]=new Checkbox[3];Button exist = new Button(“退出”);CheckboxGroup ckgHB=new CheckboxGroup();public void init(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=new Checkbox(“执白”,ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=new Checkbox(“执黑”,ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=new Checkbox(“观看”,ckgHB, false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

e.getY()<20 || e.getY()>300){

lblWin.setText(“胜利者!”);//没有显示?

ckbHB[2].setBounds(440, 20,60, 30);add(exist);

exist.setBounds(330,130,80,30);exist.addActionListener(this);Game_start_csh();setSize(500,600);setVisible(true);}

public void itemStateChanged(ItemEvent e){ if(ckbHB[0].getState())//选择黑子还是白子 {

color_Qizi=0;} else {

color_Qizi=1;} }

public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e){ Graphics g=getGraphics();int x1,y1;x1=e.getX();y1=e.getY();

if(e.getX()<20 || e.getX()>300 ||

return;}

if(x1%20>10){

x1+=10;}

if(y1%20>10){

y1+=10;}

x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1)}

public void actionPerformed(ActionEvent e){ Graphics g=getGraphics();if(e.getSource()==b1){

Game_start();

} else{

// 输了!“);

赢了!”);

Game_re();}

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

Game_re();

color_Qizi=m;

lblWin.setText(Get_qizi_color(color_Qizi)+“

intGame_Start=0;

}

}

public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} public void paint(Graphics g){ draw_qipan(g);}

public void set_Qizi(int x,int y){ //落子

if(intGame_Start==0){//判断游戏未开始

return;}

if(intGame_Body[x/20][y/20]!=0){

return;}

Graphics g=getGraphics();

if(color_Qizi==1){//判断黑子还是白子

g.setColor(Color.black);

color_Qizi=0;} else{

g.setColor(Color.white);

color_Qizi=1;}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;if(Game_win_1(x/20,y/20)){ //判断输赢1 lblWin.setText(Get_qizi_color(color_Qizi)+”

intGame_Start=0;

了!“);

赢了!”);

赢了!“);

15*15

}

if(Game_win_2(x/20,y/20)){ //判断输赢2{

lblWin.setText(Get_qizi_color(color_Qizi)+”赢

intGame_Start=0;}

if(Game_win_3(x/20,y/20)){ //判断输赢3

lblWin.setText(Get_qizi_color(color_Qizi)+“

intGame_Start=0;}

if(Game_win_4(x/20,y/20)){ //判断输赢4

lblWin.setText(Get_qizi_color(color_Qizi)+”

intGame_Start=0;} }

public String Get_qizi_color(int x){

if(x==0){

return “黑子”;} else {

return “白子”;} }

public void draw_qipan(Graphics G){ //画棋盘 G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);G.setColor(Color.black);for(int i=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);} }

public void Game_start(){ //游戏开始

intGame_Start=1;

Game_btn_enable(false);

b2.setEnabled(true);} public void Game_start_csh(){//游戏开始初始化

intGame_Start=0;

Game_btn_enable(true);

b2.setEnabled(false);

ckbHB[0].setState(true);

for(int i=0;i<16;i++){

for(int j=0;j<16;j++){

intGame_Body[i][j]=0;

}

}

lblWin.setText(“");} public void Game_re(){ //重新开始游戏

repaint();

Game_start_csh();} public void Game_btn_enable(boolean e){ //设置组件状态

b1.setEnabled(e);

b2.setEnabled(e);

ckbHB[0].setEnabled(e);

ckbHB[1].setEnabled(e);} public boolean Game_win_1(int x,int y){ //横向判断输赢

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_2(int x,int y){ //纵向判断输赢

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

}

if(intGame_Body[x1][y1-i]==intGame_Body[x][y]){

t+=1;

}

break;

}

if(intGame_Body[x1-i][y1]==intGame_Body[x][y]

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_3(int x,int y){ //左斜判断输赢

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

}

if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } public boolean Game_win_4(int x,int y){ //左斜判断输赢

int x1,y1,t=1;

x1=x;

y1=y;

for(int i=1;i<5;i++){

if(x1>15){

break;

}

if(intGame_Body[x1+i][y1+i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

for(int i=1;i<5;i++){

if(x1<1){

break;

} if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]){

t+=1;

}

else{

break;

}

}

if(t>4){

return true;

}

else{

return false;

} } }

上一篇:新高考改革感想下一篇:说课校本培训材料汇总