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