基于JAVA连连看小程序 - 丁玲定稿

发布时间:2014-04-23 23:21:20

毕业论文

基于JAVA连连看小程序

学生姓名

学生学号 0808030206

电气信息工程学院

电子信息工程

2012

指导教师


1

1 绪论 2

1.1 游戏产业介绍 2

1.2 游戏“连连看”的发展概况 2

2 需求分析 2

2.1 功能分析 2

2.2 游戏可行性论证 3

2.3 流程图 4

2.3.1 游戏主流程图 4

2.3.2 计时系统流程图 5

2.3.3 使用炸弹流程图 6

3 详细设计 6

3.1 课题的研究目的 6

3.2 课题设计的实验环境 6

3.3 类、方法、属性说明 7

3.3.1 类的设计 7

3.3.2 成员变量 8

3.3.3 方法设计 8

3.4 游戏的设计 9

3.4.1 游戏模块设计 9

3.4.2 算法模块 9

3.4.3 界面显示模块 9

3.4.4 菜单、帮助(控制)模块 9

3.4.5 地图设计 9

3.4.6 算法设计 10

4 测试分析 11

4.1 程序主要代码 11

4.2 程序运行结果及分析 15

4.3 测试计划及分析 24

4.3.1 检验的先后顺序 24

4.3.2 程序异常处理 24

5 课题设计总结 24

参考文献 25

致谢 26


基于JAVA连连看小程序

学生:丁玲

指导教师:李营

淮南师范学院电气信息工程学院

Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。本论文通过所学的Java语言,利用Eclipse为开发平台设计了一个操作简单、界面美观的“淮师连连看”游戏。为了使游戏界面简单清晰,故主界面基于GUI(图形用户界面)进行开发,调用了一些函数,完成了事件的触发功能并通过定义动态的二维数组,根据一定的算法实现规定的路径判断。最终该小软件编译成功并实现了几个基本功能:“菜单”“开始游戏”“再来一局”“炸弹”“退出”“帮助”“联系作者”等。

关键词:Java语言;面向对象;EclipseGUI;二维数组

Mini-Lianliankan program Based on the JAVA

Student:Ding Ling

Instructor:Li Ying

Electrical and Information Engineering School,Huainan Normal University

Abstract: The Java language is today's popular web programming language, it has the characteristics of object-oriented, cross-platform, distributed applications etc.. Through the Java language using the Eclipse development platform designed a simple and beautiful interface "Huainan Normal University Lianliankan" game. In order to make the game interface is simple and clear, the main interface is based on GUI (graphical user interface) development, call some function to complete the event trigger and define the dynamic two-dimensional array, according to certain algorithms to achieve the specified path judge. The ultimate success of the software to compile and to achieve a few basic functions:"Menu" "start game" "play again" "bomb" "exit" "Help" "contact the author".

Key words: Java language; Object-oriented; Eclipse; GUI; Two-dimensional array

1 绪论

1.1 游戏产业介绍

游戏产业作为现代电脑电子技术的产物,正在以其独特的魅力在全世界的娱乐领域占据主流位置,我们在承认广大娱乐网民的选择空间狭小的同时,也必须明确的一点就是游戏本身所具有的强大的吸引力。游戏的吸引力主要在于,它在让玩家打发时间的同时,可以让人在紧张工作之余带来最大程度的放松,也可以增进人们之间的交流、沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市、甚至跨国间人们互相娱乐的目的,从而满足了人们休闲的需要。而且游戏产业促动高科技技术不断升级,作为经济增长的一大支撑点,已经成为经济腾飞的“第四产业”。

1.2 游戏“连连看”的发展概况

游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。

游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书[1-5]

随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等[6],流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络[7]。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者其中以开发者JoneveyManyou开放平台上推出的“宠物连连看”最为流行[8]。基于JAVA下的“连连看”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。

2 需求分析

2.1 功能分析

每次用户选择两个图形,如果图形满足一定条件(两个图形一样,且这两个图形之间存在转弯少于3的路径),则两个图形都能消掉。给定任意具有相同图形的两个格子,我们需要寻找这两个格子之间在转弯最少的情况下,经过格子数目最少的路径。如果这个最优路径的转弯数目少于3 ,则这两个格子可以消去[9]

将界面中相同的图片消去,游戏限时300秒,如果在规定的时间内没有完成,就会跳出对话框“笨蛋!游戏时间到!GAME OVER !!!”的字样。如果玩家赢了这局,还没有过瘾的话,可以单击“再来一局”。判断游戏是否结束。如果所有图形全部消去,或者游戏玩家不可能再消去任意两个格子的时候,游戏应该结束。后一种情况,我们称之为“死锁”。

在死锁的情况下,我们也可以暂时不终止游戏,而是随机打乱局面,使得打破“死锁”局面。不管怎样,我们需要判别游戏当前状态是否为“死锁”状态。我们首先思考问题:怎么判断两个图形能否相消?前面分析中,我们已经知道,两个图形能够相消,当且仅当这两个图形相同,且它们之间存在路径转弯数目小于3

因此,我们主要需要解决的问题还是,怎样求出相同图形之间的最短路径?这个最短的路径,我们首先需要保证转弯数目最少。在转弯数目最少的情况下,经过的格子数目要尽可能地少。

在经典的最短路问题中,我们需要求出经过格子数目最少的路径。而这里,要保证转弯数目最少,需要把最短路问题的目标函数修改为从一个点到另一个点的转弯次数。虽然,目标函数修改了,但算法的框架仍然可以保持不变。广度优先搜索是解决经典最短路问题的一个思路。我们看看在新的目标函数(转弯数目最少)下,如何用广度优先搜索来解决图形Ax1,y1)和图形Bx2,y2)之间的最短路问题[10]

通过JAVA编一个连连看程序,通过鼠标点击使相同两个图像消掉。程序实现以下几个功能:(1)、判断鼠标点击的两张图片是否相同;(2)、判断2张图片是否可以相连;(3)、判断时间;(4)、判断是否使用炸弹,炸弹剩余数目,自动生成路径消除两张相同图片;(5)、判断剩余图片,是否胜利[11]

2.2 游戏可行性论证

这个游戏是用图形界面实现的,通过编译解释后,出现一个图形界面。界面上方有一行菜单栏和帮助栏,点击菜单栏上的按钮,出现下拉菜单,选择开始游戏,进入游戏界面,游戏界面是由若干个小方格组成的,每个小方格有一个图标,点击其中相同的图标,若它们符合算法要求就会消失,且游戏期间有一定的时间限制。游戏还设有再来一局、炸弹、退出、帮助、联系作者的功能,方便游戏操作[12]

2.3 流程图

2.3.1 游戏主流程图

1 游戏主流程图[13]

2.3.2 计时系统流程图

2 计时系统流程图

2.3.3 使用炸弹流程图

3 使用炸弹流程图

3 详细设计

3.1 课题的研究目的

Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象[14]的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承[15]。学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计(GUI)、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程[16]等。通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试的能力[17]

3.2 课题设计的实验环境

硬件要求能运行Windows 9.X操作系统的微机系统。Java程序设计语言及相应的集成开发环境,UltraEdit-32 Eclipse[18]开发工具。

3.3 类、方法、属性说明

3.3.1 类的设计

在设计连连看小游戏时,程序分为6个部分[19]

第一部分:主窗口部分(MainFrame)定义了程序用函数,实现了程序菜单(initMenuBar)的使用。

第二部分:按键部分(ChessButton)定义按键的位置,代表的值。

第三部分:游戏部分(MapUI)判断点击的图片,判断两图片是否可连,是否相同。判断是否胜利。实现炸弹功能。

第四部分:数组(Settings)确定了游戏各种参数属性。

第五部分:取值部分(Point)定义图片的值。

第六部分:算法部分(Map)通过算法确定两张图片是否连通。

4 类的功能模块图[20]

3.3.2 成员变量

成员变量也叫类的属性,一般带有访问控制属性的,而全局变量虽然也有类的属性,但全局变量严重影响了封装和模块化,一般的全局变量前面要加上staticfina属性其中,static使该变量任何类都可用(方法ClassName.全局变量名),而fina则使得变量不可更改,基本上算是常量了,这也在一定程度上防止对变量的非法修改。

1 成员变量

3.3.3 方法设计

方法名称为任何合乎语法的识别字,返回值类型是方法执行结果返回给调用者的数据类型,void表示没有返回值,参数行(parameter list)是调用时给予的参数声明,两个以上的参数声明以逗号隔开,若没有参数则参数行为空白,调用时每一个参数对应一个参数值(argument)大括号内为方法本体,也称为方法程序模块(block),包含声明(declarations)和语句(statements),声明也可以掺杂在语句之间。一个方法不能声明在另一个方法内。

2 方法设计

3.4 游戏的设计

3.4.1 游戏模块设计

根据对“连连看”游戏的分析,该游戏可分为三个模块:算法模块、界面显示模块、菜单、帮助(控制)模块。如下图所示:

5 游戏流程模块图

3.4.2 算法模块

1)图片路径处理设计

2)图片的产生设计

3.4.3 界面显示模块

1)游戏界面设计

2)游戏过关、失败、帮助的设计

3.4.4 菜单、帮助(控制)模块

菜单控制模块:(1)开始游戏,(2)再来一局,(3)炸弹,(4)退出

帮助控制模块:(1)联系作者

3.4.5 地图设计

地图的设计是采用GUI编程[21]的网格布局,定义了一个八行八列的网格布局,使用16个淮南师范学院的图片然后随机产生四个图片,用二维数组把它们打乱放到八行八列的网格布局中,注意的是二维数组的下标要和网格布局是的行、列数相同。

3.4.6 算法设计

在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。

3 种情况:从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了。

1)、相邻

2)、若不相邻的先在第一个按钮的同行找一个空按钮。1)、找到后看第二个按钮横向到这个空按钮所在的列是否有按钮。2)、没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。3)、没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了可以消了.

3)、若(2)失败后,再在第一个按钮的同列找一个空按钮。1)、找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮 2)、没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3)、没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。

若以上三步都失败,说明这两个按钮不可以消去。

4)、图片成对加载并打乱

将图片成对的显示在场景中,并打乱主要用的是Map类。在该类中,用了一个数组以数字标记的形式来记录加载的图片是哪种图片,在每次加载图片的时候是一张图片连续加载两次,以保证加载图片成对。然后用数组的随机方法将数组打乱。

5)、判断两图是否能够相连

两图能相连的所有情况:

(1) (2)

(3) (4)

(5) (6)

6 两图能相连的情况

4 测试分析

4.1 程序主要代码

1)图片加载算法[22]

public class Map {

public static int LEFTCOUNT = Settings.ROWS * Settings.COLUMNS;

// 让其最外层的数据不显示,可以解决边框消除不掉的情况

private int[][] map = new int[Settings.ROWS + 2][Settings.COLUMNS + 2];

// 出现的不同图片个数

private int maxKinds = 4;

public Map() {

init();

}

public int[][] getMap() {

return map;

}

private void init() {

int[] tempArr = new int[Settings.ROWS * Settings.COLUMNS];

int len = tempArr.length;

// 根据图片的种类数来确定数组大小,如有64张图片,每四个为一样的,则需要图片数为64/4=16

for (int i = 0; i < len / maxKinds; i++) {

tempArr[i * 4] = i + 1;

tempArr[i * 4 + 1] = i + 1;

tempArr[i * 4 + 2] = i + 1;

tempArr[i * 4 + 3] = i + 1;

}

// 打乱一维数组内数据的排列

random(tempArr);

// 填充到二维数组中

for (int i = 1; i < Settings.ROWS + 1; i++) {

for (int j = 1; j < Settings.COLUMNS + 1; j++) {

this.map[i][j] = tempArr[(i - 1) * Settings.COLUMNS + (j - 1)];

}

}

}

private void random(int[] array) {

Random random = new Random();

int len = array.length;

for (int i = len; i > 0; i--) {

int j = random.nextInt(i);

int temp = array[i - 1];

array[i - 1] = array[j];

array[j] = temp;

}

}

}

2)图片消除算法

public void clearCheese(Point priviousPoint, Point currPoint){

// 处理匹配,看两点是否联通

int[][] values = map.getMap();

// 将模型中对应的棋子设为0

values[priviousPoint.getI()][priviousPoint.getJ()] = 0;

values[currPoint.getI()][currPoint.getJ()] = 0;

// 使两个已经消除的按钮不可见

int index1 = priviousPoint.getI() * (Settings.COLUMNS + 2)

+ priviousPoint.getJ();

int index2 = currPoint.getI() * (Settings.COLUMNS + 2)

+ currPoint.getJ();

chesses[index1].setVisible(false);

chesses[index2].setVisible(false);

// 如果棋子总数已为0,则程序结束

if (map.LEFTCOUNT == 0){

JOptionPane.showMessageDialog(this, "恭喜您通过!!!");

}

}

3)炸弹的算法

public void bomb(){

int[][] values = map.getMap();

Point p1 = null;

Point p2 = null;

for (int row = 1; row < Settings.ROWS + 1; row++){

for (int col = 1; col < Settings.COLUMNS + 1; col++){

if (values[row][col] != 0){

p1 = new Point(row, col, values[row][col]);

for (int i = 1; i < Settings.ROWS + 1; i++){

for (int j = 1; j < Settings.COLUMNS + 1; j++){

if (values[i][j] != 0){

p2 = new Point(i, j, values[i][j]);

}

else

{

continue;

}

if (map.match(p1, p2)){

clearCheese(p1, p2);

return;

}

}

}

}

}

}

4)定时的算法

private void initTimer(){

ActionListener actionListener = new ActionListener(){

public void actionPerformed(ActionEvent e){

startTime = System.currentTimeMillis() / 300;

if (startTime == endTime){

JOptionPane.showMessageDialog(MainFrame.this, "笨蛋!时间到! GAME OVER!!!");

int result = JOptionPane.showConfirmDialog(MainFrame.this,

"重玩一次?", " Again"

JOptionPane.YES_NO_CANCEL_OPTION);

if (result == JOptionPane.YES_OPTION){

reload();

}

else{

jContentPane.setVisible(false);

}

}

}

};

timer = new javax.swing.Timer(300, actionListener);

timer.start();

}

4.2 程序运行结果及分析

1)项目层次结构图

7 项目层次结构图[23]

2)用户可以通过点击菜单中的“开始游戏”选项,开始新游戏程序。程序会载入图片,并通过特定的算法排列图片,并标记图片,以便判断图片是否相同。记录图片坐标,以方便计算图片是否可以相连。确定图片大小,以确定用户点击的是哪张图片。

菜单选项中,包括“开始游戏”、“再来一局”、“炸弹”、“退出”功能,如图8所示:

8 开始游戏后画面(菜单选项)

帮助选项中,包括“联系作者”功能,如图9所示:

9 开始游戏后画面(帮助选项

当点击“帮助按钮时,会自动弹出帮助对话框,以便及时联系作者解决出现的问题,如图10所示:

10 帮助提示对话框

3)用户选择两张一样的图片,通过鼠标进行选取,如果用户两次点击的图片不相同,那么系统认为用户没有点(鼠标记数归0),以完成用户以后的选取工作。如果用户选择的是相同的图片(如第一行第六列和第一行第八列),那么系统会消除这两张图片,并使鼠标记数为0,并消除这两张图片的标记,使里面的图片被标记在外面,以便用户可以进行以后的选择[24],如图11所示:

11 消除三对后画面

4)用户也可使通过使用“炸弹”功能进行消除图片。方法是点击菜单中的“炸弹”选项使用,点击后如果界面上有两张可以相连的相同图片就随机消除两张可以相连的相同的图片(如第一行第二列和第一行第四列)。炸弹数目是有限的,默认数目为三,每使用一次“炸弹”功能,炸弹数目就会自动减一,当炸弹数目为零时(使用三次“炸弹”功能)。并且用户想再次使用炸弹时,系统会弹出对话框提示用户,并把菜单中“炸弹”选项变为灰色(用户不可使用),如图12所示:

12 炸弹使用光后画面

5)当系统开始游戏后,系统会在后台记录时间,如果在用户还没有消除所有图片时,系统时间到了,那么系统会弹出对话框,提示用户,时间到了,游戏失败,如图13所示:

13 时间到时的画面

6)当用户点击确定后,系统还会弹出对话框询问用户是否重玩一次,用户选择“是”时,系统会开始新游戏;当用户选择“否”时,系统会返回开始界面;当用户选择“取消”时,系统会返回提示时间到的界面,如图14所示:

14 点击确定时的画面

7)如果在时间未到时,用户使所有的图片都消失(两两消除,直到最后一对),系统会提示用户游戏以通过,点“确定”后回到开始界面,如图15所示:

15 通关画面

粗略想来,由于用户每次只能消除一对图形,即只会用到一个最短路径,但由于实际并不知道用户会选择哪一对图形,所以需要事先计算出所有可能的最短路径并保存起来。此外,采用这种方法的话似乎每次用户消去一对相同图像之后都需要重新计算出当前所有可能被连接的相同图形之间最短路径,这是因为当某些图像被消去之后可能会产生很多新路径,而我们又不能确定这些空出来的格子到底能够影响哪些路径,所以就只好都重新计算一遍。其缺点很明显就是每次消去图形动作之后重新计算所有可能的最短路径所需要消耗的时间;而该方法的优点则是可以很快地判断两个相同图形之间是否存在满足条件的最短路径[25]

如果用户很厉害,每次都能选中可以消除的图形对,那么用这种方法浪费的时间就会相当可观,毕竟用户未选中的其他可以连接的图形对之间的最短路径都被浪费掉了;而如果用户很差劲,每轮选择的次数都远远大于当前可能的连接数量时,该方法就会比书中正文提到的方法高效。但这种情况是比较少的,因为在整个游戏中用户主要是会用眼睛“找”而不是频繁的用鼠标去“试”。所以总的来看,维护所有最短路径的方法的效率相对比较低。

4.3 测试计划及分析

4.3.1 检验的先后顺序

在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。所以,这里应该先检验配对,如果该条件不成立的话,就不要再进行连线检查了,这样可以避免很多不必要的复杂运算。当然,如果你在做这个游戏的时候,配对规则不够如此简单的话,那么就看哪个算起来麻烦就把它放在后面。

4.3.2 程序异常处理

本程序没有涉及到程序的异常处理,只有关于“死锁”问题,本质上还是判别两个格子是否可以消去的问题。最直接的方法就是,对于游戏中尚未消去的格子,两两都计算一下,它们是否可以消去。此外,从上面的广度优先搜索可以看出,我们每次都是扩展出起始格子A(x1,y1)能够到达的格子。也就是说,对于每一个格子,我们可以调用一次上面的扩展过程,得到所有可以到达的格子,如果这些格子中有任意一个跟起始格子的图形一致,则它们可以消去,目前游戏我还没有发现“死锁”状态。

5 课题设计总结

“连连看”游戏的基本功能都已经实现了,其中很多变量之间数据的传递都很复杂,要搞不明白就没办法再往下做了,路径判断问题中用到数据结构的知识也很抽象,代码量也很大,另外这个游戏不会用到数据库,所用功能也很少,只需要判断用户每次鼠标点击的坐标以及当前坐标位置代表的图片内容就好了。

通过这次“淮师连连看”游戏的设计让我掌握了如何制作一个游戏软件,以及制作游戏软件的整个流程、步骤,将项目开发的专业知识和其他方面的知识融入到实际应用中,在实际运用中学习完整过程,为即将到来的就业工作打下基础。另外本次设计让我进一步熟悉掌握Java程序设计语言的基础内容、基本技能和方法,同时培养了我分析问题、解决问题的能力;也提高了我进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力。在设计过程中遇到的问题,可以说是困难重重,并且还发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。同时在这次的设计中也小小的体验了一下做项目的感受。

我完成了这次JAVA的课题设计,不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本课题设计中所学到的东西,并将它用到未来的学习中去。

参考文献

[1] 朱福喜,尹为民,余振坤等. Java语言与面向对象程序设计(2)[M]. 武汉: 武汉大学出版社,2006,1: 123-130.

[2] 张明新,周耿烈. Java语言程序设计[M]. 重庆:重庆大学出版社2004.

[3] James Cohoon,Jack Davidson. Java程序设计[M]. 北京:清华大学出版社,2005.

[4] 周凤英,文惺. Java游戏开发Step by Step系列之一——Java游戏开发基础[J]. 电脑爱好者 200312.

[5] 马君海,辛杰,武昭晖. Java知识竞赛特别讲座 第六讲 Java在中国方兴未艾[J]. 微电脑世界, 199712.

[6] Bruce Eckel. Java编程思想[M]. 北京:机械工业出版社,2007.

[7] 王伟. JAVA技术在首钢管理信息系统中的应用[A]. 中国金属学会第一届青年学术年会论文集[C]. 2002.

[8] 张洪斌. Java程序设计百事通[M]. 北京:清华大学出版社,2001.

[9] 杨克峤. Java程序优化与数据竞争检测的研究[D]. 上海:复旦大学出版社,2010.

[10] 蔡勇,姜磊,马宁等. Java 2 程序设计基础教程与上机指导[M]. 北京:清华大学出版社,2005.

[11] 叶核亚. Java 2程序设计实用教程[M]. 北京: 电子工业出版.

[12] 艾力江. Java 2 范例入门与提高[M]. 北京清华大学出版社.

[13] 吴其庆. Java程序设计经典教程[M]. 北京:冶金工业出版社,2005.

[14] 印旻. Java语言与面向对象程序设计[M]. 北京: 清华大学出版社,2005,4: 58-72.

[15] 阔永红,陈健,韩博凯. 基于Java的电话费查询系统的开发[A]. 中国电子学会第七届学术年会论文集[C]. 2001.

[16] 周晓聪,李文军,李师贤. 面向对象程序设计与Java语言[M]. 北京:机械工业出版社,2004.

[17] 卓先德. 基于Java的在线考试系统[D]. 北京:电子科技大学出版社,2007.

[18] 林建素,孟康健. Eclipse开发学习笔记(第1版)[M]. 北京:电子工业出版社,2008,4.

[19] 李松林,陈华清,任鑫. Eclipse宝典(第1版)[M]. 北京:电子工业出版社,2007.

[20] 夏先波. Java JDK实例宝典[M]. 北京:电子工业出版社,2007.

[21] 张宁. 基于JavaGUI自动化测试工具的研究[D]. 武汉:武汉理工大学,2010.

[22] 朱站立,沈伟. Java程序设计实用教程[M]. 北京: 电子工业出版社, 2007,5: 82-95.

[23] 耿祥义,张跃平. Java 2 实用教程[M]. 北京:清华大学出版社,2007.

[24] 耿祥义. Java课程设计[M]. 北京: 清华大学出版社.

[25] Steven Holzner. Java技术内幕[M]. 北京:机械工业出版社,2002.

致谢

弹指一挥间,大学四年已经接近了尾声。四年的艰苦跋涉,两个月的精心准备,毕业设计终于到了划句号的时候,心头照例该如释重负,但创作过程中常常出现的辗转反侧和力不从心之感却挥之不去。毕业设计创作的过程并不轻松:各种压力的时时袭扰,知识积累的尚欠火候,致使我一次次埋头于图书馆中,一次次在深夜奋力敲打键盘。第一次花费如此长的时间和如此多的精力,完成一套设计作品,其中的艰辛与困难难以诉说,但曲终幕落后留下的滋味,是值得我一生慢慢品尝的。在这里需要的感谢的人很多,是他们让我这大学四年从知识到人格上有了一个全新的改变。

感谢我的指导老师李营老师,能够顺利完成毕业设计,离不开她的悉心指导,她对我的设计从确定题目、修改直到完成,给予了我许多的指点和帮助。感谢她在繁忙的工作之余,挤出时间对设计提出精辟的修改意见。在此,向李老师致以最诚挚的谢意。

最后我也要感谢我的母校---淮南师范学院四年来对我的培养。以及所有教给我知识的老师们祝你们工作顺利、身体健康!祝母校的明天越来越美好!

基于JAVA连连看小程序 - 丁玲定稿

相关推荐