基于IOS開發(fā)的手機旅游客戶端-旅游管理論文_第1頁
基于IOS開發(fā)的手機旅游客戶端-旅游管理論文_第2頁
基于IOS開發(fā)的手機旅游客戶端-旅游管理論文_第3頁
基于IOS開發(fā)的手機旅游客戶端-旅游管理論文_第4頁
基于IOS開發(fā)的手機旅游客戶端-旅游管理論文_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

8/8基于IOS開發(fā)的手機旅游客戶端-旅游管理論文

中圖分類號:TN929文獻標識碼:A文章編號:1009-3044(2023)06-0223-04

時代在進步,科技在發(fā)展,手機的作用已經(jīng)不僅僅是打電話,發(fā)短信,其擔(dān)任的更重要的角色是人們信息的提供者,所以手機應(yīng)用行業(yè)逐漸成為熱門行業(yè),現(xiàn)如今移動應(yīng)用的開發(fā)產(chǎn)業(yè)充斥著人們的生活,現(xiàn)在主要的幾大移動平臺有如下幾個:iOS平臺、Android平臺、mobileweb(WAP/XHTML/CSS/Javascript)。其中安卓(Android)具有開放性,多任務(wù),畫面流暢,硬件設(shè)備性能優(yōu)良等優(yōu)點,占據(jù)了智能機市場的絕大部分。但是安卓產(chǎn)品的兼容性較差,有些產(chǎn)品華而不實,用戶體驗較差。就目前而言,其他平臺的市場占有率正在呈下降趨勢,而近iOS產(chǎn)品的市場占有率正在上升。

隨著蘋果產(chǎn)品的不斷更新,相應(yīng)的各類應(yīng)用的開發(fā)也越來越火爆。就目前而言,iOS在智能手機的應(yīng)用軟件中的下載量占了33%,另外,iOS平板電腦應(yīng)用的下載量占據(jù)75%,所以,iOS的相關(guān)應(yīng)用軟件有著龐大的消費群體。由于iOS的應(yīng)用夠創(chuàng)意,夠?qū)嵱茫脩羧后w龐大,iOS軟件發(fā)展形勢樂觀,致使許多開發(fā)者投身其中。隨著人們生活品質(zhì)的提高,生活節(jié)奏的加快,更加注重詩句感官的效果。基于這種現(xiàn)狀,開發(fā)一款旅游類的手機應(yīng)用,為用戶提供詳細的出行信息,旅游信息的介紹,滿足用戶足不出戶就可以右邊全世界的需求是十分符合市場規(guī)律的。整個項目使用基于Foundation框架下得Objective-C?Z言編寫的,使用基于UIKit框架下的UI設(shè)計搭建的用戶界面來與用戶交流,通過使用每個類之間的接口文件關(guān)聯(lián)多個類,使用MapKit框架和CoreLocation框架下來實現(xiàn)地圖定位功能,使用訊飛語音實現(xiàn)了語音錄入功能,使用本地數(shù)據(jù)庫SQLite存儲用戶信息以及收藏的景點信息,除此之外還使用Quartz框架,SystemConfiguration框架,CoreFoundation框架等輔助完成本項目。

本應(yīng)用程序的設(shè)計目標是開發(fā)一款具有界面友好的,注重安全性的,用戶體驗良好的,易于擴展和維護的手機APP。

1界面設(shè)計

1)推薦界面。分為火熱推薦以及趣季推薦兩個部分。該界面整體是一個表視圖,首頁默認顯示北京熱門地點推薦,用戶點擊其他城市跳轉(zhuǎn)到相應(yīng)界面。界面要做到功能齊全,簡介不冗余并且簡單易于用戶操作。

2)目的地界面。該界面是總體介紹世界各地的界面,分為國內(nèi)城市、熱門城市、港澳臺、歐洲國家、亞洲國家以及美洲和大洋洲這幾大模塊,點擊每個模塊時候跳轉(zhuǎn)到相應(yīng)的詳情介紹界面。

3)主題游界面。該界面整體是一個表視圖,展示不同的游玩的主題,點擊跳轉(zhuǎn)到詳細界面。

4)景點界面。首頁默認顯示三亞的相關(guān)景點列表,在此界面可以直接搜索想要去的景點,也可以選擇想要去的城市并展示相應(yīng)城市的景點列表。

5)我的界面。在此界面顯示該項目的一些信息,可以在此界面登錄注冊、查看收藏信息,清除緩存等。

6)登錄界面。登錄時需要填寫用戶名和密碼,與數(shù)據(jù)庫中存儲的用戶信息進行匹配,保證了用戶安全。

2系統(tǒng)模塊

整個系統(tǒng)共分為5個打的模塊:推薦模塊、目的地模塊、主題游模塊、景點模塊、我的模塊。每個模塊實現(xiàn)的功能介紹如下:

1)推薦模塊。本模塊要實現(xiàn)的功能是為用推薦幾個熱門城市的旅游地點以及戶外的旅游信息,首頁默認顯示北京熱門地點推薦,用戶點擊其他城市跳轉(zhuǎn)到相應(yīng)界面。在顯示戶外信息的界面用戶可以根據(jù)自己的意愿選擇想要查看的城市的戶外信息。

2)目的地模塊。界面中將世界分為幾大模塊,每一個模塊中包括相應(yīng)的城市,點擊相應(yīng)的城市之后機會跳轉(zhuǎn)到該城市的景點列表界面,在此界面有地圖定位功能,可以查看該景點的周邊信息。

3)主題游模塊。該模塊為用戶提供旅游的主題,每個主題中包含相應(yīng)的景點信息。

4)景點模塊。該模塊是總體介紹世界各地的景點,可以根據(jù)自己的意愿進行搜索,搜索時有語音識別功能,說出想要查詢的景點即可,方便用戶使用。

5)我的界面。在此界面有登錄注冊功能,查看收藏信息功能,清除緩存等功能。

通過對項目進行功能需求分析,可以初步確定該項目所需的基本數(shù)據(jù)。各模塊的具體數(shù)據(jù)需求如下:

1)推薦模塊。該模塊的數(shù)據(jù)持久化使用相對應(yīng)的plist文件實現(xiàn),此文件中共有8個字典,每一個字典存儲一個熱門城市的數(shù)據(jù),其中url這一個鍵對應(yīng)的值就是我們進行網(wǎng)絡(luò)請求是的鏈接,同時也是該模塊的數(shù)據(jù)來源。

2)目的地模塊。該模塊的數(shù)據(jù)持久化使用DestinationCityList.plist文件實現(xiàn),此文件中共有8個字典,每一個字典存儲一個小模塊的數(shù)據(jù),其中url這一個鍵對應(yīng)的值就是我們進行網(wǎng)絡(luò)請求時的鏈接,同時也是該模塊的數(shù)據(jù)來源,由此得到相應(yīng)模塊的城市列表。在城市列表中點擊得到的詳情頁數(shù)數(shù)據(jù)來源于一個公共鏈接,在此鏈接中有關(guān)數(shù)據(jù)的字段是我們點擊的地點的名稱,由此得到相對應(yīng)的景點信息。3)主題游模塊。

4)景點模塊。該模塊首頁默認顯示三亞的景點信息,每個城市都有自己對應(yīng)的城市ID號,解析根據(jù)此ID得到的不同鏈接從而得到相應(yīng)的數(shù)據(jù),點擊城市列表時根據(jù)一個城市列表的鏈接進行數(shù)據(jù)請求和數(shù)據(jù)解析得到城市列表的Model類,然后將其中的id屬性通過代理回調(diào)回傳給上個鏈接的城市id,從而獲取不同城市的景點信息。

5)我的模塊。使用SQLite本地數(shù)據(jù)庫存儲注冊的用戶信息,以及用戶收藏的景點和目的地信息,用戶查看時從數(shù)據(jù)庫中調(diào)取相應(yīng)數(shù)據(jù)。

應(yīng)用程序致力于為用戶提供詳細的旅游信息,方便用戶出行,圍繞這一中心任務(wù),該應(yīng)用程序用戶分為兩種:注冊用戶和游客。

已經(jīng)注冊的用戶在使用該應(yīng)用程序時可以先進行登錄操作,然后可以收藏目的地和景點信息,并對其進行修改。注冊并已經(jīng)登錄的用戶用例圖如圖1所示:

游客指的是還沒有注冊的用戶,這些用戶只能對本應(yīng)用程序中的信息進行瀏覽不可以進行收藏操作,可以進行注冊登錄操作。游客用戶用例圖如圖2所示:

3系統(tǒng)關(guān)鍵技術(shù)

3.1Objective-C語言

Objective-C,通常寫作ObjC和Obj-C,是擴充C的面向?qū)ο缶幊陶Z言。它主要使用于MacOSX和GNUstep這兩個使用OpenStep標準的系統(tǒng)。Objective-c在運行時可以允許根據(jù)字符串名字來訪問方法和類,還可以動態(tài)鏈接和添加類[1]。

3.2Foundation框架和UIKit框架

Objective-C中的Foundation框架與Java中的SDK類庫相似,是框架的基礎(chǔ),與界面無關(guān),它提供了許多基本的各種基本數(shù)據(jù)類型、集合、操作系統(tǒng)服務(wù)的對象的類,包含了大量的API。

UIKit框架提供一系列的class來建立和管理iOS應(yīng)用程序的用戶界面接口、應(yīng)用程序?qū)ο?、事件控制、繪圖模型、窗口、視圖和用于控制觸摸屏的接口等,是基礎(chǔ)的UI類庫,與Foundation框架是Cocoa框架中的兩個比較重要的框架[2]。

3.3SQLite數(shù)據(jù)庫

SQLite是一款無數(shù)據(jù)類型的輕量級的嵌入式數(shù)據(jù)庫,具備了基本數(shù)據(jù)庫特性的數(shù)據(jù)庫文件,與其他引擎響應(yīng)式數(shù)據(jù)庫不同的是SQLite是程序驅(qū)動。SQLite包含在一個相對小的C庫中,SQLite引擎不是個程序與之通信額獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用[3]。

該項目共有5個模塊:推薦模塊、目的地模塊、主題游模塊、景點模塊和我的模塊。項目總體結(jié)構(gòu)圖如下圖3所示:

3.4系統(tǒng)總體流程圖

當(dāng)用戶作為游客即未注冊用戶使用本應(yīng)用程序時,可以對APP的各個模塊進行瀏覽,當(dāng)要進行收藏操作時,就會跳到登錄或注冊界面,完成此項操作后方可進行收藏操作。具體流程圖如下圖4所示:

3.5APP的結(jié)構(gòu)設(shè)計

3.6數(shù)據(jù)請求代碼

本應(yīng)用程序的數(shù)據(jù)均來自于網(wǎng)絡(luò)數(shù)據(jù),是通過數(shù)據(jù)鏈接直接從網(wǎng)上獲取的,并非是提前在數(shù)據(jù)庫中寫好的固定的數(shù)據(jù)。網(wǎng)絡(luò)請求使用GET方式進行請求,然后使用系統(tǒng)提供的JSON方式進行數(shù)據(jù)解析,主要代碼如下:

-(void)setData{

if([_appinternetReachableOrNot]){

if(self.url==nil){

self.url=@"http:///index2.php?a=sList2&page=1&city_id=1001&type=2";

}

NSURL*urlSrting=[NSURLURLWithString:self.url];

self.allDataArray=[NSMutableArraynew];

for(NSDictionary*dictinmodelDict[@"result"]){

BJModel*bjModel=[BJModelnew];

[bjModelsetValuesForKeysWithDictionary:dict];

[self.allDataArrayaddObject:bjModel];

dispatch_async(dispatch_get_main_queue(),^{

[self.tableView.headerendRefreshing];

[self.indicatorstopAnimating];

[self.tableViewreloadData];

});

}

}];

[dataTaskresume];

}else{

[self.tableView.headerendRefreshing];

[selfalertController];

}

}

首先判?嗤?絡(luò)是否連接,只有在有網(wǎng)的狀態(tài)下才會進行數(shù)據(jù)請求,self.url就是用于數(shù)據(jù)請求的連接,進行數(shù)據(jù)請求的步驟是:創(chuàng)建URL對象――>根據(jù)URL創(chuàng)建請求對象――>獲取當(dāng)前會話(網(wǎng)絡(luò)請求的主體內(nèi)容)――>創(chuàng)建數(shù)據(jù)請求任務(wù)――>啟動任務(wù)。在數(shù)據(jù)請求任務(wù)中有一個block塊,在這里面進行數(shù)據(jù)解析操作。

需要注意的是block塊語法在執(zhí)行數(shù)據(jù)請求操作的時候是異步操作(不影響主線程的執(zhí)行),也就是說程序在執(zhí)行到block塊的時候會同時執(zhí)行block內(nèi)部和外部的代碼,如果此時在外部要使用block內(nèi)部請求的數(shù)據(jù),數(shù)據(jù)可能為空,解決這一問題的方法就是在完成數(shù)據(jù)解析操作之后使用dispatch_async(dispatch_get_main_queue(),^{})這一方法使程序回到主線程刷新數(shù)據(jù),這樣就可以正常運行了。3.7分享功能

分享使用的是友盟第三方分享,可以將本應(yīng)用程序的內(nèi)容分享到新浪微博、豆瓣、人人等交流平臺。首先使用CocoPods導(dǎo)入友盟SDK,然后添加相應(yīng)的依賴庫,在需要分享的類中導(dǎo)入頭文件#import以及#import,分享實現(xiàn)的主要代碼如下:

NSString*shareString=[NSStringstringWithFormat:@"【%@,%@!】%@錯落的時光里,紛繁的生活中,#時遺#帶你體驗簡單的美好!",self.detailsModel.title,self.detailsModel.viceTitle,self.detailsModel.shareUrl];

[[UMSocialDatadefaultData].urlResourcesetResourceType:UMSocialUrlResourceTypeImageurl:self.detailsModel.iconUrl];

[UMSocialSnsServicepresentSnsIconSheetView:selfappKey:@"5732cc6b67e58ecfef0010be"shareText:shareStringshareImage:nilshareToSnsNames:[NSArrayarrayWithObjects:UMShareToSina,UMShareToRenren,UMShareToTencent,UMShareToDouban,nil]delegate:nil];

}

-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity*)response

{

if(response.responseCode==UMSResponseCodeSuccess)

{

NSLog(@"sharetosnsnameis%@",[[response.dataallKeys]objectAtIndex:0]);

}else{

NSLog(@"%d",response.responseCode);

}

提前設(shè)置好需要分享的內(nèi)容,然后UMSociaSnsService調(diào)用presentSnsIconSheetView:appKey:shareText:shareImage:shareToSnsNames:方法將需要分享的文字、圖片分享到各個平臺。

3.8語音功能

本應(yīng)用程序提供語音識別功能,需要使用CocoPods導(dǎo)入iflyMSC框架,然后在Appdelegate類中注冊初始化語音通訊,在需要使用語音識別的類中導(dǎo)入頭文件#import"iflyMSC/IFlyRecognizerViewDelegate.h"、#import"iflyMSC/IFlyRecognizerView.h"以及#import"iflyMSC/IFlySpeechConstant.h",然后需要遵循IFlyRecognizerViewDelegate協(xié)議,點擊語音按鈕之后會調(diào)用按鈕的觸發(fā)方法-(void)voiceAction:(UIButton*)button,開始語音識別,然后調(diào)用相應(yīng)的協(xié)議方法-(void)onResult:(NSArray*)resultArrayisLast:(BOOL)isLast;獲取所說的話并將其賦值給搜索文本框,主要實現(xiàn)代碼如下:

-(void)voiceAction:(UIButton*)button{

[self.iflyRecognizerViewstart];

}

-(void)onResult:(NSArray*)resultArr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論