基于IOS的驾考宝典开发Word文件下载.docx
《基于IOS的驾考宝典开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于IOS的驾考宝典开发Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
4设计与实现4
4.1系统总体设计4
4.2前端表示层设计4
4.3系统后端数据访问层设计4
4.4数据库设计4
参考文献4
1引言
1.1研究背景
汽车行业的逐渐发达造成了很多的家用汽车和驾驶汽车的人数每年都在增加,在驾校学习的驾驶员来说,很多的驾校学习软件能让他们快速的学会各种的理论知识和驾驶技术。
但目前的很多的驾驶软件都是基于PC端的,这造成了软件学习和实际的学习不能更好的结合。
基于智能机的驾驶宝典也在不断的开创中,但是目前的智能机的应用没有更好的嫁接到IOS中。
基于IOS的驾驶宝典的开发有着更多的市场需求。
使用IOS的智能终端的使用人数在不断的增加。
双方的结合使得很多的IOS驾驶宝典更多的得到了市场的认可。
所以本课题的研究意义有着更多的现实价值。
1.2研究意义
驾照理论考试网上模拟系统以手机为操作工具,按照标准的驾驶理论考试的流程,给用户提供一个相对真实的驾照理论考试环境。
如今,国内外已经拥有许多成熟的驾驶员辅助考试系统,永泰SDLS-030道路驾驶技能智能电子考试系统,是根据中华人民共和国公共安全行业标准《驾驶人路考系统通用技术条件》和最新公安部91号令研制,集视频图像处理、RFID检测、磁性检测、光电检测、电磁传感、加速度传感、GPS定位、无线数据通讯网络等多种国内外最新技术于一体的道路驾驶考试自动评判与智能管理系统。
该系统能有效实现考试过程的自动评判和智能管理,因此该系统的推广应用能极大地节约人力物力,将对交通管理部门充分发挥其应有的社会职能作用产生积极的影响。
2IOS简介
IOS是国际上享有盛誉的IT巨头美国苹果公司为旗下的移动终端产品自主开发的操作系统,广泛的应用在苹果智能手机、平板电脑等目前火热倾销的电子产品上。
其丰富的软件支持、流畅的应用操作和堪称优雅的UI界面设计使苹果移动产品广受全球消费者的青睐,在竞争日趋激烈的国际终端市场上占有着相当比重的份额,几乎在智能终端的国际市场上占据了半壁江山。
鉴于这样的背景,本文选取了iOS作为驾考软件宝典软件的开发平台,具有较好的技术支持和广阔的市场前景。
IOS相较于安卓有一个很大的优势即硬件、操作系统和内容商店“三位一体”。
GooglePlay目前总营收只相当于苹果商店的47%。
并且用户平均每三次从应用商店下载内容,就有一次是下载游戏。
用户平均为应用程序消费3美元,就有2美元被花在了游戏上。
单依靠30%的提成,苹果公司今年就有望从移动游戏中获利近20亿美元。
再者说,用IOS系统的用户收入普遍较高,并且苹果公司能够很好地去控制和管理产品的内容,这让用户获取内容,以及付款更加的便捷。
因此IOS开发行业才能如此大热并且是一个薄利多销的行业。
IOS具有如下特点:
1)加载过程快,耗费时间短
iOS设备有很多的优点,方便是其中之一。
从他的口袋里的手机微博用户,花了一小会儿,然后回头放入口袋或提包服用。
这表明,在主屏幕上的每个微博用户轻按iOS上的App图标,iOS上的App必须运行起来速度非常快,可以在最大程度上降低了程序的启动延时。
此外,本申请还必须做好非常快的程序退出功能。
2)移动iOS上的App的沙箱
处于安全的考虑,iOS系统会把每个iOS上的App,包括微博用户数据和信息,限制在文件系统的特定位置上,我们所谓的“沙箱”的iOS上的App。
沙箱是非常强大的,它可以被用来限制iOS上的App访问文件,喜好,网络资源,以及其他硬件。
其中iOS系统,iOS上的App和它的数据驻留在一个独立的沙箱,别人想更改iOS上的App不能更改。
当被安装了的iOS上的App中,系统可以通过计算一个不透明的标识符,后跟一个iOS上的App来建立一个目录路径指向基于iOS上的App的根目录和标识的位置获得人是非常有效的。
3)虚拟内存系统
在iOS中,iOS上的App仍然有自己的虚拟的地址里面,但其可用的虚拟内存受限于现有的物理内存的数量。
当内存用满时,iOS并不将非永久内存页面把它存档到硬盘里面。
与此相反,如所需要的虚拟存储器系统中会释放出一个永久性存储器,以确保所需的iOS上的App的运行空间。
通过释放存储空间不被用于移除当前终点,当这样的页面可以被重新使用在稍后要被加载到存储器中。
4)能够按时间休眠的计时程序
一种方法是使用iOS的实现省电自动休眠定时装置。
如果一段时间内没有检测到触摸事件时,系统可以把屏幕亮度调暗,然后完全关闭屏幕。
3驾考宝典需求分析
当下社会随着汽车代步现象的普遍性,各地区驾校也是大量涌现,但却是良莠不齐,主要就是管理方面的问题,管理的失误使得许多学员对教员信息以及培训计划的不了解,导致学员学习效率的低下产生不满。
本系统主要用于解决驾校与学员之间的管理问题,加强学员与教师之间的联系和互动,并对学习培训计划系统的安排,明了学习流程,提高学习效率。
应当有一定的市场前景。
所谓“需求分析”,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
简单的说就是分析用户的要求。
需求分析是系统设计的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。
随着社会节奏的加快,汽车已经成为了人们生活当中必不可少的代步工具,而学习驾车的驾校则成为了人们驶向公路的起点。
于是,关于驾校管理系统的开发成为了电子商务界的热点,驾校管理系统也迎来了广阔的前景。
基于IOS的驾驶宝典在实际的应用中将会更加的受到人们的欢迎,更多的人将会使用这种的APP,此种的APP更加的受到市场的欢迎。
对驾考宝典的需求的目标主要是在驾校学习和驾校的老师。
他们是为了更好和学员之间进行更好的沟通。
4设计与实现
4.1系统总体设计
图1系统总体架构
本文主要研究的是一种基于Xcode的开发工具的设计。
该应用软件的设计大致分为这几个板块:
(1)练习:
对驾驶员理论考试进行顺序练习;
(2)交规:
交通标示的图解,新版交警手势,事故图解大全;
(3)技巧:
大路考技巧,小路考技巧,以及行车咨询等等;
(4)法规:
机动车驾驶证和使用规定;
(5)新车速递:
最新车辆的新闻信息;
(6)更多:
微博分享,短信分享,第三方软件的广告。
该系统主要实现交通规则模拟考试系统的基本功能,主要包括:
驾校信息、应试技巧、交通标示图解、行车考试技巧、新型车辆新闻、交通法规学习,达到手机辅助教学的目标。
该系统还提供驾校理论考试的离线试用,方便用户在无网络的时候也可以进行考试练习,行车技巧的咨询。
“新车速递”功能模块可以及时提醒用户最新车辆信息,为买车的用户提供参考,“留言板”方便用户之间的交流,达到手机辅助教学的目的。
本系统基于Xcode框架进行设计与实现的。
技术方案准备采用Objetive-C作为开发语言,sqlit3作为后台数据库来开发系统。
图2总体结构设计图
4.2前端表示层设计
图3前段表示层的示意图
表示层的元素
简单的表示层包含由图形用户界面(GUI,graphicaluserinterface)所承载的用户界面组件,GUI可以是软件窗体或用户窗体。
对更复杂的用户界面来说,可以设计用户处理组件来协调UI元素并控制用户交互。
当有一个特定的过程需要遵循,并且对这个过程的访问要根据不同用户而变化时,用户处理组件就显得很有用处。
例如,一个零售应用程序可能需要两个用户界面:
一个是客户使用的电子商务Web站点的用户界面,另一个是销售代表使用的基于Windows窗体应用程序的用户界面。
两种用户使用这些界面执行相似的任务。
两种用户界面都必须提供以下能力:
查看现有产品,向购物车中添加产品,并将指定的付款细节作为结算处理的一部分。
该过程可以提取到一个独立的用户处理组件中,使得应用程序易于维护。
表示层设计的输入
在构思和计划阶段中进行调研、分析和优化所得出的信息是表示层设计的输入。
这些信息包括:
解决方案需求和约束
使用场景
工作流模型
用户档案
任务描述
用户界面组件
表示层的第一部分是用户界面。
在某些方面,界面甚至可以被认为是业务应用程序中最重要的部分,因为对大多数用户来说,界面就是应用程序。
一个设计良好的用户界面有助于保证业务应用程序的成功并被用户所接受。
用户界面组件负责管理与用户之间的交互。
它们向用户显示数据,从用户处获得数据,解释由用户操作所引发的事件,改变用户界面的状态,并帮助用户查看任务的进度。
用户界面组件在模型-视图-控制器(MVC,Model-View-Controller)模式中充当视图或控制器角色,或者两者兼有。
MVC模式将应用程序或应用程序界面分成三部分:
模型(model,应用程序对象)、视图(view,向用户显示)、控制器(controller,用户控件)。
当一个组件向用户显示数据时,它充当了视图的角色。
在用户界面处理过程中,当用户通过操作改变相关业务数据的状态时,将调用控制功能。
控制功能是一个方法,它执行一个基于用户界面组件并且由用户控制的操作,数据将在操作开始的时候被提供。
下图7-3展示了MVC模式的体系结构视图。
用户界面组件向用户显示数据,获取并验证用户输入的数据,解释那些指示用户想要对数据执行某种数据的用户动作。
此外,用户界面应该对现有操作进行过滤,从而使用户在特定点上及时执行最合适的操作。
功能
用户界面组件执行下面的功能:
从用户处获得数据,并为用户提供可视化提示(如ToolTips),数据效验和对任务的适当控制以方便用户输入
从用户处捕获事件,并调用控制器功能来通知用户界面组件,在当前用户进程上启动一个操作或改变当前用户进程的数据,从而改变其显示数据的方式
限制用户所能输入的数据类型。
例如年龄字段应限制为只能输入整数值
执行数据输入验证,例如,限制可以输入到特定字段的值的范围,或者保证输入强制数据
在用户控件所提供的信息和基础组件(underlyingcomponent)工作时所需的值之间,进行简单的映射和转换。
例如,用户界面组件可以显示产品名称,但向基础组件传递的是产品ID
对值进行格式化处理(例如,适当地格式化日期)
对要呈现的数据进行本地化工作,例如,在一个使用用户本地语言的网格中,用资源字符串来显示列头信息
为用户提供状态信息,例如,当一个应用程序以离线或连接模式工作时给出提示
根据用户的选择或所用客户端设备的种类来定制应用程序的外观
4.3系统后端数据访问层设计
后端服务加速了移动应用的开发,改进了可扩展性并减少了开发者对服务器端编码的需求。
对于开发者来说,连接后端数据到前端或许是一件特别痛苦的事情。
但后端服务却能够帮助开发者以更快的速度构建移动应用,不仅如此,它还能减少着移动应用开发的成本。
为此,本文特为广大的iOS开发者分享4个灵活且安全的后端服务工具。
1.Helios
Helios是一个可扩展的开源移动应用后端框架。
它提供了iOS应用程序所必要的后端服务、数据同步、用户账户消息推送、Passbook等功能。
它能够帮助开发者在短时间内配置好应用和服务端的连接,让移动应用和所提供的这些后端服务无缝整合。
主要特性:
数据同步:
读、写甚至自动生成核心数据模型,胜过传统的RESTWebService。
推送通知:
支持设备端注册,通过强大的管理界面可以针对特定的设备发送通知。
应用内付费:
跟踪和验证在内付费过程中的交易行为。
Passbook:
支持一切所需的PassbookWebService,包括注册、更新、通知等功能。
日志与分析:
具备强大的行为捕获和趋势分析功能。
2.WindowsAzureMobileServices
开发者可以利用Azure移动服务平台将数据存储到云计算服务器上,并且还能验证用户和向客户端发送推送通知。
和其它云计算后台服务解决方案一样,Azure移动服务平台可以使得开发者专注于前端研发。
在Azure移动服务平台中,开发者应用程序的相应数据将会保存在WindowsAzure云计算平台,并和里面的SQL数据库协同工作。
这样一来,开发者无需编写或者部署特定代码就可以安全地检查这些数据。
此外,Azure移动服务平台还支持列表创建、数据浏览、指引设置和访问控制。
开发者使用Azure移动服务平台后,可以把用户身份验证集成到应用里面去,并向客户端发出推送通知。
3.UrbanAirship
UrbanAirship是一个提供推送服务的平台。
开发者可以用统一的API来完成iOS、Android和BlackBerry三个平台的Push开发。
除了基本推送服务外,UrbanAirship还提供RichPush:
让Push信息可以带HTML、视频、音频等多媒体信息。
此外,UrbanAirship还为iOS和Android提供IAP服务,帮助开发者处理内容存放和安全支付等问题。
除此以外,UrbanAirship提供了一个管理后台。
开发者在这里不仅能用信息编辑界面来发送Push,还可以监测Push消息的传达情况,观察用户是否产生了交互等统计信息。
4.Parse
Parse是一个完整的iOS、Android后端支持平台。
Parse可以帮助对于终端服务器代码不熟悉的开发者处理数据库、用户授权等方面工作。
开发者只需要把Parse的SDK拖曳到智能磁盘设备后,只要短短的几行代码,就可以使用如手机数据储存、推送提醒和用户管理等功能。
除此之外,Prase还能够包办移动应用的后台开发工作。
通过Parse提供的iOS和AndroidSDK,开发者可以存储云端的数据对象、发送Push通知等。
针对大部分应用都需要的用户注册与登录功能,Parse不仅提供了专门的后端支持,还提供了整合Twitter和Facebook的便捷接口。
数据存储:
Parse的SDK开发包专为iOS和Android提供一个简单使用的ORM数据存储方式,开发者的Objective-C(iOS)或Java(Android)代码,和Parse的SDK开发包,将通过Parse平台,围绕着发送数据和接收数据而努力工作。
Parse提供相当简单的推送通知方案,通过一致和易于使用的接口,帮助开发者方便地发送通知给应用用户。
4.4数据库设计
各个层的下面再如何划分呢?
我们可以按照业务模块划分,也可以按照组件功能划分。
本应用中PersistenceLayer层就还要分成dao和domain两个组,dao是放置数据访问对象的,该对象中有对数据访问的CRUD四类方法,为了降低耦合度dao一般要设计成为协议(或Java接口),然后根据不同的数据来源采用不同的实现方式。
domain组是实体类,实体是应用中的“人”、“事”、“物”等。
dao组中NoteDAO.h代码如下:
@interfaceNoteDAO:
NSObject
//保存数据列表
@property(nonatomic,strong)NSMutableArray*listData;
+(NoteDAO*)sharedManager;
//插入Note方法
-(int)create:
(Note*)model;
//删除Note方法
-(int)remove:
//修改Note方法
-(int)modify:
//查询所有数据方法
-(NSMutableArray*)findAll;
//按照主键查询数据方法
-(Note*)findById:
@end
listData属性用于保存数据表中的数据,其中每一个元素都是Note对象,一个Note对象代表数据表中的一条数据。
+
(NoteDAO*)sharedManager方法用于获得NoteDAO单例对象。
dao组中NoteDAO.m代码如下:
@implementationNoteDAO
中国返利网艺尚网
staticNoteDAO*sharedManager=nil;
+(NoteDAO*)sharedManager
{
staticdispatch_once_tonce;
dispatch_once(&
once,^{
NSDateFormatter*dateFormatter=[[NSDateFormatteralloc]init];
[dateFormattersetDateFormat:
@"
yyyy-MM-ddHH:
mm:
ss"
];
NSDate*date1=[dateFormatterdateFromString:
2010-08-0416:
01:
03"
Note*note1=[[Notealloc]init];
note1.date=date1;
nte1.content=@”WelcometoMyNote.”;
NSDate*date2=[dateFormatterdateFromString:
2011-12-0416:
Note*note2=[[Notealloc]init];
note2.date=date2;
note2.content=@”欢迎使用MyNote。
”;
sharedManager=[[selfalloc]init];
sharedManager.listData=[[NSMutableArrayalloc]init];
[sharedManager.listDataaddObject:
note1];
note2];
});
returnsharedManager;
}
(Note*)model
[self.listDataaddObject:
model];
return0;
for(Note*noteinself.listData){
//比较日期主键是否相等
if([note.dateisEqualToDate:
model.date]){
[se