iOS平台下药品信息查询软件的设计与实现

2017-07-01 17:14莫朵朵詹秀菊
关键词:软件开发

莫朵朵+詹秀菊

摘 要 传统的药品信息查询容易遗漏信息且查询效率低下,为提升用户体验及对症用药的准确性和效率,本研究开发一款基于iOS平台的药品信息查询软件,使用户通过手机终端快速查询所需药品及相关健康信息,创建个人药箱.软件使用的开发语言为Objective-C,开发技术有AFNetworking网络通信技术、FMDB连接SQLite数据库技术以及Map Kit地图技术等.软件可以快速的查询药品信息,扩展手机应用于医疗领域的功能.

关键词 iOS平台; 药品查询; 软件开发

中图分类号 TP311 文献标识码 A 文章编号 1000-2537(2017)03-0083-06

Design and Implementation of Medicine Information Query Tool Based on iOS Platform

MO Duo-duo1, ZHAN Xiu-ju1*, YI Jun-fei2

(1.School of Medical Information Engineering, Guangzhou University of Chinese Medicine, Guangzhou 510006, China;

2.School of Automation, Xian University of Posts and Telecommunications, Xian 710121, China)

Abstract A traditional drug information query often omits information and is inefficient. In order to enhance the user experience and improve the accuracy and efficiency of symptomatic medication, we developed a drug information query based on iOS platform that allows users to quickly obtain the mobile terminal products and inquired inquiries health information, and create personal kits in line with users eagerness and attention to health needs. The development language of this software is Objective-C. The development technology includes AFNetworking network communication technology, FMDB connection SQLite database technology and Map Kit map technology. This software provides timely and rapid drug-related information query function and extends the functionality and use of mobile phones in the medical field.

Key words iOS platform; drug search; software development

本研究开发基于iOS平台的药品信息查询软件,利用iPhone手机软件实现查询药品相关信息的功能,如药品查询、病症查询、健康科普、药店查询、药箱管理等功能,这不仅提高了药品查询的效率,而且增强了用户对药品相关信息的了解.与网络程序不同,本地应用程序安装在设备上,因此用户可以随时使用,即使设备处于航空模式[1].

1 开发环境

本软件使用的操作系统为苹果Mac OS X 10.9,开发前需要对iOS开发环境进行搭建.iOS SDK是开发iPhone和iPad软件程序过程中必不可少的软件开发包[2],软件所需的全部接口、工具以及资源全都包含于SDK中.iOS SDK中包含的重要组件有Xcode, Interface Builder, Instruments和iPhone模拟器和iOS参考库,其中Xcode作为一个集成的开发环境(IDE),为开发者提供由程序的创建、测试、优化以及提交至App Store的整个工作流的管理工具[3].Interface Builder则是以可视化方式设计和测试用户界面(GUI)的工具.Instruments是运行时性能分析和调试工具.iPhone模拟器是Mac OS X平台软件程序,它对iOS技术栈进行模拟,便于开发者可以在基于Intel的Macintosh计算机上测试iOS软件程序.iOS参考库为默认包含iOS开发过程中所需的参考文档、示例代码等帮助信息.文档库的更新会被自动下载到本地参考库,开发者可以方便的在Xcode中查看参考库相关信息.

2 开发语言和相关技术

本软件使用语言为Objective-C,简称OC,它是Mac OS 和iOS平台应用开发的标准语言,同其他的面向对象语言一样,具有封装、继承、多态等特点[4].但它也有自己的明顯特征,比如,它对动态机制的支持更为彻底,编译器为运行环境保留了很多对象本身的数据信息,因此某些在编译时需要做出的选择可以推迟到运行时再决定[5].本软件开发过程中使用到的技术有AFNetworking网络通信技术,FMDB连接SQLite数据库技术和Map Kit地图技术等.其中AFNetworking是一个为iOS和Mac OS X操作系统设计的网络通信框架,具有模块化的构建方式和丰富功能的API.本软件主要采用SQLite方式存储数据,以FMDB作为SQLite的封装,通过接口方便的实现数据库的增、删、改、查等操作.

3 系统结构设计

本软件的开发利用了已有医药网站的数据库数据,并在这些数据的基础上设计适用于iOS应用的服务器接口和基于iOS平台的客户端程序.

3.1 系统整体结构

iOS客户端基于Http网络协议向服务器端发送数据请求,服务器端根据请求与数据库进行通讯并返回Json对象数据,客户端接收返回的Json对象并进行解析,从而实现客户端与服务器端的数据交互.系统整体结构如图1所示.

3.1.1 iOS客户端 客户端包含的主要功能模块有导航菜单模块:提供导航栏,使用户可以通过底部的导航菜单快捷地切换不同的功能界面.查询功能模块:作为软件的核心功能提供药品、疾病、文章等内容的查询功能.内容浏览模块:负责根据用户查询结果显示相关内容,它通过网络访问模块加载药品、疾病、文章、地图信息等相关数据.用户收藏模块:提供对药品和文章信息进行收藏和管理的功能网络访问模块管理着各种Web服务接口,方便其他模块能够调用接口与服务器通讯从而提供的各种服务.数据库查询模块:实现增、删、查、改等基本的数据库操作.如图2所示.

3.1.2 iOS服务端 系统的服务端包含网站的服务器和数据库,以及针对客户端设计的Web服务接口3部分.网站服务器主要用于用户对Web站点的访问,数据库服务器为网站提供数据的存储和管理服务,Web服务接口则用于与iOS 客户端的通讯服务,使得客户端能够与网站服务器共享数据库的数据以及使用服务器所提供的其他服务.

3.2 MVC模式设计

MVC即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model,View和Controller的方式进行分离,这样一个应用被分成3个层——模型层、视图层、控制层[6].iOS平台应用程序主要采用MVC设计模式作为总体设计框架.MVC一个更为合理的缩写应该是MdMaVC[7],作为iOS开发中最主要使用的设计模式之一,贯穿于整个iOS应用程序的设计之中.MVC对于视图处理仅限于采集所需要的数据和对用户请求进行处理,而并不包括业务流程的处理,视图上的业务流由模型部分来进行处理[8].它包括3个部分:模型(Model)、视图(View)和控制器(Controller),分别对应于内部数据、数据表示和输入输出控制部分.图3描述了MVC模式3个部件之间的交互过程.

3.2.1 视图(View) 视图是直接面向用户的界面,在接收用户的操作并向控制器反映的同时接受控制器返回的数据并显示在可视化界面上.本项目的大部分视图采用XIB文件进行设计,XIB文件以XML格式保存了界面布局的相关属性,如控件的位置,大小等数据.大部分时候,我们都可以直接通过XCode来对XIB文件进行编辑[9].通过利用Xcode对XIB文件进行可视化编辑,减少大量布局代码带来的麻烦,提高项目开发的效率.

3.2.2 模型(Model) 模型用来保存通过数据源和数据含义等协议提供数据,供控制器和视图调用.本项目的模型层通过定义各种数据类型来存储相关数据,如药品的相关信息、文章信息以及用户信息等.通过把数据模型独立封装起来,降低了程序的耦合性.

3.2.3 控制器(Controller) 控制器充当连接视图与模型的媒介,实现两者之间的间接通讯.在iOS应用程序开发中,控制器一方面接受视图传过来的事件并进行响应,另一方面控制器使用模型来渲染对应的视图[10].本项目的控制器层中使用到了较多的控制器类,主要定义各种应用界面和服务的接口,以便对视图传递过来的操作进行相应处理,从而实现接口提供的各种服务.

4 数据库设计

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求[11].

4.1 基本存储方式

本项目的数据存储主要使用了NSUserDefaults和SQLite两种数据库.NSUserDefaults主要用来存储设备和应用的配置信息,它通过一个工厂方法返回包含用户信息的实例对象,并且把对象信息以字典的形式组织起来.本软件的用户配置信息和参数主要通过NSUser-Defaults来保存.SQLite数据库作为本药品查询软件中最主要的数据存储方式.所有查询记录信息、科普文章相关信息以及用户相关信息都存储在SQLite数据库文件中,该SQLite数据库文件名为MedicineSearch.sqlitedb.

4.2 数据库表设计

在本项目的SQLite数据库中,主要有查询记录表m_search_record,文章收藏表m_article_collect和藥箱药品表m_cabinet_ medicine.下面以几个数据库表来展示数据库的设计:

5 药品查询软件的设计与实现

根据系统的需求分析与设计,本软件重点设计并实现了查询、内容浏览和用户收藏等功能,下面着重介绍这3个功能模块在iOS开发平台下的设计与实现.

5.1 查询功能模块实现

查询功能模块作为本软件的核心功能,提供了药品、疾病、文章等内容的查询功能.根据用户的输入内容,调用网络访问模块从服务器中加载相关资源数据.

5.1.1 基本查询 该功能设计了两种查询方式,一方面用户可以通过主界面的搜索框直接搜索查询;另一方面还可以根据常见病症的分类进行查询.当用户通过这两种方式进行搜索时,当前控制器会初始化一个用于显示搜索结果的视图控制器,同时调用网络访问模块将结果数据传送过去.由于加载的结果数据分为3种类型,UITableView需要构造3种不同的section,使得不同section里的cell具有不同的风格,如药品类的cell需要显示图标和文字,文章类则需要图片和文字,而疾病类只需要显示文字信息.如果使用3个不同的UITableView来实现,会使得代码的冗余度较高,而且对内容加载的效率也有影响.因此考虑使用单个UITableView来实现这种效果.在iOS开发中,UITableView中的cell具有复用机制使得具有相同id属性的cell会被重复使用,因此要使用不同风格的cell就需要改变不同种cell中的id属性,实现一个UITableView中设置3种cell的复用,从而达到显示3种不同风格的cell的效果.

5.1.2 虚假药品查询 对涉及虚假广告的药品进行鉴别查询,当用户输入内容进行查询时,控制器通过网络访问模块与服务器通讯获取搜索结果,同时初始化一个UITableView列表来显示查询结果.用户点击该列表的子项时,当前界面会初始化一个视图控制器并加载服务端返回的虚假药品详情数据.

5.1.3 药店查询 为实现该功能,在开发前需要导入〈MapKit/MapKit.h〉和〈CoreLocation/CoreLocation.h〉两个工具包,其中〈MapKit/MapKit.h〉实现地图主要功能,而〈CoreLocation/CoreLocation.h〉则负责地图的定位.软件首先通过手机的定位功能获取用户当前的位置信息,然后将定位信息通过网络访问模块发送到服务器端接口,服务端经过处理后返回附近药店的地理信息并将这些信息合理地标注在界面的地图视图上.

地图视图控制器中的药店坐标采用地图中常见的大头针进行标注.为方便用户对药店信息的查看,本模块对地图中的大头针进行了重新设计,当用户点击大头针时会出现以气泡形式注释的地点信息.由于手机屏幕尺寸的局限,当地图中的坐标点较多较密集时,用户对坐标的点击会变得相对困难,因此在地图界面中设计了一个右侧隐藏的UITableView列表,用于列出查询到的全部药店的信息,以便用户根据实际情况对药店进行选择和比较.

5.2 内容浏览模块实现

内容浏览模块负责根据用户查询结果显示相关内容,它通过网络访问模块加载药品、疾病、文章、地图信息等相关数据,当用户需要浏览时对这些数据进行格式排版使其合理显示在设备屏幕上.其中疾病信息的浏览扩展了治疗方案和相关药品的内容,文章信息的浏览则扩展了健康专题的内容.

5.3 用户收藏模块实现

用户收藏模块提供了对药品和文章信息进行收藏和管理的功能.药品收藏功能提供了自定义药品的收藏和推荐常备药功能.实现方法为初始化一个FMDB数据库操作对象,然后通过该对象调用查询方法和相关的SQL语句对SQLite数据库进行查询.常备药品信息的浏览则调用药品信息浏览功能,根据用户选择的药品跳转到相应的药品信息浏览界面.而文章收藏功能,实现存储用户在使用过程中收藏过的文章,其实现方法与药品收藏功能所实现的技术是一样的,但文章除需要保存文章信息外还需保存文章的图片,所以采取把图片资源保存在服务器端,在本地则以图片地址的形式保存.当用户查看文章列表时,软件先通过查询数据库获得文章图片的网络地址,再根据网络地址获取图片资源加载到文章列表上.

6 系统测试与分析

6.1 测试环境

本文的测试环境主要使用的工具有Mac电脑和iOS设备.Mac系统为OS X 10.9 Mavericks.开发工具版本为Xcode 5.1.1,iPhone 4s,iOS设备为iPhone 4s,系统为iOS 7,屏幕:3.5寸,CPU主频800 MHz,内存:512RAM.支持网络:2G(GPRS),3G(WCDMA)和Wi-Fi.网络设备为无线路由器,接入Internet网络.

6.2 性能测试

本软件的测试过程分为3个部分,分别是单元测试、功能测试和性能测试.下面仅介绍性能测试.

性能测试主要从时间和空间两个方面进行,其中时间性能从软件的流畅性出发,主要研究软件对于用户操作的响应时间以及是否有卡顿、不流畅的现象.空间性能则主要指软件运行时消耗的资源情况如CPU使用情况、内存使用情况等.本项目的性能测试通过在真机中部署应用程序,模拟软件在真实场景中运行使用一段时间,并对运行过程中内存占用情况与内存泄露情况的相关数据进行跟踪研究.Xcode开发工具内置了一个测试工具Instruments,该工具能较为方便地追踪软件运行过程中的数据并以图形化的界面直观地显示出来,这些数据包括内存占用,CPU占用,内存泄露等.

6.3 测试结果

随着程序的运行和用户的使用,程序占用的内存随着加载的数据增加,而CPU则一直表现为平稳的低占用状态,在数据量较大的模块如地图查询才会出现较高内存和CPU的占用,而从Instruments的数据中发现程序并没有发生内存泄露.虽然内存占用刚开始在10M左右徘徊,但随着程序功能的逐步使用内存消耗不断增加,最终长时间稳定在60M左右,该数据对于移动设备来说还是比较高,这也是程序今后需要改进的地方.经过测试,结果显示项目已经达到了预期的设计目标,满足设计的需求.但是软件的一些细节设计与可能出现的漏洞还需要在后续的更新和使用中进一步完善.下面是3个部分测试结果:

①单元测试阶段:共测试133个测试用例,通过133个,失败0个,错误0个.

②功能测试阶段:本软件所有功能测试用例在已有的iOS设备上均可正常运行,没有出现错误情况.

③性能测试阶段:具体测试结果如下表6所示.

参考文献:

[1] Apple Inc. iOS参考库[EB/OL].(2011-05-01)[2016-12-01]. http://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html//apple-ref/doc/uid/TP4000789.

[2] Cocoa China. iOS開发系列之iOS SDK实例教程[EB/OL].(2013-05-17)[2016-12-03]. http://www.cocoachina.com/ios./20130517/6229.html.

[3] Apple. Xcode Over view:About Xcode[EB/OL].(2014-10-20)[2016-12-03].https://developer.apple.com/library/mac/documentation/Too lsLanguages/Conceptual/Xcode_Overview.

[4] 科施恩.Objective-C 2.0程序设计[M].张波,黄湘琴.北京:机械工业出版社,2009.

[5] CHUNG C.Pro Objective-C design patterns for iOS[M].Los Angeles:Apress, 2011.

[6] 徐 明,陈广宇.iOS平台多媒体短信系统开发的设计模式研究[J].微电子学与计算机,2012,29(11):112-115.

[7] JOSH C. 触动人心——设计优秀的iPhone应用[M].包季真,译.北京:电子工业出版社,2011.

[8] 互动百科.MVC[DB/OL]. (2015-03-15)[2016-12-03].http://www.hudong.com/wiki/MVC.

[9] 郭 欣.构建高性能Web站点[M].北京:电子工业出版社,2009.

[10] DALRYMPLE M, KNASTER S. Learn Objective-C on the Mac[M].Los Angeles:Apress, 2009.

[11] 王 珊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006.

猜你喜欢
软件开发
基于安卓平台的移动式教学模式研究
软件开发中JAVA编程语言的应用
信息安全环境下的计算机软件开发研究
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用