国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

iOS平臺下藥品信息查詢軟件的設(shè)計與實現(xiàn)

2017-07-01 17:14莫朵朵詹秀菊
關(guān)鍵詞:軟件開發(fā)

莫朵朵+詹秀菊

摘 要 傳統(tǒng)的藥品信息查詢?nèi)菀走z漏信息且查詢效率低下,為提升用戶體驗及對癥用藥的準(zhǔn)確性和效率,本研究開發(fā)一款基于iOS平臺的藥品信息查詢軟件,使用戶通過手機(jī)終端快速查詢所需藥品及相關(guān)健康信息,創(chuàng)建個人藥箱.軟件使用的開發(fā)語言為Objective-C,開發(fā)技術(shù)有AFNetworking網(wǎng)絡(luò)通信技術(shù)、FMDB連接SQLite數(shù)據(jù)庫技術(shù)以及Map Kit地圖技術(shù)等.軟件可以快速的查詢藥品信息,擴(kuò)展手機(jī)應(yīng)用于醫(yī)療領(lǐng)域的功能.

關(guān)鍵詞 iOS平臺; 藥品查詢; 軟件開發(fā)

中圖分類號 TP311 文獻(xiàn)標(biāo)識碼 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

本研究開發(fā)基于iOS平臺的藥品信息查詢軟件,利用iPhone手機(jī)軟件實現(xiàn)查詢藥品相關(guān)信息的功能,如藥品查詢、病癥查詢、健康科普、藥店查詢、藥箱管理等功能,這不僅提高了藥品查詢的效率,而且增強(qiáng)了用戶對藥品相關(guān)信息的了解.與網(wǎng)絡(luò)程序不同,本地應(yīng)用程序安裝在設(shè)備上,因此用戶可以隨時使用,即使設(shè)備處于航空模式[1].

1 開發(fā)環(huán)境

本軟件使用的操作系統(tǒng)為蘋果Mac OS X 10.9,開發(fā)前需要對iOS開發(fā)環(huán)境進(jìn)行搭建.iOS SDK是開發(fā)iPhone和iPad軟件程序過程中必不可少的軟件開發(fā)包[2],軟件所需的全部接口、工具以及資源全都包含于SDK中.iOS SDK中包含的重要組件有Xcode, Interface Builder, Instruments和iPhone模擬器和iOS參考庫,其中Xcode作為一個集成的開發(fā)環(huán)境(IDE),為開發(fā)者提供由程序的創(chuàng)建、測試、優(yōu)化以及提交至App Store的整個工作流的管理工具[3].Interface Builder則是以可視化方式設(shè)計和測試用戶界面(GUI)的工具.Instruments是運行時性能分析和調(diào)試工具.iPhone模擬器是Mac OS X平臺軟件程序,它對iOS技術(shù)棧進(jìn)行模擬,便于開發(fā)者可以在基于Intel的Macintosh計算機(jī)上測試iOS軟件程序.iOS參考庫為默認(rèn)包含iOS開發(fā)過程中所需的參考文檔、示例代碼等幫助信息.文檔庫的更新會被自動下載到本地參考庫,開發(fā)者可以方便的在Xcode中查看參考庫相關(guān)信息.

2 開發(fā)語言和相關(guān)技術(shù)

本軟件使用語言為Objective-C,簡稱OC,它是Mac OS 和iOS平臺應(yīng)用開發(fā)的標(biāo)準(zhǔn)語言,同其他的面向?qū)ο笳Z言一樣,具有封裝、繼承、多態(tài)等特點[4].但它也有自己的明顯特征,比如,它對動態(tài)機(jī)制的支持更為徹底,編譯器為運行環(huán)境保留了很多對象本身的數(shù)據(jù)信息,因此某些在編譯時需要做出的選擇可以推遲到運行時再決定[5].本軟件開發(fā)過程中使用到的技術(shù)有AFNetworking網(wǎng)絡(luò)通信技術(shù),F(xiàn)MDB連接SQLite數(shù)據(jù)庫技術(shù)和Map Kit地圖技術(shù)等.其中AFNetworking是一個為iOS和Mac OS X操作系統(tǒng)設(shè)計的網(wǎng)絡(luò)通信框架,具有模塊化的構(gòu)建方式和豐富功能的API.本軟件主要采用SQLite方式存儲數(shù)據(jù),以FMDB作為SQLite的封裝,通過接口方便的實現(xiàn)數(shù)據(jù)庫的增、刪、改、查等操作.

3 系統(tǒng)結(jié)構(gòu)設(shè)計

本軟件的開發(fā)利用了已有醫(yī)藥網(wǎng)站的數(shù)據(jù)庫數(shù)據(jù),并在這些數(shù)據(jù)的基礎(chǔ)上設(shè)計適用于iOS應(yīng)用的服務(wù)器接口和基于iOS平臺的客戶端程序.

3.1 系統(tǒng)整體結(jié)構(gòu)

iOS客戶端基于Http網(wǎng)絡(luò)協(xié)議向服務(wù)器端發(fā)送數(shù)據(jù)請求,服務(wù)器端根據(jù)請求與數(shù)據(jù)庫進(jìn)行通訊并返回Json對象數(shù)據(jù),客戶端接收返回的Json對象并進(jìn)行解析,從而實現(xiàn)客戶端與服務(wù)器端的數(shù)據(jù)交互.系統(tǒng)整體結(jié)構(gòu)如圖1所示.

3.1.1 iOS客戶端 客戶端包含的主要功能模塊有導(dǎo)航菜單模塊:提供導(dǎo)航欄,使用戶可以通過底部的導(dǎo)航菜單快捷地切換不同的功能界面.查詢功能模塊:作為軟件的核心功能提供藥品、疾病、文章等內(nèi)容的查詢功能.內(nèi)容瀏覽模塊:負(fù)責(zé)根據(jù)用戶查詢結(jié)果顯示相關(guān)內(nèi)容,它通過網(wǎng)絡(luò)訪問模塊加載藥品、疾病、文章、地圖信息等相關(guān)數(shù)據(jù).用戶收藏模塊:提供對藥品和文章信息進(jìn)行收藏和管理的功能網(wǎng)絡(luò)訪問模塊管理著各種Web服務(wù)接口,方便其他模塊能夠調(diào)用接口與服務(wù)器通訊從而提供的各種服務(wù).數(shù)據(jù)庫查詢模塊:實現(xiàn)增、刪、查、改等基本的數(shù)據(jù)庫操作.如圖2所示.

3.1.2 iOS服務(wù)端 系統(tǒng)的服務(wù)端包含網(wǎng)站的服務(wù)器和數(shù)據(jù)庫,以及針對客戶端設(shè)計的Web服務(wù)接口3部分.網(wǎng)站服務(wù)器主要用于用戶對Web站點的訪問,數(shù)據(jù)庫服務(wù)器為網(wǎng)站提供數(shù)據(jù)的存儲和管理服務(wù),Web服務(wù)接口則用于與iOS 客戶端的通訊服務(wù),使得客戶端能夠與網(wǎng)站服務(wù)器共享數(shù)據(jù)庫的數(shù)據(jù)以及使用服務(wù)器所提供的其他服務(wù).

3.2 MVC模式設(shè)計

MVC即Model-View-Controller,即把一個應(yīng)用的輸入、處理、輸出流程按照Model,View和Controller的方式進(jìn)行分離,這樣一個應(yīng)用被分成3個層——模型層、視圖層、控制層[6].iOS平臺應(yīng)用程序主要采用MVC設(shè)計模式作為總體設(shè)計框架.MVC一個更為合理的縮寫應(yīng)該是MdMaVC[7],作為iOS開發(fā)中最主要使用的設(shè)計模式之一,貫穿于整個iOS應(yīng)用程序的設(shè)計之中.MVC對于視圖處理僅限于采集所需要的數(shù)據(jù)和對用戶請求進(jìn)行處理,而并不包括業(yè)務(wù)流程的處理,視圖上的業(yè)務(wù)流由模型部分來進(jìn)行處理[8].它包括3個部分:模型(Model)、視圖(View)和控制器(Controller),分別對應(yīng)于內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入輸出控制部分.圖3描述了MVC模式3個部件之間的交互過程.

3.2.1 視圖(View) 視圖是直接面向用戶的界面,在接收用戶的操作并向控制器反映的同時接受控制器返回的數(shù)據(jù)并顯示在可視化界面上.本項目的大部分視圖采用XIB文件進(jìn)行設(shè)計,XIB文件以XML格式保存了界面布局的相關(guān)屬性,如控件的位置,大小等數(shù)據(jù).大部分時候,我們都可以直接通過XCode來對XIB文件進(jìn)行編輯[9].通過利用Xcode對XIB文件進(jìn)行可視化編輯,減少大量布局代碼帶來的麻煩,提高項目開發(fā)的效率.

3.2.2 模型(Model) 模型用來保存通過數(shù)據(jù)源和數(shù)據(jù)含義等協(xié)議提供數(shù)據(jù),供控制器和視圖調(diào)用.本項目的模型層通過定義各種數(shù)據(jù)類型來存儲相關(guān)數(shù)據(jù),如藥品的相關(guān)信息、文章信息以及用戶信息等.通過把數(shù)據(jù)模型獨立封裝起來,降低了程序的耦合性.

3.2.3 控制器(Controller) 控制器充當(dāng)連接視圖與模型的媒介,實現(xiàn)兩者之間的間接通訊.在iOS應(yīng)用程序開發(fā)中,控制器一方面接受視圖傳過來的事件并進(jìn)行響應(yīng),另一方面控制器使用模型來渲染對應(yīng)的視圖[10].本項目的控制器層中使用到了較多的控制器類,主要定義各種應(yīng)用界面和服務(wù)的接口,以便對視圖傳遞過來的操作進(jìn)行相應(yīng)處理,從而實現(xiàn)接口提供的各種服務(wù).

4 數(shù)據(jù)庫設(shè)計

數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造(設(shè)計)優(yōu)化的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu),并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求[11].

4.1 基本存儲方式

本項目的數(shù)據(jù)存儲主要使用了NSUserDefaults和SQLite兩種數(shù)據(jù)庫.NSUserDefaults主要用來存儲設(shè)備和應(yīng)用的配置信息,它通過一個工廠方法返回包含用戶信息的實例對象,并且把對象信息以字典的形式組織起來.本軟件的用戶配置信息和參數(shù)主要通過NSUser-Defaults來保存.SQLite數(shù)據(jù)庫作為本藥品查詢軟件中最主要的數(shù)據(jù)存儲方式.所有查詢記錄信息、科普文章相關(guān)信息以及用戶相關(guān)信息都存儲在SQLite數(shù)據(jù)庫文件中,該SQLite數(shù)據(jù)庫文件名為MedicineSearch.sqlitedb.

4.2 數(shù)據(jù)庫表設(shè)計

在本項目的SQLite數(shù)據(jù)庫中,主要有查詢記錄表m_search_record,文章收藏表m_article_collect和藥箱藥品表m_cabinet_ medicine.下面以幾個數(shù)據(jù)庫表來展示數(shù)據(jù)庫的設(shè)計:

5 藥品查詢軟件的設(shè)計與實現(xiàn)

根據(jù)系統(tǒng)的需求分析與設(shè)計,本軟件重點設(shè)計并實現(xiàn)了查詢、內(nèi)容瀏覽和用戶收藏等功能,下面著重介紹這3個功能模塊在iOS開發(fā)平臺下的設(shè)計與實現(xiàn).

5.1 查詢功能模塊實現(xiàn)

查詢功能模塊作為本軟件的核心功能,提供了藥品、疾病、文章等內(nèi)容的查詢功能.根據(jù)用戶的輸入內(nèi)容,調(diào)用網(wǎng)絡(luò)訪問模塊從服務(wù)器中加載相關(guān)資源數(shù)據(jù).

5.1.1 基本查詢 該功能設(shè)計了兩種查詢方式,一方面用戶可以通過主界面的搜索框直接搜索查詢;另一方面還可以根據(jù)常見病癥的分類進(jìn)行查詢.當(dāng)用戶通過這兩種方式進(jìn)行搜索時,當(dāng)前控制器會初始化一個用于顯示搜索結(jié)果的視圖控制器,同時調(diào)用網(wǎng)絡(luò)訪問模塊將結(jié)果數(shù)據(jù)傳送過去.由于加載的結(jié)果數(shù)據(jù)分為3種類型,UITableView需要構(gòu)造3種不同的section,使得不同section里的cell具有不同的風(fēng)格,如藥品類的cell需要顯示圖標(biāo)和文字,文章類則需要圖片和文字,而疾病類只需要顯示文字信息.如果使用3個不同的UITableView來實現(xiàn),會使得代碼的冗余度較高,而且對內(nèi)容加載的效率也有影響.因此考慮使用單個UITableView來實現(xiàn)這種效果.在iOS開發(fā)中,UITableView中的cell具有復(fù)用機(jī)制使得具有相同id屬性的cell會被重復(fù)使用,因此要使用不同風(fēng)格的cell就需要改變不同種cell中的id屬性,實現(xiàn)一個UITableView中設(shè)置3種cell的復(fù)用,從而達(dá)到顯示3種不同風(fēng)格的cell的效果.

5.1.2 虛假藥品查詢 對涉及虛假廣告的藥品進(jìn)行鑒別查詢,當(dāng)用戶輸入內(nèi)容進(jìn)行查詢時,控制器通過網(wǎng)絡(luò)訪問模塊與服務(wù)器通訊獲取搜索結(jié)果,同時初始化一個UITableView列表來顯示查詢結(jié)果.用戶點擊該列表的子項時,當(dāng)前界面會初始化一個視圖控制器并加載服務(wù)端返回的虛假藥品詳情數(shù)據(jù).

5.1.3 藥店查詢 為實現(xiàn)該功能,在開發(fā)前需要導(dǎo)入〈MapKit/MapKit.h〉和〈CoreLocation/CoreLocation.h〉兩個工具包,其中〈MapKit/MapKit.h〉實現(xiàn)地圖主要功能,而〈CoreLocation/CoreLocation.h〉則負(fù)責(zé)地圖的定位.軟件首先通過手機(jī)的定位功能獲取用戶當(dāng)前的位置信息,然后將定位信息通過網(wǎng)絡(luò)訪問模塊發(fā)送到服務(wù)器端接口,服務(wù)端經(jīng)過處理后返回附近藥店的地理信息并將這些信息合理地標(biāo)注在界面的地圖視圖上.

地圖視圖控制器中的藥店坐標(biāo)采用地圖中常見的大頭針進(jìn)行標(biāo)注.為方便用戶對藥店信息的查看,本模塊對地圖中的大頭針進(jìn)行了重新設(shè)計,當(dāng)用戶點擊大頭針時會出現(xiàn)以氣泡形式注釋的地點信息.由于手機(jī)屏幕尺寸的局限,當(dāng)?shù)貓D中的坐標(biāo)點較多較密集時,用戶對坐標(biāo)的點擊會變得相對困難,因此在地圖界面中設(shè)計了一個右側(cè)隱藏的UITableView列表,用于列出查詢到的全部藥店的信息,以便用戶根據(jù)實際情況對藥店進(jìn)行選擇和比較.

5.2 內(nèi)容瀏覽模塊實現(xiàn)

內(nèi)容瀏覽模塊負(fù)責(zé)根據(jù)用戶查詢結(jié)果顯示相關(guān)內(nèi)容,它通過網(wǎng)絡(luò)訪問模塊加載藥品、疾病、文章、地圖信息等相關(guān)數(shù)據(jù),當(dāng)用戶需要瀏覽時對這些數(shù)據(jù)進(jìn)行格式排版使其合理顯示在設(shè)備屏幕上.其中疾病信息的瀏覽擴(kuò)展了治療方案和相關(guān)藥品的內(nèi)容,文章信息的瀏覽則擴(kuò)展了健康專題的內(nèi)容.

5.3 用戶收藏模塊實現(xiàn)

用戶收藏模塊提供了對藥品和文章信息進(jìn)行收藏和管理的功能.藥品收藏功能提供了自定義藥品的收藏和推薦常備藥功能.實現(xiàn)方法為初始化一個FMDB數(shù)據(jù)庫操作對象,然后通過該對象調(diào)用查詢方法和相關(guān)的SQL語句對SQLite數(shù)據(jù)庫進(jìn)行查詢.常備藥品信息的瀏覽則調(diào)用藥品信息瀏覽功能,根據(jù)用戶選擇的藥品跳轉(zhuǎn)到相應(yīng)的藥品信息瀏覽界面.而文章收藏功能,實現(xiàn)存儲用戶在使用過程中收藏過的文章,其實現(xiàn)方法與藥品收藏功能所實現(xiàn)的技術(shù)是一樣的,但文章除需要保存文章信息外還需保存文章的圖片,所以采取把圖片資源保存在服務(wù)器端,在本地則以圖片地址的形式保存.當(dāng)用戶查看文章列表時,軟件先通過查詢數(shù)據(jù)庫獲得文章圖片的網(wǎng)絡(luò)地址,再根據(jù)網(wǎng)絡(luò)地址獲取圖片資源加載到文章列表上.

6 系統(tǒng)測試與分析

6.1 測試環(huán)境

本文的測試環(huán)境主要使用的工具有Mac電腦和iOS設(shè)備.Mac系統(tǒng)為OS X 10.9 Mavericks.開發(fā)工具版本為Xcode 5.1.1,iPhone 4s,iOS設(shè)備為iPhone 4s,系統(tǒng)為iOS 7,屏幕:3.5寸,CPU主頻800 MHz,內(nèi)存:512RAM.支持網(wǎng)絡(luò):2G(GPRS),3G(WCDMA)和Wi-Fi.網(wǎng)絡(luò)設(shè)備為無線路由器,接入Internet網(wǎng)絡(luò).

6.2 性能測試

本軟件的測試過程分為3個部分,分別是單元測試、功能測試和性能測試.下面僅介紹性能測試.

性能測試主要從時間和空間兩個方面進(jìn)行,其中時間性能從軟件的流暢性出發(fā),主要研究軟件對于用戶操作的響應(yīng)時間以及是否有卡頓、不流暢的現(xiàn)象.空間性能則主要指軟件運行時消耗的資源情況如CPU使用情況、內(nèi)存使用情況等.本項目的性能測試通過在真機(jī)中部署應(yīng)用程序,模擬軟件在真實場景中運行使用一段時間,并對運行過程中內(nèi)存占用情況與內(nèi)存泄露情況的相關(guān)數(shù)據(jù)進(jìn)行跟蹤研究.Xcode開發(fā)工具內(nèi)置了一個測試工具Instruments,該工具能較為方便地追蹤軟件運行過程中的數(shù)據(jù)并以圖形化的界面直觀地顯示出來,這些數(shù)據(jù)包括內(nèi)存占用,CPU占用,內(nèi)存泄露等.

6.3 測試結(jié)果

隨著程序的運行和用戶的使用,程序占用的內(nèi)存隨著加載的數(shù)據(jù)增加,而CPU則一直表現(xiàn)為平穩(wěn)的低占用狀態(tài),在數(shù)據(jù)量較大的模塊如地圖查詢才會出現(xiàn)較高內(nèi)存和CPU的占用,而從Instruments的數(shù)據(jù)中發(fā)現(xiàn)程序并沒有發(fā)生內(nèi)存泄露.雖然內(nèi)存占用剛開始在10M左右徘徊,但隨著程序功能的逐步使用內(nèi)存消耗不斷增加,最終長時間穩(wěn)定在60M左右,該數(shù)據(jù)對于移動設(shè)備來說還是比較高,這也是程序今后需要改進(jìn)的地方.經(jīng)過測試,結(jié)果顯示項目已經(jīng)達(dá)到了預(yù)期的設(shè)計目標(biāo),滿足設(shè)計的需求.但是軟件的一些細(xì)節(jié)設(shè)計與可能出現(xiàn)的漏洞還需要在后續(xù)的更新和使用中進(jìn)一步完善.下面是3個部分測試結(jié)果:

①單元測試階段:共測試133個測試用例,通過133個,失敗0個,錯誤0個.

②功能測試階段:本軟件所有功能測試用例在已有的iOS設(shè)備上均可正常運行,沒有出現(xiàn)錯誤情況.

③性能測試階段:具體測試結(jié)果如下表6所示.

參考文獻(xiàn):

[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開發(fā)系列之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程序設(shè)計[M].張波,黃湘琴.北京:機(jī)械工業(yè)出版社,2009.

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

[6] 徐 明,陳廣宇.iOS平臺多媒體短信系統(tǒng)開發(fā)的設(shè)計模式研究[J].微電子學(xué)與計算機(jī),2012,29(11):112-115.

[7] JOSH C. 觸動人心——設(shè)計優(yōu)秀的iPhone應(yīng)用[M].包季真,譯.北京:電子工業(yè)出版社,2011.

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

[9] 郭 欣.構(gòu)建高性能Web站點[M].北京:電子工業(yè)出版社,2009.

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

[11] 王 珊.數(shù)據(jù)庫系統(tǒng)概論(第四版)[M].北京:高等教育出版社,2006.

猜你喜歡
軟件開發(fā)
基于安卓平臺的移動式教學(xué)模式研究
軟件開發(fā)中JAVA編程語言的應(yīng)用
信息安全環(huán)境下的計算機(jī)軟件開發(fā)研究
核電廠定期試驗管理軟件開發(fā)
FPGA軟件開發(fā)過程中編碼規(guī)范的作用