1、Java项目实训技能实训(课程设计)总结报告实训项目 Java项目实训 系 部 软件工程系 指导老师 学 号 学 生 日 期 2011.6.29 实训报告撰写注意事项1、报告内容至少应包括以下项目:1、具体实训内容;2、本次实训主要目的;3、具体日程、实训地点、同组同学、指导老师等;4、实验操作或技能训练步骤,课程设计还应包括设计任务书、原始参数、计算说明、图纸图表、程序清单等;5、本次实训的主要收获与体会。2、其余如报告的具体格式、篇幅等要求,视实训课程的区别由实训任课老师或课程设计指导教师按实训大纲,用实训指导书或课程设计指导书的形式具体规定。教务处 实训中心 制一、实训名称连连看小游戏二
2、、实训项目的目的和功能本次实训是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写一个基于JAVA的应用系统综合实例,来掌握Java语言编程技巧。 具体要求有以下几点:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。5. 设计小结。三、实训项目的开发环境和所使用的技术使用Java核心API技术,利用Eclipse或Ne
3、tBeans、JBuilder集成开发环境完成实训项目,界面友好,代码的可维护性好,有必要的注释和相应的文档。四、实训地点、日程、分组情况实训地点: 分组情况: 日 程:第一阶段:1.班级分组,选定课题,查阅相关资料 半天2.划分模块、小组成员分工 半天3利用CASE工具进行系统设计和分析,并编制源程序 3天第二阶段:上机调试,修改、调试、完善系统 1天第三阶段:撰写、上交课程设计报告,上交课程设计作品源程序(每人一份) 1天实训成绩评语一选题与分工选题:连连看小游戏分工: 姓名所做工作 查阅相关的书籍,搜集资料 编写文档 程序编码 课程设计总结二问题描述及设计思路1. 问题描述:连连看小游戏
4、。设计JDK界面的连连看小游戏,用户可以通过点击鼠标消除相同数字来结束游戏。2. 设计思路:本程序功能不是太复杂,主要工作是界面的设计。为减少通信接口设计,所有功能均在一个类中实现。程序中主要函数列表如下:函数名称函数功能简介public class lianliankan implements ActionListener()构建主面板public void init()程序入口public void randomBuild()随机数的建立public void fraction()实现计分public void reload()实现游戏重置private void initTimer()实
5、现计时三具体设计1.程序代码import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListener JFrame mainFrame; / 主面板 Container thisContainer; static long startTime, endTime; static Timer timer = null; int maxTime; int time = 0; JPanel centerPanel, southPanel, north
6、Panel; / 子面板 JButton diamondsButton = new JButton65;/ 游戏按钮数组 JButton exitButton, resetButton, setButton, newlyButton; / 退出,重列,设置,重新开始按钮 JLabel fractionLable = new JLabel(0); / 分数标签 JLabel timeLable = new JLabel(0);/ 时间标签 JButton firstButton, secondButton; / 分别记录两次被选中的按钮 int grid = new int87;/ 储存游戏按钮
7、位置 static boolean pressInformation = false; / 判断是否有按钮被选中 int x0 = 0, y0 = 0, x = 0, y = 0, fristMsg = 0, secondMsg = 0, validateLV; / 游戏按钮的位置坐标 int i, j, k, n;/ 消除方法控制 public void init() mainFrame = new JFrame(JKJ连连看); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLay
8、out(); centerPanel = new JPanel(); southPanel = new JPanel(); northPanel = new JPanel(); thisContainer.add(centerPanel, Center); thisContainer.add(southPanel, South); thisContainer.add(northPanel, North); centerPanel.setLayout(new GridLayout(6, 5); for (int cols = 0; cols 6; cols+) for (int rows = 0
9、; rows 5; rows+) diamondsButtoncolsrows = new JButton(String .valueOf(gridcols + 1rows + 1); diamondsButtoncolsrows.addActionListener(this); centerPanel.add(diamondsButtoncolsrows); exitButton = new JButton(退出); exitButton.addActionListener(this); resetButton = new JButton(重列); resetButton.addAction
10、Listener(this); setButton = new JButton(设置); setButton.addActionListener(this); newlyButton = new JButton(再来一局); newlyButton.addActionListener(this); southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(setButton); southPanel.add(newlyButton); fractionLable.setText(String.valueOf(
11、Integer.parseInt(fractionLable .getText(); northPanel.add(fractionLable); timeLable .setText(String.valueOf(Integer.parseInt(timeLable.getText(); northPanel.add(timeLable); mainFrame.setBounds(280, 100, 500, 450); mainFrame.setVisible(true); private void repaint() / TODO Auto-generated method stub p
12、ublic void fraction() fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable .getText() + 100); public void time() timeLable.setText(String .valueOf(Integer.parseInt(timeLable.getText() + 100); public void reload() initTimer(); startTime = System.currentTimeMillis()/1000; int save = new
13、 int30; int n = 0, cols, rows; int grid = new int87; for (int i = 0; i = 6; i+) for (int j = 0; j = 0) cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); while (gridcolsrows != 0) cols = (int) (Math.random() * 6 + 1); rows = (int) (Math.random() * 5 + 1); this.gridcolsrows =
14、 saven; n-; mainFrame.setVisible(false); pressInformation = false; / 这里一定要将按钮点击信息归为初始 init(); for (int i = 0; i 6; i+) for (int j = 0; j 5; j+) if (gridi + 1j + 1 = 0) diamondsButtonij.setVisible(false); public void estimateEven(int placeX, int placeY, JButton bz) public void xiao() / 相同的情况下能不能消去。 i
15、f (x0 = x & (y0 = y + 1 | y0 = y - 1) | (x0 = x + 1 | x0 = x - 1) & (y0 = y) / 判断是否相邻 remove(); else for (j = 0; j j) / 如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for (i = y - 1; i = j; i-) / 判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi != 0) k = 0; break; else k = 1; / K=1说明通过了第一次验证 if (k = 1) linePassOne(); if (y j) /
16、 如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for (i = y + 1; i = j; i+) / 判断第二按钮左侧直到第一按钮中间有没有按钮 if (gridxi != 0) k = 0; break; else k = 1; if (k = 1) linePassOne(); if (y = j) linePassOne(); if (k = 2) if (x0 = x) remove(); if (x0 x) for (n = x0; n x) for (n = x0; n = x + 1; n-) if (gridnj != 0) k = 0; break;
17、 if (gridnj = 0 & n = x + 1) remove(); for (i = 0; i i) for (j = x - 1; j = i; j-) if (gridjy != 0) k = 0; break; else k = 1; if (k = 1) rowPassOne(); if (x i) for (j = x + 1; j = i; j+) if (gridjy != 0) k = 0; break; else k = 1; if (k = 1) rowPassOne(); if (x = i) rowPassOne(); if (k = 2) if (y0 =
18、y) remove(); if (y0 y) for (n = y0; n y) for (n = y0; n = y + 1; n-) if (gridin != 0) k = 0; break; if (gridin = 0 & n = y + 1) remove(); public void linePassOne() if (y0 j) / 第一按钮同行空按钮在左边 for (i = y0 - 1; i = j; i-) / 判断第一按钮同左侧空按钮之间有没按钮 if (gridx0i != 0) k = 0; break; else k = 2; / K=2说明通过了第二次验证 if
19、 (y0 j) / 第一按钮同行空按钮在与第二按钮之间 for (i = y0 + 1; i 100) int result=JOptionPane.showConfirmDialog(thisContainer, 时间到了!是否重新开始?,提醒 ,JOptionPane.YES_NO_OPTION); timer.stop(); timer=null; if (result = JOptionPane.YES_OPTION) reload(); else thisContainer.setVisible(false); timer.stop(); timeLable.setText(Stri
20、ng.valueOf(100-(endTime-startTime); ; timer = new javax.swing.Timer(1000, actionListener); timer.start(); public static void main(String args) lianliankan llk = new lianliankan(); llk.randomBuild(); llk.init(); 2.程序运行运用jar命令打包后如下:主界面如下:游戏主界面游戏进行游戏时间结束四课程设计总结经过一周的实训,虽然实训的时间不长,但是总体上还是受益多多。在以前,学习java的时
21、候,虽然也经常上机操作,但是更多的是对于理论的理解。正是这次实训,它让我明白,java并不是一次简单的上机操作,它是一门语言,一门不是很复杂但却并不简单的计算机语言,它很实用,无需平台的限制,几百行代码就可以实现程序的操作。实训期间,在老师的建议下,我们成立了项目小组,进行了明确的分工,有的查阅相关书籍、搜集资料,有的编写文档,有的编写代码,有的设计总结。在项目进行时,难免会有一些困难,通过我们小组的积极努力,通过请教老师和其他同学,我们化解了这些困难。在实际操作过程中,我们更加熟练地掌握了Eclipse的使用,知道如何通过构造函数实现窗体的布局和容器的加载,如何运用到了GUI应用程序、继承、
22、构造、包等相关知识。同时,它也让我知道,学习中我们必须边总结边学习,对老师讲解的任何方法和类都不要放过,不管是否简单都要乐于的接受,因为老师既然讲了,那就一定有它的道理。我给我个人的综合评价是中等。在对待java这门课程时,个人认为,态度第一,兴趣是关键。因为,只有当你自己付出之后,程序运行成功时,才会产生那种自豪感,所以,一定要有自己的东西。因为有兴趣,才会想充分理解程序当中的细节,才会更好的把支离破碎的知识融会贯通,而我在这方面做的却远远不够。感谢老师,感谢这次实训,使他们让我充分认识到自己的不足,是他们让我找到了自己今后的方向。虽然这学期的java结束了,但我对java这门语言的学习并没有结束。相信我,我会努力,我相信,我会收获。五参考资料1. java项目开发案例精粹作者 曲培新等 ,电子工业出版社2. Java编程那些事儿 作者:陈跃峰、李中彬、谷骁勇 清华大学出版社3. JAVA程序设计 作者:高晓黎,刘博等 清华大学出版社4.