王月梅
本系統基于iOS平臺,采用http通信方式,運用C/S開發模式并以Foundation與UNKit作為系統的核心框架,輔以MapKit,OpenGLES,MessageUI等實現地圖展示與信息分享。系統數據持久化采用文件讀寫技術,對象歸檔技術實現了常用聯系人的本地化保存。使用sqlite數據庫讀寫技術實現列車信息的檢索展示。系統用UITabbarController作為整個系統的底層框架,并采用模塊化設計方式降低系統的耦合度,極大地方便了日后的維護更新。系統多處采用自定義控件,加入動畫效果,為用戶帶來良好的視覺與操作體驗。
【關鍵詞】列車旅行 iOS 第三方庫
有人說:“人生旅途,不在乎目的地,只在乎沿途的風景”。隨著經濟蓬勃發展,人們生活水平質量提高,利用節假日時間出游的人越來越多。我國鐵路的快速發展帶動了旅游業的發展,更是支撐了列車旅行這一新興的時尚的旅行方式的普及,也為列車旅行帶來多樣化的選擇。比如你可以選擇乘坐高速鐵路或者動車出行,體驗一番“N小時旅游圈”的快節奏旅游,如果你舍不下一路沿途的風景,那你可以選擇乘坐傳統的列車出行。列車旅游出行前,人們往往會認真仔細的規劃出行路線,選擇旅游目的地,了解旅游目的地的著名景點,風土人情等,同時也需要了解不同旅客對目的地的評價,以便做出判斷。所以面對這樣的列車旅行的市場前景,滿足旅客對于獲取旅游信息的需求,列車旅行系統應運而生。
1 iOS系統結構
iOS操作系統源于Apple自家的計算機操作系統OSX,它的底層是基于UNIX,雖然它的體系架構傳統,但是運行效率更高,設備對于硬件的要求低。在現有硬件條件下,能夠保證應用運行具有良好的流暢性。
iOS平臺結構一般分為四層:核心操作系統層(Core OS layer),核心服務層(Core Services layer),媒體層(Media layer),可觸摸層(Cocoa Touch layer),如圖1所示。
2 總體功能需求設計
本系統以列車旅行為主題,以iOS開發者文檔為主要技術參考資料,以UITabbarController為基礎框架結合UINavigationController實現系統界面的跳轉與業務流的處理。該系統共分為五大模塊:計劃籌備,向往站點,乘坐車次,美麗中國,以及更多這個五大模塊,用戶可以利用前面三個模塊來計劃乘坐路線,途徑站點,通過列車詳情選擇停靠站點后,又可對該站點所在城市的景點,酒店等你所感興趣的地方進行搜索,系統將以全景地圖的新式為您展示。美麗中國又為您提供了國內旅游熱點城市推薦,該城市的熱門景點的簡介,其他旅客對她的評級,選擇景點系統又會以全景地圖的形式為您展示該景點,供您對該景點是否成為你旅行的一站進行評估,同時該模塊大量使用動畫進行界面切換為用戶帶來了良好的體驗。在更多地模塊里包含了用戶登錄,還有旅客信息收藏,作為一款潛力巨大的App作品,精品推薦作為一個良好的宣傳平臺是必不可少的,同樣意見反饋可以為系統日后升級提供意見,功能結構如圖2所示。
3 系統的流程設計
該系統設計了五個功能模塊:計劃籌備模塊,向往站點模塊,乘坐車次模塊,美麗中國模塊以及更多模塊。系統的一般應用流程是用戶通過注冊登錄到系統主界面,然后通過美麗中國模塊查看熱門旅游城市和熱門旅游景點,熱門景點的簡介,以及其他旅客對景點的評價也可通過全景地圖查看景點風景從而選擇旅行的目的地,或者是自己主觀想去的目的地。在確定旅游目的地后可以通過計劃籌備模塊輸入出發地點和目的地點,查看途徑車次列表,或者是通過向往站點來搜索經過該站點的車次列表,或者直接進入乘坐車次搜索車次,選擇車次查看車次詳情,并且可以選擇是否發送信息提醒旅伴列車信息,選擇車次詳情中經過的某一站點還可對該站點所在城市的景點,酒店等進行搜索,并且系統已全景地圖展示,生動形象。用戶還可以通過更多模塊中的旅客信息收藏來收藏旅伴的身份信息,方便以后聯系與購票,還可以進入精品推薦選擇自己喜歡的應用,進入意見反饋給我們開發者提供意見。
4 系統架構的設計
列車旅行系統是以Tabbar為基本框架,采用模塊化設計,共分為五大模塊,由Tabbar來控制每個模塊之間的切換。而每個模塊對應著一個UINavigationController,每個 UINavigationController又綁定一個主UIViewController,那么每個模塊內的界面切換(UIViewController的切換),又是由UINavigationController來控制,這樣形成了分級管理,層次清晰。
5 關鍵技術與實現
系統涉及到數據庫檢索,數據持久化,網絡請求,第三方庫的使用。那么在介紹之前,我們很有必要對系統的實現技術細節進行分析和歸納。系統在實現上的結構如圖3所示共分為11部分,其中Xib是用戶交互設計文件,這里不作介紹而Resource里面保存的是圖片,計劃籌備,向往站點,乘坐車次,美麗中國,更多分別對用著五大功能模塊,而openSouse,CommonTool,DataBase,TableView是系統共用的,這里著重對這四部分進行介紹。
(1)openSouse:里面主要包括一些第三方庫如身份證識別,語音輸入,JSONKit和UIView的拓展UIViewExt。其中第三方庫的使用更多的是注意編譯問題,還有支持框架的導入,ARC于非ARC的混合編譯等,同時有些庫只支持真機調試,該部分屬于公用的。
(2)CommonTool:里面包括了通用的工具類,自定義的控件,頭文件等。其中通用工具類里面主要是一些方法,在整個項目過程中經常需要用到的一些操作,如輸入框合法性的判斷,歸檔與反歸檔函數,通用提示框的使用等,該部分屬于公用的,如圖3所示。
(3)DataBase:里面主要包括了對數據庫操作的集合類DataBase.h,以及全局單例LCQ_Global.h它主要用于程序啟動后一些全局數據的保存,里面還有列車類數據模型,精品推薦App數據模型,旅客信息數據模型等,該部分屬于公用的
(4)TableView:里面主要是系統的列表類或者是TableViewController的子類,如列車詳情信息列表ScheduleTable類在計劃籌備和向往站點,乘坐車次這幾個模塊都會用到,那么有必要它們獨立歸類,該部分屬于公用的。
5.1 計劃籌備模塊
5.1.1 模塊界面的實現
視圖控制器StationToStationViewController是該模塊的主視圖控制器,它的界面沒有使用xib布局而是采用代碼布局,這樣的好處是你可以掌控界面控件的從創建到釋放的全過程。在之后的模塊有有使用到代碼布局也有xib布局,代碼布局將不再贅述,本模塊界面實現語言輸入部分示例如圖4所示。
5.1.2 模塊功能的實現
模塊將要實現UISearchBarDelegate,UISearchDisplayDelegate,UITextFieldDelegate,
ABPeoplePickerNavigationControllerDelegate,CityTableViewControllerDelegate這五個代理,利用在代理回調中去做部分具體功能的實現。
5.2 向往站點模塊
向往站點模塊的主視圖控制器是StationSearchViewController,因為向往站點在界面,功能的實現和計劃籌備模塊大體一樣,所以本模塊的界面同樣采用代碼布局,在功能實現上的細微差別,同樣本模塊還將對計劃籌備模塊進行部分補充。
5.3 乘坐車次模塊
乘坐車次模塊的的主視圖控制器是TrainsViewController,它充當以下五個代理以實現模塊的部分功能:ISearchBarDelegate,UISearchDisplayDelegate,UITextFieldDelegate,ABPeoplePickerNavigationControllerDelegate,TrainIDViewControllerDelegate,本模塊的實現與前面兩個模塊實現基本一致,所以本模塊只對細節實現上去區別進行介紹
(1)點擊搜索按鈕后對數據庫的檢索,如圖5所示。
(2)用戶點擊搜索欄的BookButtonItem后,系統對數據庫進行檢索所有列車車次并展示, 如圖6所示。
5.4 美麗中國模塊
美麗中國模塊的主界面布局采用xib布局方式但模塊里面功能的具體實現使用代碼實現的,包括各種動畫等。和傳統的代碼布局相比,xib界面布局的效率更高,節省更多代碼。但是需要注意的是xib布局要求開發者對控件要熟悉,同時自己無法完全掌握控件的創建與銷毀的整個過程,為項目的調試帶來一定的不方便。下面將對本模塊的實現進行簡單地介紹。
在主界面中選擇某一城市后,進入城市熱門景點的展示,在加載表ListView的時候注意的是表的cell是自定義cell同時配合自定義的數據模型對cell進行賦值與列車信息,海報視圖是PosterView的實例,PosterView主要實現的效果是兩個海報圖聯動,實現的原理是兩個ScrollerView的相互綁定。
6 結束語
基于ISO技術設計并開發的旅行系統APP平臺,框架設計較為全面,有許多適用便捷的功能模塊,比如語音搜索,身份證掃描,信息自動獲取等,在頁面UI設計方面頁做到了盡善盡美,能給客戶帶來更簡單便捷,更舒適的體驗。
參考文獻
[1][美]Carlo Chung著.Objective-C編程之道:iOS設計模式解析[M].北京:人民郵電出版社,2011.
[2]關東升.iOS開發指南[M].北京:人民郵電出版社,2013.
[3][美]Dave Mark Jack Nutting Jeff LaMarche著.IOS 5基礎教程[M].北京:人民郵電出版社,2012.
[4]王志剛,王元中,朱蕾著.iPhone UIKit詳解[M].北京:電子工業出版社,2012.
[5]Erica Sadun.iPhone開發秘籍[M].北京:人民郵電出版社,2009.
[6][美]艾倫,[美]阿佩爾克萊因. iPhone開發實戰[M].北京:人民郵電出版社,2009.
[7]控件UITableView官方文檔[OL].
[8]iOS發送E-mail兩種方法[OL].http://luoyl.info/blog/2012/04/two-way-to-send-email-in-ios/
[9]陳汶濱,朱小梅,任冬梅.軟件測試技術基礎[M].北京:清華大學出版社,2014.
作者單位
惠州城市職業學院 廣東省惠州市 516000