听书软件喜马拉雅的设计与开发毕业设计文档格式.docx
《听书软件喜马拉雅的设计与开发毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《听书软件喜马拉雅的设计与开发毕业设计文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
SQLite数据库
ComputerScienceandTechnologyMajor YangFuyu
Abstract:
AlongwiththepopularityofApple'
ssmartphone,moreandmorepeopleuseApple'
ssmartphone,andpeople'
srequirementofmobilephoneisnolongersimplysendtextmessages,phonecalls,thephoneanytime,anywheretolistentoabook,listentomusic,listentotheradiohasbecomenowadaysthemostcommon,thetrendofleisureentertainmentway.Inviewofthisphenomenon,usingthesoftwareengineeringprinciple,usingSQLitedatabase,commonlyusediPhonecontroltechnology,inordertomakethelowcouplingbetweenmodulesandmoduleandhighcohesion,theuseofmodularprogrammingmethod,completedtheaudiobooksoftware-Himalayandesignanddevelopment.Thedevelopmentofthesoftwarebringspeopletoenjoythesoundeffectandthevisualenjoymentofthesoundeffectandthepictureeffect,sothatpeoplecangetthepleasureinthefastrhythmlife..
Keywords:
Listentothesoftware;
iPhone;
SQLitedatabase
目录
1引言 1
1.1课题背景 1
1.2论文研究的目的和意义 1
2系统分析 2
2.1技术需求分析 2
2.2功能需求分析 3
2.3相关技术 3
2.3.1IOS简介 3
2.3.2OBJECTIVE-C语言 4
2.3.3XCODE环境 4
2.3.4JSON数据解析 5
2.4现行系统详细分析 5
2.4.1业务流程分析 5
2.4.2系统用例图 6
3数据库设计 7
3.1数据库需求分析 7
3.2数据库表结构设计 8
4系统的详细设计与实现 11
4.1首页面 11
4.2分类界面 11
4.3博主详情界面 13
4.4播放界面 13
4.5下载界面 14
4.6手机用户注册或登录界面 15
5程序运行环境 15
5.1IOS模拟测试器 15
.2IOS真机测试 16
总结 17
参考文献 18
致谢 19
1引言
音乐、书籍大大的丰富了人类的物质生活和精神追求,是我们对美的一种追求形式,是人类娱乐生活的重要组成元素。
音乐影响着人们的生活,我们在繁忙之余用音乐来舒缓情绪、排解压力。
音乐还可以开发人的形象思维能力和逻辑思维能力。
尤其是随着经济的发展和生活水平的提高,我们更加注重精神的享受,听书、听音乐也就尤为收到推崇。
另一方面,移动信息时代的来临,使得手机作为移动信息服务终端逐渐取代了电脑、平板等个人信息终端。
手机给人们的日常生活带来的便利日益受到追捧并逐渐成为流行。
苹果手机iphone至面世以来就受到我国人民的喜爱和大力追捧,冲击着整个智能手机市场。
由此可见,基于ios操作系统的喜马拉雅音乐软件的设计与开发具有广阔的前景。
1.1课题背景
手机的大众化,智能手机成为现在的主流通讯工具。
与此相对应的对的对手机软件的需求也就越来越多。
手机的一个重要的功能就是听书,听音乐,一款好的手机听书软件可以更好的体现智能手机的强大。
苹果手机作为当今中国智能手机市场上不可或缺的一个品牌,基于iOS的手机软件需求量也就相应的越来越强。
市场上的听书软件品牌繁多,定位不一,基本满足了各层次消费者的需求。
伴随着苹果手机进入中国市场,相应的iOS技术逐渐流行起来。
而对于开发苹果应用的语言——Object-C[1],也成为当今社会最流行的开发语言,并且保持着强劲的上升趋势,隐隐有超过C语言的现象。
对于其他的开发语言,例如java、javascripe,Object-C以其强大的优势遥遥领先于这些其他的编程语言。
1.2论文研究的目的和意义
基于iOS操作系统以Objective-C语言开发的3G移动互联应用的集娱乐休闲和听书、听歌手机软件系统,通过手机听音乐已经成为大多数人习惯和爱好,手机操作系统有很多,而苹果系统的软件具有的特点就是美观、简洁、易操作。
根据这些信息,学着去设计一款基于iOS的音乐App在以后的社会竞争中更加具有优势,而且一法通万法,学会了制作一看APP,其他差别不大的APP的制作也能手到擒来,同时本人从去年开始接触iOS,在学习了几个月后,又经过差不多半年的实习经验,对iOS开发有了一定理解,所以对于这次毕业设计,我就选择了基于iOS系统开发一款产品。
希望通过这次毕业设计来进一步巩固自己的iOS开发水平,同时提升自己的开发设计和编程的能力。
2系统分析
2.1技术需求分析
1.运用流媒体第三方库播放在线音乐[10]。
2.使用单例管理播放音乐。
单例的几种写法(以MyAudioPlay类为例)
1.直接在Appdelegate里定义个属性@property(strong,nonatomic)MyAudioPlay,然后用(AppDelegate*)[[UIApplicationsharedApplication]delegate],用点语法调用MyAudioPlay即可。
2.在.h文件里写个+(id)sharedInstance,在.m文件里shareInstance的实现如下,
+(id)sharedInstance{
staticMyAudioPlay*audio=nil;
if(audio==nil){
audio=[[MyAudioPlayalloc]init];
}
returnaudio;
},每次使用即可用MyAudioPlay类调用shareInstance方法。
3..h文件里写个+(id)sharedInstance,在.m文件里shareInstance实现如下,
+(id)sharedInstance{
staticMyAudioPlay*audio=nil;
staticdispatch_once_tonceToken;
dispatch_once(&
onceToken,^{
});
returnaudio;
}
3.用coreData把数据模型存入本地。
4.使用AFNetworking异步下载歌曲(AFNetworking是大名鼎鼎的网络开发框架,几乎所有APP的开发都有它的身影)。
5.实现了下载音乐的进度条的百分比显示(通过监控下载回传的数据与总大小相比较,得到下载的进度)。
6.实现了多个cell在一个tableview上的动态显示,每个cell上可以响应多种事件。
2.2功能需求分析
本APP是基于iOS平台的一款类似音乐播放的娱乐工具,但是所有的声乐都是在线播放,所有音乐格式都是流媒体,用户也可以下载音乐,可以在下载听界面看到下载的音乐。
根据系统功能划分,本系统详细需求描述如下:
(1)音乐播放功能
由于网络接口的原因,APP播放的全是流媒体格式,但是基本实现了在线播放、歌曲切换、暂停与开始、上一曲与下一曲、歌曲图片的显示、音量调节,随意拖动滚动条来播放音乐等。
(2)界面展示功能
所有的页面展示都是自己搭建UI,从网络获取数据,加载图片或者文字,是所有APP通用的逻辑。
(3)音乐下载功能
用第三方框架AFNetworking实现了基本的下载功能,下载显示功能,下载到本地播放功能。
2.3相关技术
2.3.1ios简介
iOS最初是设计在iPhone上的操作系统,苹果公司于2007年1月9日的Macworld大会上公布了这个系统,并命名为iPhoneOS,但随着此系统在iPodtouch、iPad以及AppleTV等苹果产品上的广泛应用,苹果公司于2010年6月7日WWDC大会上将其改名为IOS。
据Canalys的数据显示,截止到2011年11月,iOS占据了全球智能手机系统市场份额的30%,在美国的市场占有率更是达到了43%。
随着Andriod开源操作系统的异军突起以及WindowsPhone的发力,iOS市场份额正被一点点的蚕食,但是iOS设备的利润率高的惊人,以智能手机为例,iphone的利润额占到整个智能手机利润额的80%,受益于此,苹果的市值也达到了5000亿美元。
iOS操作采用的是多点触控直接操作,控制方法包括滑动、轻触屏幕和图标及按键。
操作有:
滑动、轻按、缩小及放大。
此外,iOS移动设备中还内置了加速器,使得旋转iOS设备时,界面也可以得到旋转,这也使得iPhone等便携设备更便于使用[2]。
自3GS开始,iphone装备有陀螺仪,这使得iphone有了重力感应,游戏效果更加的突出。
屏幕的下方是home键,点按回到主界面。
底部是dock,可安放四个使用者最经常使用的程序的图标。
屏幕最上方是状态栏,显示一些有关资讯:
如时间、电池电量和讯号强度等。
其余的屏幕用于显示当前的应用程序。
启动程序,只需点按该程序的图标,点按屏幕下方的home键即退出应用程序。
在iPhone3.0及后续版本中,及时应用程序退出,当第三方软件收到了新的讯息时,苹果公司的服务器将把这些通知推送至iPhone或iPodTouch上[3](不管它是否正在运行中)。
2.3.2Objective-C语言
Objective-C,通常写作ObjC和较少用的ObjectiveC或Obj-C,是扩充C的面向对象编程语言。
它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
Objective-C可以在GCC以及Clang运作的系统上编写和编译,因为GCC与Clang含Objective-C的编译器。
1980年代初布莱德·
确斯(BradCox)在其公司Stepstone发明Objective-C[3]。
Objective-C是非常实际的语言。
它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。
Objective-C写成的程序通常不会比其原始码大很多。
而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
因此,Objective-C它完全兼容标准C语言.
Objective-C的优缺点:
由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:
内联函数、常数传播、交互式优化、纯量取代与聚集等)。
这使得Obj-C性能劣于类似的对象抽象语言(如C++)。
不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象[4]。
Objective-C是动态定型(dynamicalytyped)所以它的类库比C++要容易操作。
Objective-C在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
2.3.3Xcode环境
Xcode是开发苹果应用程序的必备开发环境,自4.0开始,开发人员就可以利用Xcode开发基于iOS的iPad、iPhone、iPodTouch设备应用程序,只要你有MacOSXSnowLeopard10.6.2以上版本MacOS操作系统,便可安装iossdk,如果你有iOS设备,便可让Xcode把应用程序部署到你的iOS设备上。
另外,你还可以使用iPhone仿真器进行调试。
Xcode提供了友好而方便的应用程序开发环境,这样你就可以开发出好的iOS应用程序了。
Xcode支持多种语言,如:
C、C++、Objective-C、Java。
另外,Xcode的编译速度也极快。
Xcode还具有自由撤消的强大功能,同时,从Xcode5.0开始具有虚拟模型和设计功能的storyBoard更完善了,这可以让你更轻松的开发和维护应用程序。
2.3.4JSon数据解析
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。
它基于JavaScript(StandardECMA-2623rdEdition-December1999)的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。
这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成[5](网络传输速度)。
比如下面的Json数据,在OC(Objective-C)中,最外层是一个字典A,A有三个键值对,键”programmers”,”authors”,”musicians”,相应的键对应的值是数组B,C,D,三个数组分别有3、3、2个元素,每个元素又都是一个字典E,这个字典E又有三个键值对,”fristName”,”lastName”,”email”/”genre”/”instrument”,比如我想取到musicians的piano的值(假设最外层字典为JSon),则可以这样取NSString*instrument=[[[JSonobjectForKey:
@"
musicians"
]objectAtIndex:
1]objectForKey:
instrument"
];
instrument的值就是piano。
2.4现行系统详细分析
2.4.1业务流程分析
手机用户使用此软件时,首页面可以看到可以收听的节目的分类,可以看到最新的可收听的节目,也可以随时播放,具体流程如图2-1。
图2-1系统流程图
2.4.2系统用例图
系统的用例为手机用户。
具体用例图如图2-2所示。
图2-2系统用例图
3数据库设计
3.1数据库需求分析
根据各个页面的信息的多寡,考虑到手机内存空间是有限的,故对数据量较大的界面进行缓存,运用苹果官方封装的CoreData框架,将OC对象转换成数据,保存在SQLite数据库文件中,也能将保存在数据库中的数据还原成OC对象,所以我们最终存储在数据库文件中的是继承于NSManagedObject的OC对象模型,。
在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于著名的Hibernate持久化框架,也就是说我们通过CoreData框架间接操控SQL,比直接编写SQL语句简单更容易理解。
最终得出需要进行数据持久化的页面如下所示:
●动态界面(HIMDynamicViewCtrl)的表:
包含图片的网址、当前日期、标题与副标题、个人昵称、内容简介等;
●详细分类界面(HIMDetailCateViewCtrl)的表:
包含标题、图片地址、上次更新时间、是否是最火/最近更新/经典内容、所属类别名称、播放次数等
●分类界面(HIMFindDetailViewCtrl)的表:
包含所属分类名称、是否有播主信息、图片地址、发布日期
●发现界面(HIMFindViewCtrl)的表:
包含图片地址、是否是滚动图数据等
●播放界面(HIMPlayViewCtrl)的表:
包含播放声音的地址、用户id、声音市场、播放次数、下载地址、声音大小、创建时间等
3.2数据库表结构设计
需求分析已经说了我们存储在数据库中的是OC对象,所以下面表结构也就是OC对象的设计,简单的说就是OC对象模型的设计,如果想用CoreData储存数据,类对象就必须继承NSManagedObject对象。
图3-1播放界面(HIMPlayViewCtrl)的数据模型
图3-2详细分类界面(HIMDetailCateViewCtrl)的数据模型
图3-3发现界面(HIMFindViewCtrl)的数据模型
图3-4分类界面(HIMFindDetailViewCtrl)的数据模型
图3-5动态界面(HIMDynamicViewCtrl)的数据模型
其中每个表都有的date用来判断再次进入程序时间是否超过一定时间,超过一定时间则删除缓存,重新缓存新数据。
4系统的详细设计与实现
4.1首页面
首页面如图4-1所示。
手机用户点击软件,进入首界面,界面上端出现热门、有声小说、音乐、综艺节目、相声评述等以及更多选项,以供用户选择收听内容,中部则是一些最火主播,热门声音的推荐,最下端是动态、发现、下载听以及我的选项。
图4-1首页面
4.2分类界面
点击首界面上端的任意选项,选择所要收听的内容,就会出现此选项的各种类型,例如如图4-2情感生活界面,手机用户选择了收听情感生活这一选项,会出现小清新,治愈系,爱情,心理等各种分类。
在情感生活界面的各种分类中,选择要收听的类型,即会出现如图4-3的小分类界面,界面上端会出现最火,最近更新,经典三个选项,在任一选项会出现可供选择的收听书籍,任选其一即可播放。
图4-2情感生活界面
图4-3小分类界面
4.3博主详情界面
当点击播放某一节目时,会出现该节目的一些基本信息,其中关于该博主的信息也可点击获取,如图4-4博主详情界面,可以显示博主的头像,关注的人数,粉丝数还有赞过的,以及发布的专辑。
图4-4博主详情届面
4.4播放界面
当手机用户选中一个节目后,就可以选择播放了,如图4-5所示,在此界面上可以实现了在线播放、歌曲切换、暂停与开始、上一曲与下一曲、歌曲图片的显示、音量调节,随意拖动滚动条来播放音乐等。
图4-5播放界面
4.5下载界面
手机用户对某一节目进行下载的话,就会跳转到下载界面,如图4-6所示。
图4-6下载界面
4.6手机用户注册或登录界面
手机用户可以在此界面进行新用户的注册,或者已有账号的用户在此页面登录,如图4-7所示。
图4-7注册或登陆界面
5程序运行环境
5.1iOS模拟测试器
iOSSimulator位于/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications文件夹中。
通常不需要直接启动iOSSimulator-它在Xcode运行(或是调试)应用程序时会自动启动。
Xcode会自动将应用程序安装到iOSSimulator上。
iOSSimulator是个模拟器,但并非仿真器。
这两者的区别是什么呢?
模拟器会模仿实际设备的行为。
iPhoneSimulator会模仿实际的iOS/iPad设备的真实行为。
但模拟器本身却使用了Mac上的各种库(如Quicktime)进行渲染以便效果与实际的iPhone保持一致。
此外,在模拟器上测试的应用程序会编译为x86代码,这是模拟器所能理解的字节码。
实际的iPhone设备使用的则是ARM代码。
5.2iOS真机测试
需要申请开发者账号,需要配置真机调试证书。
硬件环境:
iPhone5,iPhone5s,iPhone6,iTouch5;
系统环境:
iOS7.0及以上