《课程设计报告--连通问题.docx》由会员分享,可在线阅读,更多相关《课程设计报告--连通问题.docx(16页珍藏版)》请在课桌文档上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求11.2. 1连通的定义11.2.2程序实现的功能要求1第2章概要设计22.1整个程序的运行思路及流程22.2BMP文件格式组成分析22.2.1单色位BMP格式文件头信息22.2.2单色位BMP格式文件位图数据52.3 图片的读入方式及分辨率的获取62.4 图片的“具象化”62.5 5判断连通的方式递归6第3章程序功能的实现83.1 读入图片并获取图片分辨率83.2 获取图片位图数据83.2.1判断图片在储存时的宽度和补位的数量83.2.2将每一个字节的信息正确输入字符串对象93.2.3对获取的字符串对象进行处理93.3 递归调用103.4
2、 将图片以二位数组形式输出(辅助功能)H第4章调试及发现问题的解决13第5章程序测试及分析14第6章总结15参考文献16第1章课题概述本次数据结构课程设计的题目是根据给定的黑白位图,分析出所有独立连通的群体。输出每个连通群体的面积。所谓面积,就是它含有的像素的个数。1.1 课题的目的BMP(全称BitmaP)是WindOWS操作系统中的标准图像文件格式,使用非常广泛。它采用位映射存储格式,图像深度可选lbit,4bit,8bit及24bito由于bmp文件格式是windows环境中交换与图有关的数据的一种标准,因此在WindoWS环境中运行的图形图像软件都支持BMP图像格式。因此在当下,熟练的
3、掌握Ibit的BMP图像文件的格式分析,并简单了解其他图像深度的BMP文件的格式组成,对今后的工作生活都能带来莫大的帮助。连通问题在日常生活中非常常见,例如互联网络,城市交通都属于联通相关的问题。本次课设中借用BMP格式图片求得像素点的连通问题,让我们初步掌握数据结构中图的知识,以高效率计算出图片中连通分量的数量和每一个连通分量的面积。1.2 课题的要求1.2.1 连通的定义in.bmp文件如下:tl.bmp文件如下:产我们可以定义:两个点距离如果小于2个像素,则认为这两个点连通。也就是说:以一个点为中心的九宫格中,围绕它的8个点与它都是连通的。如:tl.bmp所示,左下角的点组成一个连通的群
4、体;而右上角的点都是孤立的。1.2.2程序实现的功能要求根据给定的黑白位图,分析出所有独立连通的群体,输出每个连通群体的面积。所谓面积,就是它含有的像素的个数。第2章概要设计2.1整个程序的运行思路及流程根据课题要求,整个程序大体上可以分为三大步进行:1.读取目标图片获取分辨率;2.读取目标图片获得其位图数据,并以二维数组储存;3.判断连通并将结果输出。载入图片获取位图数据获取图片分辨率将图片“具象为”一个二维数组以二雄败姐形式:输出图形P分析独立连通群体,计算面积输出每个连通群体的面积图2-1整个程序的流程2.2BMP文件格式组成分析BMP文件存储结构的格式可以在Windows中的WINGD
5、Lh文件中找到定义。BMP文件总体上由4部分组成,分别是位图文件头、位图信息头、调色板和图像数据。我们将位图文件头、位图信息头、调色板作为文件的头信息整体分析。而图像数据另作具体分析。在分析文件结构时可以使用到UItraEdit软件,方便我们更加直观地观察和分析BMP文件的组成2.2.1单色位BMP格式文件头信息1 .位图文件头(bitmap-fileheader)位图文件头(bitmap-fileheader)包含了图像类型、图像大小、图像数据存放地址和两个保留未使用的字段。字段名大小(单位:字节)描述bfype2位图类别,根据不同的操作系统而不同,在WindoWS中,此字段的值总为BMbf
6、Size4BMP图像文件的大小bfReservedl2总为0bfReserved22总为0bfOffBits4BMP图像数据的地址(总计14字节)2 .位图信息头(bitmap-informationheader)位图信息头(bitmap-informationheader)包含了位图信息头的大小、图像的宽高、图像的色深、压缩说明图像数据的大小和其他一些参数。字段名大小(单位:字节)描述biSize4本结构的大小,根据不同的操作系统而不同,在WirldoWS中,此字段的值总为28h字节=40字节biWidth4BMP图像的宽度,单位像素biHeight4BMP图像的高度,单位像素biPlane
7、s2总为0biBitCount2BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色biCompression4压缩方式,0表示不压缩,1表示RLE8压缩,2表示RLE4压缩,3表示每个像素值由指定的掩码决定biSizeimage4BMP图像数据大小,必须是4的倍数,图像数据大小不是4的倍数时用0填充补足biXPelsPerMeter4水平分辨率,单位像素/mbiYPelsPerMeter4垂直分辨率,单位像素/mbiClrUsed4BMP图像使用的颜色,0表示使用全部颜色,对于256色位图
8、来说,此值为IoOh=256biCIrlmportant4重要的颜色数,此值为0时所有颜色都重要,对于使用调色板的BMP图像来说,当显卡不能够显示所有颜色时,此值将辅助驱动程序显示颜色(总计40字节)值得注意的是,其中第19-22字节,记录了图片的宽度,而第23-26字节记录了图片的高度,由于我们的程序会有需求得到载入图片的分辨率,因此对这两个部分的读数尤为重要。in.bmpXW J . WWWWil .eeeeeeieh: 020h: 000003h: 0000e04eh: 0000050h: 0060h: 0e70h: e000080h: 0000090h: 000000a0h: 000e
9、0b0h: 00c0h: d0h: 00ee0h: 000f0h:4D 6E 01 00 00 00 00 0000 00 00 00 C3 0E 0000 02 00 00 00 00 00 003E e e ee 28 ee 01 00 ee ee e C3 0E 0 00 02 e FF FF FF FF FF FFFF 01 FF FF FF FFFF 7F 00 00 00 7FFF 7F FF FF FF 7FFF 7E 0F FF FF 7FFF 7E 0F FF FF 7FFF 00 00 00 00 7FFF FF F3 FF BF010eh: FF FF F7 FF BF
10、O110h: FF FF F6 FF BF l20h: FF FF F6 FF BF eeeeei3h: ff ff 07 ff ff eeei4eh: ee if ff ff ff eei50h: FF FF FF FF FFFF FF FF FF FF FF FD FF DD FF DD FFFF FFFFFFFF C3 FD FF FF DF FD FFFF C0 0F FF FF FF FF FF FF FF FF FF FF FF FF FF F3 FEFF F7 7F FF F7 07FF FF FF FFFF FF7F 7F 7F 7E 7F FF FF FF FF FF FF
11、FFFF FFFF FF FF FF FF FF FF FF FF 7F El FF FF FF FF 7F CD FF EF FF FF 7F DO FF FF FF FF 7F Cl FFFF FF FF FF FF FF FF FF FF FF FF FF F8 00 3F F7 FF BF F7 FF BF F6 FF BF F6 0 3FFF FF FD FF DF FD FF DF ElFF C0 7F FF FF FF FF FF FF FFFF F8 ff F7 ee FF F7 7 FF F7 FFFF F 00 00 7F FF FFeeeeeieeh: ff ff ff
12、ff ffFF FF FF FF FF FF FF FF图2-2用UltraEdit打开的in.bmp文件,深色部分前四位为宽度,后四位为高度3 .彩色表/调色板(colortable)之前的54个字节是每张BMP文件所共有的,常见到有这样一种说法:位图文件从文件头开始偏移54个字节就是位图数据了,这其实说的是24或32位图的情况。这也就解释了我们按照这种程序写出来的程序为什么对某些位图文件没用了。彩色表/调色板(colortable)是单色、16色和256色图像文件所特有的,相对应的调色板大小是2、16和256,调色板以4字节为单位,每4个字节存放一个颜色值,图像的数据是指向调色板的索引。可
13、以将调色板想象成一个数组,每个数组元素的大小为4字节。而针对我们这个课程设计所要求的单色图像,其中只有黑白两种颜色,因此调色板中有8个字节。因此对于所有单色图像整个文件头信息部分有62个字节。1.1 2.2单色位BMP格式文件位图数据除开文件头的部分,剩下的全部都是文件的位图数据。在单色位图中每个像素都只用一位保存,其中白色点像素为1,黑色点像素为0。由于位图信息头中的图像高度是正数,所以位图数据在文件中的排列顺序是从左下角到右上角,以行为主序排列的。最后谈谈数据的对齐规则。WindOWS默认的扫描的最小单位是4字节,如果数据对齐满足这个值的话对于数据的获取速度等都是有很大的增益的。因此,BM
14、P图像顺应了这个要求,要求每行的数据的长度必须是4的倍数,如果不够需要进行比特填充(以O填充),这样可以达到按行的快速存取。这时,位图数据区的大小就未必是图片宽X每像素字节数X图片高能表示的了,因为每行可能还需要进行比特填充。1.3 图片的读入方式及分辨率的获取在这个问题上,我采用两种方法。第一种是采用RanelOmACCeSSRanCIOm类读入文件,然后调用类中的seek()方法,调整开始访问文件的位置。例如在获取图片的分辨率上,就可以seek(18);直接来到记录图像宽度开始的位置,并一次读入四个字节,来获取图片的宽度。由于在文件内,记录图像宽度及高度的数字是按16进制倒叙存储,所以还需
15、要对读到的数值经过一定处理才能正常使用。第二种是调用Java中专门用于处理图像文件的IInage类,类中有现成的getHeight();和getWidth();方法,直接调用后,可以简单迅速地得到图像分辨率。本次课程设计,我主要以第一种方法展开。1.4 图片的“具象化”对于单色位图,每个像素的表达非0即1,而判断黑色的连通区域,实际上也就是在判断0的连通区域。因此我可以将图片的位图数据一次性读入为一个字符串对象,再根据实际情况对读入的字符串对象做一定的处理。最后将字符串转化为int类型,并且一个个的存入一个与图片等高等宽的二维数组中。由此来完成图片的“具象化二2. 5判断连通的方式一一递归假设
16、在图片中有任意一个起点a,如果经过判断该点为白点,那么就不用对周围点进行判断,因为该点肯定不会在某个连通群体中;而假如该点为黑点,那么就应当判断他周围八个点中是否有黑点;若这八个点中没有黑点,那么原点就是一个孤立的连通群体,返回SUm=1;若这八个点中有至少一个黑点b(或更多),那么SUm=SUm+1;并且从b出发,访问与b连通但未被访问的其他点,用同样的步骤重复下去,直至遍历完整个图片。该遍历的过程是一个递归的过程,因此我在这里采用递归的方法,来得出图中连通群体的面积大小。所谓递归算法,就是一种直接或者间接地调用自身算法的过程。递归算法有以下两个最重要的组成,第一个就是确定递归公式,第二个就
17、是明确的递归边界。其中第二点尤其重要,如果没有一个明确的结束递归的条件,递归将会无止境的进行下去,直至系统资源耗尽。至此,我的程序需要4个最主要的成员变量,用于表示图片宽度、高度的int类型变量Width和height,用于表达图片的int类型二维数组a,和用于记录连通面积的int类型变量sum0第3章程序功能的实现2.1 读入图片并获取图片分辨率我先采用RandomACCeSSFiIe类来读入目标文件,并调用seek。;方法把文件访问位置调整到第18字节处,运用循环读取8个字节,经过位处理后,获得图片的分辨率。RandomAccessFileraf=neuRandomAccessFile(F
18、zin.bmpjrw);raf.seek(18);/记录图像宽度开始的位置byteb=newbyte8;for(inti=0;ib.length;i+)bi=raf.readByte();运用循环依次读入8个字节)width=(int)(b0&0xFF)(bl)8&0xFF00)I(b216)&0xFF0000)I(b324)&0FF000000);处理前四个字节,记录为宽度/System.out.printin(width);height=(int)(b4&0FF)(b5)8&0xFF00)I(b616)&0xFF0000)I(b724)&0xFF000000);处理后四个字节,记录为高度/
19、System.out.printIn(height);也可以使用Image类直接获得图片的分辨率。Filefile=newFile(C:UsersAdministratorDesktopbig.bmp);BufferedImageimage=ImageIO.read(file);width=image.getWidth();height=image.getHeight();System.out.printin(width+x+height);2.2 获取图片位图数据raf.seek(62);将指针移动到图片位图数据开始处StringBuffersb=newStringBUFfer();将图片的
20、位图数据转存为一个字符串对象3. 2.1判断图片在储存时的宽度和补位的数量由于BMP图像每行的数据的长度是4的倍数(即32位),如果不够需要进行将会用0填充。所以在读入图片所有位图数据后,所得到的字符串长度,可能并不是在上一步所求的宽度*高度。因此先求出图片位图数据中,用于存储的宽度realWidth和用于补位的O先用等数量的字符串空格表示。intrealwidth=width;Stringstr=;if(realwidth%32!=0)如果宽度本身为32的倍数,则无须再求realwidthrealwidth=(width/32+1)*32)/realwidth为大于Width的第一个32的倍
21、数for(inti=0;irealwidth-width;i+)str=str+补零的个数为realWidthwidth先用等数量的空格表示)3. 2.2将每一个字节的信息正确输入字符串对象我的目的是把所有位图数据读入并写入一个字符串对象,在文件内部,每个像素都只用一位保存,也就是说每8个像素用一个16进制数保存,但是如果直接把读到的数据直接进行进制转换,就可能会出现问题。例如“FF”在转换后可以输出“11111111”,表示八个白色的像素,正确。而“01”经过转换后输出的则是“1”,表示只有一个白色像素,但实际情况则是7个黑色像素加一个白色像素。为了避免这种错误,我有必要写一种方法,将每一个
22、字节的两个16进制数固定转化为8个2进制数。例如输入“01”,输出的数据为“00000001”。publicstaticStringgetBinaryStrFromByte(byteb)Stringresult=,;bytea=b;for(inti=0;i1);a=(byte)(a1);)returnresult;)3. 2.3对获取的字符串对象进行处理由于我将所有的字节一次性读入,所以不可避免的将因为宽度不足而进行补位的0也写进了字符串对象,这部分补位的0对于在中图像没有实际意义,但是却会造成每一行有大量黑色像素的“假象二因此,需要处理掉补位的部分。在工工中已经获取了图片每行补位的数量并且建
23、立了一个与补位数量相等的空格串,这会使处理变得简单一些。for(intk=0;krealwidth*height/8;k+)sb.append(getBinaryStrFromByte(raf.readByte();/将描述图片的所有16进制数转换为八位的二进制数输入字符串对象中)raf.close();/关闭流if(width%32!=0)如果宽度为32的倍数,无需处理for(intgap=1;gap=height;gap+)sb.replace(gap*(width/32+1)*32-(32-width%32),gap*(width/32+1)*32,str);将补位部分替换为等数量的空格
24、)StringIastString=newString(sb);将字符串转化为字符串常量lastString=lastString.replaceAll(str,);调用方法,删去所有空格/以二维数组建立图像a=newintheightwidth;intc=0;while(c=0;W-)for(intH=0;Hwidth;H+)aWH=Integer.parseInt(String.valuef(laststring.charAt(c);c+;将字符串中的字符一一输入二维数组中)3. 3递归调用判断像素点之间的连通情况,我使用到了数据结构中的递归算法,并使用深度优先遍历每一个像素。在前面的步骤
25、中已将把图片转化为了二维数组,这对数组的遍历和判断提供了极大的遍历。而在递归边界的划定上,我将所有已遍历过的点的值,由0或1改为当程序访问到下一个没有被访问到的点时,递归调用该方法访问周围非T的点。当程序运行后某一点周围所有点都处于0或者T的状态时,代表一块连通群体的闭合,寻找下一个连通群体。而当所有的点都被标为-1时,代表着整个二维数组的每个点都访问过了,整个图的遍历结束,返回连通群体的面积。判断连通方法publicstaticvoidjudgment(intx,inty)inttemp=a;if(=heighty=width)return;if(tempxy=0tempxy=1)访问未遍历
26、过的点if(tempxy!=-1)if(tempy=0)sum+;tempxy = -1 judgment(x - 1, judgment( - 1, judgment( - 1, judgment(x, y - judgment(x, y + judgment( + 1, judgment( + li judgment( + li )以遍历过的点改为-1y - 1);递归调用y);y + 1);1);1);y - 1);y);y + 1);对于上述方法的调用(位于主方法中)for(inti=0;iheight;i+)sum = 0; judgment(i, j); if (sum = 0)
27、continue;for(intj=0;jwidth;j+)调用方法如果一个点周围没有黑点,跳出该层循环elseSystem.out.println(sum);3.4将图片以二位数组形式输出(辅助功能)publicstaticvoidprintShape(inta)for(inti=0;ia.length;i+)for(intj=0;jai.length;j+)System.out.print(aij);)System.out.println();第4章调试及发现问题的解决本题取自2011蓝桥杯决赛最后一题。总体上来讲,在思路确定了以后,并不是非常的困难。但是我在程序的编写中和程序初完成后还是
28、遇到了一些困难,在王老师和张杨松同学的提醒和帮助下,都一一得到了解决。问题1:刚开始编写程序,到了读取图片分辨率这步时发现,当图片的宽度超过127时读取到的图片宽度会变成负数。后来查阅资料后发现是因为在BMP文件中储存宽度使用四个字节(32位)并且按16进制倒叙存储,因此如果直接使用语句Seek(18);后只会返回宽度的后8位。如果大于等于10000000,首位的1还会被当作符号位而返回负数。再与同学讨论并询问了老师过后,老师给出了将宽度的四个字节先读取到一个数组中,再一一进行移位,最终得到了正确的答案。问题2:在程序初完成后,运行原题中给定的in.bmp文件没有任何问题,但当我换了一个其他分
29、辨率的图片时,例如65*37时,程序输出的图形和给定的图形完全不一样。后来针对BMP文件位图数据的存储方式仔细研究后,发现我的程序只有在图像宽度为64的倍数时才能正常读取。当宽度不为64的倍数时,用于补位的0会被我全部读进,最终导致图像的读取错误,和连通的无法正常判断。发现问题后,我对字符串进行了一定的处理,针对补位的部分进行裁剪。即先用与补位数等数量的空格替换每一行中的补位部分,然后将字符串对象转化为字符串常量,使用String类中的replaceO方法;方法将这些空格除去。从而解决了这一问题。第5章程序测试及分析首先看一下M.bmp图像文件比例放大后的式样图5-1用画图软件打开的in.bm
30、p文件,放大数倍并添加了标尺加载图片运行程序后得到cJ-RJS*Javadoc声明,SBRD控制台2:Q试PktureConnectionJavafflffiS11C:ProgMmFilesj4varel.8.0.31binav4w.ce(2015年7月8日上午12:31:37)IiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIllle000000lllllllllllllllllllllllllllllllIllieillllllllllllllllllllllllllllllllllllllllllllllll
31、llllllllllIiimiieeeeeiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIiiieiiieiiieeoeeeeeeeeeoeoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIiiieiiioiiiiiiiiiiiiiiiiieooeeoeiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIiiieiiieeeeeeoeiiiiiiiiiiiiiiiieeeeeiiiiiiiiiiiiiiiiiiiiiiiiiiiIiiieeiiiiiiiiieiiiiiiiiiiiiiiiiiiiw
32、iieoeeeeweeeiiiiiiiiiiiiiiIiiiieeeeeeeeeeeiiiiiiiiiiiiiiiiiiiieiieiiiiiiiiieiiiiiiiiiiiiiiIllllllllllllllllllllllllllllllllliwiieilllllllieilllllllllllllIiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieiieiiiiiiiiieiiiiiiiiiiiiiiIllllllllllllllllllllllllllllllllllieillllllllllieilllllllllllllIllllllllllllllllll
33、llllllllllllllllieillllllllllieilllllllllllllIllllllllllllllllllllllllllllllllllieillllllllllieilllllllllllllIiiiiiiiiiiiiiiiiiniiiiiiiiiiiiiiiieeiiiiiiiiiiieiiiiiiiiiiiiiiIiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieeeeeoeeeeoeeiiiiiiiiiiiiiiIieeoooweeoiiiiiiiiiiiiiiiiiiiniiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIi
34、eiiiiiiiieeeeiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIieilllllllliwillllllllllllllllllllllllllllllllllllllllllllllllIieilllllllllieillllllllllllllllllllllllllllllllllllllllllllllllIieeoeillllllieillllllllllllllllllllllllllllllllllllllllllllllllIllllllllllllieilllllllllllllllllllllllllllllll
35、lllllllllllllllllIiiiiiieeeeeeeeiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIieeeeen11111111111111ieee0eeeeen11111IieiiieiiiiiiiiiiiiiiiiieiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiIieiiieiiiiiiiiiiiiiiiiieiiiiiioeeoeiiiiiiiiiiiiiiiiiiiieiiiiiiiIieiiieiiiiiiiiiiiiiiiiieiiiiiieiiieiiiiiiiiiiiiiiiii
36、iiiwiiiiiiIieeiieiiiiiiiiiiiiiiiiieiiiiiieeeeeiiiiiiiiiiiiiiiiiiiwiiiiiiiIiiiiieiiiiiiiiiiiiiiiiieiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieiiiiiiiIiioooeiiiiiiiiiiiiiiiiieiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieiiiiiiiIllllllllllllllllllllllieilllllllllllllllllllllllllllllieillllllIiiiiiiiiiiiiiiiiiiiiiiieiiiiiiieee
37、eeeeeeeeeeeeeeeeeeoeeeiiiiiiiIllllllllllllllllllllllieillllllllllllllllllllllllllllllllllllllIiiiiiiiiiiiiiiiiiiiiiiieoeeeeoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiIiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii1335281图5-2运行程序,上面的矩阵为类图像的二维数组,数字为连通面积第6章总结就此次课程设计来讲,对比于同组的两位大神,我无论是在对课题的把握上,代码
38、的执行效率上,还是完成基本要求后,对程序更深一步的优化上都逊色太多;当然这也更有助于发现自己在Java语言编程上的不足和短板。程序从开始编写到完全完成用的时间并不长,代码也只有100余行,多少也能说是融入自己心血的。总的来说虽然本次课题算是比较顺利的完成了,成果值得骄傲也有值得反思回味之处。1、关于递归这种算法,并不是第一次遇到。早在求阶乘时王老师就给我们展示过这种算法。当时的感觉还只是神奇。但在这次课程设计中真正地接触到了数据结构的内容后。感到的更多的是压力。说句实话递归算法实在是数据结构内容中相对比较容易理解的部分。而想真正学好数据结构,语言的扎实基础必不可少。而我其实一直对于JaVa语言
39、处于爱理不理的状态,急的时候学一下交个作业,平时还是以其他基础课程为主。但是对于我们这个专业,程序既是生命,而编程语言犹如血液,数据结构为骨架。编程语言作为数据结构的先行课程,其能力的高低不仅影响到学习者对各种数据结构的理解,而且直接关系到未来可能作为程序员身份的我的能力高低。2、程序的编写,不仅需要我们有严谨的逻辑、清晰的思路和认真的态度,更多的我们需要有足够的耐心去调试程序,发现错误注重细节。而在程序编写中对自己的高要求更有助于程序的漏洞修复,和整个程序的健壮性。测试和调试程序时不能有懒惰思想,就比如说在本次课程设计中,我第一次编写完的程序已经可以成功反映出题目中给出的in.bmp文件中的
40、连通区域。当时第一天我已经认为程序完成,但在第二天我在张杨松同学的“怂恿”下尝试了另一张大小不相同的图片,立马就反映出了问题。之后再重新做出改变。还有很多问题,都是程序的测试调试阶段逐步发现和解决的。3、本次课程设计中有一步为对BMP文件格式的解析。在对BMP文件进行深入了解时,我大量的搜找了网上的资料。不得不承认,互联网的确是一个功能强大的平台。在将来的学习生活中,我也会在提问之前,先在互联网上寻找答案。当然主动地询问依旧是必不可少的。养成良好的学习习惯,比什么都重要。这次数据结构课程设计,使我在课题分析、对指定格式文件的分析、相关算法的设计,以及编程实践等多方面都得到了锻炼。主要是依靠自身的努力,顺利地完成了本次课程设计任务。感谢在此过程中帮助过我的指导老师和各位同学!参考文献1http:blog.S,cn/s/blog488a8b4c010002bs.html.bmp文件结构详解2http:/3刘小晶.数据结构示例解析与指导分析一一JaVa语言描述.北京:清华大学出版社,2011.