1、学位论文基于ios平台的客户端应用之食安检的设计与实现基于iOS平台的客户端应用之食安检的设计与实现摘 要在我们的生活中,存在着各种各样的食物。在提倡绿色食品、健康食品的今天,还是有一些食品存在严重安全隐患。接连不断发生的恶性食品安全事故却引发了人们对食品安全的高度关注,要重新审视这一已上升到国家公共安全高度的问题,更要加大对食品安全的监管力度。食品安全关系到广大人民群众的身体健康和生命安全,关系到经济健康发展和社会稳定,关系到政府和国家的形象。食品安全已成为衡量人民生活质量、社会管理水平和国家法制建设的一个重要方面。于是一款成熟的食品安全检测的APP的研究与设计开发已经成为了市场不可或缺的一
2、部分,并且有着广阔的发展前景。本次设计项目食安检,基于苹果iOS系统,利用智能手机实现食品安全检测的功能。毕业设计完成时,整个应用界面简单明了,操作简洁。用户不仅能够看到自己购买的食品是否安全、符合国家标准,还能够进行其他产品的搜索,让用户能够对于自己购买的食品吃得舒心,买的放心。本设计所使用的开发环境是Xcode,使用的编程语言是Objective-C。项目主要功能包括产品的展示、搜索以及条形码扫描。关键词:iOS系统; 食品安全; Objective-C语言; 条形码Abstract In our lives , there is a wide variety of foods. In p
3、romoting green , healthy food today, there are still some serious food safety hazards . Malignant food safety incidents occurred one after another , but sparked great concern about food safety , to re -examine this had risen to the height of a national public safety issues , but also to increase the
4、 food safety supervision. Food safety is related to the health and safety of the masses , related to the healthy economic development and social stability , related to the image of the government and the country. Food safety has become an important aspect of a measure of the quality of peoples lives
5、 , social management and the national legal system. So APP research and design to develop a sophisticated food safety testing has become an integral part of the market , and there are broad prospects for development. The design project food security, based on Apples iOS system, using smart phones to
6、 achieve food safety testing functions. Upon graduation design is completed , the entire application interface is simple , simple operation. Users can not only see if it is safe to buy their own food , in line with national standards, but also be able to search for other products , allows users to b
7、uy their own food to eat for comfort, buy the rest assured . This design is used in the development environment Xcode, the programming language is Objective-C. Project features include display, search and barcode scanning products.Keywords: iOS system; food safety; Objective-C language; barcode目录1 引
8、言 11.1 课题的目的和意义 11.2 条形码 11.3 主要设计内容 12 iOS、语言、环境以及所用技术介绍 22.1 iOS简介 22.2 Objective-C语言 22.3 Xcode开发环境 22.4 Core Data 数据库 22.5 JSON解析 32.6 ZBar库条形码扫描 33 需求分析 43.1 功能性需求 43.1.1 功能结构图 43.1.2 总体设计 53.2 非功能性需求 54 详细设计与实现 64.1 首页展示设计 64.2 详情页面设计 74.2.1 商品详情页面设计 74.2.2 检测结果页面设计 94.2.3 食品认证页面设计 104.3 搜索页面设
9、计 114.4 分类页面设计 144.5 食品扫描页面设计 174.6 个人中心页面设计 195 测试 235.1 首页模块测试 235.2 详情模块测试 235.3 搜索模块测试 235.4 分类模块 235.5 食品扫描模块测试 235.6 个人中心模块测试 236 结束语 257 参考文献 268 致谢 271 引言1.1 课题的目的和意义iOS系统因为其本身的安全性以及较高的市场占有率,对于大学生来讲,从事这个行业的开发具有很大的前景。所以了解iOS开发流程,学会使用Xcode编程工具,掌握iOS开发语言Objective-C,学习iOS应用功能实现以及硬件功能的利用,是我这次选用iO
10、S平台开发食安检的重要原因。社会的发展和科技的进步,虽然为生产出高产的安全、绿色食品提供了支持,但是也给那些生产不安全、危害人体健康的有害食品的不法分子提供了便利,所以进行食品安全检测仍然是一项十分重要的任务。以前,人们就算是对于某种食品的成分以及是否安全持有怀疑的态度,但是因为其不能够实时检测,让很多人都放弃了这个想法,买了很多看似健康,但是实际上却并为通过检测的食品。本次毕业设计的APP食安检,旨在为用户提供一个便利的平台,让用户能够随时的查看自己购买到的商品是否进行了安全检测,是否通过了ISO认证,让用户吃起来更放心。1.2 条形码据中国互联网络中心最新的统计报告(2014年1月),截止
11、2013年12月,我国网民规模达6.18亿,全年共计新增网民5358万人,而新增网民中使用手机上网的比例高达73.3%,移动互联网的时代已经全面到来。随着零售业和消费市场的飞速扩大和发展,以及移动互联网的迅猛发展,在全球范围内,每天需要运用条形码扫描的次数已经超过上亿次。现在有关于条形码扫描的应用移动应用也越来越多,例如我查查、条形码商品比价、马上闪条形码比价等应用。就连微信这样的即时通讯的应用也包含了条形码扫描,可见条形码的应用范围之广。1.3 主要设计内容(1)首页模块:首先以广告栏的形式滚动式展示特色产品,下方展示四个产品专区,以瀑布流方式展示数据。(2)详情模块:该模块主要实现食品详情
12、、检测结果以及食品认证三个界面的数据的展示。食品详情界面展示食品图片、食品名称、食品描述、选择食品批次时间等内容;检测结果界面分三个标签展示三种报告结果,分别为“自检报告”、“送检报告”和“抽检报告”;食品认证页面界面显示所获得的认证图标,点击图标可以查看具体认证信息。(3)搜索模块:该模块主要实现的功能是通过产品名称的模糊搜索进行产品列表的展示。(4)分类模块:该模块主要实现的功能是实现产品的两级分类展示,当点击二级分类时,可以跳转到搜索界面进行搜索。(5)食品扫描模块:该模块主要实现的功能是通过开启摄像头进行条形码的扫描或者手动输入条形码进行产品的搜索。(6)个人中心模块:该模块主要实现的
13、功能是用户的登录、注册、修改密码等功能。2 iOS、语言、环境以及所用技术介绍iOS SDK提供了创建iOS应用程序所需要的环境和工具。利用iOS SDK开发应用时所用的编程语言是Objective-C。下面具体介绍一下iOS、语言、环境以及其他所用技术。2.1 iOS简介 iOS是由苹果公司开发的以Darwin为基础的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统。这个系统最早的用途为iPhone手机,后来陆陆续续的用到了苹果公司的其他产品上。由于用途的逐渐广泛,系统名字也由iPhone OS 更名为iOS。截止2012年9月份,根据友盟给出的数据,目前国
14、内的IOS设备的用户量达到了3500万,App Store上的应用数已经达到了65万,下载量已超过300亿次,平局每天下载量在4600万,而国内占总下载量的20%,中国区下载量每天在1000万次左右。iOS操作采用的是多点触控直接操作,支持多语言。而且因为其硬件和操作系统均由Apple制造,所以具有高度整合性。这样的优势,也是的App能够充分的利用Retina显示屏、加速感应器以及三轴陀螺仪等硬件功能。在iOS及后续版本中,当第三方软件收到了新的信息时,Apple的服务器将把这些通知推送至iPhone、ipad或者是iPod Touch上(无论它运行与否)。2.2 Objective-C语言O
15、bjective-C,是一种扩充C的面向对象编程语言,主要用于Mac OS X和GNUstep这两个使用OpenStep标准的系统。Objective-C在最开始的时候是不支持垃圾回收的,之所以这样做的是为了避免出现和Smalltalk一样出现漫长的死亡时间,导致整个系统失去功用的现象。但是在Xcode4以及后续的版本就已经具备了ARC机制,实现了自动释放功能。Objective-C不支持运算子多载,这一点是和C+所不一样的。而且Objective-C只容许对象继承一个类别,支持动态运行时。但是其也有很多弊端,就拿编译时的性能优化方法来讲,很多都是不能应用于Objective-C,内联函数就是
16、一个很常见的例子。2.3 Xcode开发环境Xcode是开发苹果应用程序的必备开发环境。自动Xcode4开始,开发人员就可以利用Xcode开发基于iOS的iPad、iPhone、iPod Touch设备应用程序。Xcode不仅编译速度快,而且支持很多中的编程语言,比如C、C+、Objective-C。2.4 Core Data 数据库Core Data拥有成熟的代码,这些代码通过单元测试来保证品质。应用Core Data的程序每天被世界上几百万用户使用。通过了几个版本的发布,已经被高度优化。它能利用Model层的信息和运行时的特性,而不通过程序层的代码实现。除了提供强大的安全支持和错误处理外,
17、它还提供了最优的内存扩展性,可实现有竞争力的解决方案。除了Core Data本身的优点之外,使用它还有其他的好处:它很容易和Mac OS X系统的Tool chain集成;利用Model设计工具可以按图形化方式轻松创建数据库的结构;你可以用Instruments的相关模板来测试Core Data的效率并debug。在Mac OS X的桌面程序中,Core Data还和Interface Builder集成。通过Core Data管理应用程序的数据模型,可以极大程度减少需编写的代码数量。Core Data还具有下述特征:第一,将对象数据存储在SQLite数据库以获得性能优化。第二,提供NSFet
18、chedResultsController类用于管理表视图的数据。即将Core Data的持久化存储显示在表视图中,并对这些数据进行管理:增、删,改。第三,管理undo/redo操作。检查托管对象的属性值是否正确。2.5 JSON解析JSON(Javascript Object Notation)是一种轻量级的,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON用于描述数据结构,有以下形式存在:对象(object):一个对象以“”开始,并以“”结束。一个对象包含一系列非排序的名称/值对,
19、每个名称/值对之间使用“,”分割。名称/值对(collection):名称和值之间使用“:”隔开,一般的形式是:name:value,一个名称是一个字符串,一个值可以是一个字符串、一个数值、一个对象、一个布尔值、一个有序列表或者一个null值。值的有序列表(array):一个或者多个值用“,”分割后,使用“”,“”括起来就形成了这样的列表,形如:collection,collecton。字符串:以“”括起来的一串字符。数值:一系列0-9的数字组合,可以为负数或者小数,还可以用“e”或者“E”表示为指数形式。布尔值:表示为true或者false。2.6 ZBar库条形码扫描ZBar是款桌面电脑用
20、条形码/二维码扫描工具,支持摄像头及图片扫描,支持多平台包括 iPhone 手机。同时ZBar提供了二维码扫描的 API 开发包。例子分析:第一,导入和使用SDK,导入ZBarSDK文件并引入一下框架AVFoundation.framework(weak)CoreMedia.framework(weak)CoreVideo.framework(weak)QuartzCore.frameworklibiconv.dylib。最后,引入头文件#import “ZBarSDK.h” 即可使用。第二,ReaderSample使用了ZBarReaderViewController,该类实现了自动捕捉条形
21、码,设置了ZBarReaderViewController属性scanner的配置。找到条形码时,会执行代理方法-(void)imagePickerController:(UIImagePickerController*)readerdidFinishPickingMediaWithInfo:(NSDictionary*) info最后读取并显示了条形码的图片和内容。第三,EmbedReader使用了ZBarReaderView,该类实现了使用摄像头捕捉条形码,调用start方法开始捕捉,调用stop方法停止捕捉。当捕捉到条形码时,会调用代理方法:- (void) readerView:(ZB
22、arReaderView*)readerViewdidReadSymbols:(ZBarSymbolSet*)symbolsfromImage:(UIImage*)image常用类分析:第一,ZBarReaderViewController用于动态捕捉条形码;scanner用于配置捕获图像的属性;cameraDevice用于设置前后置摄像头;代理方法- (void) readerView:(ZBarReaderView*)readerViewdidReadSymbols:(ZBarSymbolSet*)symbolsfromImage:(UIImage*)image在捕获到条形码后执行第二,Z
23、BarReaderController继承UIImagePickerController,用于手动捕捉条形码sourceType用于图片获取方式,摄像头或相册方法takePicture获取图片,并从图片中捕获条形码代理方法-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info,在读取条形码后执行,info包含了条形码信息。3 需求分析从项目开发的角度看,软件需求包括两大类型:功能性需求和非功能性需求。其中功能性需求是最主要的需求
24、,是需要计算机系统解决的问题,也是对数据处理的要求。功能需求规定了系统必须执行的功能。非功能性需求是一些限制性要求,是对实际使用环境所做的要求,如可靠性要求、性能要求等。非功能性需求比功能性需求要求更严格,更不容易满足,因为如果非功能性需求不能满足的话,系统将无法运行。食安检客户端的需求主要从功能性需求和非功能性需求两方面分析。3.1 功能性需求3.1.1 功能结构图3.1.2 总体设计按照功能分为六大功能,如下表:表3-2-2 程序功能表模块简述功能描述首页APP首页,展示分两个区域,上方展示特色产品,以广告条方式展示,下方展示四个产品专区,以瀑布流方式展示数据详情展示食品的详细信息,检测结
25、果,食品认证信息。用户可以通过食品的详细信息可以查看食品的名称,描述信息和营养含量;用户可以通过检测结果查看自检报告,抽检报告和送检报告;用户可以通过食品认证界面查看该食品所获的的ISO认证搜索可以根据用户需求搜索关键字,通过输入产品名搜索特定的食品信息。点击取消搜索可以显示搜索的历史纪录。分类查看所有食品的一级分类和二级分类,当点击二级分类的子分类的时候,可以查看此分类的所有产品的信息食品扫描可以通过条形码扫描查看食品的信息个人中心显示用户的信息以及历史纪录等。3.2 非功能性需求非功能性需求对用户的操作体验起着重要作用,本应用对非功能性需求也是很重视的。为了能够加强用户的体验,对于本应用做
26、了很多的优化。非功能性需求主要有:(1)操作流畅性:比如说在页面数据加载的时候,要能够首先显示页面,然后再进行数据的逐步显示,不应该出现黑屏等现象,保证操作的流畅性;(2)启动时间:应用启动时间应尽可能短,加载时间太长不利于用户感受;(3)美观性:每个界面尽量让UI设计师设计好,要给用户美的享受。4 详细设计与实现根据需求分析,划分了六大功能模块,其中详情模块、扫描模块和搜索模块是本软件的特色及关键部分,具体功能如下所示:4.1 首页展示设计下图4-1为首页界面,展示分两个区域。上方展示特色产品,以广告栏的方式展示。其中广告栏的实现就是通过使用继承与UIView,并且实现了UIScrollVi
27、ewDelegate协议的SGFocusImageFrame以及NSTimer来实现特色产品的轮播。下方展示四个产品专区,分别使用了两个UIScrollView来实现四个专区的切换,使用了四个UITableView来展示某一个专区的产品的显示,并且前两个UITableView和后两个UITableView实现通过联动实现了瀑布流的方式。导航栏右上方为搜索按钮,点击后进入“搜索”界面。点击产品专区中的具体产品,进入“食品详情”页面,并且此内容会存储到数据库中,可以在个人中心界面的“历史记录”中查看此记录。图4-1 首页视图以下代码为广告栏特色产品轮播的代码:- (void)setupViews/
28、这里为广告栏的数据arr = NSMutableArray array;arraddObject:SGFocusImageItemalloc initWithImage:UIImageimageNamed:lgd4.png tag:0;for (inti = 0; i 4; i+) NSString *str = NSStringstringWithFormat:lgd%d.png,i+1;SGFocusImageItem *item1 = SGFocusImageItemalloc initWithImage:UIImageimageNamed:str tag:i+1;arr addObje
29、ct:item1; arraddObject:SGFocusImageItemalloc initWithImage:UIImageimageNamed:lgd1.png tag:5;imageFrame = SGFocusImageFramealloc initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,SGFOCUSIMAGEFRAME_HEIGHT) delegate:selfimageItems:arr;self.viewaddSubview:imageFrame;/这里为广告栏的图片id_imageIdArr = 10
30、143,12070,10101,158,10143,12070;4.2 详情页面设计详情页面主要分为四个页面,包括商品详情、检测结果、食品认证和小知识库界面。其中小知识库界面尚未完善。详情页面使用的是四个UIButton的切换来实现UIScrollView下的四个界面的切换。4.2.1 商品详情页面设计下图4-2-1和4-2-2是商品详情界面。商品详情页面整体界面使用的是UITableView,其中每一个栏目都是一个UITableViewCell。 图4-2-1 商品详情界面(上) 图4-2-2 商品详情界面(下) 食品信息的cell包括食品的图片和食品的名称,其中食品的图片使用ZoomIma
31、geView来实现,并且通过_fooImageViewsetImageWithUrl:NSURL URLWithString:saveString来实现对于图片的缓存,当下次再次进入这个界面的时候不需要再次加载图片。而且当点击食品的图片时,可以放大图片。食品描述信息使用的是置于UITableViewCell的UILabel进行显示。而且可以根据解析出来的描述信息的内容的多少来自动适应UILabel,进而自动适应UITableViewCell。食品的主要成分和使用人群与食品的描述信息相同,可以根据具体的内容的多少来自动的调整整个UITableViewCell的高度。 食品批次信息是由继承于UITableViewCell的BatchInfoCell来实现的。其中BatchInfoCell包括点击输入产品批次日期的UITextField、选择日期的UIButton以及通过选择的日期计算是否过期以及是否有对应日期的自检报告。当点击UITextField或者是UIButton都会弹出一个UIActionSheet,其中UIActionSheet包含一个UIDatePicker可以进行日期的选择。当选择完日期后点击确定就会进行日期的计算(如图4-2-3),并且会根据获得内容自动的调整UILabel的大小,调整BatchI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1