Java程序设计实训报告
Java实习报告范文5篇_Java实训报告总结

Java实习报告范文5篇Java实习报告范文5篇_Java实训报告总结Java是一种编程语言,如果想要在未来从事Java相关工作,就必须要掌握理论知识以及拥有强大的实操能力。
那么Java实习报告该如何写呢?小编精选了一些关于实习报告的优秀范例,一起来看看吧。
↓↓↓点击下方链接获取“Java”相关内容↓↓↓java的个人总结java实习心得总结Java开发工程师工作职责java实训实习心得java实习实训报告心得体会java实习报告1一、实习目的通过实习,培养综合运用Java语言的面向对象编程能力;培养动手能力;培养良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。
通过理论与实际的结合、学校与社会的沟通,进一步提高自己的思想觉悟、业务水平,尤其是观察、分析和解决问题的实际工作能力,以便培养自己成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。
为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
二、实习单位基本情况介绍神丰信息技术(延边)有限公司(简称“神丰信息”),是一家由日方注资,专注于面向中国丰田汽车的软件开发设计、受托日本神丰信息系统株式会社开展系统开发,系统维护、面向中国的日资企业开展系统开发,以及面向中国国内的软件开发设计的IT企业。
公司成立于2005年8月12日,注册资金RMB2,000,000元(神丰信息系统株式会社100%投资),2006年04月04日成为延边朝鲜族自治州信息产业协会会员;2006年05月25日成为吉林省软件输出联盟会员;2006年05月30日被认定为吉林省科技企业;2007年09月25日通过双软认定(软件企业认定、软件产品认定)。
神丰信息一直秉承软件提高效率、与社会共创信息化新时代的理念,致力于为用户提供具有自主知识产权的系统软件、安全软件、平台软件、各类应用软件以及全方位的解决方案和相关服务。
java实训总结及心得(7篇)

java实训总结及心得(7篇)我们在学校机房进行了为期三周的JAVA实训。
现在即将结束了,回首本学期的java学习,重点还是在学习概念等一些常识性的东西,Application应用程序和Applet小程序,它的开发工具,数据类型,变量,接口,输入输出流,学会分析异常,抛出异常,后期主要是小程序运用,Gui界面设计和事件。
我觉得这两种程序结构有很大的不同,不管是体系结构还是运行方式,都有很大的区别,我主要偏向于小程序的学习,呵呵,因为感觉它用处比较大,可以做出好多好多好玩的游戏,运用程序等,且它灵活。
呵呵,当然学知识可不能凭自己的爱好和一时兴趣,要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。
这次实训,我们更多学到的是不懂就问和自己应该尽自己的全力去尝试,哪怕失败,只要自己尽自己的全力,和身边同学一起探讨而不是抄袭,团结合作,发挥团队意识,最后在自己的努力下,终于运行成功,这种成就感美不可言,心情愉悦至极。
java实训总结及心得篇2 五个月在刚来的时候,觉得过得好慢,可转眼到了毕业又觉得时间过得好快,时间恐怕才是最会捉弄人的。
java培训结束即将走入工作岗位,我想先讲一个故事来切入正题。
有两拨人进行篮球比赛,可是一拨人有四个人,而另一拨只有3个,人数不均,显然人数居多的占优势。
比赛是不公平的,比赛快要停止的时候,拥有四人的队伍突然要求三人的队伍稍等5分钟。
正在三人队疑惑的时候,震惊的一幕开始了,另外四人走到篮板前,轮流开始投篮,每人十次,投的最少的被淘汰了,余下的三人回到比赛。
比赛的结果是什么我不知道,但我知道原来的三人组无论胜败,在他们取得成功的路上绝对比预期要困难的多。
与中国的仁义之道相比,物竞天择恐怕是社会乃至世界的本职,从细微处看不到的东西,我们就从宏观角度出发,又会发现什么呢中国五千年历史可以发现有用的东西,实在很少,原因是它是一个反对竞争的。
java实训报告(7篇)

java实训报告java实训报告(7篇)随着社会一步步向前发展,报告的使用成为日常生活的常态,其在写作上有一定的技巧。
一听到写报告马上头昏脑涨?以下是小编收集整理的java实训报告,仅供参考,希望能够帮助到大家。
java实训报告1内蒙古商贸职业学院计算机系学生校内实验实训报告20 --20 学年第学期系部:计算机系课程名称:Java程序设计教程专业班级:内蒙古商贸职业学院计算机系制填写说明1、实验项目名称:要用最简练的语言反映实验的内容,要与实验指导书或课程标准中相一致。
2、实验类型:一般需要说明是验证型实验、设计型实验、创新型实验、综合型实验。
3、实验室:实验实训场所的名称;组别:实验分组参加人员所在的组号。
4、实验方案设计(步骤):实验项目的设计思路、步骤和方法等,这是实验报告极其重要的内容,概括整个实验过程。
对于操作型实验(验证型),要写明需要经过哪几个步骤来实现其操作。
对于设计型和综合型实验,在上述内容基础上还应该画出流程图和设计方法,再配以相应的文字说明。
对于创新型实验,还应注明其创新点、特色。
5、实验小结:对本次实验实训的心得体会、思考和建议等。
6、备注:分组实验中组内成员分工、任务以及其他说明事项。
注意:①实验实训分组完成的,每组提交一份报告即可,但必须说明人员分工及职责。
不分组要求全体成员独立完成的实验实训项目可由指导老师根据个人完成情况分组填写。
②实验成绩按照百分制记,根据教学大纲及课程考核要求具体区分独立计算、折算记入两种情况。
③本实验实训报告是根据计算机系实验的具体情况在学院教务处制的实验实训报告的基础上进行改制的。
特此说明。
成绩单组别:小组成员:篇二:实训总结实训收获总结报告学部:计算机信息学院学科门类:计算机信息类专业:计算机应用技术姓名:朱恩林学号:12310020020实习单位:北京盛威南凌信息科技有限公司指导教师:王洪钊实习时间:20xx年5月15号—9月23号一、实训目的计算机信息管理专业的java实训在教学计划中是实训、实习课程。
Java程序设计实训总结[优秀范文五篇]
![Java程序设计实训总结[优秀范文五篇]](https://img.taocdn.com/s3/m/30db0e612a160b4e767f5acfa1c7aa00b52a9de0.png)
Java程序设计实训总结[优秀范文五篇]第一篇:Java程序设计实训总结Java项目开发实训总结设计人:张**班级和班内序号:软件项目选题意义:选这个题目的原因:目前,随着国外的网上书店的盛行,在国内也出现了一些网上书店,如当当网、卓越网、以及china-pub等等。
互联网为这些网上书店的发展提供了无限的空间,这些网上的虚拟书店同实体书店一样可以容纳无限的图书或图样以及内容。
“这些网上书店的实现使用了当今世界最先进的计算机技术和网络技术,迅速的成为国内知名图书网站”。
作为计算机专业的学生,对于完成电子商务的计算机技术更需要切实掌握,以便在社会上更好的使用自己的所学技能,因此研究有关电子商务的计算机技术成为了极为有意义的课题。
项目名称:网上书店自我评价:优秀所开发系统的使用价值和应用领域:可以使用户方便的购买图书,为用户节省更多的时间。
应用领域是向广大群众开放,不过需用户注册后才能购买,还需用户会基本的电脑操作。
项目设计情况:项目的设计使用工具有NetBeans IDE 7.3和SQL Server Management StudioR2,技术有JSP技术,包括struts和Hibernate。
删除图书信息等功能。
项目设计中主要完成哪些任务?项目的设计已完成预期目标!项目的优势和缺陷:优势:本项目采用J2EE中的struts和Hibernate技术,J2EE代表的是一种前沿技术,它使得复杂的多层结构应用系统开发变得容易。
J2EE 建立在己取得极大成功的Java语言之上,采用J2EE规范能有效地进行软件复用,提高开发人员的效率,降低软件的开发和维护成本,提高软件的质量,控制所构建系统的复杂性。
J2EE规范将使得Java在企业计算中的地位得到加强,为基于Java 的应用系统提供了一个框架,和目前的许多系统和模型相比,J2EE具有许多优越性。
种种迹象表明,J2EE有可能成为多层结构分布式应用系统的服务器端构件模型的首要选择。
java实训总结5篇

java实训总结5篇第1篇示例:本次Java实训总结将围绕项目背景、项目任务、项目实施、经验收获、存在问题以及未来展望等方面展开,全面总结这次实训的过程和成果。
1. 项目背景本次Java实训项目是由某高校计算机学院组织的一次实训活动,旨在提高学生对Java技术的应用能力,锻炼学生的团队合作能力和项目管理能力。
项目要求学生利用所学知识,设计并实现一款具有一定功能的Java应用程序。
2. 项目任务本次实训项目的主要任务是设计并实现一个学生信息管理系统,系统包括学生基本信息录入、查询、修改、删除等功能,同时还可以实现学生成绩查询和排名等功能。
学生需要分组合作完成项目,并按时提交最终的作品。
3. 项目实施在项目实施阶段,学生们首先进行了团队分组,确定了各自的角色和任务分工。
然后通过讨论和思考,确定了项目的整体架构和功能设计。
在开发阶段,团队成员按照设计文档,分工合作,分别实现各自负责的模块。
在开发过程中,遇到了一些技术难题和bug,但大家积极合作,相互帮助,最终顺利完成了项目的开发。
4. 经验收获通过本次实训项目,我收获了很多。
首先是对Java技术的应用能力有了进一步的提升,熟练掌握了Java语言的基本语法和常用API。
其次是学会了团队合作和沟通,明白了团队合作的重要性。
还学会了如何根据需求文档设计和实现一个完整的项目,锻炼了自己的项目管理能力。
5. 存在问题在项目实施过程中,也出现了一些问题。
团队成员之间的沟通不够及时和顺畅,导致了进度的拖延。
有时候个别成员的代码风格不统一,造成了代码的混乱。
有些成员在技术上遇到了瓶颈,需要更多的指导和帮助。
6. 未来展望在今后的学习和实践中,我会继续加强对Java技术的学习和掌握,不断提升自己的技术能力。
也会加强团队合作和沟通能力,学会更好地与团队成员合作。
希望未来能够参与更多的项目实施,锻炼自己的实践能力,成为一名优秀的Java开发工程师。
本次Java实训项目是一次非常有意义和收获的经历。
Java实训总结(通用3篇)

Java实训总结(通用3篇)Java实训总结篇1一、通过对java语言、JavaWeb、Oracle数据库应用设计及SQL语言的复习和锻炼,并且通过使用MyEclipse 开发平台设计库存管理系统项目,以达到充分熟悉开发平台及其应用设计。
同时掌握并实践软件项目设计规范及其开发流程:需求分析、概要设计、详细设计、代码编写、系统测试及软件手册编写,以便提前适应软件公司开发流程、环境和工作要求进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。
学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。
通过实习,培养我们综合运用已学知识Java语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。
为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
二、实习主要流程1、公司管理规则,程序员素质,程序员编码规范;2、需求开发与管理;3、面向对象分析与设计,面向对象编程的特性;4、 javaSE、javaWeb 、页面设计-JSP页面;5、数据库设计、SQL应用;6、软件需求分析与设计;7、项目实战三、实习内容Oracle数据库数据库是数据的结构化集合。
计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。
Oracle服务器还有一套实用的特性集合,这些特性是通过与我们用户的密切合作而开发的。
在我们的基准测试主页上,给出了Oracle 服务器和其他数据库管理器的比较结果。
Oracle服务器最初是为处理大型数据库而开发的,与已有的解决方案相比,它的速度更快,多年以来,它已成功用于众多要求很高的生产环境。
尽管Oracle始终在不断发展,但目前Oracle服务器已能提供丰富和有用的功能。
java实习报告模板(精选9篇)

java实习报告模板(精选9篇)java实习报告模板篇1毕业实习是学生大学学习阶段重要的实践性教学环节之一,通过实习学生将进一步了解社会,增强对社会主义现代化建设的责任感,使命感.实习期间,要求学生对企业(事业)单位的软件设计工作进行业务实践,使学生通过实习做到理论联系实际,充实和丰富所学的专业理论知识,培养发现问题,分析问题和解决问题的能力,为毕业后从事软件设计工作打下基础。
毕业实习有着它深刻的意义,也是大学生必经的体验,感谢学校能给我们提供机会,也感谢公司为我们提供条件。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
而我们现在学习Java是我们课程中的必修课程,更是找一份好工作的必备技能,虽然实习为期才一周,但是给我们增长很多见识,了解了大型软件开发的过程。
也学习了很多软件开发时一些技巧,更重要的是这次实习抛开了以前老师讲学生听的模式,这次老师边讲边带领我们编写程序,让我们能让学到的知识迅速巩固。
在中国软件专业人才培养工程(CSTP),北京智原教育基地。
为期5天的培训我们熟练掌握基于java的Android主流3G开发技术,能够独立完成从手机终端到服务器端完整开发方案。
使得能够掌握android相关领域基础知识,学会开发Android手机应用系统;掌握手机开发要点;培养基本的编程感觉。
在这5天时间里,我们学习了Android开发环境的搭建实现基于Android4.2 SDK的开发环境,理解DDMS等常用Android手机开发工具Android中Activity 的基本应用了解Activity对于手机UI界面的关系,实现项目的UI界面的设计,理解Android开发中的resource各种资源Android的常用组件熟悉Te_tView、EditTe_t、Spinner、ListView等常用组件,实现基本功能。
Java万能实训报告心得(7篇)

Java万能实训报告心得(7篇)Java万能实训报告心得篇1短短的一个月很快就过去了,在这短短的一个月里,我学到了很多,了解了很多。
在这一个月里我学到了有关JAVA等方面的知识,了解了关于软件开发的流程。
了解了自己的不足,知道了自己努力的方向。
回顾这次的实训,这次或许是最后的实训机会。
我是一名大二的学生,明年或许就要出去实习了,所以我很珍惜这次的实训机会,因为它能够让我了解自己的不足以及以后自己努力的方向,同时也能让我了解软件开发的流程,增加一点软件开发经验和社会经验。
让我在以后的实习中会更好的融入到其中,增加自己的就业机会,因为纵观现在的就业形势很不让人乐观,由于之前的经济危机,就业机会越来越少,就业也越来越难,这就给了我们很大的压力,所以要是没有真本事,就业岗位就无从谈起,因此,在以后的学习中,我会更加好好努力。
通过这次的实训,我学到了很多:首先,对JAVA识比以前有了更深的了解。
在这之前由于种.种原因我JAVA学的很不好,编程我几乎写不出来。
但经过这次的实训,我对JAVA的理解,虽然还有很多都不懂,但我会在今后的实训和学习中加以学习了解,力求弄懂,增强自己对JAVA的理解。
其次,在这次的实训中我的动手操作能力有了一点的提高,刚开始的时候JDK的配置,数据库的安装都出现了一定的问题,JAVA 可实话开发工具的不熟悉,所以开始的时候进程很慢,时间都用在了JDK的配置,数据库的安装以及熟悉JAVA可视化开发工具上,但付出有了回报,成功的配置了JDK,安装了数据库,熟悉了JAVA可视化开发工具,总的说来,自己还是有一定的收获的。
因为自己的动手操纵能力得到了提高。
最后是团队协作。
在整个项目完成过程中团队协作有着不可替代的作用。
从在刚拿到项目时对项目的分析到最后的项目完结的都有一定的体现。
刚拿到项目时,我们团队进行了分析,并分配了各自的任务。
当我们其中一人遇到问题的时候,我们其他人都会去帮忙,效率提升了很多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陕西国际商贸学院Java实训报告专业:计算机科学与技术班级:姓名:学号:指导老师:前言Java自问世以来,以其得天独厚的优势,在IT业界掀起了研究、开发它的浪潮,显示了鹏程万里的美好前景。
作为一种与底层硬件无关的、“编写一次,到处运行”的高级语言和计算平台,Java天生就具有将网络上的各个平台连成一体的能力,真正实现了“网络就是计算机”的理念。
以Java为代表的网络的成长,改变了我们的联系方式、生活方式、学习方式和经营方式。
它的来到使我们目睹了一场类似印刷术的重大变革。
毫无疑问,它将影响人类社会的发展,这就是:Java加速人类进入网络时代!本次课程设计是配合JAVA程序设计课程,帮助我们深入学习掌握JAVA语言,熟练运用这个工具来编写的。
通过课程设计各个项目的综合训练,不仅培养学生实际分析问题、编程和动手能力,而且还提高了学生的综合素质。
本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习以及正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。
本次课程设计主要是用JAVA实现围棋系统,能够实现画笔、画直线、画圆形、并修改该画笔的大小以及颜色。
该围棋程序还需具有悔棋功能以及选择棋盘大小的功能。
2014年6月11日目录一、实训目的及要求 (4)二、概要设计 (5)三、详细设计 (6)四、功能分析 (7)五、测试数据及运行结果 (10)六、总结 (14)一、实训目的及要求1. 1 实训目的1.使学生熟练掌握,java编成的基础知识,以及巩固图形界面及绘图知识点。
2.结合软件工程,熟悉软件开发过程。
3.训练了学生学生独立编程以及调试程序的能力。
4.训练学生对于算法的理解和设计能力。
5.加强了学生实际动手能力,以及对于面向对象方法学的理解。
6.巩固图形界面排版,以及界面的设计能力。
7.加强学生对于所学知识的理解及运用。
1.2 实训要求1.需交电子版和纸制板实训报告各一份,电子版海源程序。
2.程序必须可运行。
3.界面必须保证美观。
4.操作简单易学。
5.各项功能不可缺损。
6.报告版面美观,易读。
二、概要设计1. 整个围棋程序分为3个部分:棋盘、棋子、围棋主类软件结构图(见图一):图1 软件结构图2.围棋软件中的棋盘主类都将采用绘制。
3.整个程序界面将采用固定大小。
三、详细设计1.围棋程序顶层数据流程图如下:图2 顶层数据流程图2.功能级数据流图如下:鼠标坐标图3 功能级数据流程图四、功能分析整个围棋程序分为3个部分:棋盘、棋子、围棋主类1.棋盘主类主要功能有:《1》绘制棋谱及落棋,程序实现重写的pint方法如下:public void paint(Graphics g) {offg.setColor(new Color(180, 150, 100));offg.fillRect(0, 0, size, size);//画出棋盘格子offg.setColor(Color.black);for (int i = 0; i < gridNum + 1; i++) {int x1 = left + i * gridLen;int x2 = x1;int y1 = top;int y2 = top + gridNum * gridLen;offg.drawLine(x1, y1, x2, y2);x1 = left;x2 = left + gridNum * gridLen;y1 = top + i * gridLen;y2 = y1;offg.drawLine(x1, y1, x2, y2);}//画出棋子for (int i = 0; i < gridNum + 1; i++)for (int j = 0; j < gridNum + 1; j++) {if (map[i][j] == null)continue;offg.setColor(map[i][j].color == Chesspoint.black ? Color.black: Color.white);offg.fillOval(left + i * gridLen - chessmanLength / 2, top + j* gridLen - chessmanLength / 2, chessmanLength,chessmanLength);}//画出鼠标的位置,即下一步将要下的位置if (mouseLoc != null) {offg.setColor(currentTurn == Chesspoint.black ? Color.gray: new Color(200, 200, 250));offg.fillOval(left + mouseLoc.x * gridLen -chessmanLength / 2, top+ mouseLoc.y * gridLen - chessmanLength / 2,chessmanLength, chessmanLength);}//把画面一次性画出g.drawImage(offscreen, 80, 0, this);}《2》吃子,程序实现见源程序。
《3》悔棋,并保存所有已下的棋子,包括在棋盘上的所有棋子和被提掉的,程序实现悔棋back()方法如下://悔棋public void back() {if (alreadyNum == 0) {controlPanel.setMsg("无子可悔");return;}Object obj = chessman.elementAt(--alreadyNum);if (obj instanceof Chesspoint) {Chesspoint qizi = (Chesspoint) obj;map[qizi.x][qizi.y] = null;currentTurn = qizi.color;} else {Vector v = (Vector) obj;for (int i = 0; i < v.size(); i++) {Chesspoint q = (Chesspoint) (v.elementAt(i));if (i == v.size() - 1) {map[q.x][q.y] = null;int index = chessman.indexOf(v);chessman.setElementAt(q, index);currentTurn = q.color;} else {map[q.x][q.y] = q;}}}controlPanel.setLabel();repaint();}《4》在该类中使用Vector类型保存踢掉的棋子及这个棋子本身。
2.棋子主类主要功能有:获得实际的棋子位置,程序实现如下:public class Chesspoint{public static int black=0,white=1;int x,y;int color;public Chesspoint(int i,int j,int c){x=i;y=j;color=c;}public String toString(){// 储存x,y位置和颜色String c=(color==black?"black":"white");return "["+x+","+y+"]:"+c;}}3. 围棋主类主要功能:(1)对围棋界面外观进行初始化,构造方法Chess实现如下:public Chess() {this.setTitle("围棋程序");this.setLayout(new BorderLayout());jp.setSize(550, 490);jp.setLayout(new BorderLayout());jp.add(Chessboard.controlPanel, "West");jp.add(qipan, "Center");add(jp);jp.setSize(550, 490);this.setResizable(false);this.setLayout(new BorderLayout());this.setSize(550, 490);this.setVisible(true);}(2)创建围棋对象,main方法实现如下:public static void main(String[] args) {//开始下棋程序Chess Igo = new Chess();五、测试数据及运行结果1.初始界面如图图5.1所示:图5.1运行结果图2.18x18棋盘测试如图:图5.2运行结果图3.2.7x7棋盘测试如图:图5.3运行结果图4.悔棋标签反映无子可悔如图:图5.4运行结果图六、总结时光如梭,光阴似箭,java实训一晃而过,通过这一期的实训,虽然实训的时间不长,但是总体上收获挺大的,当我们正式准备学习实训java编程技术时,让我感到非常高兴,因为java一直学的是课本知识,所以实训对于我来说是必须要学会熟练操作的。
当然开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时后也难免会失去耐心,但是,通过老师的指导,自己的努力的练习,我顺利的化解了一道道的障碍。
克服了java学习上的一道道难关,现在自己已经基本掌握了java的基础知识。
我很清楚以后的路还很长,再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
任何业绩的质变都来自于量变的积累,成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成,让我们将事前的忧虑,换为事前的思考和计划吧!在实训的过程中,我深深感觉到自身所学知识的有限。
以后要更加努力学习.源代码:1、Chessboard类import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.JPanel;public class Chessboard extends JPanel {// 默认的棋盘方格长度及数目public static final int _gridLen = 22, _gridNum = 19;/** 利用Vector保存所有已下的棋子,包括在棋盘上的所有棋子和被踢掉的,若某一次* 落子没有造成踢子,包括所有被这个棋子提掉的棋子及这个棋子本身,Vector 最后*/private Vector chessman;private int alreadyNum; // 已下数目private int currentTurn; // 轮到谁下private int gridNum, gridLen; // 方格长度及数目private int chessmanLength; // 棋子的直径private Chesspoint[][] map; // 在棋盘上的所有棋子private Image offscreen;private Graphics offg;private int size; // 棋盘的宽度及高度private int top =13, left = 13; // 棋盘左边及上边的边距private Point mouseLoc; // 鼠标的位置,即map数组中的下标public static ControlPanel controlPanel; // 控制面板//获得控制板的距离public int getWidth() {return size;}public int getHeight() {return size;}//绘制棋盘外观public Chessboard() {gridNum = _gridNum;gridLen = _gridLen;chessmanLength = gridLen * 9 / 10;size = 2 * left + gridNum * gridLen;addMouseListener(new PutChess());addMouseMotionListener(new MML());setLayout(new BorderLayout());controlPanel = new ControlPanel();startGame();}public void addNotify() {super.addNotify();offscreen = createImage(size, size);offg = offscreen.getGraphics();}public void paint(Graphics g) {offg.setColor(new Color(180, 150, 100));offg.fillRect(0, 0, size, size);//画出棋盘格子offg.setColor(Color.black);for (int i = 0; i < gridNum + 1; i++) {int x1 = left + i * gridLen;int x2 = x1;int y1 = top;int y2 = top + gridNum * gridLen;offg.drawLine(x1, y1, x2, y2);x1 = left;x2 = left + gridNum * gridLen;y1 = top + i * gridLen;y2 = y1;offg.drawLine(x1, y1, x2, y2);}//画出棋子for (int i = 0; i < gridNum + 1; i++)for (int j = 0; j < gridNum + 1; j++) {if (map[i][j] == null)continue;offg.setColor(map[i][j].color == Chesspoint.black ? Color.black: Color.white);offg.fillOval(left +i* gridLen - chessmanLength / 2, top + j* gridLen - chessmanLength / 2, chessmanLength,chessmanLength);}//画出鼠标的位置,即下一步将要下的位置if (mouseLoc != null) {offg.setColor(currentTurn == Chesspoint.black ? Color.gray: new Color(200, 200, 250));offg.fillOval(left + mouseLoc.x * gridLen - chessmanLength/2 , top+ mouseLoc.y * gridLen - chessmanLength / 2,chessmanLength, chessmanLength);}//把画面一次性画出g.drawImage(offscreen, 3, 0, this);}// 更新棋盘public void update(Graphics g) {paint(g);}//下棋子class PutChess extends MouseAdapter { // 放一颗棋子public void mousePressed(MouseEvent evt) {int xoff = left / 2;int yoff = top / 2;int x = (evt.getX() - xoff) / gridLen;int y = (evt.getY() - yoff) / gridLen;if (x < 0 || x > gridNum || y < 0 || y > gridNum)return;if (map[x][y] != null)return;// *****************清除多余的棋子**********************if (alreadyNum < chessman.size()) {int size = chessman.size();for (int i = size - 1; i >= alreadyNum; i--)chessman.removeElementAt(i);}// ****************************************************Chesspoint qizi = new Chesspoint(x, y, currentTurn);map[x][y] = qizi;// ****************************************************chessman.addElement(qizi);alreadyNum++;if (currentTurn == Chesspoint.black)currentTurn = Chesspoint.white;elsecurrentTurn = Chesspoint.black;// **************判断在[x,y]落子后,是否可以提掉对方的子tizi(x, y);// ***************判断是否挤死了自己,若是则已落的子无效if (allDead(qizi).size() != 0) {map[x][y] = null;repaint();controlPanel.setMsg("挤死自己");// ******************back**************chessman.removeElement(qizi);alreadyNum--;if (currentTurn == Chesspoint.black)currentTurn = Chesspoint.white;elsecurrentTurn = Chesspoint.black;return;}mouseLoc = null;// 更新控制面板controlPanel.setLabel();}public void mouseExited(MouseEvent evt) {// 鼠标退出时,清除将要落子的位置mouseLoc = null;repaint();}}private class MML extends MouseMotionAdapter {// 取得将要落子的位置public void mouseMoved(MouseEvent evt) {int xoff = left / 2;int yoff = top / 2;int x = (evt.getX() - xoff) / gridLen;int y = (evt.getY() - yoff) / gridLen;if (x < 0 || x > gridNum || y < 0 || y > gridNum)return;if (map[x][y] != null)return;mouseLoc = new Point(x, y);repaint();}}//判断在[x,y]落子后,是否可以踢掉对方的子public static int[] xdir = { 0, 0, 1, -1 };public static int[] ydir = { 1, -1, 0, 0 };public void tizi(int x, int y) {Chesspoint qizi;if ((qizi = map[x][y]) == null)return;int color = qizi.color;//取得棋子四周围的几个子Vector v = around(qizi);for (int l = 0; l < v.size(); l++) {Chesspoint q = (Chesspoint) (v.elementAt(l));if (q.color == color)continue;//若颜色不同,取得和q连在一起的所有已死的子,//若没有已死的子则返回一个空的VectorVector dead = allDead(q);//移去所有已死的子removeAll(dead);//如果踢子,则保存所有被踢掉的棋子if (dead.size() != 0) {Object obj = chessman.elementAt(alreadyNum - 1);if (obj instanceof Chesspoint) {qizi = (Chesspoint) (chessman.elementAt(alreadyNum - 1));dead.addElement(qizi);} else {Vector vector = (Vector) obj;for (int i = 0; i < vector.size(); i++)dead.addElement(vector.elementAt(i));}// 更新Vector chessman中的第num个元素chessman.setElementAt(dead, alreadyNum - 1);}}repaint();//判断棋子周围是否有空白public boolean sideByBlank(Chesspoint qizi) {for (int l = 0; l < xdir.length; l++) {int x1 = qizi.x + xdir[l];int y1 = qizi.y + ydir[l];if (x1 < 0 || x1 > gridNum || y1 < 0 || y1 > gridNum) continue;if (map[x1][y1] == null)return true;}return false;}//取得棋子四周围的几个子public Vector around(Chesspoint qizi) {Vector v = new Vector();for (int l = 0; l < xdir.length; l++) {int x1 = qizi.x + xdir[l];int y1 = qizi.y + ydir[l];if (x1 < 0 || x1 > gridNum || y1 < 0 || y1 > gridNum|| map[x1][y1] == null)continue;v.addElement(map[x1][y1]);}return v;//取得连在一起的所有已死的子public Vector allDead(Chesspoint q) {Vector v = new Vector();v.addElement(q);int count = 0;while (true) {int origsize = v.size();for (int i = count; i < origsize; i++) {Chesspoint qizi = (Chesspoint) (v.elementAt(i));if (sideByBlank(qizi))return new Vector();Vector around = around(qizi);for (int j = 0; j < around.size(); j++) {Chesspoint a = (Chesspoint) (around.elementAt(j));if (a.color != qizi.color)continue;if (v.indexOf(a) < 0)v.addElement(a);}}if (origsize == v.size())break;elsecount = origsize;}return v;}// 从棋盘上移去中棋子public void removeAll(Vector v) {for (int i = 0; i < v.size(); i++) {Chesspoint q = (Chesspoint) (v.elementAt(i));map[q.x][q.y] = null;}repaint();}//悔棋public void back() {if (alreadyNum == 0) {controlPanel.setMsg("无子可悔");return;}Object obj = chessman.elementAt(--alreadyNum);if (obj instanceof Chesspoint) {Chesspoint qizi = (Chesspoint) obj;map[qizi.x][qizi.y] = null;currentTurn = qizi.color;} else {Vector v = (Vector) obj;for (int i = 0; i < v.size(); i++) {Chesspoint q = (Chesspoint) (v.elementAt(i));if (i == v.size() - 1) {map[q.x][q.y] = null;int index = chessman.indexOf(v);chessman.setElementAt(q, index);currentTurn = q.color;} else {map[q.x][q.y] = q;}}}controlPanel.setLabel();repaint();}//悔棋后再次前进public void forward() {if (alreadyNum == chessman.size()) {controlPanel.setMsg("不能前进");return;}Object obj = chessman.elementAt(alreadyNum++);Chesspoint qizi;if (obj instanceof Chesspoint) {qizi = (Chesspoint) (obj);map[qizi.x][qizi.y] = qizi;} else {Vector v = (Vector) obj;qizi = (Chesspoint) (v.elementAt(v.size() - 1));map[qizi.x][qizi.y] = qizi;}if (qizi.color == Chesspoint.black)currentTurn = Chesspoint.white;elsecurrentTurn = Chesspoint.black;tizi(qizi.x, qizi.y);controlPanel.setLabel();repaint();}//重新开始游戏public void startGame() {chessman = new Vector();alreadyNum = 0;map = new Chesspoint[gridNum + 1][gridNum + 1];currentTurn = Chesspoint.black;controlPanel.setLabel();repaint();}//控制面板类class ControlPanel extends Panel {protected Label lblTurn = new Label("", Label.CENTER);protected Label lblNum = new Label("", Label.CENTER);protected Label lblMsg = new Label("", Label.CENTER);protected Choice choice = new Choice();protected Button back = new Button("悔棋");protected Button start = new Button("重新开局");public int getWidth() {return 50;}public int getHeight() {return size;}//选择棋盘的大小public ControlPanel() {setSize(this.getWidth(), this.getHeight());setLayout(new GridLayout(12, 1, 0, 10));setLabel();choice.add("18 X 18");choice.add("14 X 14");choice.add("12 X 12");choice.add("11 X 11");choice.add(" 7 X 7 ");choice.addItemListener(new ChessAction());add(lblTurn);add(lblNum);add(start);add(choice);add(lblMsg);add(back);back.addActionListener(new BackChess());start.addActionListener(new BackChess());setBackground(new Color(120, 120, 200)); }public Insets getInsets() {return new Insets(5, 5, 5, 5);}//悔棋private class BackChess implements ActionListener {public void actionPerformed(ActionEvent evt) {if (evt.getSource() == back)Chessboard.this.back();else if (evt.getSource() == start)Chessboard.this.startGame();}}// 下棋动作private class ChessAction implements ItemListener {public void itemStateChanged(ItemEvent evt) {String s = (String) (evt.getItem());Chessboard.this.left = Chessboard.this.top =13;int rects = Integer.parseInt(s.substring(0, 2).trim());if (rects != Chessboard.this.gridNum) {if(rects<18){Chessboard.this.left = Chessboard.this.top =Chessboard.this.left+(28-rects);Chessboard.this.gridLen = (_gridLen * _gridNum-Chessboard.this.left) / rects;Chessboard.this.chessmanLength = gridLen * 9 / 10;Chessboard.this.gridNum = rects;Chessboard.this.startGame();}else{Chessboard.this.gridLen = (_gridLen * _gridNum) / rects;Chessboard.this.chessmanLength = gridLen * 9 / 10;Chessboard.this.gridNum = rects;Chessboard.this.startGame();}}}}// 待下方的颜色与步数public void setLabel() {lblTurn.setText(Chessboard.this.currentTurn == Chesspoint.black ? "轮到黑子": "轮到白子");lblTurn.setForeground(Chessboard.this.currentTurn == Chesspoint.black ? Color.black: Color.white);lblNum.setText("第" + (Chessboard.this.alreadyNum + 1) + " 手");lblNum.setForeground(Chessboard.this.currentTurn == Chesspoint.black ? Color.black: Color.white);lblMsg.setText("");}public void setMsg(String msg) {// 提示信息lblMsg.setText(msg);}}}2、Chesspoint类//取得黑白棋子的位置public class Chesspoint{public static int black=0,white=1;int x,y;int color;public Chesspoint(int i,int j,int c){x=i;y=j;color=c;}public String toString(){// 储存x,y位置和颜色String c=(color==black?"black":"white");return "["+x+","+y+"]:"+c;}}3、Chess类import java.awt.*;import javax.swing.JFrame;import javax.swing.JPanel;import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.JFrame;//import sunw.util.EventListener;public class Chess extends JFrame {Chessboard qipan = new Chessboard();private JPanel jp = new JPanel();// 初始化外观public Chess() {this.setTitle("围棋程序");this.setLayout(new BorderLayout());jp.setSize(550, 490);jp.setLayout(new BorderLayout());jp.add(Chessboard.controlPanel, "West");jp.add(qipan, "Center");add(jp);jp.setSize(550, 490);this.setResizable(false);this.setLayout(new BorderLayout());this.setSize(550, 490);this.setVisible(true);}// 得到宽数值public int getWidth() {return qipan.getWidth();}public int getHeight() {return qipan.getHeight();}public static void main(String[] args) { //开始下棋程序Chess Igo = new Chess();}}。