版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.本科毕业论文(设计)题目:基于Linu*电子相册的设计与实现学院:数学与计算机科学学院班级:计算机本科一班-.z.基于Linu*电子相册的设计与实现摘要:随着科技的不断进步,我们的学习和生活也在发生着日新月异的变化。普通的相册已经不能满足人们的需求,电子相册渐渐的成为了当今相册的主流。通过对电子相册需求的分析与自己所学知识的结合,基于Linu*操作系统,设计制作出了这款电子相册。本系统以C语言知识为主,并结合QT和C++面向对象的思想,运用Uni*环境高级编程中的信号量机制和管道,实现进程与进程、线程与线程之间的通信,最终完成了各个界面之间的调用与衔接。主要功能有欢迎界面、相片浏览、音乐播放、鼠标操作、键盘的操作。相片浏览主要功能有:上一*、下一*、放大、图片特效、退出功能。音乐播放:播放、暂停、上一曲、下一曲、音量增加、音量减小。鼠标控制:绘制鼠标、移动鼠标、点击与返回鼠标坐标。键盘:通过读出设备文件做出相应的操作等各种基本功能。关键词:Linu*;电子相册;C语言;Qt;C++目录1绪论11.1开发背景11.2开发目的12需求分析22.1概述22.2性能需求22.3功能需求22.4系统界面33项目技术33.1搭建开发环境44软件的设计与实现54.1概要设计54.1.1设计思想54.1.2设计原则54.1.3模块概要设计5电子相册的操作流程74.2详细设计9欢迎界面的设计10主页面的设计10相片览模块的设计10音乐播放的设计10鼠标控制的设计11总控制的设计114.3数据结构114.4编码的实现125软件测试125.1性能测试125.2硬件上测试136设计总结13参考文献:14-.z.1绪论1.1开发背景及目的1.开发背景Linu*就是一套操作系统,Linu*的前身是Uni*,Linu*提供了一个完整操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Uni*良好的传统而来的,所以相当稳定并且功能强大,可移植性非常好。本设计采用的是嵌入式Linu*系统。首先,Linu*是开放源代码,是遍布全球的众多Linu*爱好者和Linu*开发者的强大技术支持;其次,Linu*的内核小、效率高,性能稳定,裁剪性很好,开发和使用都很容易,移植性很强,即用Linu*环境开发的产品,二次开发方便。图1.1Linu*LogoLinu*是一套免费试用和自由传播的类Uni*操作系统,它主要用于基于Intel*86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。Linu*以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Uni*特性,具有多任务、多用户的能力。2.开发目的近几年,嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化,工业化促进信息化发展的新的国民经济增长点。随着消费家电的智能化,嵌入式更显重要。据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域。基于嵌入式Linu*的电子相册比一般的电子相册更加的具有优越性和实用性。所以,我们有理由相信基于嵌入式Linu*的电子相册必将成为未来电子相册的主流。2需求分析需求分析在软件开发中是一项非常重要的工作。在需求分析中,我们需要确定客户的需要。并且根据客户的需求,以及我们的实际情况,构思和制定出一个完善的设计方案,本章较为系统和详细的阐述了该电子相册全面而合理的需求。2.1概述随着数码相机逐步走进寻常百姓家中,人们对电子相册的需求不断增加。电子相册提供给用户的不仅仅是一个存储空间,更多的是拥有了与他人分享和交流的机会,这是一个新生事物但却大有前景。现在主流的电子相册应用软件,其体积普遍庞大,占用较多的内存,对硬件的要求高,因此开发一个运行速度快,占用空间小,对硬件要求较低的功能实用的基于嵌入式Linu*电子相册的应用软件非常有意义。2.2性能需求1.响应速度:不论是什么样的软件,在设计和实现的时候,必须要考虑软件的响应速度,所以,一款优秀的软件必须将响应速度设计在用户可忍耐的*围内。该软件内存占用率小2.流畅性:用户在使用软件的时候,系统应在用户忍耐时间*围内的作出响应,如果不能及时的回馈用户的反应,即使功能再丰富的软件,也注定不会受用户的认可。3.舒适度:在软件的设计的时候,要将各组件的间距、顺序设计的符合大众习惯。使用一些提示的文字或图片等提示用户操作。2.3功能需求1.基本功能 (1).手动浏览 可以实现查看上一*、下一*,实现图片的放大与缩小。 (2).全屏播放 可以实现图片的暂停和播放,每*图片的展示都有不同的特效。 (3).音乐播放 可以实现音乐的上一曲、下一曲播放,实现音量的调节。 (4).返回主界面//如上 系统退出到主界面。图2-1系统主界面2.4系统界面设计一款软件界面的时候,非常有必要考虑各个组件之间合理的布局,我们在给定大小的界面中完成各个组件的布局时,既不能让各组件太“拥挤”,也不能让各组件之间距离太远,孤零零的,组件之间的间距一定要适中,让人看着舒服。而且各组件在顺序上的安排要满足用户的习惯性的操作,尽量减少用户误操作的可能。在一些组件上要使用图片按钮,提示用户各个组件的作用和操作方法,以及在整个界面的颜色的搭配上要做到舒适,既不要让用户感到“刺眼”,也不要让用户感觉到界面太“冷淡”,界面的颜色一定要选择以暖色为主调。3项目技术及开发环境的搭建3.1搭建开发环境1.准备所需软件包:Redhatlinu*9.0,2.软件的安装:(1)安装虚拟机Vmware虚拟机。(2)在vmvare虚拟机中安装linu*Redhat9.0操作系统,并配置网络,内存,以及用户等等。(3)安装Qt开发包。1.将qt-*11-opensource-src-4.5.3解压到/root/usr/local/trolltech目录下2.设置环境变量:3.在终端中进入解压的目录下4.在该目录下输入./configure检查安装包5、输入gmake编译程序;6、输入gmakeinstall进行程序的安装;7、安装完成,输入qmake-v可以查看QT版本;3.QT技术介绍QT是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架,它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能,Qt很容易扩展,并且允许真正地组件编程,基本上,Qt同*Window上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西。(1)优良的跨平台特性。Qt几乎支持现在流行的所有操作系统(2)面向对象。Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt运用信号和槽机制来对消息进行处理,提高了各进程之间协同处理的效率。(3)丰富的API。Qt包括多达250个以上的C++类。甚至还包括正则表达式的处理功能。(4)支持2D/3D图形渲染。(5)提供了多种类型的文档。例如QTAssistant,它是一个完全可自定义,重新分配的帮助文档,他可与基于Qt的应用程序运行,使用Qt助手,开发小组同样能够很大程度上加快文档的处理过程[9]。(6)*ML的支持。4.采用Frambuffer5.采用Libjpeg库libjpeg是一个被广泛使用的JPEG压缩/解压缩函数库(至少在Uni*类系统下是广泛使用的),它能够读写JFIF格式的JPEG图像文件,通常这类文件是以.jpg或者.jpeg为后缀名的。通过libjpeg库,应用程序可以每次从JPEG压缩图像中读取一个或多个扫描线(scanline,所谓扫描线,是指由一行像素点构成的一条图像线条),而诸如颜色空间转换、降采样/增采样、颜色量化之类的工作则都由libjpeg去完成了。6.采用Libmad库libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer、*mms等都是使用这个开源库进行解码的;7.采用freetype字体库它是开源免费、高质量可移植的字体引擎,它提供统一的接口,来访问多种字体格式,使用的是高度模块化的程序库,可以灵活的进行裁剪。它是采用C语言实现的。4软件的设计与实现4.1概要设计通过第二章的需求分析和第三章提到的技术的了解。对于电子相册的各种功能实现已经明了。接下来的概要设计将详细概述本软件的整体流程,规划软件怎样开发的总领提纲。4.1.1设计思想本电子相册我们采用模块化编程,共5大模块:主控制、音乐播放、相册浏览、鼠标控制、键盘控制。在总体框架上运用多线程、多进程、信号量机制等。4.1.2设计原则合理化分配内存,做到安全释放,避免内存泄漏。尽量减小内存的占用。4.1.3模块概要设计如图(4-1)是系统功能的框架图。图4-1系统框架图鼠标点击,选择进入手动浏览,选择所要浏览的图片,通过鼠标和键盘,实现手动浏览的以下功能。图4-2手动浏览框架图鼠标点击。选择进入全屏播放,通过鼠标和键盘,实现全屏播放的以下功能。图4-3全屏播放框架图鼠标点击,选择进入音乐播放,通过鼠标和键盘,实现音乐播放的以下功能。图4-3音乐播放框架图4.1.4电子相册的操作流程 先在init5模式下输入命令sourceenv.sh(设置一些环境变量) 再运行servicegpmstop(禁用系统鼠标) 然后运行./main1.进入欢迎界面2.单击鼠标右键进入主界面3.鼠标选择进入相应的功能模块3.1手动浏览功能在手动浏览中,用户可以通过鼠标和键盘控制,查看上一*,下一*图片,可以实现图片的放缩。同时可以播放音乐。 3.2全屏播放在全屏播放中,每*图片的播放都有其各自的特效,可以实现图片的暂停和播放。 3.3音乐播放 在音乐播放中,可以实现音乐的上一曲,下一曲播放,音量的调节。4.系统退出 4.2详细设计我们的相册主要包括:欢迎界面、主界面、相片浏览、音乐播放、鼠标控制、键盘控制,系统退出。每个模块的功能和具体的实现如下:4.2.1欢迎界面的设计进入应用程序最先执行的模块。在主函数即main函数中调用initscreen()函数。该函数首先打开Linu*下的/dev/fb0以启动FrameBuffer的设备文件,通过使用framebuffer与jpeg库的使用在linu*的窗口下画图片,通过jpeg库将以后缀为.jpeg的图片转换为二进制数,然后在屏幕下每个相素点画出相应的点。进而使欢迎界面的图片显示在我们的窗口上。接着通过ioctl()函数获取屏幕信息,并调整我们的图片大小以适应屏幕大小。4.2.2主页面的设计在欢迎界面下,单击鼠标左键,有四个按钮,分别是:手动浏览,全屏浏览,音乐播放,主控制。通过鼠标点击按钮进入相应的模块。4.2.3相片览模块的设计浏览模块又分为手动浏览和全屏浏览。对于图片的浏览,首先是定义一个屏幕的结构体,然后通过读设备文件的信息将其赋值,将屏幕的内存地址映射到结构体的u32_tmem成员上,画点时在内存映射相对应的位置上画点。在销毁屏幕信息时解除对应地址的映射。画点函数在每*相片的显示中至关重要。我们的相片都是以.jpeg为后缀的,此时就需要jpeg库来进行操作。首先是我们需要配置库,然后安装。依次需要的命令是./configure、make、makeinstall。我们通过运用库函数中的一些函数来来对图片进行解码、缩放、相素转换、显示图片。我们的界面就是通过改变画图的位置来进行组合,形成我们所看到的界面。播放时的效果就是通过改变画图的方式。在手动浏览功能中,我们运用管道机制来实现鼠标和主进程之间的通信,从而控制图片的上一*下一*播放。在主函数中调用pipe()函数创建管道,接着调用fork()函数创建子进程,关闭父进程的写端和子进程的读端,这样就创建了从子进程到父进程的IPC通道。若鼠标点击下一*按钮,就向管道中写入要求执行播放下一*的命令,主进程读取命令后,执行播放下一*图片的函数。在全屏浏览中,我们用C语言编写了不同的图片的展示方式。每*图片都设有各自的特效。4.2.4音乐播放的设计主要有播放功能,上一曲,下一曲,暂停播放,继续播放,音量的调节。我们通过操作音乐库,先是配置音乐库,然后通过改变音乐库中的播放函数来进行音乐播放的相应操作,音乐播放主要是通过全局变量的设定来操作(播放、下一首、当前播放的序号、停止播放)我们的全局变是是通过读鼠标在界面中所单击的位置来置位的。4.2.5鼠标控制的设计首先我们要画一个鼠标,并且记录鼠标的初始位置,点击位置,以及相应键的响应。先定义了一个鼠标状态结构体typedefstruct{u8_tbtn;u8_t*;u8_ty;}mouse_t;定义一个数组放的是颜色的宏定义,通过使用framebuffer,来画点,画出鼠标的形状,在每次使用鼠标前,先把鼠标对应位置的数据保存起来,用来等鼠标移开时恢复其原来的数据。还有解决鼠标的边界问题。当鼠标移动到超出屏幕时,令他停在屏幕边界。最后把现在鼠标的状态通过管道写出去,然后其他子进程通过读出鼠标的状态判断自己相应的操作。在整个软件执行阶段,鼠标的工作量是最大的!4.2.6键盘控制的设计通过读取标准输入判定并做出相应的操作首先是注册一个信号,通过标准输入来读,然后通过getchar()函数来获取键盘的输入。判断鼠标的输入是否是一个’q’,如果是’q’则发送一个SIGQUIT来终止程序的进程。不是,则把键盘输入的值通过进程传递给音乐进程,音乐进程通过判断键盘输入的值来实现上一首,下一首,暂停,播放功能。4.2.7主控制的设计一个父进程和四个子进程,通过管道和信号量机制来实现进程之间的通信。4.3数据结构1.双向链表首先建立一个链表的结构体,然后通过后值插入法,在链表的结点中填加数据,并且通过结构体中的数据ID号来寻找相对应的数据。typedefstructnode{ chardata[255]; structnode*prior,*ne*t;}ListNode;typedefListNode*LinkList;typedefstruct{ LinkListhead; LinkListrail;}List;2.文件操作通过打开一个文件夹,读出文件夹下所有的文件,并把所有的文件路径名加入到双向链表的数据中,然后通过传递链表的头结点,每个函数来做相应的操作。4.4编码的实现本文档关键性核心代码参见附录。5软件测试软件的测试在开发的过程是一个不可缺少的关键性环节,要开发一款性能优良的软件,必须要进过严格的软件测试,只有通过严格测试的软件才是一款优秀的软件。通过软件测试可以找出其中潜在的bug、逻辑上的错误等非人为潜在危险,并及时的对软件进行修改,减少在用户使用过程中不必要的麻烦。5.1性能测试表5.1软件测试NO.场景测试步骤预期结果测试结果欢迎界面1欢迎调试运行开始进入欢迎界面符合主界面2主界面单击鼠标左键进入主界面符合手动浏览3手动浏览选择浏览图片显示所选图片符合4手动浏览单击上一*按钮显示上一*图片符合5手动浏览单击下一*按钮显示下一*图片符合6手动浏览单击放大按钮实现图片的放大符合7手动浏览单击缩小按钮实现图片的缩小符合8手动浏览单击退出按钮退回到主界面符合全屏浏览9全屏浏览选择全屏浏览按钮进入全屏浏览模式符合10全屏浏览单击鼠标左键进入暂停模式符合11全屏浏览单击鼠标左键恢复播放模式符合12全屏浏览单击退出按钮退回到主界面符合音乐播放13音乐播放单击播放按钮进入音乐播放符合14音乐播放点击键盘左键播放上一曲音乐符合15音乐播放点击键盘右键播放下一曲音乐符合16音乐播放单击暂停按钮音乐暂停符合17音乐播放单击音量增加按钮音量增加符合18音乐播放单击音量减小按钮音量减小符合退出系统19退出系统单击退出系统按钮退出系统符合5.2硬件上测试将软件安装到真实的Arm物理设备上进行测试。测试的步骤相同,测试的结果符合开发要求。6设计总结通过完成此项目的开发,学习和巩固了所学的编程知识,同时也学习了一些诸如Qt界面编程的新技术,开拓了自己的视野以及知识面,增强了自己动手解决问题的能力,具体做出如下总结:本系统是基于linu*操作系统下进行的,充分应用了QT界面编程技术,并且应用了C++面向对象的思想,大量运用类(class),完成了对界面所有组件的编写,运用信号(signal),槽函数(slot),把各按钮与功能实现函数相联系,完成了诸如界面切换,音乐播放等功能。系统基本上实现了所预期的功能。但是由于知识的局限以及个人经验不足等原因,有的功能还不是很理想,诸如音乐播放不流畅等问题。综合这些过程,正如一句老话“学无止境”,今后还需要不断的完善和充实自己。参考文献:[1]丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展期刊,2006,16(1):158-161.[2]ChaoWang,WeiDuan,JianzhangMa,ChenhuiWang.TheresearchofAndroidSystemarchitectureandapplicationprogramming[J].puterScienceandNetworkTechnology(ICCSNT),2011InternationalConference,Page(s):785-790.[3]柴若楠等.音视频同步技术综述[J].计算机系统应用,2011,20(11):223~226.[4]施佳子.iPhone平台移动流媒体播放器的实现与优化[D].**:华中科技大学,2009,05.[5][6]柯元旦.Android内核剖析[M].:电子工业,2011.[7]杨丰盛.Android技术内幕[M].:机械工业,2011.[8]简洪波.基于Symbian平台的移动流媒体客户端的研究和实现[D].**:华中科技大学,2007,01.[9]王世江.GoogleAndroid开发入门指南(第2版)[M].:人民邮电,2009.[10]王冠宇,关永,赵冬生.JAVA在SQLite嵌入式数据库中的应用[J].微计算机信息,2006,22(1):94~95.[11]陈佳科,*冀伟,洪英杰,董晓宇.基于无线网络环境下的移动流媒体系统的实现[J].微计算机信息,2005,21(1):109~110.[12]WenhaoWang,MingyuGao.DesignofembeddedmediaplayerbasedonS3C2440andSDL_FFMPEG[J].ElectricalandControlEngineering(ICECE),2011InternationalConference.2011,Page(s):2979~2982.-.z.TheElectronicPhotoAlbumBasedonLinu*SystemAbstract:Withtheconstantprogressofscienceandtechnology,ourstudyandlifearechangingwiththechanging.Photoalbumhascan'tsatisfypeople'sneeds,electronicphotoalbumgraduallybecamethemainstreamoftoday'sphot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国药科大学《药事法规》2025-2026学年期末试卷
- 2026七年级下新课标老王杨绛散文
- 2026四年级数学上册 认识平角周角
- 安全生产监理职责讲解
- 弹力带康复训练指南
- 长假归来试验室仪器开机次序 试验室仪器维护和修理保养
- 2023自考建筑工程技术经济学试题
- 2024《江西省政府采购单一来源文件(货物类)》示范文本模板
- 【 生物 】有性生殖第二课时课件-2025-2026学年人教版生物八年级下册
- 2023年教师资格之中学综合素质题库综合试卷A卷附答案
- 2025秋季贵州磷化(集团)有限责任公司校园招聘389人笔试历年常考点试题专练附带答案详解试卷3套
- 2025年中国LNG行业当前现状及未来趋势发展预测报告
- 传染病培训春季课件
- 学习红船精神红船再出发
- 2025年养老院工作总结及2026工作计划
- 2026年羽绒服市场调研报告
- 快速康复在骨科护理中的应用
- 液氧储罐安全培训
- 骨科第一季度院感工作总结
- 2025年宁夏银川市唐徕中学南校区中考模拟(一模)考试数学试题
- 2025-2026学年高一上学期《循梦而行向阳而生》主题班会课件
评论
0/150
提交评论