




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、太原科技大学毕业设计()任务书学院(直属系)电子信息工程系时间: 2015 年 3 月1 日学 生指 导 教 师设计()题目基于 QT 的音乐器设计与实现主要研究内容运用 QT 和 C+技术来实现音乐 器功能例如: 音乐、歌词显示、添加歌曲、 控制等。尽量简洁图形使用者的界面排版,用生活中 使用 来设计菜单和界面,以达到方便使用者操作的目的,使程序显得简单明了。研究方法瀑布模型开发,结构化设计方法,面象程序设计主要技术指标(或研究目标)本应用开发采用 C+ 程序语言标准,通过面象的开发方法,运用C+和 QT 技术主要参考文献,叶子青.Visual Studio2005 系统开发实例精粹. 人民
2、邮电社, 2007 年 1 月:45-67Daiel Solin24 小时学通 QT 编程机械工业,2000 年 1月:21-48Jasmin Blanchette And MarkSummerfield. C+GUIProgram- mingwithQT4电子工业, 2008 年 6 月:70-210.Qt5 开发及实例. 电子工业, 2014 年 1 月:30- 1105.Qt 中的 C+技术.电子工业, 2012 年 7 月:55-89Stanley B. Lippman , Jos e Lajoie , Barbara E. Moo. C+Primer.电子工业, 2013 年 9 月
3、:32-260Andrew Koenig.C 和 C+经典著作:C 陷阱与缺陷. 人民邮电,2008 年 2 月:21-65.现代工程.希望电子,2003 年 8 月:30- 246Scott Meyers.Effective C+. 电子工业,2011 年 1月:3160Bruce Eckel,Chuck Allison.C+编程. 机械工业出版社,2011 年 7 月:53-168基于 QT 的音乐摘要器设计与实现音乐作为一种性质的产品,从古到今一直受人喜爱。进入信息社会,音乐的传播越来越广,应对大众对音乐的需求,市场上出现了大量的音乐,其中包括千千静听、酷狗等众所周知的产品。同时随着电子
4、技术的不断发展,各种智能设备的出现,使得不同设备都需要音乐器。QT 作为一种跨开发框架,可以轻松开发适应各种的,而且丰富的代码库和方便的界面设计过程使得开发成本低,而本的实现正是基于 QT。本音乐器主要完成音乐与暂停、歌词同步、创建音乐列表、上一首和下一首、调节音量、模式、添加删除歌曲、窗口的拖动、主流音频格式的支持等功能。目前系统实现所采用的技术为 QT 与 C+。:音乐器,QT,C+Music as a kind of entertaent products, has been popular from ancient times to thepresent.he information
5、society, the spread of music ising more and morepopular,demand for music to the public, the market appeared a large number of music playersoftware, including TT Player, cool dog, as everyone knows the product. At the same time,withthe development of electronic technology, the emergence of various sm
6、art devi, sotdifferent devineed music player software. QT is a cross platform development framework,can easily adapt to the development of a variety of platforms, but also enrich thecode base andconvenienterface design pros sot the development of low cost, and the realization ofthe software is based
7、 on QT.The music player is mainly to complete the music playback and pause, synchronous lyrics,music play list, create a song and the next song, adjust volume, play mode, add and deletesongs, drag the window, the mainstream audio format support and other functions.The current system implemenion tech
8、niques used for QT and C+.Key Words: MusicPlayer,C+,QTMusicPlayer based on QT design and implemenionAbstract目录第一章 引言 .11.1研究现状 .11.2主要研究的目的及内容 .11.3研究方法及设计思路 .21.3.1 研究方法 .21.3.2 设计思路 .3第二章 应用需求分析与可行性分析 .42.1应用需求分析 .42.2运行需求分析 .42.3其他需求分析 .42.4可行性分析 .42.4.1 经济可行性.42.4.2 技术可行性.52.4.3运行可行性 .52.4.4时间可行
9、性 .52.4.5法律可行性: .5第三章 相关技术简介 .63.1C+ .63.2QT .73.3音乐原理 .7第四章 系统分析 .94.1 系统实现目标 .94.2 系统体系结构 .9第五章 系统设计115.1概要设计115.2结构设计115.3详细设计125.3.1歌曲列表显示125.3.2歌词同步功能145.3.3控制155.4主要技术实现175.4.1类 QMediaPlayer 的使用175.4.2列表 QMediaPlaylist .185.4.3 歌词显示 .18第六章 测试 .206.1程序调试 .206.2程序的测试 .206.2.1测试的重要性及目的 .206.2.2测试
10、的步骤 .226.2.3测试的主要内容 .226.3本程序的测试情况 .236.3.1 主要测试用例 .236.3.2 测试用例的实施.23结束语 .25参考文献 .26致谢 .27附录 .28第 1 章 引言1.1 研究现状所谓音乐器可以说是把音频器进行可视化呈现,变成可以供人操作的图形画面,本质上是应用了各种音频编码格式的工具。比如说格式调用的是 Monkeys Audio器,flac 格式调用的是 flac器,mp3 调用的是 lame器。很多音乐器都各种音乐格式的音乐文件,其实是这些器把各种的音频器包装起来,而且使用一致的画面,进而让使用者能够简洁地和听取多样化的音乐。大众的音乐器单单
11、是将音频器包装起来,而同一种音频的方法又是不变的,所以理论上所有器音质应该是完全相同的,若果说有音质最好的音乐器实际上是欲盖弥彰。一些个音乐器在应用器的前提上加入 DSP 插件,以转换和方法处理原始的音乐,以迎合人们的喜好,看似以这样的形式获得了优质音质,但事实是原本音乐被毁坏,音质成了两极分化,有的变好,有的变差。音乐器的特色在于可视界面亲民并具有强大的扩展性。界面酷炫,操作简单是当前市面上的绝招,缺乏扩展性是根本弱点,支持格式不多且自成体系。所以开源的制胜法宝是针对扩展性加强建设,符合音乐种的格式,但界面平淡无奇,小使用者基数低的缺点也是无遗。1.2 主要研究的目的及内容当下社会,每个移动
12、或电子产品里都有音乐器的身影。它将声音或是音乐传遍大江南北。科技为王的时下如雨后春笋般不同开发的音乐播放器涌现网络,其中值得注意的是 Qt Creator 开发的音乐器占用内存小功能强,只要进行一次编译,就可以移植到下或其他下。科技的进步,将许许多多的设备带入人们的视野中,所以的开发对于系统设备的前景有着巨大推动作用。比如 linux 系统对各种设备的广泛支持性,能方便应用与电脑、汽车及工业等。系统在众多领域的应用带来了便利,提高了的生活质量,尤其是消费电子产品潜力是巨大的。随着人们精神需求的加强,人们更加期待功能好的美观简洁的音乐器,所以应用系统开发音乐器在市场中占有重要的席位。这次的设计是
13、开发一个音乐器,能够实现不同类型的音频功能。该音乐器具有添加歌曲,删除歌曲,上一曲,歌曲,暂停歌曲,下一曲,模式等 ,具备基本的音乐功能,用 QT 设计出来的器都有,并且可以显示歌词,使用 QT 开发,利用其跨性和易扩展性可以为将来器的扩展打下基础。1.3 研究方法及设计思路1.3.1 研究方法音乐器是一个典型的应用,其功能性是第一位的。我在产品开发过程中遵循的是瀑布模型开发方法,先后进行相对全面的市场、需求分析、可行性分析、系统设计、详细设计、编码、测试等步骤。在系统设计时采用的是结构化设计方法。瀑布模型(Waterfall M) 实际上是项目开发架构只不过是形象化的称呼,一个严格开发过程是
14、通过合理的规划分步骤分阶段完成的,不管是系统需求分析还是的发布及的过程中,每个阶段里有源源不断不断的产生反馈信息生成,所以当发现信息没有被覆盖或是遇到问题的产生,最好方法是“返回”上一个阶段将错误改正,最终发现项目开发过程程是以上到下形象的“”,因为这样得名瀑布模型。在工程、企业项目、产品生产还有市场销售等方面都会涉及运用瀑布模型。结构化设计方法给出一组帮助设计在模块层次上区分设计质量的原理与技术。它把系统作为一系列数据流的转换,输入数据被转换为期望的输出值,通过模块化来完成自顶而下实现的文档化,并作为一种评价标准在设计中起指导性作用,通常与结构化分析方法衔接起来使用,以数据流图为基础得到的模
15、块结构。结构化设计所使用的工具有结构图和伪代码。结构图是一种通过使用矩形框和连接线来表示系统中的不同模块以及其活动活动的工具。SD 方法在构建变换型结构或事务型结构的系统时有非常好的效果。数据模型与过程模型的一并使用组成了结构化设计的过程。实际设计的时候,采取面向整体程序下结构为对象,并常常制作模块结构图描述程序模块间的联系。结构化设计应分为一下几步:数据流图情况;明确数据流图类型问题;将数据流图至模块结构,作为推出模块结构的上层的依据;基于数据流图逐步分解模块,设计中下层模块;改进模块结构,产生规范全面的结构;描述模块接口。1.3.2 设计思路(1)分析市场上现有的音乐器产品,找到主要产品的
16、优势和缺点;(2)分析本的可行性和应该具备的功能;(3)针对系统功能研究和解决技术问题,并进行设计;(4)使用具体的程序设计技术实现并测试。第 2 章 应用需求分析与可行性分析2.1 应用需求分析本应简单易用,并且占用资源少,包含器的主要功能。2.2 运行需求分析硬件条件:CORE CPU、1G RAM、10G ROM 以上的PC 机。条件:Windows 72.3 其他需求分析该系统具备的条件有可性、可靠性、可理解性、效率等。方便使用者的认识和操作。可性囊括可读性、可测试性等。可靠性囊括正确性和健壮性等。在开发过程中,应克服不利与限制的条件(费用、时间、适合的软、硬件资源等),尽量满足以上各
17、方面需求。2.4 可行性分析2.4.1 经济可行性进行项目时对开发者的经济现状和投资能力予以分析,对项目建设运行与费用做好,预计项目完成后可能获得的社会和经济效益。本项目是作为毕业课题由自我设计的,投入费用甚小,开发完成后可为以后实现功能扩展提供便利,估算开发费用和今后的运行、费用,预计项目会获得的收益,把费用与效益进行对比。开发、运行和费用主要包括:和安装设备的费用:计算机硬件;开发费用:使用 QT 的免证版本,免费;费用:个人独自开发,正常生活费用;消耗品费用:相关开发资料、保障系统运行的消耗用品。所有开支都不大,所以经济上是可行的。2.4.2 技术可行性技术可行性是估计拥有的技术条件是不
18、是能保证实现项目,开发工具的配置能否满足项目的要求等。该运用 QT 进行开发,QT 作为被广泛使用的框架,具有强大的功能,而其中的 QMediaPlayer 功能也十分适合开发音乐器。进过 1 个月的学习和研究,我已经初步掌握了 QT 开发过程,以及相关的类库。所以技术是可行的。2.4.3 运行可行性本小巧易用,占用资源少,可以在多种上安装运行,本毕业设计只在 windows 7 系统下的PC 上测试和运行,运行可行。2.4.4 时间可行性学习时间紧,项目任务重,要一边设计相关功能,时间也算是紧紧凑凑,但是经过努力,项目功能能基本实现,一些功能在测试会有点问题,以后会在逐步解决。2.4.5 法
19、律可行性:所有技术资料都为合法。开发过程中不存在知识问题。未任何,不存在问题。开发过程中未涉及任何。结合以上考虑,本项目的实现从技术上、从经济上、从法律上皆可行。第 3 章 相关技术简介3.1 C+说到 C+其实是由 C 语言发展出来的语言,从 1969 年开始 C+登上了历史舞台。 大约 1969 年,贝尔的 Ken Thompson 为 DEC PDP-7 计算机开发了一个操作系统,于是最早的 UNIX 诞生了。之后,他以大学的Martin Richards 开发的 BCPL 语言为依据,给 UNIX 开发了一个方便编写系统的语言,取名叫做 B。B 语言是一款无类型的语言,与之后的 C 语
20、言相比他的特点是直接面对机器字操作。B 语言可说是系统编程语言的首个应用,而且 B 语言其本身的解释程序由 Ken Thompson 用这首个应用改写。 1972 至1973 期间,时为贝尔的 Denis Ritchie 对 B 语言进行优化,从此 B 语言多了数据类型的理念,也是从这开始世界上多了一种可以在直接生成机器代码的编译程序,它叫做 C。于 1973 年,UNIX 的内核在 Ken Thompson 小组的努力下用 C 被重新改编。紧接着,许多计算机例如:IBM 360/370、Honeywell 11以时 VAX-11/780 等,皆应用了 C 语言所编译程序,C 用其无可抵挡的势
21、头发展成为最具的系统程序设计语言。 但是,C 语言也有美中的地方,比如说类型检查机制薄弱、缺失支持代码复用的语言结构,这些使 C 语言在开发大程序时遇到难题。有缺点就有改进的空间,的 BjarneStroustrup 博士和同事们开始了针对 C 语言进行优化改造工作,为 C 语言添加了“类”的概念,最初的 C+语言就此出现(1983)。往后的时间,Stroustrup和他的同事们将运算符重载、虚函数等功能添加到 C+,C+变得更加完善,在后诞生了 AT&T C+ 2.0 版本。随后化ANSI(AmericanNationalStandardInstiute) 和 国 际 标 准 化 组 织IS
22、O(ernational Standardsanization)一起进行了标准化工作,并于1998 年正式发布了 C+语言的国际标准 ISO/IEC:98-14882。业界商表示都支持 C+编译器具备的标准,对不同程序进行扩展。 C+设计方法的特点是面象,处于中型和大型的开发项目的首选之列,C+的优越性极多,从开发历时、经费得到充分体现,开发出来的可重用、可扩充、可并且可靠。值得一提的是,C+作为 C 语言的一个超集,其好处就是 C 代码不经改动就可用 C+编译通过。3.2 QT1991 年奇趣科技推出 QT,其实质是跨c+ 的 App DevelopFramework。它可以同时开发 GUI
23、 程式和非 GUI 程式。它为 APP 开发者建立艺术级 APP 提供应该具备的功能。Qt 扩展性强,允许进行对组件编程。可以说,Qt与 X Window 的 Motif,Openwin,GTK 等图形界面库和 Windows上的MFC,OWL,VCL,是同类型产品。2008 年时 Nokia 公司将奇趣科技“揽于麾下”,QT 之后便服务于诺基亚。Qt Creator 是诺基亚把 QT 收归旗下后开发跨的 IDE,意思是轻量级集成开发环境。此 IDE 能够跨运行,服务于Linux(32 位及 64 位)、Mac OS X 和 Windows 等系统。的理念是,让 QtCreator 的相关工作
24、者能够使用 Qt 这个应用程序框架高效地完成他们的开发工作为其减轻负担。3.3 音乐原理人类用声音传递信息,用声音抒感,声音带给人们以美的享受和快乐,声音无处不在,听得到声音能让人感到生命的真实。时代在发展,科技的更新日日人们的认识,人们逐渐已不简单满足于物质生活的提高,进而对精神世界需求日益剧增。而音乐从古到今都是人们休闲的上佳之选,以作音乐为趣,以听音乐为乐。这就了问题,美妙的音乐是如何通过媒介的呢?科技的力量在这时显露无遗,其过程应该是要多文件,计算机就把指令传递到声卡,声卡起到把信息重新整合的作用,但要想效果好就要使用高质量的硬件设备。对于电脑声卡,使用 Fm与波表可提高音效。Fm运用
25、在旧时的 isa 声卡上,Fm 是“频率调变”的意思,是以声音振荡的理论为基础的 MIDI处理。此技术带有局限性,又因为这种声卡或显卡用的是廉价的芯片,体验的效果不如人意;不同的是波表和呈现出来的效果要大大好于 Fm,且在电脑上被大量推广使用,各种不同的波表,声卡、显卡,以及充斥市场。对于数字音频编码来说,在编码方案方式上具有差异,但基础的编码思路却差别不大。PCM 音频信号存在于音频声道中的,处理时,要把 PCM 映射到频域中,即时遇到频域,这个过程带滤波器或变换滤波器组可以完成。区别是子带滤波器和变换滤波器组中的频率分辨率不一样。音频采样块位于声道中,需运用心里声学模型达到计算掩蔽门限值的
26、目的,得到的掩蔽门限值可推算出,从公共比特池配给到这个声道中不同频率域内的比特数,或是否该引入频率范围内的量化噪声。这样经过编码的数据流就可以通过控制参数和辅助数据获得。对于音频来说,要把编码后的数据流作复用处理,接把音频数据作反量化,这一步要用到比特流中传输的控制参数。另一个方法是得到心里声学模型参数反向运算之后产生的音频信号,将其从频域反变换至时域,便完成了。时下主流的音频编码系统包括 G.7xx、MPEG 伴音系列和音像系统。CCITT 推出了最早的音频编码算法建议标准如 G.711、G.721、G.723 等。1995年,ITU-T 批准了新的语音压缩标准 G.729.该标准采用共轭结
27、构代数码激励线性( CS-ACELP ), 可以仅用 8kbit/s 的带宽传输话音, 而话音质量与32kbit/s 的CM 相同,它被用于 IP-phone 技术中。第 4 章 系统分析4.1 系统实现目标本主要实现:音乐与暂停、歌词同步、创建音乐列表、上一首和下一首、调节音量、模式、添加删除歌曲、窗口的拖动、主流音频格式的支持等功能。4.2系统体系结构播放暂停歌词同步音乐列表上下切歌调节音量播放模式添加删除器窗口拖动主流音频图 4.1系统结构图音乐与暂停:器界面应有一个按钮,当使用者点击时可以已选择的歌曲,再次点击该按钮暂停。歌词同步:器音乐时,应该自动在本地查找有无歌词,有歌词的话就应显
28、示歌词,并且歌词应与的音乐同步。创建音乐列表:需创建一个列表,以供列表中歌曲根据指定模式自动。上一首和下一首:器界面上应有上一首下一周的按钮,点击可以切换歌曲。调节音量:按下相应的菜单或鼠标滚动实现音量调节。模式:包括列表、单曲循环,随机、顺序。添加删除歌曲:可以从本地添加歌曲到列表,也可以从列表删除指定歌曲。窗口的拖动:点击器窗口可以拖动。主流音频格式的支持:器应支持常见的歌曲格式如 mp3、wav 等。第 5 章 系统设计该要求功能齐全,界面美观,进行合格的开发,功能模块开发的是重中之重。5.1 概要设计在系统需求分析过程中,不是两眼一抹黑,就是先要明确“做什么”。之后要考虑的就是从是“做
29、什么”的转变成是“怎么做”的概念,全力实现系统的需求。首先,需要描述的是系统的总的体系结构。5.2结构设计需要模块化这更是概要设计的重中之重。模块化可说是一个化整为零又从零到整的变换过程,开发是往往是复杂的,从整体上解决难度很大,所以要把其拆分成许多小的模块逐个解决,每个模块分工明确只需完成单个特殊功能,但不仅是要通过纽带将这些模块串联,扭成一股绳,成为完整一个,发挥应有的作用。讲到划分模块,也有其独特的规则,不能想当然随意为之,要保证每个模块的独立性是硬性规定,才能达到简化复杂系统的目的,同时每个模块职责皆要不同,即子功能不同,又不能全封闭式要保留简单的接口,为最后的重新组合作准备,进而开发
30、高可读性,可性的系统。的概要设计采用结构化设计,通过需求分析生成的数据流图,按部就班形象化成结构。开发就是要化繁为简,以小见大,逐步解决相关的问题,这次设计的音乐中,具备歌词显示、音乐、主界面、右键菜单等模块。然后,进一步细分模块,添加细节。5.3 详细设计5.3.1 歌曲列表显示歌曲列表显示本地可以的歌曲,可以隐藏也可以显示,如图。图 5.1 歌曲列表图主要 UI 设计代码如下:歌曲列表显示:31030201271trueQHeaderView:section background-color: qlineargradient(x1:0, y1:0, x2:0,y2:1,stop:0 #61
31、6161, stop: 0.5#505050,stop: 0.6 #434343, stop:1#656565);color: white; padding-left: 4px;border: 1px solid #6c6c6c;class=QHeaderView:section:checkedbackground-color: red;/* style the sort indicator */ QHeaderView:down-arrow image: url(down_arrow.png);QHeaderView:up-arrow image: url(up_arrow.png);QFr
32、ame:StyledPanelQt:ScrollBarAlwaysOffQAbstractItemView:NoEditTriggerstrueQAbstractItemView:SingleSelectionQAbstractItemView:SelectRowsQt:DashLine歌曲类型name=name=name=name=name=name=name=Url5.3.2 歌词同步功能歌词同步是器的重要功能,本器歌词可以在windows桌面上显示,也可以在器顶端显示,如图。图 5.2歌曲列表图主要代码如下:class lrcWindow/Q_OBJECT public: public
33、QLabellrcWindow(QWidget *parent);lrcWindow(); QAction *exit;void setTime(num)time = num;void setLrcWidth(); QTimer *timer;private:QPodragition;time; qreal length;qreal lrcWidth;protected:void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *);void contextEvent(QContextEvent*ev);void
34、paEvent(QPaEvent *);private slots:void timeout();5.3.3控制本模块主要实现音乐的控制功能。如下图所示:图 5.3 歌曲列表图在这个界面,布局了几个控制按钮、滑动条、时间显示、歌词显示。主要设计代码如下:2227228131上一首property styleSheet停止name=name=5.4 主要技术实现5.4.1类 QMediaPlayer 的使用QmediaPlayer 是一个 QT类,本器使用它来完成功能。主要用到的函数如下:QmediaPlayer:play,作用是歌曲。实现使用者点击列表中的歌曲、播放按钮、点击上一首、下一首的功
35、能。QmediaPlayer: pause,用来暂停一首音乐的。正在音乐时,点击按钮将调用此函数。QmediaPlayer :setVolume,用来设置音量,可以在右件菜单中点击控制音量。由于时间所限,暂未实现鼠标滚轮控制音量。QmediaPlayer:setition,用来定位,在滑动条上拖动可以定位歌曲位置。QmediaPlayer:setPlaylist,用来设置器的源。QmediaPlayer:itionChanged,位置发生变化时通知,主要用来同步歌词显示和滑动条。QmediaPlayer :durationChanged,歌曲发生变化时,歌曲时间长度也应该变化。创建 Qmedi
36、aPlayer 代码如下:player=new QMediaPlayer; player-setPlaylist(playList);class=connect(player, SIGNAL(itionChanged(q64), this,SLOT(itionChanged(q64);SIGNAL(durationChanged(qconnect(player,64),this,SLOT(durationChanged(q64);5.4.2列表 QMediaPlaylistQmediaPlaylist 用来组织内容,将需要的歌曲添加进去后, QmediaPlayer 可以其中内容。主要用到的函
37、数如下:QmediaPlaylist:setPlaybackMode 用来设置单曲、顺序、随机等。模式,模式有循环、QmediaPlaylist:currentIndexChanged 是一个信号函数,当列表中的正在的歌曲的下标更改时将会触发此信号函数。QmediaPlaylist:setCurrentIndex 函数用来控制QmediaPlaylist:addMedia 函数添加歌曲。添加歌曲的逻辑代码如下:哪个歌曲。void MainWindow:importSongs()QString initialName=QDir:homePath();QStringList pathList=QF
38、ileDialog:getOpenFileNames(this, tr(选择文件), initialName, tr(audio(*.mp3 *.wav);/Image Files(*.jpg*.png)for(i=0; iaddMedia(QUrl:fromLocalFile(path); QString fileName=path.split().last();rownum=ui-tableWidget-rowCount(); ui-tableWidget-insertRow(rownum);ui-tableWidget-setItem(rownum, 0, QTableWidgetIte
39、m(fileName.split(.).front(); ui-tableWidget-setItem(rownum, 1,QTableWidgetItem(fileName.split(.).last(); ui-tableWidget-setItem(rownum, 2,QTableWidgetItem(path);newnewnew5.4.3 歌词显示此次音乐器,设计了一个类 lrcWindow 实现桌面歌词功能。并且,于器界面上设置一个按钮,可点击显示歌词。歌词需要在新的歌曲时加载,并根据位置的改变来进行加载。主要代码如下:显示当前时间:q64 temp = ui-horizontal
40、Slider-um();QTime totalTime(0,(temp / 60000) % 60,(temp / 1000) % 60,time%1000);QTime curTime(0,(time / 60000) % 60,(time / 1000) % 60,time%1000);ui-label_time-setText(tr(%1 / %2).arg(curTime.toString(mm:ss).arg(totalTime.toString(mm:ss); ui-label_time-update();/*歌词的更新显示*/QString strTime = curTime.t
41、oString(mm:ss.zzz).left(8);歌词查找与显示:QString str = ui-textEdit-textCursor().block().text().replace(QRegExp(d2:d2.d 2),);ui-label_lrc-setText(str); lrcWnd-setText(str);lrcWnd-setLrcWidth();/设置用于遮罩 label 的宽度为 0 lrcWnd-show();QTime tt = curTime; b = 1;c= 0;text-setText(ui-textEdit- bool over = ui-textEdi
42、t-()-toPlaext();textCursor().block().next().text().isEmpty(); while(!over &!text-find(tt.addMSecs(b*100).toString(mm:ss.zzz).left(7)b+; c+;while(over & !text-find(tt.addMSecs(b*100).toString(mm:ss.zzz).left(7),QText:FindBackward)b+;:c+;break;lrcWnd-timer-start(c);第 6 章 测试6.1 程序调试在设计时,出错是在所难免的,有些错误是显
43、性错误,即是语句语法错误,遇到这些错误时,程序在测试运行时会自动予以提示,程序员可自行改正,还有些错误是隐性错误,即逻辑错误,遇到这些错误,程序往往无法自行检测出来,会正常运行但结果错误,所以这些隐性错误检测起来十分费事,这就要求程序员细心谨慎去检查代码。6.2 程序的测试6.2.1 测试的重要性及目的(1)测试的重要性对于的测试,不应该仅仅局限于产品使用之前,正确的观点是从开始诞生到结束都应该将测试贯穿其中。但值得一提的是早前的测试起到把舵的重要地位,把即将发生的错误及时扭正,否则在错误的道路下,一直开发下去,最后导致的必然结果就是,耗费更大的人力物力精力,去修改之前的错误,这样是得不偿失的
44、,所以着重于早期测试是科学正确合理的决定,但后续的测试也要跟进,不能荒废,要勤俭勤测,养成良好的开发,这样会大大提高开发的进度与质量。大量的事实证明,无论拥有多优秀的程序员,多优秀的,在开发过程中一定会遇到错误,这些有利有可能会大大减少错误的出现,但绝不可能做到滴水不漏、完美无缺,这时测试的作用将会体现出来,测试是开发过程中不可或缺的一环,对的测试在实际开发工作中不论是在开发时间还是开发经费上一直占有很大的,就算为达节省成本的目的,期节省了许多测试工作,但一出现问题进行的时候,一样要进试本质并没有达到该有的目的,所以把测试工作贯穿整个生命周期中,是必然的选择。但测试由于它本身的繁琐使得很多人不
45、愿意去做这些事,长期抱有侥幸的心里,但往往偷懒会耽误大事,没有好的态度,没有正确的认识就不能更好的完成自己的本职工作,错误的观点大致包括以下几种: 测试出错误后无法取得成就感; 检测自己的错误是在否定自己的工作,选择不了了之; 测试工作无味,提不起; 测试工作是艰苦而细致的工作; 盲目自大,过于相信自己的能力,如果检出错误,介意别人的眼光。以上观点都是且错误的,谨慎,戒骄戒躁能让人的能力得到逐步的,只有打消错误观点,会进步,同时个人的发展与的未来息息相关。(2)测试的目的如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。测试是为了发现错误
46、而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。遇到错误时一定要去仔细查找的,但不能为了找错误而找错误,测试是一个良好的养成,是科学开发的必然经过的过程,通过大量的测试可以查找使用者使用的之处,量变之后会有质变的飞跃,对于改进开发者的开发策略,弥补自身的具有十分显著的作用,通过测试产生的实质价值远远超过测试本身,所有的方法都是前人经验的总结,遵照科学有效的方法往往让开发事半功倍。6.2.2 测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大
47、型系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型系统的测试基本上由下述几个步骤组成:(1)模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。(2)系统测试 在这个测试步骤中发现的往往是能发现需求说明中的错误。设计中的错误,也可(3)验收测试 在这个测试步骤中发现的往往是系统需求说明错误。6.2.3 测试的主要内容要确保高质量测试,要把测试分成五个步骤,包括:代码集成测试、确认测试和系统测试。、单元测试、(1)单元测试单元测试是指以最小模块为检查对象,运用测试的方法需求功能与实际实现的功能是否一致,顺便查找编码上的(2)集成测试集成测试是将模块按照设计要求组装起
48、来同时进试,主要目标是发现与接口有关。如一个模块与另一个模块可能有由于疏忽而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。(3)确认测试确认测试的目的是向未来的使用者表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的系统,接口错误也已经基本排除了,接着就应该进一步验证的有效性,这就是确认测试的任务,即的功能和性能如同使用者所合理期待的那样。(4)系统测试开发工作进入尾声,必须还要整体进试,即系统测试,与其他模块的功能一起看是否正常,常用测试的项目有恢复测试、安全测试、强度测
49、试和性能测试等。单独对系统的测试主要从以下几方面入手: 功能测试:测试的结果是不是按照需求分析出来的功能进行了开发,符不符合使用者的要求。功能测试在系统测试中是基本的必要进行的测试,通常还会通过正规的说明书当做测试的标准。 强度测试及性能测试:为了测试在条件下的实际运行情况,而进行的模拟测试,以便解决一些隐患问题的存在。 安全测试:查验安装在系统内的保护机构是否能够对系统进行保护,使之不受各种非常的干扰。针对本系统主要是对权限系统的测试和对无效数据、错数据、和数据干扰的能力的测试。6.3 本程序的测试情况6.3.1 主要测试用例测试用例 1:添加音乐到列表过程描述:器上的显示歌曲列表按钮,于歌
50、曲列表中点击右键选择添加歌曲,从文件夹选择歌曲。预期结果:歌曲列表中显示被添加的歌曲。测试用例 2:音乐过程描述:点击歌曲列表中的歌曲,点击按钮,点击上一首,点击下一首,拖动滑动条。预期结果:能歌曲测试用例 3:查看歌词过程描述:音乐,并查看歌词显示是否正确预期结果:显示正确的歌词。其他用列略。6.3.2 测试用例的实施针对上述用例分别进行实施,并各种问题,经测试,发现歌词显示有问题有时不能显示出正确的歌词, 经研究发现是因为 QMediaPlayer : itionChanged 被调用的时间间隔太长导致的,经过改进歌词能正确显示了。通过以上步骤测试,得出该器主要功能可运试结束。结束语在进行
51、毕业设计这段日子里,与进步共存,不仅检验了四年的所见所学,也让我有机会可以把相关专业知识综合的去实战中训练,去。同时我也感受到开发一个是一个工程,需要仔细的分析和设计,并严谨的实现和测试。在设计的过程中,我利用所学到的 C+编程知识进行毕设的开发,不仅巩固了这段期间的 C+知识,也更加体会到了 C+这种语言的,和它具有的广泛的应用性,其实设计的过程就像是模拟了真实的工作情况,许多难题来的时候不在慌乱,而是勤动手动脑动嘴,去尽力解决,这是一个培养个人的能力的好机会;在实在没有办法的情况下,我会去向老师求教,老师给予我很大的帮助与启迪,老师的每次点拨都有使我拨开云雾见月明的感觉。在以往学习的时候没
52、有整体设计的概念,仅仅设计单个模块或简单的小系统,而这一次却是不一样的,毕业设计的目的就是将所学知识规整为一个体系来设计实用的器。开发一个合格的器,为此需要付出辛劳与汗水。我常常在设计中遇到一些难题不知该怎么解决,但是令人高兴的是很多同学都伸出了之手。毕设就是实战,学习千日用在一时,抓住每一个机会锻炼自己,不断提高自编程能力和编程思维,无论是为以后的就业还是生活都是非常好的事情。参考文献1,叶子青.Visual Studio2005 系统开发实例精粹., 2007 年人民邮电1 月:45-672 Daiel Solin24 小时学通 QT 编程机械工业,2000 年 1 月:21-483Jas
53、minBlanchetteAndMarkSummerfield. C+GUIProgram-mingwithQT4电子工业, 2008 年 6 月:70-2104.Qt5 开发及实例. 电子工业, 2014 年 1 月:30-1105.Qt 中的 C+技术.电子工业, 2012 年 7 月:55-896 Stanley B. Lippman,Jose Lajoie,Barbara E. Moo.C+ Primer.电子工业, 2013 年 9 月:32-2607 Andrew Koenig.C 和 C+经典著作: C 陷阱与缺陷. 人民邮电社,2008 年 2 月:21-658.现代工程.希望
54、电子,2003 年 8 月:30-2469 Scott Meyers.Effective C+. 电子工业,2011 年 1 月:316010 Bruce Eckel,Chuck Allison.C+编程. 机械工业,2011年 7 月:53-168致谢在本次毕业设计过程中,得到了指导老师的指导与支持。在总体结构、功能的把握上给予了非常大的帮助,同时根提供了非常优越的设计环境,并对我在编程设计的细节工作上给予了耐心的指导,对于我顺利完成这次毕业设计起到了关键性的作用。另外和我大家始终共同学习共同进步,努力拼搏,增强了团队意识,并且接下了深厚的友谊,自始至终在一种愉快的气氛中学习工作。此次毕业设
55、计对提高编程技术、协调团队成员的关系等方面都由许多益处。在此我一并向他表示感谢。我还要感谢母校太原科技大学,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们了我专业的知识和做人的道理。通过这次毕业设计我还明白了作为一名通信专业的大学毕业生,要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。我会在以后的工作和学习中不断完善自己,为我最热爱的母校争光,为自己翻开辉煌的新篇章。转眼间,大学生活即将结束,回首过去四年的大学生活,真是有苦也有乐,然而的则是收获,感谢母校的各位老师不但无私地传授给知识,也了如何做人。通信工程专业的毕业设计任务繁重,但正是在这几个月紧张而充实的设计中,我
56、感到自己的知识得到了一次升华,我相信:毕业设计会给四年大学画上一个的。21 世纪已经到来了,在新的世纪里,人们自然对未来有许多美好的愿望和设想。现代科学技术的飞速发展,改变了世界,也改变了世界的生活。作为新世纪的大学生,应当站在世界的发展前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。新世纪需要具有丰富现代科学知识、能够独立解决任务、有创新意识的新型。附录主要代码#include #include #include #include #include #include #includemainwindow.h ui_mainwindow.h lrcwindow.
57、hMainWindow:MainWindow(QWidget *parent) :QMainWindorent),ui(new Ui:MainWindow)ui-setupUi(this);setWindowFlags(Qt:FramelessWindowH);setribute(Qt:WA_TranslucentBackground);ui-horizontalSlider-setRange(0, 0); ui-tableWidget-hide();ui-tableWidget-hideColumn(2); volume=80;createContext();createSystemTray
58、Icon();playList=new QMediaPlaylist;playList-setPlaybackMode(QMediaPlaylist:Loop); player=new QMediaPlayer;player-setPlaylist(playList); player-setVolume(volume);lrcWnd = new lrcWindow(0);text = new QTextEdit(this);text-hide();/用于查找下句歌词以计算时间间隔ui-textEdit-setVisible(false);/文本编辑框不可见,(歌词)connect(ui-hor
59、izontalSlider, SIGNAL(sliderMoved(), this,SLOT(setition();connect(ui-tableWidget, SIGNAL(cellClicked(,), this,SLOT(playTo(,);connect(player, SIGNAL(itionChanged(q64),this,SLOT(itionChanged(q64);connect(player, SIGNAL(durationChanged(q SLOT(durationChanged(q64);64),this,/connect(playList, SIGNAL(curr
60、entIndexChanged(), this,SLOT(currentIndexChanged();connect(playList, SIGNAL(currentIndexChanged(), this,SLOT(updateSongList();connect(ui-action_SongList, SIGNAL(triggered(), this, SLOT(showOrHideSongList();connect(ui-action_Import, SIGNAL(triggered(), this, SLOT(importSongs();connect(ui-action_Last,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宣威市来宾一中学2025届初三中考“集结号”最后冲刺模拟卷数学试题含解析
- 沈阳大学《中国历史地理》2023-2024学年第二学期期末试卷
- 石家庄学院《过程控制》2023-2024学年第二学期期末试卷
- 六盘水幼儿师范高等专科学校《播音与主持艺术概论》2023-2024学年第一学期期末试卷
- 四川司法警官职业学院《城市社会学》2023-2024学年第二学期期末试卷
- 内江卫生与健康职业学院《中国文化概要与英译》2023-2024学年第一学期期末试卷
- 四川艺术职业学院《新生研讨》2023-2024学年第二学期期末试卷
- 四川科技职业学院《债权法专题》2023-2024学年第二学期期末试卷
- 辽宁商贸职业学院《印度社会专题》2023-2024学年第二学期期末试卷
- 江苏师范大学《植物显微技术》2023-2024学年第二学期期末试卷
- 小学低年级心理健康
- 网络传播概论(第5版) 课件 第4-6章 网络传播形式之短视频传播、网络传播中的群体互动、网络传播与“议程设置”
- 2023版道德与法治教案教学设计专题7 第1讲 社会主义法律的特征和运行
- 康复治疗知情同意书
- 物业客户服务主要触点及基本要求
- 机电项目策划方案
- 《静脉血标本采集》课件
- 自动化立体回转库结构设计毕业论文设计
- 沈从文作品中的女性形象美丽与悲剧的呈现
- (40)-第四章 网络层-知识点9-VPN和NAT计算机网络
- 土力学与地基基础习题集
评论
0/150
提交评论