




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于sqlite3 數(shù)據(jù)庫(kù)的iOS APP 開發(fā)-以手機(jī)點(diǎn)餐系統(tǒng)為例黃 岡 師 范 學(xué) 院本 科 生 畢 業(yè) 論 文題 目: 基于sqlite3數(shù)據(jù)庫(kù)iOS的app開發(fā) -以手機(jī)點(diǎn)餐系統(tǒng)為例 專業(yè)班級(jí): 電子信息工程2012級(jí)02班 學(xué) 號(hào): 20101222240216 學(xué)生姓名: 黎勤 指導(dǎo)教師: 蘭智高 論文完成日期: 2016 年 5 月鄭 重 聲 明本人的畢業(yè)論文是在指導(dǎo)老師 蘭智高 的指導(dǎo)下獨(dú)立撰寫并完成的。畢業(yè)論文沒(méi)有剽竊、抄襲、造假等違反學(xué)術(shù)道德、學(xué)術(shù)規(guī)范和侵權(quán)行為,如果有此現(xiàn)象發(fā)生,本人愿意承擔(dān)由此產(chǎn)生的各種后果,直至法律責(zé)任;并可通過(guò)網(wǎng)絡(luò)接受公眾的查詢。特此鄭重聲明。畢業(yè)論
2、文作者(簽名): 2016 年 5 月 21日目 錄摘 要3ABSTRCT41. 緒論61.1研究目的和意義61.2研究?jī)?nèi)容61.3研究方法和技術(shù)路線61.4項(xiàng)目的研究目標(biāo)72. IOS的APP的設(shè)計(jì)的理論分析83.手機(jī)點(diǎn)餐系統(tǒng)項(xiàng)目過(guò)程93.1點(diǎn)餐系統(tǒng)的系統(tǒng)開發(fā)環(huán)境和運(yùn)行運(yùn)行環(huán)境分析93.2控制器(control)93.2.3刪除菜品控制器123.2.4用戶點(diǎn)菜菜品控制器133.2.5前臺(tái)結(jié)賬控制器163.2.5 廚房提醒控制器183.2.6 熱點(diǎn)菜品控制器183.2.7打折活動(dòng)控制器193.3數(shù)據(jù)存儲(chǔ)方式203.4點(diǎn)餐系統(tǒng)的后期維護(hù)203.5點(diǎn)餐系統(tǒng)的優(yōu)化方案213.5.1設(shè)置緩存策略213
3、.5.2創(chuàng)建緩存線程213.5.3在DetailViewController.m實(shí)現(xiàn)文件中224.SQLITE3數(shù)據(jù)庫(kù)244.1 sqlite3數(shù)據(jù)庫(kù)簡(jiǎn)介244.2 sqlite3數(shù)據(jù)的命令245. IOS的APP 開發(fā)265.1 iOS的app開發(fā)簡(jiǎn)介265.2 iOS的app前景分析265.3 iOS的app開發(fā)工具和開發(fā)語(yǔ)言276.結(jié)術(shù)語(yǔ)29參考文獻(xiàn)30附錄31附錄一 :添加菜品控制器界面示意圖31附錄二:用戶點(diǎn)餐界面設(shè)計(jì)示意圖32附錄三: 廚房提醒控制器實(shí)現(xiàn)的核心代碼32附錄四: 打折活動(dòng)控制器實(shí)現(xiàn)代碼33致 謝37第35頁(yè) 共2頁(yè)基于sqlite3數(shù)據(jù)庫(kù)iOS的App設(shè)計(jì)-以手機(jī)點(diǎn)餐
4、系統(tǒng)為例專業(yè):電子信息工程 班級(jí):201202班 作者:黎勤 指導(dǎo)老師:蘭智高摘 要 隨著移動(dòng)智能終端的廣泛應(yīng)用,移動(dòng)終端正向功能增強(qiáng)化、多模化、定制化、平臺(tái)開放化的方向發(fā)展,而移動(dòng)終端營(yíng)銷(APP),作為SNS新的開拓渠道,正逐漸嶄露頭角。根據(jù)百度獲得數(shù)據(jù),得知iPhone手機(jī)在中國(guó)近5年銷量遙遙領(lǐng)先于其他手機(jī),并且在去年iOS的銷量占據(jù)中國(guó)手機(jī)市場(chǎng)的百分之三十三的容量。因此,了解、學(xué)習(xí)如何開發(fā)移動(dòng)端運(yùn)用,用什么編程語(yǔ)言和開發(fā)模式將在未來(lái)幾年有很大的發(fā)展空間和很好的發(fā)展前景。 本文介紹了一種現(xiàn)在最常用的最受人們推廣的以及用戶前景最好的的App開發(fā)的過(guò)程iOS的App(以手機(jī)點(diǎn)餐系統(tǒng)為例)以A
5、pp。在這里講介紹開發(fā)的這個(gè)app意義、使用的技術(shù)、使用的難點(diǎn)和市場(chǎng)分析一一都有介紹。其中app開發(fā)過(guò)程中最主要的問(wèn)題:數(shù)據(jù)存儲(chǔ)的方式(如何使用sqlite3數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù)和使用數(shù)據(jù)庫(kù)的數(shù)據(jù))。 本文通過(guò)實(shí)際iOS的app項(xiàng)目開發(fā)的經(jīng)驗(yàn),簡(jiǎn)單將一個(gè)app開發(fā)的目的是什么,開發(fā)的市場(chǎng)在哪里以及開發(fā)的要求該如何實(shí)現(xiàn)。不僅如此,本文還對(duì)app開發(fā)的流程做了簡(jiǎn)單的描述,一個(gè)app開發(fā)從哪里開始,開始之后需要完成什么,然后其中細(xì)節(jié)應(yīng)該如何實(shí)現(xiàn),最后app設(shè)計(jì)完了后期應(yīng)該如何優(yōu)化和維護(hù)。 關(guān)鍵詞:sqlite3數(shù)據(jù)庫(kù);app;iOS;OC.Based On Sqlite3 Database iOS Ap
6、p -Mobile Phone Ordering SystemProfessional: electronic information engineering class: telecommunications 201202 class author: Li Qin guide teacher: LanZhiGaoABSTRCT With the wide application of mobile intelligent terminal, mobile terminal positive function enhancement, multimode, customized, platfo
7、rm opening direction, while the mobile terminal marketing (APP), as SNS new open up channels, it gradually came to the fore. According to Baidu data, that iPhone mobile phone sales in China in the past 5 years Yuri Huang ahead of other mobile phones, and last year's iOS sales accounted for Thirt
8、y-three percent of the volume of China's mobile phone market. Therefore, understanding, learning how to develop the use of mobile terminals, with what programming language and development model will be in the next few years a lot of room for development and good prospects for development. This p
9、aper describes a process that is now most commonly used by people to promote the best of the App development of the user's best prospects - App iOS (in the case of a mobile phone ordering system) to App. Here to introduce the development of the meaning of the app, the use of technology, the use
10、of the difficulties and market analysis of one one are introduced. One of the most important problems in the process of app development: the way of data storage (how to use the SQLite3 database to store data and the use of database data). In this paper, through the actual app iOS project development
11、 experience, the simple will be what is the purpose of a app development, the development of the market where and how to achieve the development of the requirements. Not only that. This paper also for app development process do simple description, an app development from where to start, after the st
12、art of the need to accomplish what and the details should be how to realize, finally app design finished late should how to optimize and maintain.Key words: SQLite3 ; App; iOS; OC.1. 緒論1.1研究目的和意義目前,我國(guó)大多數(shù)酒店餐飲業(yè)在日常點(diǎn)菜管理中普遍采用手操作方式,整體科技含量低,隨著酒店餐飲業(yè)的高速發(fā)展和餐飲業(yè)的規(guī)模的不斷擴(kuò)大,許多酒店酒店餐飲企業(yè)采用連鎖經(jīng)營(yíng)和集團(tuán)華運(yùn)營(yíng),手工操作無(wú)論是工作效率還是人力成本都
13、難以適應(yīng)快速發(fā)展的要求,制約了整個(gè)酒店餐飲業(yè)的規(guī)模和整體服務(wù)水平的提升。據(jù)預(yù)測(cè),未來(lái)幾年內(nèi),信數(shù)字技術(shù)息產(chǎn)品在中國(guó)飯店與餐飲業(yè)的應(yīng)用將達(dá)到一個(gè)高峰,市場(chǎng)潛力不可估量。酒點(diǎn)菜系統(tǒng)而言,最普遍的事計(jì)算機(jī)收銀臺(tái)入菜單設(shè)備、pos點(diǎn)餐系統(tǒng),除了這種點(diǎn)餐系統(tǒng),其他的計(jì)算機(jī)信息系統(tǒng)以及從預(yù)定、接待、點(diǎn)餐、菜品上傳、廚房分單打印、條碼花菜、收銀、經(jīng)理查詢等方面大型企業(yè)等方面在大型餐飲企業(yè)全方位整合起來(lái)。即使使用了這些計(jì)算機(jī)軟件,還是不能排除人力操作的問(wèn)題。但手機(jī)點(diǎn)餐系統(tǒng)卻可以更大程度的降低人力成本。本來(lái)需要服務(wù)員事情卻可以交給顧客來(lái)做。這樣做的好處不僅僅是節(jié)約了人力成本,還讓顧客有了更多的選擇,因?yàn)樵儆行牡?/p>
14、服務(wù)員也不可能對(duì)一個(gè)酒店里所有菜品的特點(diǎn)能一一具到、也不能對(duì)該酒店其他的事情有更多了解比如下周做特價(jià)活動(dòng)、本周怎樣消費(fèi)有優(yōu)惠、以前什么樣的菜最受什么樣的人群喜歡等諸多地方。手機(jī)點(diǎn)餐系統(tǒng)卻有這樣強(qiáng)大的作用,它可以把酒店里經(jīng)理一切的想法都保存起來(lái),也可以讓這所有的想法在顧客面前體現(xiàn)出來(lái)。而酒店只需在每一個(gè)餐桌上放一個(gè)裝有點(diǎn)餐系統(tǒng)的手機(jī)就可以實(shí)現(xiàn)這些事情。但這些想法卻有一個(gè)核心,那就是“點(diǎn)餐系統(tǒng)的app” 8 。1.2研究?jī)?nèi)容本文以點(diǎn)餐系統(tǒng)app開發(fā)的整個(gè)過(guò)程為例,主要研究開發(fā)過(guò)程中的主要技術(shù)難點(diǎn):sqlite3數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的方式、iOS的app開發(fā)流程、iOS的app市場(chǎng)前景分析和擴(kuò)展、sqli
15、te3數(shù)據(jù)庫(kù)其他運(yùn)用及擴(kuò)展、手機(jī)點(diǎn)餐系統(tǒng)后期的維護(hù)。11.3研究方法和技術(shù)路線設(shè)計(jì)手機(jī)點(diǎn)餐系統(tǒng)iOS版首先得從如何開發(fā)iOS的app入手,先得了解iOS手機(jī)應(yīng)用的開發(fā)的流程,再了解流程之后應(yīng)該如何實(shí)現(xiàn)這些模塊,而這些模塊的難點(diǎn)應(yīng)該攻克方式和解決問(wèn)題的辦法,最后完成了app應(yīng)該如何去更新維護(hù)并將產(chǎn)品如何在市場(chǎng)上運(yùn)營(yíng)。1.4項(xiàng)目的研究目標(biāo)(1) 實(shí)現(xiàn)基本的點(diǎn)餐系統(tǒng)的功能:添加菜品、刪除菜品、用戶點(diǎn)菜、前臺(tái)結(jié)賬、廚房提醒、熱點(diǎn)菜品、打折活動(dòng)。并且后臺(tái)運(yùn)行沒(méi)有bug。(2) sqlite3數(shù)據(jù)庫(kù)使用的體現(xiàn):增加數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)、查詢數(shù)據(jù)。(3)iOS的app模塊實(shí)現(xiàn):界面設(shè)計(jì)、demo的制作
16、13 。2. iOS的app的設(shè)計(jì)的理論分析圖2- 1 理論分析原理圖圖1-1為開發(fā)iOS的app流程圖。開發(fā)iOS的app首先得確定開發(fā)的目的和意義,在之后就是擬定需要設(shè)計(jì)的功能,根據(jù)上面我們提到點(diǎn)餐系統(tǒng)的功能就可以確我們需要的控制權(quán)器,通過(guò)在控制器里面的代碼編寫,我們可以根據(jù)需求擬定app界面風(fēng)格,app的數(shù)據(jù)存儲(chǔ)方式,數(shù)據(jù)的體現(xiàn)又是在界面上面反映出來(lái)的。以上就是一般iOS的app一般開發(fā)過(guò)程 9 。3.手機(jī)點(diǎn)餐系統(tǒng)項(xiàng)目過(guò)程3.1點(diǎn)餐系統(tǒng)的系統(tǒng)開發(fā)環(huán)境和運(yùn)行運(yùn)行環(huán)境分析點(diǎn)餐系統(tǒng)是開發(fā)環(huán)境:Xcode7.0點(diǎn)餐系統(tǒng)使用的開發(fā)語(yǔ)言:OC點(diǎn)餐系統(tǒng)支持運(yùn)行環(huán)境:iPhone、iPad3.2控制器(
17、control)根據(jù)需求,添加菜品、刪除菜品、用戶點(diǎn)菜、前臺(tái)結(jié)賬、廚房提醒、熱點(diǎn)菜品、打折活動(dòng)。添加菜品:根據(jù)飯店需求添加菜品。刪除菜品:根據(jù)飯店需求刪除最近沒(méi)有或者過(guò)時(shí)的菜品。前臺(tái)結(jié)賬:收銀員根據(jù)桌號(hào)統(tǒng)計(jì)點(diǎn)菜需要的費(fèi)用并在結(jié)賬之后刪除 數(shù)據(jù)庫(kù)里點(diǎn)菜的信息。廚房提醒:每次有顧客點(diǎn)餐都會(huì)將菜單刷新到廚房提醒廚師準(zhǔn)備菜 品。熱點(diǎn)菜品:每次顧客進(jìn)入本公司的點(diǎn)餐系統(tǒng)都會(huì)看到最近半年最受 歡迎的八個(gè)菜品。打折活動(dòng):在點(diǎn)餐系統(tǒng)的主頁(yè)面都有一個(gè)近期和下段時(shí)間打折活動(dòng)的信息。控制器設(shè)計(jì)流程圖為圖2-2所示。圖2- 2 控制器設(shè)計(jì)流程圖3.2.1主控制器(view Controller)的介紹主控制器的主要功能
18、是管理下面諸多功能控制器以及實(shí)現(xiàn)點(diǎn)餐系統(tǒng)的主界面顯示,這里我選擇的主控制器是一般的viewcontroller,而不是開發(fā)中頁(yè)面常用的導(dǎo)航控制器(UINavitionController)。雖然一般的控制器沒(méi)有意見分裝好的導(dǎo)航控制器便捷,使用起來(lái)的操作更加復(fù)雜,代碼量更大,但一半的viewcontroller的優(yōu)點(diǎn)是靈活多變,選擇性更多,而且兼容性也更加好。這主控制器也相當(dāng)于世自定義控制器的開發(fā)方式來(lái)實(shí)現(xiàn)主控制器的選擇。下面是主控制器的部分項(xiàng)目代表性的代碼:self setToolBarFrame ;/設(shè)置自定義導(dǎo)航條在手機(jī)屏幕上顯示的大小,這里采用調(diào)用方法實(shí)現(xiàn),為了減少主控制器代碼量,方便調(diào)
19、試。self.AllFootBtn addTarget:self action:selector(ClickAllFootBtn:) forControlEvents:UIControlEventTouchUpInside;/添加導(dǎo)航條按鈕的點(diǎn)擊事件,使屏幕上的按鈕一點(diǎn)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。-(void)setToolBarFrame self.toolBar mas_makeConstraints:(MASConstraintMaker *make) make.left.offset(0); make.height.offset(50); make.right.equalTo(self.view.m
20、as_right); make.bottom.offset(-10); ; /這里是設(shè)置導(dǎo)航條按鈕的具體方法,在這里我使用了第三方庫(kù)。在iOS的app開發(fā)有很多別人寫好的代碼庫(kù)可以再指定的網(wǎng)站上下載使用,這樣可以大大提高工作效率以及減少代碼出錯(cuò)的概率。-(void)ClickAllFootBtn:(UIButton*)AllFoot AllFootTableViewController *allfoottablecontroller=self.board instantiateViewControllerWithIdentifier:"AllFoot" ; self pre
21、sentViewController:allfoottablecontroller animated:YES completion:nil ;/這里是如何實(shí)現(xiàn)按鈕點(diǎn)擊事件的具體方法,其中主要是創(chuàng)建新的控制器對(duì)象和將新的對(duì)象添加到導(dǎo)航條按鈕的點(diǎn)擊事件中去。3.2.2添加菜品功能的控制器 添加菜品主要功能是界面設(shè)計(jì)和往數(shù)據(jù)庫(kù)里添加你需要的菜單數(shù)據(jù)。所以這里選擇使用一般的viewController。從這里開始我們將介紹sqlite3數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建工作表格以及添加數(shù)據(jù)的具體實(shí)現(xiàn)。界面設(shè)計(jì):根據(jù)實(shí)際情況,一般的菜品應(yīng)該這些屬性:菜名,菜系,菜的簡(jiǎn)介,菜的價(jià)格,本菜半年之內(nèi)被點(diǎn)到的數(shù)量,菜的圖片
22、,以及其他相關(guān)信息。下面是我做的簡(jiǎn)單界面,由于沒(méi)有美術(shù)資源和美術(shù)風(fēng)格設(shè)定,我就按照自己喜好做了一個(gè)添加菜品的界面。4這個(gè)界面設(shè)計(jì)的十分簡(jiǎn)單,界面上只有Laber、Text Field、Button三種控件,但這已經(jīng)能夠?qū)崿F(xiàn)添加菜品的功能。界面詳細(xì)設(shè)計(jì)請(qǐng)參考“附錄一”的界面設(shè)計(jì)示意“附錄 圖1- 1”。功能實(shí)現(xiàn):這里主要實(shí)現(xiàn)的事將店主往需要的數(shù)據(jù)添加到數(shù)據(jù)庫(kù)中fp=NSHomeDirectory() stringByAppendingPathComponent:"menuSystem.db" ; db = FMDatabase databaseWithPath:fp; db
23、open ; db executeUpdate:"create table if not exists AddFootManue(id integer primary key, mealname text,staffNum integer,Allprice integer)"BOOL ret=db executeUpdate:"insert into menu(cainame,caixi,price) values(?,?,?,?,?,?,?)",name,cx,dis,img,prc,hot,other;/從上到下代碼的主要作用是將你輸入菜名王數(shù)據(jù)庫(kù)里
24、添加數(shù)據(jù)self dismissViewControllerAnimated:YES completion:nil;/跳回到主頁(yè)面3.2.3刪除菜品控制器刪除菜品主要的功能是店主選擇數(shù)據(jù)庫(kù)里一些不需要的菜品,并在店主刪除這些菜品之后將這些刪除菜品的數(shù)據(jù)導(dǎo)入“刪除菜品”的數(shù)據(jù)庫(kù)工作內(nèi),以方便下次店主想還原這些菜品可以直接從這個(gè)工作表中導(dǎo)出。這些功能實(shí)現(xiàn)店主遠(yuǎn)程管理菜單的。界面設(shè)計(jì):圖3- 1所示。圖 3- 2 菜品控制器界面設(shè)計(jì)功能實(shí)現(xiàn): 刪除菜品主要功能是通過(guò)名字在數(shù)據(jù)庫(kù)菜單工作表中刪除該名字的菜品,并在點(diǎn)擊確認(rèn)刪除之后跳回到主頁(yè)面。實(shí)現(xiàn)代碼:fp=NSHomeDirectory() stri
25、ngByAppendingPathComponent:"menuSystem.db" ; db = FMDatabase databaseWithPath:fp; db open ; db executeUpdate:"create table if not exists AddFootManue(id integer primary key, mealname text,staffNum integer,Allprice integer)"BOOL ret=db executeUpdate:"insert into menu(cainame,
26、caixi,price) values(?,?,?,?,?,?,?)",name,cx,dis,img,prc,hot,other;/從上到下代碼的主要作用是將你輸入菜名王數(shù)據(jù)庫(kù)里刪除數(shù)據(jù)數(shù)據(jù)BOOL deleteRet = menuSystem1 executeUpdate:"delete from menu where cainame=?",cm;/刪除表格里的數(shù)據(jù)self dismissViewControllerAnimated:YES completion:nil;/跳回到主頁(yè)面3.2.4用戶點(diǎn)菜菜品控制器用戶點(diǎn)菜控制器主要的功能是將數(shù)據(jù)菜單工作表的內(nèi)容
27、在手機(jī)界面上展現(xiàn)給顧客,這里主要涉及到5個(gè)問(wèn)題:(1)遍歷數(shù)據(jù)庫(kù)里的整個(gè)菜單(2)將遍歷的內(nèi)容在界面上顯示出來(lái)(3)顧客點(diǎn)擊點(diǎn)菜按鈕之后將在加入數(shù)據(jù)庫(kù)新建一個(gè)以改桌號(hào)名為名字的工作表,并在沒(méi)點(diǎn)一個(gè)菜幾句講這個(gè)菜的信息加入點(diǎn)的這個(gè)工作里面(4)顧客覺得之前點(diǎn)的菜不好,想重新刪除掉之前的菜,點(diǎn)擊取消的時(shí)候?qū)㈩櫩瓦x擇刪除的目標(biāo)在數(shù)據(jù)庫(kù)中將數(shù)據(jù)清空(5)顧客確認(rèn)點(diǎn)菜完畢之后向顧客展示他點(diǎn)過(guò)所有菜的信息。這個(gè)控制器內(nèi)容相對(duì)于前面的兩個(gè)功能控制器的內(nèi)容略顯繁雜,所以我們?cè)趯?shí)現(xiàn)這個(gè)功能的時(shí)候要利用iOS開發(fā)中的常用技巧,就是多寫方法,多編輯功能快的類,這樣做可以說(shuō)使我們更加容易管理代碼以及更加方便調(diào)試代碼。
28、界面設(shè)計(jì):請(qǐng)參考附錄二的“附錄 圖2-1”用戶點(diǎn)餐界面示意圖。界面設(shè)計(jì)的代碼:(1)確自定義單元格的frame(長(zhǎng)、寬、位置、內(nèi)容)interface JZMenuCell ()<UIGestureRecognizerDelegate>/這里使用代理方法處理前后兩個(gè)數(shù)據(jù)之間的數(shù)據(jù)交互 BOOL _isOpen;/打開界面 BOOL _isScrollClose;/關(guān)閉界面 CGFloat _startX;/設(shè)置大小 UIView *_menuView;創(chuàng)建view對(duì)象 UIPanGestureRecognizer *_panGesture;-(void)initUI _panGes
29、ture = UIPanGestureRecognizer alloc initWithTarget:self action:selector(handlePanGesture:); _panGesture.delegate = self; self.contentView addGestureRecognizer:_panGesture; UITapGestureRecognizer *tapGesture = UITapGestureRecognizer alloc initWithTarget:self action:selector(handleTapGestrue:); tapGes
30、ture.delegate = self; . ./ 菜單項(xiàng) CGFloat _menuViewX = CGRectGetWidth(_ContentView.frame)-_menuViewWidth; . . CGFloat btnWidth = _menuViewWidth/(CGFloat)menuItemCount; CGFloat (currentWidth)(NSInteger i) = (NSInteger i) CGFloat width = 0.0; for (NSInteger j = 0; j < i; j+) width += _menuItemWidthsj
31、floatValue; return width; ; /創(chuàng)建菜單按鈕. btn addTarget:self action:selector(clickMenuItem:) forControlEvents:UIControlEventTouchUpInside; _menuView addSubview:btn; (2)創(chuàng)建tableview對(duì)象并將其frame按照上面代碼來(lái)設(shè)置-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section UIView *footerView
32、= UIView alloc initWithFrame:CGRectMake(0, 0, screen_height, 75); footerView.backgroundColor = RGB(239, 239, 244); return footerView;(3)實(shí)現(xiàn)顧客點(diǎn)餐,往數(shù)據(jù)庫(kù)里添加內(nèi)容fp=NSHomeDirectory() stringByAppendingPathComponent:"menuSystem.db" ; db = FMDatabase databaseWithPath:fp; db open ; db executeUpdate:&quo
33、t;create table if not exists AddFootManue(id integer primary key, mealname text,staffNum integer,Allprice integer)"BOOL ret=db executeUpdate:"insert into menu(cainame,caixi,price) values(?,?,?,?,?,?,?)",name,cx,dis,img,prc,hot,other;/從上到下代碼的主要作用是將你輸入菜名王數(shù)據(jù)庫(kù)里添加數(shù)據(jù)self dismissViewControll
34、erAnimated:YES completion:nil;/跳回到主頁(yè)面(4)顧客覺得之前的菜不好將其刪掉fp=NSHomeDirectory() stringByAppendingPathComponent:"menuSystem.db" ; db = FMDatabase databaseWithPath:fp; db open ; db executeUpdate:"create table if not exists AddFootManue(id integer primary key, mealname text,staffNum integer,A
35、llprice integer)"BOOL ret=db executeUpdate:"insert into menu(cainame,caixi,price) values(?,?,?,?,?,?,?)",name,cx,dis,img,prc,hot,other;/從上到下代碼的主要作用是將你輸入菜名王數(shù)據(jù)庫(kù)里刪除數(shù)據(jù)數(shù)據(jù)BOOL deleteRet = menuSystem1 executeUpdate:"delete from menu where cainame=?",cm;/刪除表格里的數(shù)據(jù)self dismissViewCont
36、rollerAnimated:YES completion:nil(5)顧客確定點(diǎn)餐完畢之后將點(diǎn)餐的內(nèi)容展現(xiàn)給顧客-(void)initTableView self.tableView = UITableView alloc initWithFrame:CGRectMake(0, 64, screen_width, screen_height-49-64) style:UITableViewStyleGrouped; self.tableView.delegate = self; self.tableView.dataSource = self; self.view addSubview:se
37、lf.tableView; self setUpTableView;將這個(gè)方法在指的的位置調(diào)用就能實(shí)現(xiàn)用點(diǎn)餐完畢之后在tableview上展現(xiàn)數(shù)據(jù)的功能3.2.5前臺(tái)結(jié)賬控制器前臺(tái)結(jié)賬需要實(shí)現(xiàn)的功能是根據(jù)桌號(hào)在數(shù)據(jù)庫(kù)中遍歷改桌所有點(diǎn)過(guò)的菜,并將每個(gè)菜的價(jià)格統(tǒng)計(jì)總和,同時(shí)將這個(gè)桌號(hào)在數(shù)據(jù)庫(kù)中對(duì)應(yīng)的工作表刪除掉。界面實(shí)現(xiàn):于上面刪除的界面設(shè)置相同代碼實(shí)現(xiàn): fPath=NSHomeDirectory() stringByAppendingPathComponent:"menuSystem.db" dbs1= FMDatabase databaseWithPath:fPath;
38、dbs1 open ; printf("%10s%15s%10s%10sn","Number","FoodName","StaffNum","AllPrice"); FMResultSet *rs = dbs1 executeQuery: "select *from setmeal " while (rs next) printf("%10s%15s%10s%10sn",rs stringForColumnIndex:0 UTF8String,rs str
39、ingForColumnIndex:1 UTF8String,rs stringForColumnIndex:2 UTF8String,rs stringForColumnIndex:3UTF8String); NSNumber *idtable; idtable = PayList ScanfNum ; rs = dbs1 executeQuery: " select * from Setmeal where id = ?",idtable; while (rs next ) printf("%10s %10s n",rs stringForColum
40、nIndex:1 UTF8String,rs stringForColumnIndex:3 UTF8String); rs = dbs1 executeQuery: " select * from setmeal where id = ?",idtable; int flag = 0; dbs1 close;以上代碼從打開數(shù)據(jù)庫(kù)到遍歷工作再到界面顯示最后關(guān)閉數(shù)據(jù)庫(kù)。3.2.5 廚房提醒控制器廚房提醒主要定時(shí)刷新數(shù)據(jù)庫(kù)里除了菜單,刪除菜的菜單其他所有的工作表,這些工作表都是客戶點(diǎn)過(guò)菜的所有菜品,在這還要做的一件事就是避免重復(fù)刷新,所以每當(dāng)之前遍歷過(guò)的工作表就不要再展示。這里的
41、難點(diǎn)是涉及到定時(shí)器和約束遍歷內(nèi)容的遍歷方法。界面顯示與上面點(diǎn)菜的界面相同只是這里只需要查看,不需要添加按鈕點(diǎn)擊事件,這樣實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單,不復(fù)雜。代碼實(shí)現(xiàn)請(qǐng)參考“附錄三”得具體代碼,上有講述是怎樣實(shí)現(xiàn)這一功能的核心操作的過(guò)程。3.2.6 熱點(diǎn)菜品控制器這里主要需要實(shí)現(xiàn)的功能是將數(shù)據(jù)菜單工作表格所有的菜的被點(diǎn)的總和進(jìn)行排序,然后將被點(diǎn)最多八個(gè)菜的信息在主控制器中的現(xiàn)實(shí)熱菜的位置打印出來(lái)。界面顯示:如圖 3-3 所示圖3- 3 熱點(diǎn)菜品控制器界面設(shè)計(jì)代碼實(shí)現(xiàn):排序:void swap(int *p1, int *p2) int temp; temp=*p1; *p1=*p2; *p2=temp;v
42、oid insertSort(int *a,int len) int i,j; for(i=0;i<len;i+) for(j=i+1;j>=1;j-) if(aj<aj-1) swap(&aj,&aj-1); 打?。?self.webView = UIWebView alloc initWithFrame:CGRectMake(0, 64, screen_width, screen_height-64); self.webView.delegate = self; self.webView.scalesPageToFit = YES; self.view a
43、ddSubview:self.webView;AppDelegate* delegate = (AppDelegate*)UIApplication sharedApplication delegate;通過(guò)代理的方式將數(shù)據(jù)庫(kù)里的內(nèi)容在tableview上顯示出來(lái)。3.2.7打折活動(dòng)控制器打折活動(dòng)根據(jù)店主需要設(shè)定的比例,在主控制器中將打折內(nèi)容顯示出來(lái),這里涉及iOS開發(fā)中的一個(gè)新的技術(shù)colletionview界面顯示:圖3- 4所示圖3- 5 打折活動(dòng)控制界面代碼實(shí)現(xiàn):請(qǐng)參考“附錄四”的打折活動(dòng)控制器實(shí)現(xiàn)代碼colletionview時(shí)iOS常用的現(xiàn)實(shí)界面方式,這種選擇視圖對(duì)可以讓用戶實(shí)現(xiàn)滾
44、動(dòng)效果。3.3數(shù)據(jù)存儲(chǔ)方式sqlite3數(shù)據(jù)庫(kù)是本次項(xiàng)目的主要存儲(chǔ)數(shù)據(jù)的方式,我們同坐制作model的類,分類管理項(xiàng)目文件,這樣的操作時(shí)項(xiàng)目更具有條理看起來(lái)更加的清晰,即使代碼冗雜,但分類管理可以讓諸多代碼以模塊在不同的地方得到體現(xiàn) 12 。3.4點(diǎn)餐系統(tǒng)的后期維護(hù) 關(guān)于可用性的測(cè)試和評(píng)估,在國(guó)外現(xiàn)在已經(jīng)形成一個(gè)新的專業(yè),稱為可用性工程(Usability Engineering)。由于是一個(gè)專業(yè),因此就有專門的人員來(lái)從事這項(xiàng)工作,并發(fā)展出一整套的方法和技術(shù)來(lái)進(jìn)行可用性的測(cè)試和評(píng)估。根據(jù)我們給軟件可用性所下的定義,一個(gè)軟件可用性的測(cè)試和評(píng)估應(yīng)該遵循以下原則5: (1)最具有權(quán)威性的可
45、用性測(cè)試和評(píng)估不應(yīng)該是專業(yè)技術(shù)人員,而應(yīng)該是產(chǎn)品的用戶。因?yàn)闊o(wú)論這些專業(yè)技術(shù)人員的水平有多高,無(wú)論他們使用的方法和技術(shù)有多先進(jìn),最后起決定作用還是用戶對(duì)產(chǎn)品的滿意程度。因此,對(duì)軟件可用性的測(cè)試和評(píng)估,主要應(yīng)由用戶來(lái)完成。 (2) 軟件的可用性測(cè)試和評(píng)估是一個(gè)過(guò)程,這個(gè)過(guò)程早在產(chǎn)品的初樣階段就開始了。因此一個(gè)軟件在設(shè)計(jì)時(shí)反復(fù)征求用戶意見的過(guò)程應(yīng)與可用性測(cè)試和評(píng)估程結(jié)合起來(lái)進(jìn)行。當(dāng)然,在設(shè)計(jì)階段反復(fù)征求意見的過(guò)程是后來(lái)可用性測(cè)試的基礎(chǔ),不能取代真正的可用性測(cè)試。但是如果沒(méi)有設(shè)計(jì)階段反復(fù)征求意見的過(guò)程,僅靠用戶最后對(duì)產(chǎn)品的一兩次評(píng)估,是不能全面反映出軟件的可用性。 (3)軟件的可用性測(cè)試必
46、須是在用戶的實(shí)際工作任務(wù)和操作環(huán)境下進(jìn)行??捎眯詼y(cè)試和評(píng)估不能靠發(fā)幾張調(diào)查表,讓用戶填寫完后,經(jīng)過(guò)簡(jiǎn)單的統(tǒng)計(jì)分析就下結(jié)論??捎眯詼y(cè)試必須是用戶在實(shí)際操作以后,根據(jù)其完成任務(wù)的結(jié)果,進(jìn)行客觀的分析和評(píng)估。(4)要選擇有廣泛代表性的用戶。因?yàn)閷?duì)軟件可用性的一條重要要求就是系統(tǒng)應(yīng)該適合絕大多數(shù)人使用,并讓絕大多數(shù)人都感到滿意。因此參加測(cè)試的人必須具有代表性,應(yīng)能代表最廣大的用戶。3.5點(diǎn)餐系統(tǒng)的優(yōu)化方案3.5.1設(shè)置緩存策略首先在SplitDemoAppDelegate委托代理中,實(shí)現(xiàn)如下代碼:在SplitDemoAppDelegate.h文件中,代碼如下:#import <UIKi
47、t/UIKit.h> class ASIDownloadCache; interface SplitDemoAppDelegate : NSObject <UIApplicationDelegate,UITabBarControllerDelegate> UIWindow *_window; ASIDownloadCache*_downloadCache;
48、160; /下載緩存策略 property (nonatomic, retain) ASIDownloadCache*downloadCache; end 3.5.2創(chuàng)建緩存線程這一步是創(chuàng)建一個(gè)NSOperation類,實(shí)現(xiàn)緩存的方法,代碼如下:ResourceContainer.h文件實(shí)現(xiàn):#import <Foundation/Founda
49、tion.h> #import "ASIHTTPRequest.h" #import "SplitDemoAppDelegate.h" interface ResourceContainer : NSOperation NSURL*_resourceURL; &
50、#160;/資源請(qǐng)求url NSObject*_hostObject; SEL_resourceDidReceive; /資源接手響應(yīng)方法 SplitDemoAppDelegate*_appDelegate;
51、160; /應(yīng)用委托對(duì)象 ASIHTTPRequest*_httpRequest; UIImageView*_imageView;
52、0;3.5.3在DetailViewController.m實(shí)現(xiàn)文件中#import "ProductDetailViewController.h" /這里引入在第二步中,我們創(chuàng)建的對(duì)象 #import "ResourceContainer.h" implementation DetailViewController synthesize imageURL = _imageURL; sy
53、nthesize originalIndexArray = _originalIndexArray; synthesize originalOperationDic = _originalOperationDic; synthesize requestImageQueue = _requestImageQueue; - (void)viewDidLoad super viewDidLoa
54、d; NSOperationQueue *tempQueue = NSOperationQueue alloc init; self.requsetImageQueue = tempQueue; tempQueue release; NSMutableArray *array = NSMutableArray alloc init; self.o
55、riginalIndexArray = array; array release; NSMutableDictionary *dic = NSMutableDictionary alloc init; self.originalOperationDic = dic; dic release; &
56、#160;4.sqlite3數(shù)據(jù)庫(kù)4.1 sqlite3數(shù)據(jù)庫(kù)簡(jiǎn)介 SQLite是一個(gè)輕量級(jí)自包含的DBMS,他具有諸多意想不到的特性:小巧、事務(wù)、綠色、并發(fā)、零配置、可移植、開源等,開發(fā)使用時(shí)僅僅需要一個(gè)頭文件,一個(gè)動(dòng)態(tài)庫(kù)文件,就擁有關(guān)系數(shù)據(jù)庫(kù)的所有功能。在電子數(shù)據(jù)的發(fā)展歷程中,SQLite應(yīng)用場(chǎng)景也越來(lái)越廣泛,其中嵌入式設(shè)備是SQLite應(yīng)用的主要場(chǎng)景,典型代表為Google的Android。此外,桌面應(yīng)用和Websites也越來(lái)越多地使用SQLite。當(dāng)下手機(jī)應(yīng)用市場(chǎng)發(fā)展迅猛,幾乎所有手機(jī)平臺(tái)下的APP存儲(chǔ)數(shù)據(jù)時(shí)都使用到SQLite數(shù)據(jù)庫(kù),比如Android、iOS、Windows Mo
57、bile、Symbin、Palm等。隨著智能手機(jī)的迅速普及,針對(duì)智能設(shè)備的取證、刪除數(shù)據(jù)的恢復(fù)等技術(shù)也越來(lái)越重要,尤其是對(duì)電子數(shù)據(jù)取證、司法調(diào)查等領(lǐng)域,被刪除的手機(jī)信息往往具有更高的價(jià)值。 Sqlite3就是在sqlite的基礎(chǔ)上將其操作編寫成一個(gè)直接調(diào)用的方法,這樣使用sqlite數(shù)據(jù)庫(kù)就更加的方便快捷簡(jiǎn)單。124.2 sqlite3數(shù)據(jù)的命令(1)打開數(shù)據(jù)庫(kù):在終端里先進(jìn)入你要訪問(wèn)的文件夾 ,再輸入sqlite ”數(shù)據(jù)庫(kù)的名稱”,如果該文件夾沒(méi)有該數(shù)據(jù)庫(kù),系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),如果有,則直接訪問(wèn)。(2)在數(shù)據(jù)庫(kù)中創(chuàng)建工作表格:在終端中輸入命令“create table 表格名(表格
58、屬性)”。表格屬性可以是:數(shù)字(id intfloat)、字符串(name textchar).(3)往表格中插入數(shù)據(jù):insert into 表格名 values('定義的屬性,有幾個(gè)加幾個(gè),并且用逗號(hào)隔開);(4)查詢表格中的數(shù)據(jù):select 屬性名 from 表格名 where 屬性值 (5)刪除表格中的數(shù)據(jù):delete from 表格名 where 屬性名=屬性值;(6)更新表格中的數(shù)據(jù):update 表格名 set where 屬性名 修改的屬性值。4.3 sqlite3數(shù)據(jù)庫(kù)在項(xiàng)目中的運(yùn)用本次方便使用sqlite3數(shù)據(jù)我使用第三方封裝包(FMDBOC封裝的sqlite3在終端里的命令包)使用sqite3數(shù)據(jù)的處理數(shù)據(jù)功能。項(xiàng)目中的代碼: fp=NSHomeDirectory() stringByAppendingPathComponent:"menuSystem.db" ; db = FMDatabase databaseWithPa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CAQI 49-2018家用和類似用途節(jié)水型納濾凈水器
- 2024年度江蘇省二級(jí)注冊(cè)建筑師之法律法規(guī)經(jīng)濟(jì)與施工押題練習(xí)試題B卷含答案
- 工貿(mào)家電面試題及答案
- 光電就業(yè)面試題及答案
- 急診醫(yī)療面試題及答案
- 工商注冊(cè)面試題及答案
- 鬼才邏輯面試題及答案
- 復(fù)雜招聘面試題及答案
- 交通領(lǐng)域新質(zhì)生產(chǎn)力
- T/CADBM 54-2021建筑室內(nèi)窗飾產(chǎn)品蜂巢簾
- 2025網(wǎng)站建設(shè)合同范本
- 《人體解剖生理學(xué)基礎(chǔ)》課件
- 2025屆福建省廈門市音樂(lè)學(xué)校生物七下期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 托育培訓(xùn)課程課件
- 2024-2025西師大版一年級(jí)下冊(cè)數(shù)學(xué)期末考試卷及參考答案
- 中國(guó)卒中學(xué)會(huì)急性缺血性卒中再灌注治療指南(2024)解讀
- 浙江開放大學(xué)2025年《社會(huì)保障學(xué)》形考任務(wù)2答案
- 【+初中語(yǔ)文++】++第11課《山地回憶》課件++統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 2025年度企業(yè)應(yīng)急預(yù)案演練計(jì)劃
- 2025年高考?xì)v史考綱(完整版)
- 2025屆東北三省四市教研聯(lián)合體高三下學(xué)期高考模擬考試(一模)英語(yǔ)試題及答案
評(píng)論
0/150
提交評(píng)論