版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 音乐播放器设计与实现 摘 要 本文对音乐播放器的设计与开发过程进行了分析与叙述。依照系统开发的实际操作步骤,文章从需求分析、概要设计、详细设计和测试这四大章节对系统开发过程进行分别阐述。需求分析中主要包括了软件设计前的需要实现的基本功能,界面要求;而概要设计则是对系统体系结构、各功能模块等具体的系统实现过程进行剖析展示,在详细设计章节中有详细实现方法和文字解释并配有表图说明。文章还列举了关键的功能模块实现代码。 本文主要详细介绍了一个用Qt开发播放器的实现方法,在分析了目前国内许多播放器样式基础上,并经过反复摸索和学习研究后,借助编程语言C+和Qt开发环境最终实现了音乐播放器的开发,并在一系
2、列测试后,达成了友好化界面、所需功能基本完善、操作简单的设计目标。关键词 Qt;音乐播放器;C+Design and implementation of a music player Abstract In this paper, a music player design and development process were analyzed and described. In accordance with the actual steps of system development, the article from the needs analysis, outline desig
3、n, detailed design and testing of these four sections of the system development process are described. Requirements analysis includes the basic functions of the software design prior to the need to achieve, and interface requirements; while the outline design of the system is the specific system arc
4、hitecture, the functional modules such as the implementation process to analyze the display, there is a detailed section in the detailed design to achieve methods and interpretation of the text and with a table diagram. The article also lists the key features module code. This paper introduces the o
5、ne with the Qt development player implementations, analyzing the current domestic many players style basis, and after trial and error and learning research, with the programming language C+ and Qt development environment and ultimately the music player development, and after a series of tests to rea
6、ch a friendly interface, basic functions required for perfect, simple design goals. Keywords: Qt; music player; C+ 目 录摘要iAbstractii1 绪论11.1 课题背景11.2 目的和意义11.3 开发工具和技术11.3.1 开发工具11.3.2 使用技术11.4 系统设计思想21.5 本文的结构21.6 经济可行性21.7 技术可行性21.8 操作可行性31.9 法律可行性32 需求分析42.1 软件需求42.1.1 编写目的42.1.2 项目背景42.1.3 项目目的和目
7、标42.2 系统需求分析42.2.2 界面需求52.2.3 性能需求52.2.4 可靠性要求52.2.5 运行环境需求53 概要设计73.1 设计计划73.1.1编写目的73.1.2背景73.1.3定义73.2 总体设计73.2.1 需求规定73.2.2 运行环境73.2.1 基本设计概念和处理流程73.2.4 主要功能93.2.5 人工处理过程93.2.6 尚未问决的问题93.3 面向对象的建模93.3.1出错信息143.3.2补救措施144 详细设计16 4.1 具体模块设计16 4.1.1 编写目的164.1.2 背景164.1.3 定义164.2 程序系统的结构174.2.1 程序描述
8、174.2.2 功能174.2.3 性能184.2.4 模块的实现184.2.5 注释设计214.2.6 测试计划215 系统测试与性能分析275.1 软件测试27结论32致谢34参考文献351 绪论1.1 课题背景随着计算机技术的发展应用软件在生活中应用越来越广泛。特别是多媒体技术在我们实际生活中应用很多。作为音乐播放器软件,网络上流行着很多种,人们也并不陌生。以java编写,运行于windows操作系统的为多数。它们大多数功能复杂,结构庞大,界面也很美观。但以简洁的C+语言编写为少数。在此次设计中,专门在Qt环境下用C+开发一个能够实现简但功能,而且界面清晰的音乐播放器。从而更加是我们能够
9、直观的看到实现音乐播放器功能所采用的这种方法,便于我们学习和应用。Qt是一个跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展。在现如今,它仍然非常流行。1.2 目的和意义本项目的目的是开发一个可以播放主流的音乐播放器,本设计的实现主要功能是播放MP3,WAV、OGG等格式的音乐文件,并且能控制播放,暂停,停止,音量,选择上一曲,选择下一曲,进度条,列表文件。还有歌曲文件的管理操作等多种播放控制,界面简明,操作简单。1.3 开发工具和技术1.3.1 开发工具 此次项目主要采用的是Qt开发
10、环境进行开发设计。Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Pytho
11、n接口的GDB调试支持,集成了基于Clang的C/C+代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。1.3.2 使用技术 此次项目主要采用的软件开发技术主要是C+语言。C+是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。最新正式标准C+11于2011年8月12日公布。1.4 系统设计思想对于音乐播放器,必须要满足使用方便、操作灵活等要求。本系统在设计时应该满足以下几个目标
12、:(1)简单操作,界面美观、友好、方便、播放顺畅;(2)系统最大限度地实现了易维护性和易操作性;(3)系统运行稳定、安全可靠。1.5 本文的结构本文具体内容包括:需求分析、概要设计、详细设计与实现、软件的测试。本文着重描述了音乐播放器组成与结构,阐述了软件的设计方案、实现方法以及所采用的开发工具和相关技术,另外,重点剖析了部分环节的开发过程。本系统在一定的环境下对系统的重要模块进行了模拟测试,证实了系统的可用性、可靠性。对于开发的每一个系统,都会受到时间和资源上的双重限制。因此,在每一个项目开发之前,都必须进行可行性分析,这样可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就经济、技术
13、、操作和法律四个方面来介绍。1.6 经济可行性软件的经济可行性是指一个软件产品在开发出来后所能带来的经济上的效益与开发设计该软件所需要的投入相比,是否是相适合的,另外最重要的是此软件能否真正能给用户带来丰厚的经济利益,我开发的这个系统正是在不断观察的基础上,考虑到为了新闻发布的使用者和管理者提升他们的工作效率,通过节省工作时间从而节省人力资源,该系统实现了方便操作与管理而设计理念。本系统的研发在经济可行性方面是完全没有问题的。此软件的开发不需要花费大量的资金,也不需要投入大量的人力物力,对于实现一些基本的功能只需要一个人就可以完成,从而可以节省许多不必要的费用,同时也可提高个人的实际动手能力。
14、1.7 技术可行性根据该系统要实现的功能来考虑所需要的技术在有限的预算内是否可以达到,具体可以从软件和硬件的功能要求、硬件环境配置、管理员的操作能力和数量等方面去考虑和分析。通过对该系统开发运行的可行性,在软件方面选择了比较好用并功能强大的Qt工具来进行软件的设计开发,Qt工作平台是一个十分优秀的用于开发C+,集成开发环境,利用它我们可以进行简单Qt程序的开发,以及提高开发效率。Qt的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持。它是功能丰富的集成开发环境,包括了完备的编码、调试、测试和发布功能。而且在学习过程中我主要使用的也是这个工具,操作起来比较熟练。在页面设计方面主要使用的是
15、Qt方面的知识2.开放的开发过程,开放的源码5.JSP跨平台的可重用性:Qt既可以在linux上运行,也可以在windows系统运行。这些都是非常成熟的开发工具,它们在安全性、可用性、可靠性方面都非常值得信赖,因此在软件的使用方面是没有问题的。 在硬件方面,则应该尽可能选择空间不太大,硬件配置较高的设备,这样在软件的开发和运行过程中会更加的方便。考虑到现在的家用电脑硬件配置都比较高,一般的软件运行起来都没有问题,我选择了在学校一直使用的笔记本电脑,因此系统在硬件方面也是没有问题的。1.8 操作可行性 本新音乐播放器操作简单易行,用户只需要打开播放器,插入歌曲,即可听取各种歌曲,此软件的管理人员
16、对开发此应用项目的态度确定而且管理方面的条件都比较成熟。经过以上分析,运行方面是可行的。1.9 法律可行性 本系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。 综上所述,开发一个基于Qt的音乐播放器系统对于方便大众、听歌、歌曲收集方面都具有速度更快,操作简单,节省开支等有利之处,因此,建立一个基于Qt的新音乐播放器系统是必要可行的。 2 需求分析2.1 软件需求时至如今,随着电子IT行业的发展,音乐播放器软件在互联网上有很多,种类繁多,各种功能多样,样式也绚丽夺目。相对于其他软件来
17、说,实现此类软件的基本功能并不太繁琐,但在编写过程中所需的知识点很多,编写过程并不容易。我课题选了Qt实现的音乐播放器的设计与实现,希望通过此次毕业设计巩固旧知识掌握新知识,整体提升自己代码开发的综合能力。2.1.1 编写目的 为明确软件需求、安排项目与进度、组织软件开发与测试,而写本文档。在问题分析阶段分析人员的主要任务是:对用户的需求进行鉴别、综合和建模,清除用户需求的模糊性、歧义性和不一致性,分析系统的数据要求,为原始问题及目标软件建立逻辑模型。分析人员要将对原始问题的理解与软件开发经验结合起来,以便发现哪些要求是由于用户的片面性或短期行为所导致的不合理要求,哪些是用户尚未提出但具有真正
18、价值的潜在需求。2.1.2 项目背景 本项目由自己选题确定,由本人独自开发。 开发软件名称:音乐播放器; 项目提出者: 太原理工大学; 项目开发者: 樊凯。2.1.3 项目目的和目标本项目的目的是开发一个可以播放主流的音乐播放器,本设计的实现主要功能是播放MP3,WAV、OGG等格式的音乐文件,并且能控制播放,暂停,停止,音量,选择上一曲,选择下一曲,进度条,列表文件。还有歌曲文件的管理操作等多种播放控制,界面简明,操作简单。2.2 系统需求分析2.2.1 功能需求 根据项目,我们可以获得项目系统的基本需求,以下从不同角度来描述系统的需求。系统的功能需求,我们分成三部分来概括,即播放器的基本控
19、制需求,播放列表管理需求和播放器友好性需求。以下分别描述:(1)播放器的基本控制需求播放:软件理应实现所选歌曲的正常播放(所选歌曲的文件格式应该为 mp3,wav,ogg)。进度条:显示播放歌曲进度。时间栏:显示播放的时间。停止:停止当前播放的歌曲,而显示播放的图标。下一首:播放歌曲列表的下一首。上一首:播放上一首歌曲。头像:显示作者和版本号。(2)播放列表管理点击目录:在播放器上点击添加时会弹出对话框,在本地文件里找到一首或同时添加几首,点击确定会显示到播放列表里。歌曲:弹出一个添加歌曲信息的会话框,填入歌曲信息(歌名不能重复)可 以进行添加,添加成功则更新了歌曲列表。 删除歌曲:选中歌曲后
20、,单击右键选择删除歌曲或者点击下面的删除则删掉当前播放或选中的歌曲。 随机:点击左下角的随机,会按照播放列表里的歌曲顺序,随机播放下一首 歌曲。 注:添加歌曲时,类型编号和名称都不能为空。添加歌曲时,歌曲名不能为空,歌曲地址不能为空(否则播放时会是无效路径)。(3)播放器友好性要求:视觉外观:外观要优美,选大气清新淡雅图片做背景。 系统: 使用播放器时能显示播放器的状态,是播放还是暂停。2.2.2 界面需求播放器界面要求布局合理,颜色舒适,控制按钮友好;为了较少开发工程量,可以参考现在流行的播放器的皮肤作为播放器的界面或从网络下载相应的图标。 界面设计现在已经成为评价软件质量的一条重要指标,一
21、个好的用户界面可以带给用户很好的体验,增加用户使用软件的信心和兴趣,提高效率。在使用软件是弹出用户界面,用户界面是指软件系统与用户交互的接口,它一般都包括输出、输入、人与电脑对话的界面格式等。(1) 输出设计输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的
22、各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。(2) 输入设计输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。输入设计的原则有如下几点:1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。4)
23、输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误。2.2.3 性能需求 (1)当要求歌曲播放时,软件响应时间最长不超过2秒。(2)当要求歌曲暂停时,软件响应时间最长不超过1秒。(3)播放歌曲,采用本地播放,播放流畅。2.2.4 可靠性要求为了适应将来的发展,系统应该具有良好的可扩展性与可维护性。系统设计应尽可能模块化、组件化,使应用系统可以灵活配置,适应不同的情况。系统的可扩展性应该包括能接纳已有的系统与在今后系统软硬件扩展时,能够有效地保护已有的投资。特别是在应用需求变化时(应用与系统的需求往往提不完全或者经常会变化),有一个较好的应用平
24、台,能够容易地加以调整。系统易于扩充升级,既能够满足当前业务的需求,又能够为今后的扩充留有空间。 系统能持续运行,不影响其他程序的使用,不多占用内存,不会造成死机等问题。2.2.5 运行环境需求 操作系统:Windows 7系列。 Windows 7 是由微软公司(Microsoft)开发的操作系统,核心版本号为Windows NT 6.1。Windows 7可供家庭及商业工作环境、笔记本电脑、平板电脑、多媒体中心等使用。2009年7月14日Windows 7RTM(Build 7600.16385)正式上线,2009年10月22日微软于美国正式发布Windows 7,2009年10月23日微
25、软于中国正式发布Windows 7。Windows7主流支持服务过期时间为2015年1月13日,扩展支持服务过期时间为2020年1月14日。Windows 7延续了Windows Vista的Aero 1.0风格,并且更胜一筹。 支持环境:Qt Creator4.7以上。 Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根据官方描述,Qt Creator 的设计目标是使开发人员能
26、够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。 3 概要设计3.1 设计计划 概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。3.1.1编写目的为了使我对音乐播放器的整体设计有个系统的规划,提供详细设计的基础依据,进而进行软件开发。3.1.2背景(1)开发基于win7平台下用Qt开发音乐播放器;(2)提出者:太
27、原理工大学;(3)开发者:樊凯;(4)用户:演示者;(5)平台:win7。3.1.3定义 MediaObject (管理媒体源) AudioOutput (连接物理设备)SeekSlider( 实现进度条)QList (实现播放列表 )。3.2 总体设计3.2.1 需求规定本项目的目的是开发一个可以播放的主流的音乐播放器,本设计的实现主要功能是播放MP3,WAV等格式的音乐文件,并且能控制播放,暂停,停止,音量控制,选择上一曲,选择下一曲,进度条,列表文件,歌曲文件的管理操作等多种播放控制,界面简明,操作简单。3.2.2 运行环境操作系统:Windows 7系列支持环境:QT Creator4
28、.7以上。3.2.3 基本设计概念和处理流程如图3-1。 图3-1 软件用例图用例图定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的静态视图称为用例图。用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。将每个系统中的用户分出工作状态的属性和工作内容,方便建模,防
29、止功能重复和多余的类。用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。3.2.4主要功能有以下,如图3-2。.功能基本操作其他操作上一首播放暂停停止下一首打开本地文件作者标题添加随机目录音量、进度调节时间显示删除 图3-2 主要功能图所编的程序只要在本地就可以执行 ,添加本地歌曲到播放列表即可。3.2.5 人工处理过程需要上网找一些流行的图标,了解当今主流的界面样式风格,尽力开发出适应潮流的项目。3.2.6 尚未问决的问题不会修改背景色,和文本框,按钮色,有时软件不稳定,运行后出现布局混乱。对布局有时候那难以控制。3.3 面向对象的建模Unified
30、Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。类图:类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这些元素和
31、它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。类图(Class diagram)最基本的元素是类或者接口。静态,如图3-3。 图3-3 静态类图原理:主要用到的模块中的MediaObject(管理媒体源)AudioOutput(媒体连接设备)SeekSlider(实现进度条);Phonon的工作原理是使用MediaObject来管理MediaObject即源文件,通过Path链接到AudioOutput,最后有AudioOutput
32、将数据送到相关物理设备。整体架构:Phonon原理图,如图3-4。MediaObject管理媒体源AudioOutput媒体链接设备物理设备Path Phonon 图3-4 Phonon原理图快速原型法:原型是指模拟某种产品的原始模型,在其他产业中经常使用。软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性。快速原型模型又称原型模型,它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。例如,客户需要一个ATM机软件,可以先设计一个仅包含刷卡、密码检测、数据输入和账单打印的原型软件提供给客户,此时还不包括网络处理与数
33、据库存取以及数据应急、故障处理等服务。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。使用快速原型构建软件基本设计界面,图3-5。 图3-5 软件基本设计界面在界面设计中要用到布局管理器: 在用Qt进行用户界面应用程序的编程时,建议通过编写相关代码来生成和维护Qt控件,而不要用QtDesigner。这时对相应的Qt控件进行布局管理显得尤为重要。常见的三种布局方式:网格布局(QGridLayout
34、)、水平布局(QHBoxLayout)垂直布局(QVBoxLayout)。方法: 1)以单个的Qt控件为单位,先进行子块布局,分别对各个子块进行布局。 2)以步骤1)中的子块为单位,进行全局布局。例如:我们要完成如下样式的Qt界面,整个Qt界面有ABCDEFXYZ共计9个Qt控件,如图3-6。 图3-6 布局方法1:1)用“网格布局”对ABCDEF(子块1)进行布局。QGridLayout*leftLay=newQGridLayout;用“垂直布局”对XYZ(子块2)进行布局QVBoxLayout*rightLay=newQVBoxLayout;2)用“水平布局”对子块1(ABCDEF)、子块
35、2(XYZ)进行全局布局。QHBoxLayout*mainLay=newQHBoxLayout;mainLay-addLayout(leftLay);mainLay-addLayout(rightLay);方法2:1) 用“水平布局”对AB(子块1)进行布局用“水平布局”对CD(子块2)进行布局。2) 用“垂直布局”对子块1(AB)、子块2(CD)、E、F进行布局,形成子块3(ABCDEF)。3) 用“垂直布局”对XYZ(子块4)进行布局。4)用“水平布局”对子块3(ABCDEF)、子块4(XYZ)进行全部布局。显示版本号Button:添加歌曲:随机:暂停:删除:上一首:播放:下一首:目录 信
36、号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,他是QT的核心特性,也是QT差别于其他工具包的重要地方。信号和槽是QT自行定义的一种通信机制,他独立于标准的C/C+语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是个C+预处理程式,他为高层次的事件处理自动生成所需要的附加代码。 在我们所熟知的非常多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应他们能触发的每个动作,这个回调函数通常是个指向某个函数的指针。不过,在QT中信号和槽取代了这些凌乱的函数
37、指针,使得我们编写这些通信程式更为简洁明了。信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps。所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。当对象改动其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,他不知道另一端是谁在接收这个信号。这就是真正的信息封装,他确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但他们是普通的对象成员函数。一个槽并不知道是否有所有信号和自己相连接。而且,对象并不了解具体的通信机制。你能将非常多信号和单个的槽进行连接,也能将单个的信号和非常多的槽进行连接
38、,甚至于将一个信号和另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将即时发射第二个信号。总之,信号和槽构造了一个强大的部件编程机制。原型界面,如图3-7。 图3-7 原型界面界面跳转关系:点击“添加”目录-弹出对话框,如图3-8。 图3-8 对话框点击选择确认后歌曲后:把歌曲内容显示在歌曲列表栏。点击图像显示小窗口。3.3.1出错信息(1)如果出现main.o可能编写错误,需要认真查找代码。(2)运行时易出现qmake错误或者make,这是qt4常出现的错误,其他计算机也经常出现。(3)qmake是一个协助简化跨平台进行专案开发的构建过程的工具程式,Qt附带的工具之一 。q
39、make能够自动生成Makefile、Microsoft Visual Studio 专案文件 和 xcode 专案文件。不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。手写Makefile是比较困难而且容易出错,尤其在进行跨平台开发时必须针对不同平台分别撰写Makefile,会增加跨平台开发复杂性与困难度。qmake会根据专案文件(.pro)里面的信息自动生成适合平台的 Makefile。开发者能够自行撰写专案文件或是由qmake本身产生。qmake包含额外的功能来方便 Qt 开发,如自动的包含moc 和 uic 的编译规则。3.3.2补救措施故障出现
40、后可能采取的变通措施,如果打开项目出现如下,图3-9。 图3-9 对话框说明要切换版本,直接“确定”忽略,进入界面可能运行不了会出现:此时运行部了,构建里边除了问题,直接点击构建会出现,如图3-10。 图3-10 构建会出现make错误接下来检查一下我做的工程文件夹,看是否用了中文,要确保.por工程项目文件的路径里面没有中文。我的工程路径为:C:fknana8QM说以不会出问题;此时可能还有构建项目qmake错误或make,那么单击“项目”,如图3-11。 图3-11 Qt版本将Qt版本换成另外一个,就基本解决,若还不行的话,需要按装Qt5,那个版本相对稳定。 4 详细设计4
41、.1 具体模块设计 详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关 内容合并入概要设计说明书。4.1.1 编写目的本音乐播放软件的详细设计说明书是面向程序员和测试员的,目的在于程序员根据软件概要设计和详细设计编译程序代码,同时也是向程序测试员分配测试的依据。4.1.2 背景a 本项目的任务提出者:太原理工大学;b 开发者:樊凯;c 用户:指导老师。4.1.3 定义这个软件设计的目的就是制作一个能够播放音频的播放器。在播放的文件方面,播放的是本地的音频文件它除具备
42、一些基本的音乐操作处理功能(暂停、播放、音量调节、拖动、停止等),如图4-1。图4-1 播放器的外观尽管此播放器在稳定性、视觉效果、歌曲库的大小等方面远远不如当今的很多播放软件,但是它具有小巧,长时间听歌后占用硬盘空间小,是一款属于自己的实用的播放器。此播放器是在Windows操作系统下的Qt4集成环境下完成的,Qt是跨平台的开发软件,只要将此播放器的代码在其他Qt能够运行的平台上重新编译就可以在当前平台上运行。 4.2 程序系统的结构4.2.1 程序描述 现今音乐播放软件的发展迅速,各项功能越来越完善,附加功能也随着技术的发展而日益增多。但我开发的是一款小型简单的播放器,单用系统资源少,使用
43、方便,更主要便于自己的学习和能力的提高。4.2.2 功能 时序图描述对象是如何交互的,并且将重点放在消息序列上。也就是说,描述消息是如何在对象间发送和接收的。时序图有两个坐标轴:纵坐标轴显示时间,横坐标轴显示对象。每一个对象的表示方法是:矩形框中写有对象和 / 或类名,且名字下面有下划线;同时有一条纵向的虚线表示对象在序列中的执行情况 ( 即发送和接收的消息对象的活动 ) , 这条虚线称为对象的生命线。对象间的通信用对象的生命线之间的水平的消息线来表示,消息线的箭头说明消息的类型,如同步,异步或简单 。 浏览时序图的方法是,从上到下查看对象间交换的消息,分析那些随着时间的流逝而发生的消息交换。
44、时序图中的消息可以是信号、操作调用或类似于 C+ 中的 RPC ( Remote Procedure Call,远程过程调用)或 Java 中的 RMI ( Remote Method Invocation , 远程方法调用)。当对象接收到一个消息时,该对象中的一项活动就会启动,我们把这一过程称做激活 ( Activation )。 激活会显示控制焦点,表明对象在某一个时间点开始执行。一个被激活的对象或者是执行它自身的代码,或者是等待另一个对象的返回(该被激活的对象已经向另一个对象发送了消息)。在图形上,激活被绘制为对象生命线上的一个瘦高矩形。消息可以用消息名及参数来标识。消息还可带有条件表达
45、式,表示分支或决定是否发送消息。如果用于表示分支,则每个分支是相互排斥的,即在某一时刻仅可发送分支中的一个消息。消息也可以有顺序号,但是在时序图中,消息的顺序号很少使用,因为时序图已经将消息的顺序显式地表示出来了。一个对象可以通过发送消息来创建另一个对象,当一个对象被删除或自我删除时,该对象用 X标识。 子模块名功能需求程序添加文件1. 用户左键单击添加选项2. 系统弹出添加窗体3. 用户选择歌曲或小说单击确定略 图4-2 时序图设计4.2.3 性能 mp3文件大小:010mb 该软件的时间特性要求:(1)响应时间:0.012s;(2)数据的转换和传送时间:0.012s。4.2.4 模块的实现
46、(1)播放进度通过Pnonon:SeekSlider,设置它的媒体管理源为改音乐播放器的源就可以了。如:seekSlider-setMediaObject(meidaObject);(2)音量控制通过Phonon:VolumeSilder,关联媒体输出设备,如:volumeSilder-setAudioOutput(audioOutput).(3)播放此功能比较简单,当点击播放按钮时,隐藏播放按钮,显示暂停按钮,并读取current中的信息,通过Phonon的函数play()实现播放。先把媒体管理源和媒体连接设备建立连接(path),在通过信号槽机制,当用户打击paly按钮时,则播放音乐。如:
47、audioOutput = new Phonon:AudioOutput(Phonon:MusicCategory, this);mediaObject = new Phonon:MediaObject(this);Phonon:createPath(mediaObject, audioOutput);On_playButton_clicked();playAction-trigger(); /触发播放按钮 connect(playAction, SIGNAL(triggered(), mediaObject, SLOT(play();或者(playButton, SIGNAL(clicked
48、(), mediaObject, SLOT(play();(4)暂停此功能也比较简单,当点击暂停按钮时,隐藏暂停按钮,显示播放按钮,调用Phonon中的pause()函数,将播放暂停。 (5)上一首和下一首这里主要是获取QTableWidget里面的选项,通过索引index的值来确定。改变QTableWidget的行号。从Phonon:MediaSource的list来获取他的源信息。代码:QList sources;槽触发: on_nextButton_clicked();Index = sources.indexOf(meidaObject-currentSource() + 1;medi
49、aObject-stop;mediaObject-setCurrentSource(sources.at(index); /跳到改源信息 (6)歌曲的显示通过QTableWidget类来获取歌曲信息,并存入sources中,最后把他显示在QTableWidget中。通过Phonon:mediaObejct的metaData来获取歌曲的源信息,(因为歌曲中本来就储存了改信息,每个文件都存储了和该文件相关的信息,多有就可以用媒体管理源直接调用就行)包括ALBUM,ARTIST,DATE等,创建QTableWidgetItem项,最后通过QTableWidget的setItem把QTableWidg
50、etItem添加进去就可以了。代码:QMap metadata = metaInformationResolver.metaData();QTableWidgetItem *titleItem = new QTableWidget(title);QTableWidgetItem *artist = new QTableWidget(metadata.value(“ARTISt”);如果包括多个选项,则返回最近插入的记录。Int currentRow = tableWidget-rowCount(); /返回当前所在的行tableWidget-insertRow(currentRow); /插入
51、一个空行table-tableWidget-setItem(currentRow, 0, titleItem); /插入一个记录table-tableWidget-setItem(currentRow, 1, titleItem);/后移Phonon:MediaSource source = metaInformation-currentSource();Int index = sources.indexOf(metaInformationResolver-currentSource() + 1;If(sources.size() index) metaInformationReslover-
52、setCurrentSource(sources.at(index);TableWidget-resizeColumnToContents() /调整tableWidget列宽度,使其和内容相适宜。 (7)添加歌曲主要用到QFileDialog类的静态函数getOpenFileNames() /添加的是多个文件名,并且要记得把源文件信息存储在sources中代码:QStringList files = QFileDialog:getOpenFileNames(this, tr(“打开文件”), /*第三个参数是路径*/);Int index = sources.size();Foreach(QString str, files)Phonon:MediaSources source(str);Sources.append(souece); (8)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年保证金质押协议范本:金融交易保障协议版B版
- 2024年度企业人力资源外包服务战略合作合同版B版
- 2024年度仔猪交易协议模板版B版
- 2024年度人工智能语音助手技术开发合同
- 2024年度国内快递物流服务协议范本版
- 2024年度劳动合同岗位说明与薪资福利(综合版)2篇
- 2024年学校教职工聘用协议样本版B版
- 2024商业买卖标准协议简版版B版
- 2024年定制项目资料包揽协议电子版版B版
- 2024借款抵押合同与借款抵押合同范本
- 人工智能在航空领域的应用
- 美索巴莫注射液-临床药品应用解读
- 物业管理全程委托物业管理方案
- 小学数学“大单元”教学的现状及改善对策
- 不同结构游戏材料与幼儿游戏行为的关系研究
- 北京市海淀区第二实验小学2022-2023学年度五年级上学期期末诊断数学试题
- 教科版五年级科学上册第三单元测试卷附答案
- 电梯高处施工方案
- 《跨境电子商务客户服务管理》试卷及答案 卷B
- 心理团体辅导的保密协议
- 高血压病教学查房教案
评论
0/150
提交评论