• 2.20 MB
  • 2022-04-22 13:40:56 发布

软件开发毕业设计范文.doc

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'四川工商职业技术学院android系统软件系统开发毕业设计目录第一章引言-1-1.1发展情况-1-1.2研究现状-1-1.3研究前景展望-1-1.4选题的目的及意义-2-第二章系统可行性分析-3-2.1经济可行性分析-3-2.2操作可行性分析-3-2.3技术可行性分析-3-2.3.1eclipse概述-3-2.3.2ADT概述-4-2.3.3androidSDK概述-4-2.3.4java概述-5-第三章需求分析-6-3.1软件功能描述-6-3.2系统功能分析-7-3.3软件需求分析-9-3.4软件概念结构设计-9-第四章软件详细设计-12-4.1软件设计原理-12-4.2软件模块设计-12-第五章软件测试-30-总结-31-参考文献-32-致谢-33- 四川工商职业技术学院第一章引言1.1发展情况在现在这个手机普及的时代,各种手机软件也是层出不穷,尤其是在这两年的飞速发展,android软件可以是说席卷各大手机软件网站,为android软件开发者既带来了收入的回报,也提出了技术的挑战。android系统这个平台以成为智能手机系统的核心,也是IT技术行业、智能手机制造行业高度重视的。随着android系统的不断更新,现在功能各方面已经非常强大,这不仅是一台手机这么简单,而是一个移动终端。各种软件都有几乎都有android系统的版本。同时用户现在不仅要求手机有传统手机的功能,现在必须更加具有娱乐性以及休闲性。抓住现在用户的这个心理状态,于是android平台上运行的小画家画画软件就运营而生了。1.2研究现状就目前的android系统智能手机在市场的占有率来看,对android系统手机软件的开发具有非常广阔的前景。虽然在IT行业中都处于一个饱和的状态,但是在android系统手机软件开发这一方面又处于紧缺的状态,因为现在的手机用户拿起手机不仅仅是只用来打打电话,发发短信这么简单,用户更加追求的是手机的娱乐性和休闲性。说的更加简单明了一点就是,用户在无聊的时候可以用手机来消遣时间。android系统自2009年2月发布的android1.1开始已经有4年的发展历史。然而在这短短四年时间就可以成为智能手机市场的领头羊,那么对于我们开发android系统手机的软件,也是同样具有广阔的市场。1.3研究前景展望 四川工商职业技术学院随着android系统智能手机的诞生,android系统打破了前些年智能手机的垄断的传统市场。同时android系统的手机软件占据的手机软件市场的比例越来越大,那么我们开发的画画涂鸦软件是基于android系统的,可以说是具有广阔的发展前景。而且现在用户对手机软件是否具有娱乐性有非常强的选择性,用户对于空闲时间的消遣,还有即时聊天需要发送一个手绘涂鸦图片的需要,那么对我们这款软件的选择是非常有用的。对于小画家手机软件具有一下优点:(1)喜爱画画的用于,无论是在车上,还是站台等车,都可以随时随地的进行简笔画画画的操作。(2)可以将画好的图片保存通过即时聊天工具发给好朋友分享自己的作品。(3)在手机上画可以节约资源,在环保的角度,起到节能减排的效果。1.4选题的目的及意义为了巩固在大学三年所学的知识,达到学以并用的目的,作为四川工商职业技术学院信息工程系软件班大三的毕业生,希望在离开自己母校的时候能够把自己所学的知识能够做一次全面的巩固和提高,我的选题意义如下:随着android系统的不断升级,android系统智能手机的各种软件对各方面的影响越来越大,并且android系统成为以后移动智能客户终端的可能性同时也越来越大,那么未来android系统主导智能手机市场也是必然的发展趋势。那么我们开发的这款画画小软件也是顺应时代发展的潮流,在传统的按键手机,我们不能做出这个灵活的画画涂鸦软件,现在我们借助android系统这个平台来实现了这一功能。这样不仅提高图片的趣味性;建立生动有趣的图片处理平台,而且还提高手机的利用率。何乐而不为呢。 四川工商职业技术学院第二章系统可行性分析可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的目的不是解决问题,而是确定问题是否值得去解决。可行性研究就是进行一次大大压缩简化了的系统分析和软件设计过程,也就是在较高层上以抽象的方式进行系统分析和软件设计过程。2.1经济可行性分析在android系统各种手机软件频频被开发出来的今天,那些软件开放团队如何进行软件的开发,以及开发出来的软件有什么特色来吸引用户,是越来越重要的问题。而我们这个小软件内容简单,开发周期短,投资小。投入运营后,提供免费下载,然后在软件中植入广告成分,来获取利润。所以该软件为开发团队所带来的经济效益会远远高于前期投入的资金。2.2操作可行性分析本软件的开发工具是eclipse-SDK-4.2.1版本,eclipse内装插件ADT-21.0.0版本以及androidSDK2.3.3。前端开发工具是java。这样的eclipse就是一套完整的开发工具,用于生成后缀为apk的应用程序。之后将生成的apk应用程序安装到手机就可以使用了。2.3技术可行性分析2.3.1eclipse概述eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。我们经常将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse 四川工商职业技术学院的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给软件开发人员提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。2.3.2ADT概述 Android开发工具(ADT),作为Eclipse工具插件,让其支持Android快速入门和便捷开发,可通过Eclipse启动菜单(启动Eclipse后,选择Help->InstallNewSoftware)安装。ADT开发工具,包括AndroidDalvikDebugMoniterServer(AndroidDDMS)和AndroidDevelopmentTools(ADT),还有HierarchyViewer和TraceView两个查看器,看名称就知道功能了。DDMS可以提供调试设备时为设备截屏,查看线程及内存信息、Logcat、广播信息、模拟呼叫、接收短消息、文件查看器等功能(该功能在安装完ADT之后,点击Eclipse工具栏右上角的那个带箭头的小窗口图标弹出菜单中打开)。AndroidDevelopmentTools(ADT)工具应该是为Eclipse支持Android项目快速编程开发和调试插件而已。2.3.3androidSDK概述SDK:(softwaredevelopmentkit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,AndroidSDK指的是Android专属的软件开发工具包。下载好AndroidSDK后,开始安装,AndroidSDK采用了Java语言,所以需要先安装JDK5.0及以上版本。直接下载jdk安装文件安装更为方便。AndroidSDK不用直接安装,下载后,直接解压即可,将下载后的SDK的压缩包解压到适当的位置,就这么简单;SDK安装OK。 四川工商职业技术学院2.3.4java概述Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 四川工商职业技术学院第三章需求分析本设计为android系统手机上的一个画画小软件,该软件主要是在eclipse开发工具上用java语言编写的一个结果。eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。而java语言具有卓越的通用性、高效性、平台移植性和安全性。Eclipse编辑器引入了编辑环境方面的一些增强功能,诸如单词补齐,增量搜索,代码凸显,缩进文本,标记行号,彩色打印,和快捷方式。eclipse编辑器还提供了许多为特定语言设计的功能,比如在你输入原型和函数调用的时候它能够自动完成这些字符串的输入。生成的应用程序安装到手机后,直接点击打开,操作简单明了,软件具有形状的选择、画笔宽度的调整、画笔颜色的改变、绘画风格的改变、整屏清除以及保存等功能。3.1软件功能描述小画家画画软件主要是提供给使用android系统智能手机的用户,增加业余时间的趣味性。本软件主要有简笔画画、上色、保存等功能。(1)形状选择,打开软件,选择菜单键,就会弹出菜单里面的功能,选择形状功能就可以自由的选择需要的形状,形状有轨迹线、直线、矩形、椭圆形、圆形、点、还有橡皮擦等不同的形状。(2)清除,打开软件,选择菜单键,就会弹出菜单里面的功能,清除功能就是将所绘制的整张画布全部清除。(3)保存,打开软件,选择菜单键,就会弹出菜单里面的功能,如果绘画好一张满意的画,选择保存就可以将图保存在手机里面,以供自己以后欣赏或者与朋友分享。(4) 四川工商职业技术学院设置,打开软件,选择菜单键,就会弹出菜单里面的功能,选择设置,就可以进入到设置画面,设置里面有画刷宽度的调节、画笔颜色的选择、画画风格的选择、是否是全屏模式、目前所使用的版本、以及可以看到最后调试的时间与快捷键和对开发者的建议。3.2系统功能分析根据软件的使用情况和面向对象,本软件具备一下功能模块以及操作方式:功能功能类别子功能用户管理模块setDrawing设置形状clearCanvas清屏saveToSdcard保存SettingsActivity设置颜色管理模块(color)ColorPickerDialog颜色选择画刷大小管理模块(size)Brush设置画刷大小菜单用户模块功能描述用户进入软件并选择操作操作序列1,点击“形状”选择要形状,默认轨迹线。2,点击“清除”抹掉整张画布的所有线条。3,点击“保存”保存当前的所画的画。4,点击“设置”进入更多的设置画面。形状形状管理模块功能描述用户选择图形形状操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“形状”进入形状设置。3,选择需要的形状就可以了。 四川工商职业技术学院清除清除管理模块功能描述用户需要清除整个画布操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“清除”就把整张画布清除了。保存保存管理模块功能描述用户需要保存所画的画操作序列3,点击menu按钮,屏幕下方显示菜单。4,点击“保存”就将所画的画保存下来了。颜色颜色管理模块功能描述用户选择画刷颜色操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“设置”进入设置画面。3,点击“颜色”就可以选择自己喜欢的颜色了。画刷大小画刷大小管理模块功能描述用户选择画刷的大小操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“设置”进入设置画面。3,点击“画刷宽度”就可以设置合适的画刷宽度了。风格画画风格管理模块功能描述用户选择画画的风格 四川工商职业技术学院操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“设置”进入设置画面。3,点击“风格”就可以设置画画的风格了。模式画图模式管理模块功能描述用户选择画图的模式操作序列1,点击menu按钮,屏幕下方显示菜单。2,点击“设置”进入设置画面。3,点击“全屏模式”就可以设置画图的模式了。3.3软件需求分析随着社会的发展,时代的进步,人们对生活品质的不断提高,对生活的享受心理也越来越强,越来越注重休闲娱乐。只有抓住现在人们的心理需要才能在现在有得一席之地。同样在手机软件方面也是一样的,现在的大多数人的手机里面占据一大部分内存的都是休闲娱乐的游戏,就是在无聊的时候打发时间的。而我们这款android小画家画图软件就是提供给那些爱画简笔画的画图爱好者,所以,既然现在有这个需求,我们就可以满足用户的这个需要,开发这么一款画图的软件。3.4软件概念结构设计这一设计阶段是在需求分析的基础上而进行的,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑设计打下基础。概念结构的主要特点是:(1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对软件功能的要求。(2)易于理解,从而可以用它和不熟悉使用手机的用户交换意见,用户的积极参与是软件开发设计成功的关键。(3) 四川工商职业技术学院易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。软件开发在小画家软件开发中存在系统用例、开发人员与用户、数据流程处理、数据表述等几个对象的关系,具体描述如下面各图所示。用户管理开发维护后台数据维护软件更新开发人员系统用例图用户小画家软件开发人员用户信息软件下载软件信息用户情况软件升级建议反馈总体流程图软件管理用户软件信息软件信息软件下载条件软件情况开发人员下载信息软件信息软件信息下载条件软件信息表用户下载信息表用户下载情况用户信息下载量信息软件信息下载信息下载量信息下载管理用户管理下载量信息用户信息开发人员用户信息用户信息下载量信息用户管理表数据流图处理图 四川工商职业技术学院下载情况软件卸载信息表软件信息表用户信息表开发团信息表下载信息表用户排行表数据表述E-R图 四川工商职业技术学院第四章软件详细设计4.1软件设计原理本软件基于android系统智能手机,在android系统设备上运行,就像打开手机播放器一样简单打开软件就可以操作。它是随着android系统手机的兴起,借助android系统平台开发的一个软件。主要是利用不断成熟的android系统,结合java语言与XML而产生的软件。Java语言具有卓越的通用性、高效性、平台移植性和安全性,而可扩展标记语言XML是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。这样开发的软件不仅在界面上比较美观,而且可以在android系统平台上稳定运行。4.2软件模块设计打开软件即可进入到画画操作界面,也可以选择各种各样的功能,利用目前有的功能可以随心所欲的画出想要的简笔画,在选择各种各样的功能的时候也有界面的跳转弹出和菜单功能的选择。因为现在是测试版本,不存在与互联网连接的情况,这样对用户的私人隐私也具有绝对的安全保密,因为只是一款画图的软件,所以我们不会访问用户的手机联系人、短信、以及地理位置信息,同时也不需要获得手机的任何权限,只是能够运行和使用就可以了,这样给开发团队的建议也只能发在开发团队的邮箱中。下面是软件各种界面的截图以及部分代码。打开软件,就如同打开音乐播放器一样简单,打开之后,就进入软件的主界面,这就是一张画布,可以在上面随意画自己喜欢的线条。这是软件最基本,也是最重要的部分,在软件中首先要创建这样一个activity,才能展开其他的功能。首先要在手机界面创建一个这样的画布,这是我们最重要的起步,创建一个界面activity,才能进行下一步的操作,用public公有类,因为主要是主界面activity涉及的其他很多方法的访问,设置各种功能方法的类型、初始值。就如下所示,/***主要视图类 四川工商职业技术学院*/publicclassPaintPadextendsView{floattempX,tempY;privateBitmapbitmap=null;privateCanvaspaper=null;booleanisMoving=false;Drawingdrawing=null;intbgcolor;Contextcontext;}然后添加不同的功能以及设置用setDrawing方法,设置绘画背景色的状态为初始默认状态、绘画形状的当前状态参数为默认空、屏幕上此时的信息为默认初始状态。/***设置绘画形状*@paramdrawing*当前绘画形状参数*/publicvoidsetDrawing(Drawingdrawing){this.drawing=drawing;}publicPaintPad(Contextcontext){super(context);this.context=context;//获取屏幕上的信息ScreenInfoscreenInfo=newScreenInfo((Activity)context);/***创建和屏幕大小的位图*/bitmap=Bitmap.createBitmap(screenInfo.getWidthPixels(),screenInfo.getHeightPixels(),Bitmap.Config.ARGB_8888);paper=newCanvas(this.bitmap);//设置背景颜色paper.drawColor(getResources().getColor(R.color.color_default_bg)); 四川工商职业技术学院this.isMoving=false;}手指在屏幕上触动的时候,用private私人方法fingerMove,会记录下所运动的轨迹或者方法所规定的形状,处理手指的动作,这是让手指在画布activity的界面处理手指所留下的坐标,将所有坐标的点组成的线就是所画出来的图形。privatevoidreDraw(){invalidate();}/***处理手指的动作。*@paramx*X坐标*@paramy*Y坐标*/privatevoidfingerUp(floatx,floaty){this.tempX=0;this.tempY=0;drawing.fingerUp(x,y,paper);this.isMoving=false;}/***处理手指的动作*@paramx*@paramy*/privatevoidfingerMove(floatx,floaty){this.tempX=x;this.tempY=y;this.isMoving=true;drawing.fingerMove(x,y,paper);}/***处理手指的动作*@paramx*@paramy*/privatevoidfingerDown(floatx,floaty){this.isMoving=false;drawing.fingerDown(x,y,paper); 四川工商职业技术学院}如果处理好一张图,需要保存,调用公用public方法saveBitmap,对画好的图进行保存,这个时候,软件会检测是否有保存的介质存在,如果不存在,就保存不了,有可能还会引起软件的崩溃;如果检测到存在保存介质,编辑图片名字进行保存就可以,如果没有名字,软件默认给一个名字,进行保存。/***检查SD卡是否可用*/publicvoidsaveBitmap(){Stringstate=Environment.getExternalStorageState();if(Environment.MEDIA_MOUNTED.equals(state)){saveToSdcard();}elseif(Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){Toast.makeText(this.context,getResources().getString(R.string.tip_sdcard_is_read_only),Toast.LENGTH_LONG).show();}else{Toast.makeText(this.context,getResources().getString(R.string.tip_sdcard_is_not_available),Toast.LENGTH_LONG).show();}}publicvoidchangeBgColor(intcolor){this.paper.drawColor(color);this.reDraw();}当检查到储存介质是存在的,即私人的private方法saveToSdcard来执行,在SD卡中创建属于软件的保存文件夹,访问路径由“/”符号来分开,保存时间为系统时间,保存的图片格式为".png"格式,最后就是将图片进行储存。/***保存位图在SD卡上*/privatevoidsaveToSdcard() 四川工商职业技术学院{Filesdcard_path=Environment.getExternalStorageDirectory();StringmyFloder=getResources().getString(R.string.folder_name_in_sdcard);Filepaintpad=newFile(sdcard_path+"/"+myFloder+"/");try{if(!paintpad.exists()){paintpad.mkdirs();}}catch(Exceptione){e.printStackTrace();}StringtimeStamp=(DateFormat.format("yyyy.MM.dd.hh.mm.ss",newjava.util.Date())).toString();StringsuffixName=".png";StringfullPath="";fullPath=sdcard_path+"/"+myFloder+"/"+timeStamp+suffixName;try{Toast.makeText(this.context,getResources().getString(R.string.tip_save_to)+fullPath,Toast.LENGTH_LONG).show();bitmap.compress(Bitmap.CompressFormat.PNG,100,newFileOutputStream(fullPath));}catch(FileNotFoundExceptione){Toast.makeText(this.context,getResources().getString(R.string.tip_sava_failed)+fullPath,Toast.LENGTH_LONG).show();e.printStackTrace();}} 四川工商职业技术学院利用软件就可以画出你想要的简笔画,比如像菠萝一样的水果,哆啦A梦一样的卡通人物,还有很多很多,只要你想的到的都可以利用它画出来。创建的界面如图1所示,画出的菠萝如图2所示,画出的哆啦A梦如图所示。图1,打开软件图2,用画笔画菠萝图3,用画笔画哆啦A梦只有画画远远不是我们要的要的功能,当然还有几乎所有软件都具备的一个功能,设置。菜单中含有形状、清除、保存、设置。进入设置,有很多关于画画的各种功能。画笔的宽度pen_width为默认初始宽度,画笔的颜色pen_color 四川工商职业技术学院为默认颜色,画布的颜色为空即是白色,画画的风格为初始默认状态,以下是进入设置的部分代码。图4是菜单现实设置的界面。图5是进入设置之后的界面,有画刷宽度、颜色等功能的选择。importjava.text.SimpleDateFormat;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;importorg.vhow.paintpad.R;importorg.vhow.paintpad.helper.ColorPickerDialog;importorg.vhow.paintpad.tools.Brush;importandroid.content.DialogInterface;importandroid.content.SharedPreferences;importandroid.content.pm.ApplicationInfo;importandroid.content.pm.PackageManager.NameNotFoundException;importandroid.os.Bundle;importandroid.preference.CheckBoxPreference;importandroid.preference.Preference;importandroid.preference.Preference.OnPreferenceClickListener;importandroid.preference.PreferenceActivity;/***当用户选择设置按钮,就跳转到这个activity。*当用户点击的时候、实现OnPreferenceClickListener接口。*优先调用onPreferenceClick()。*/publicclassSettingsActivityextendsPreferenceActivityimplementsOnPreferenceClickListener,ColorPickerDialog.OnColorChangedListener{SharedPreferencesprefs=null;Preferencepen_width=null;Preferencepen_color=null;Preferencecanvas_bg_color=null;Stringpen_width_key;Stringpen_color_key;CheckBoxPreferencepen_style=null;PreferenceversionName;PreferencelastBuildTime;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);/***XML对这个activity的虚拟设置 四川工商职业技术学院*/addPreferencesFromResource(R.xml.settings);pen_width_key=getResources().getString(R.string.pen_width_key);pen_color_key=getResources().getString(R.string.pen_color_key);/***找到要处理的对象。*/pen_width=(Preference)findPreference(getResources().getString(R.string.pen_width_key));pen_color=(Preference)findPreference(getString(R.string.pen_color_key));versionName=(Preference)findPreference(getString(R.string.setting_about_version_key));lastBuildTime=(Preference)findPreference(getString(R.string.setting_about_build_key));versionName.setSummary(getVersionName());lastBuildTime.setSummary(getLastBuiltTime());/***注册监听器。包含画刷宽度,画刷颜色。*/pen_width.setOnPreferenceClickListener(this);pen_color.setOnPreferenceClickListener(this);}privateStringgetLastBuiltTime(){StringlastBuiltTimeString="Unknown";try{ApplicationInfoai=getPackageManager().getApplicationInfo(getPackageName(),0);ZipFilezf=newZipFile(ai.sourceDir);ZipEntryze=zf.getEntry("classes.dex");longtime=ze.getTime();lastBuiltTimeString=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss") 四川工商职业技术学院.format(newjava.util.Date(time));}catch(Exceptione){//最后编译时间是“未知”.}returnlastBuiltTimeString;}privateStringgetVersionName(){StringversionName="Unknown";try{versionName=this.getPackageManager().getPackageInfo(getPackageName(),0).versionName;}catch(NameNotFoundExceptione){//最后的版本名是“未知”。}returnversionName;}/***处理该事件的优先权*/publicbooleanonPreferenceClick(Preferencepreference){if(preference.getKey().equals(pen_color_key)){Stringstr=getResources().getString(R.string.tip_choose_color);newColorPickerDialog(this,this,Brush.getPen().getColor(),str).show();}elseif(preference.getKey().equals(pen_width_key)){showSetBrushWidthDialog();}returntrue;}/***弹出一个对话框SeekBar以控制画笔的宽度*/ 四川工商职业技术学院privatevoidshowSetBrushWidthDialog(){SeekBarDialogseekBarDialog=newSeekBarDialog(this);seekBarDialog.setTitle(Brush.getPen().getStrokeWidth()+"像素");seekBarDialog.setButton(getResources().getString(R.string.alert_dialog_ok),newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){dialog.dismiss();}});seekBarDialog.show();}/***当画刷颜色改变时,这个方法将被调用。*/publicvoidcolorChanged(intcolor){Brushpen=Brush.getPen();pen.setColor(color);}}图4,打开菜单键 四川工商职业技术学院图5,打开菜单中的设置当在菜单中选择形状之后,就会弹出形状的界面,在形状界面有很多形状供选择,下面可以有几个形状的源代码。当选择需要形状之后就进入到画布,画出的图形就会是选择到的形状。直线代码如下:importorg.vhow.paintpad.tools.Brush;importandroid.graphics.Canvas;/***直线。*/publicclassStraightLineextendsDrawing{@Overridepublicvoiddraw(Canvascanvas){canvas.drawLine(this.startX,this.startY,this.stopX,this.stopY,Brush.getPen());}}矩形代码如下:importorg.vhow.paintpad.tools.Brush;importandroid.graphics.Canvas;/***矩形。*/publicclassRectextendsDrawing{@Override 四川工商职业技术学院publicvoiddraw(Canvascanvas){canvas.drawRect(this.startX,this.startY,this.stopX,this.stopY,Brush.getPen());}}轨迹线代码如下:importorg.vhow.paintpad.tools.Brush;importandroid.graphics.Canvas;importandroid.graphics.Path;/***跟踪手指在屏幕上运动。*/publicclassPathLineextendsDrawing{PathmPath=null;privatefloatmX,mY;privatestaticfinalfloatTOUCH_TOLERANCE=4;publicPathLine(){mPath=newPath();}@Overridepublicvoiddraw(Canvascanvas){canvas.drawPath(this.mPath,Brush.getPen());}@OverridepublicvoidfingerDown(floatx,floaty,Canvascanvas){mPath.reset();mPath.moveTo(x,y);this.mX=x;this.mY=y;}@OverridepublicvoidfingerMove(floatx,floaty,Canvascanvas){floatdx=Math.abs(x-mX);floatdy=Math.abs(y-mY);if(dx>=TOUCH_TOLERANCE||dy>=TOUCH_TOLERANCE){mPath.quadTo(mX,mY,(x+mX)/2,(y+mY)/2); 四川工商职业技术学院mX=x;mY=y;}this.draw(canvas);}@OverridepublicvoidfingerUp(floatx,floaty,Canvascanvas){mPath.lineTo(mX,mY);this.draw(canvas);mPath.reset();}}图6,打开菜单中的形状功能在设置中就可以进行颜色选择,颜色的设置用public公有类ColorPickerDialog进行设置,定义颜色改变的方法colorChanged,下面是颜色设置的代码,图7是进入到颜色设置的界面。importandroid.app.Dialog;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.RectF;importandroid.graphics.Shader;importandroid.graphics.SweepGradient;importandroid.os.Bundle;importandroid.view.MotionEvent;importandroid.view.View;publicclassColorPickerDialogextendsDialog{ 四川工商职业技术学院Stringtitle;publicinterfaceOnColorChangedListener{voidcolorChanged(intcolor);}privateOnColorChangedListenermListener;privateintmInitialColor;privatestaticclassColorPickerViewextendsView{privatePaintmPaint;privatePaintmCenterPaint;privatefinalint[]mColors;privateOnColorChangedListenermListener;ColorPickerView(Contextc,OnColorChangedListenerl,intcolor){super(c);mListener=l;mColors=newint[]{0xFFFF0000,0xFFFF00FF,0xFF0000FF,0xFF00FFFF,0xFF00FF00,0xFFFFFF00,0xFFFF0000};Shaders=newSweepGradient(0,0,mColors,null);mPaint=newPaint(Paint.ANTI_ALIAS_FLAG);mPaint.setShader(s);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(32);mCenterPaint=newPaint(Paint.ANTI_ALIAS_FLAG);mCenterPaint.setColor(color);mCenterPaint.setStrokeWidth(5);}privatebooleanmTrackingCenter;privatebooleanmHighlightCenter;@OverrideprotectedvoidonDraw(Canvascanvas){floatr=CENTER_X-mPaint.getStrokeWidth()*0.5f;canvas.translate(CENTER_X,CENTER_X);canvas.drawOval(newRectF(-r,-r,r,r),mPaint);canvas.drawCircle(0,0,CENTER_RADIUS,mCenterPaint);if(mTrackingCenter){intc=mCenterPaint.getColor();mCenterPaint.setStyle(Paint.Style.STROKE);if(mHighlightCenter){ 四川工商职业技术学院mCenterPaint.setAlpha(0xFF);}else{mCenterPaint.setAlpha(0x80);}canvas.drawCircle(0,0,CENTER_RADIUS+mCenterPaint.getStrokeWidth(),mCenterPaint);mCenterPaint.setStyle(Paint.Style.FILL);mCenterPaint.setColor(c);}}@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){setMeasuredDimension(CENTER_X*2,CENTER_Y*2);}privatestaticfinalintCENTER_X=100;privatestaticfinalintCENTER_Y=100;privatestaticfinalintCENTER_RADIUS=32;privateintave(ints,intd,floatp){returns+java.lang.Math.round(p*(d-s));}privateintinterpColor(intcolors[],floatunit){if(unit<=0){returncolors[0];}if(unit>=1){returncolors[colors.length-1];}floatp=unit*(colors.length-1);inti=(int)p;p-=i;//nowpisjustthefractionalpart[0...1)andiistheindexintc0=colors[i];intc1=colors[i+1];inta=ave(Color.alpha(c0),Color.alpha(c1),p); 四川工商职业技术学院intr=ave(Color.red(c0),Color.red(c1),p);intg=ave(Color.green(c0),Color.green(c1),p);intb=ave(Color.blue(c0),Color.blue(c1),p);returnColor.argb(a,r,g,b);}privatestaticfinalfloatPI=3.1415926f;@OverridepublicbooleanonTouchEvent(MotionEventevent){floatx=event.getX()-CENTER_X;floaty=event.getY()-CENTER_Y;booleaninCenter=java.lang.Math.sqrt(x*x+y*y)<=CENTER_RADIUS;switch(event.getAction()){caseMotionEvent.ACTION_DOWN:mTrackingCenter=inCenter;if(inCenter){mHighlightCenter=true;invalidate();break;}caseMotionEvent.ACTION_MOVE:if(mTrackingCenter){if(mHighlightCenter!=inCenter){mHighlightCenter=inCenter;invalidate();}}else{floatangle=(float)java.lang.Math.atan2(y,x);//needtoturnangle[-PI...PI]intounit[0....1]floatunit=angle/(2*PI);if(unit<0){unit+=1;}mCenterPaint.setColor(interpColor(mColors 四川工商职业技术学院,unit));invalidate();}break;caseMotionEvent.ACTION_UP:if(mTrackingCenter){if(inCenter){mListener.colorChanged(mCenterPaint.getColor());}mTrackingCenter=false;//sowedraww/ohaloinvalidate();}break;}returntrue;}}publicColorPickerDialog(Contextcontext,OnColorChangedListenerlistener,intinitialColor,Stringstr){super(context);mListener=listener;mInitialColor=initialColor;title=str;}@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);OnColorChangedListenerl=newOnColorChangedListener(){publicvoidcolorChanged(intcolor){mListener.colorChanged(color);dismiss();}};setContentView(newColorPickerView(getContext(),l,mInitialColor));setTitle(title); 四川工商职业技术学院}}图7,打开设置中的颜色选项 四川工商职业技术学院第五章软件测试软件测试是把各个功能模块装配成一个完整的软件来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证软件确实能提供需求说明书中指定的功能,而且软件的动态特性也符合预定的要求。根据软件测试的要求,将各个模块部分:形状、清除、保存、设置、以及设置中的功能综合成软件——小画家触屏画软件测试,测试的结果:本软件根据设计要求,达到了预期的开发设想,完成了开发任务。本软件界面设计上紧紧跟随软件设计潮流。系统的编码上,系统代码的编写风格也基本趋于模块化,提高了系统的可读性和可扩展性。本软件能够实现预期的改变形状、清除、保存、改变画笔宽度、改变画笔颜色等,符合软件设计任务书的要求。(1)功能:形状。测试操作:打开软件的菜单选择形状功能,任意选择一种形状在画布上绘画,可以画出选择的形状,功能实现。(2)功能:清除。测试操作:在画板上随意绘画,然后打开软件的菜单选择清除功能,画布立即变成没有任何痕迹,功能实现。(3)功能:保存。测试操作:随意绘制一幅简笔画,打开软件的菜单选择保存功能,在安装小画家的文件夹下找到所绘制的图片,功能实现。(4)功能:设置。测试操作:打开软件的菜单选择设计。1.能够进入到设置画面,功能实现。2.在设置中,选择画刷宽度,设置一个画刷宽度,进入到画布界面,是预设的画刷宽度,功能实现。3.在设置中,选择颜色,设置一种颜色,是预设的画笔颜色,功能实现。4在设置中,将风格的单选框选择,进入到画布界面,是预设的风格,功能实现。5.在设置中,将屏幕的单选框选择,进入到画布界面,预设的模式,功能实现。根据以上测试,可以证明,软件已经达到了我们预想的效果。那么可以说,我们的软件就目前来看,是成功的。 四川工商职业技术学院总结在当今手机普及的时代,手机已经渗入到我们的学习、工作、生活和休闲时间中,只要在以上任何一项中占据地位,那么就可以说,我们在这个一方面占领了一席之地。我们就抓住现在人类的注重娱乐心理,开发小画家画图软件,占据喜爱画简笔画的人的空余时间。通过毕业设计熟悉了软件开发的整个流程,巩固所学到的知识,并把所学的理论知识综合运用于实践中,特别是对软件开发原理和软件工程等理论知识要求较高。同时通过毕业设计掌握java语言,掌握软件开发基本原理和基本技术,熟悉软件设计及开发平台搭建的基本知识,进一步培养自学能力、综合分析问题和解决问题的能力。经过一个学期对小画家画画软件的开发,作者付出了很多的努力,从最初进行调研,了解业务流程和用户需求,到查找有关资料,进行系统分析和概要设计,确定软件的总体框架和具体要求,然后进行详细设计,不断地克服遇到的各种困难最终完成了整个软件。但是,作者觉得得到的收获远远不止这些。在专业知识上,它提高了作者的软件设计和程序编写能力,使作者对软件开发有了一个比较清楚的认识,对软件生命周期各个阶段的目的、工作有了更深刻的体会,加深了作者对软件工程、软件开发原理、java语言的学习,极大的增强了作者综合运用本专业的思维、方式方法分析、解决问题的能力。在其他方面,它又锻炼了作者的耐心、毅力和坚持到底的精神。这些都将是终生的财富,必将给作者今后的学习和工作带来更多的收益。通过此次毕业设计,也发现了自己存在的一些不足,由于自己的分析设计和程序经验不足,该软件设计和实现过程中,还有许多没有完善的地方,如用户界面设计不够美观,很多功能没有完善,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。关于本次设计的命题,设计只能实现其基本的功能。不过,通过这次设计启发了作者的思维,提高了动手能力,这是在课本中学不到的,作者将继续探索这方面的知识技术,尽力完善软件的功能。 四川工商职业技术学院参考文献【1】王立福孙艳春刘学洋等编著.《软件工程(第三版)》.北京:北京大学出版社,2009.10【2】(印)克曼特内尼(Komatineni,S.).(美)麦克莱恩(MacLean,D.)哈希米(Hashimi,S.)著.杨越译.《精通Android3》.北京:人民邮电出版社,2011.11-01【3】(美)ShawnVanEvery著,巢文涵译.《Android多媒体开发高级编程》.北京:清华大学出版社,2012.2-01【4】(美)Mark L.Murphy著, 李雪飞吴明晖译.《Android开发入门教程》.人民出版社,2010.12-01【5】(美)CayS.Horstmann著,叶乃文邝劲筠杜永萍译.《JAVA核心技术(卷1):基础知识(原书第8版)》.机械工业出版社,2008.6-01【6】(美)Y.DanielLiang著,李娜译.《Java语言程序设计:进阶篇(原书第8版)》.北京:机械工业出版社,2011.6-01【7】高怡新编著.《XML基础教程》.北京:人民邮电出版社,2006.11-01【8】(美)BruceEckel著陈昊鹏译.《Java编程思想(第4版)》.机械工业出版社,2007.6-01【9】李刚著.《疯狂Android讲义》.电子工业出版社,2011.7-01 四川工商职业技术学院致谢时间如梭,随着毕业设计的结束,我的大学生活也落下了帷幕。回想在大学求学的三年,心中充满无限感激和留恋之情。感谢母校为我提供的良好学习环境,使我能够在此专心学习,陶冶情操。在毕业设计的这段时间里,首先,我要感谢XX老师对我的关怀和指导,致以诚挚的谢意,正有他对我的鼓励和关心,我才能完成毕业设计;同时我也要感谢我的同学以及其他老师,正是有了他们的帮助,我才能一次一次克服困难,找到解决方案,继续完成本软件的开发设计,在老师们的关心、帮助和指导下,我渐渐的开始了设计。根据老师的建议,我找来了软件开发与java语言等方面的书籍和资料,从最基本的问题入手开始一个个的解决我心中的疑惑。这是一个漫长的学习过程。随着时间的推移,我开始慢慢的掌握了设计时所需要的知识。我也终于明白了大学三年学习的意义和作用。只有具备扎实的基本功和端正的学习态度,才能使自己在学习新知识时有更深刻的认识力和更快的领会力。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!最后,再次对关心、帮助我的老师和同学表示衷心地感谢!'