




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《數(shù)據(jù)庫(kù)課程設(shè)計(jì)》美食主題安卓系統(tǒng)菜譜查詢應(yīng)用程序CookBook目錄一、選題要求 3二、選題背景 3三、需求分析 3四、設(shè)計(jì)理念 4五、開發(fā)工具 7六、實(shí)現(xiàn)步驟 7七、結(jié)果 15八、總結(jié)與體會(huì) 16課題主題美食——菜譜選題要求以美食為主線,最好與數(shù)據(jù)庫(kù)和互聯(lián)網(wǎng),移動(dòng)互聯(lián)網(wǎng)相關(guān),開發(fā)一個(gè)小應(yīng)用程序或者小系統(tǒng)??蓞⒖既缦乱恍┫嚓P(guān)的美食網(wǎng)站:廣州美食團(tuán)購(gòu):/category/meishi/all?utm_campaign=1344091295&utm_medium=cpc&utm_source=baidu&utm_content=pinlei&utm_term=%E7%BE%8E%E9%A3%9F%E5%9B%A2%E8%B4%AD%E7%BD%91京東美食:/channel/virtual-quanguo-87-0-0-0-0-0-1-0-1.html美食菜譜:/china-food/選題背景隨著人們生活水平的普遍提高,對(duì)餐飲娛樂(lè)業(yè)的服務(wù)、硬件設(shè)施、菜品口味的要求越來(lái)越挑剔。加上原材料的不斷上漲,人工成本越來(lái)越高以及越來(lái)越多食品安全丑聞的曝光,自己動(dòng)手做菜成了現(xiàn)代生活的最佳覓食手段。自己動(dòng)手做菜,則不僅要保證色香味俱全,還要營(yíng)養(yǎng)價(jià)值豐富。那么方便查閱的菜譜必不可少。一份方便的菜譜,不僅要讓用戶能夠根據(jù)食材和菜名快速的找到相關(guān)菜肴,還要對(duì)菜肴有詳細(xì)的介紹,對(duì)做菜的步驟有詳細(xì)的說(shuō)明。除此之外,還要有方便快捷的信息統(tǒng)計(jì)功能,如菜譜所需食材的統(tǒng)計(jì)、食材總價(jià)的估算、當(dāng)季熱門菜譜的推薦、用戶收藏夾的查閱等等功能來(lái)幫助用戶快捷的使用菜譜。本應(yīng)用程序就是希望通過(guò)向大眾提供營(yíng)養(yǎng)的食譜,向更多的關(guān)注健康的人們提供一個(gè)吃出健康的好環(huán)境。它的服務(wù)對(duì)象是非常廣泛的,前景十分廣闊。需求分析這里主要描述客戶需求1.登陸/注冊(cè)賬號(hào)根據(jù)菜譜名稱或者食材進(jìn)行模糊搜索點(diǎn)擊搜索返回結(jié)果以查看菜譜詳細(xì)內(nèi)容菜譜詳細(xì)內(nèi)容包括:3.1.菜譜圖片一張3.2.少于200字的菜式簡(jiǎn)介3.3.適合人數(shù),消耗時(shí)間3.4.食材(包括配料)名稱、用量3.5.若干步驟3.6.用戶評(píng)價(jià)收藏菜譜評(píng)價(jià)菜譜將菜譜食材加入購(gòu)物清單查看購(gòu)物清單(包含食材名字、用量、總價(jià))清空購(gòu)物清單查看個(gè)人收藏設(shè)計(jì)理念系統(tǒng)邏輯設(shè)計(jì)初始頁(yè)面初始頁(yè)面數(shù)據(jù)庫(kù)主頁(yè)最新推薦列表查詢欄購(gòu)物清單個(gè)人中心收藏列表清單列表數(shù)據(jù)庫(kù)設(shè)計(jì)2.1.E-R圖SSamountBookmarkList2.2.關(guān)系圖2.3.數(shù)據(jù)字典2.4.建表語(yǔ)句useCookBookDBgocreatetableDish(Didintprimarykeynotnull,Dnamenvarchar(20)notnull,Dintroductionnvarchar(200)notnulldefault'暫無(wú)介紹',Dpicnvarchar(30),DtimeCosttinyintnotnull,Dpeopletinyintnotnull,Dhotintnotnulldefault0,DdateSmalldatetimenotnulldefaultgetdate());createtableIngredient(Iidintprimarykeynotnull,Inamenvarchar(10)notnull,Ipricenumeric(4,1)notnull,Iunitnvarchar(2)notnull);createtableSeasoning(Sidintprimarykeynotnull,Snamenvarchar(8)notnull);createtableComments(Cidintprimarykeynotnull,Ccontentnvarchar(200)notnull,CdateSmalldatetimenotnull,Didintnotnullforeignkey(Did)referencesDish(Did)ondeletecascade);createtableSteps(StepIDintprimarykeynotnull,Didintnotnullforeignkey(Did)referencesDish(Did)ondeletecascade,Scontentnvarchar(200)notnull);createtableIngredientList(Iidintnotnullforeignkey(Iid)referencesIngredient(Iid)ondeletecascade,Didintnotnullforeignkey(Did)referencesDish(Did)ondeletecascade,Iamountnumeric(5,2)notnull);createtableSeasoningList(Sidintnotnullforeignkey(Sid)referencesSeasoning(Sid)ondeletecascade,Didintnotnullforeignkey(Did)referencesDish(Did)ondeletecascade,Samountnchar(5)notnull--比如‘一茶匙’)createtableUsers(Uidintprimarykeynotnull,Unamenvarchar(10)notnull,Upasswordnvarchar(20)notnull,)createtableBookmarkList(Uidintnotnullforeignkey(Uid)referencesUsers(Uid)ondeletecascade,Didintnotnullforeignkey(Did)referencesDish(Did)ondeletecascade,)createtableCommentList(Uidintnotnullforeignkey(Uid)referencesUsers(Uid)ondeletecascade,Cidintnotnullforeignkey(Cid)referencesComments(Cid)ondeletecascade,開發(fā)工具環(huán)境:SQLsevermanagementstudio2008、eclipse、VisualStudio2010語(yǔ)言:SQL、java、C++工具包:AndroidSDK、ADO組件實(shí)現(xiàn)步驟6.1客戶端實(shí)現(xiàn):設(shè)計(jì)程序界面:在紙上畫出草圖,確定每個(gè)功能應(yīng)該在什么界面實(shí)現(xiàn)Android編程:在裝有ADT的eclipseIDE中進(jìn)行編程,實(shí)現(xiàn)頁(yè)面布局設(shè)計(jì)、頁(yè)面間跳轉(zhuǎn)、請(qǐng)求數(shù)據(jù)、顯示返回?cái)?shù)據(jù)等需求分析中提到的功能。其中,實(shí)現(xiàn)頁(yè)面布局設(shè)計(jì)是我們對(duì)ADT中的布局文件進(jìn)行了編寫,頁(yè)面間跳轉(zhuǎn)以及請(qǐng)求和返回?cái)?shù)據(jù)我們是通過(guò)intent來(lái)相互傳送,其中核心步驟的代碼為:在首頁(yè)的GridView網(wǎng)格視圖中任意點(diǎn)擊一個(gè)item,都能傳輸菜的id(即上圖中的Did)到客戶端,客戶端連接以及得到id這個(gè)參數(shù)的核心代碼如下,然后服務(wù)端根據(jù)id作為key搜索數(shù)據(jù)庫(kù),并返回菜譜的內(nèi)容。SQLite數(shù)據(jù)庫(kù)我們?cè)诳蛻舳薃PP加入了一個(gè)小型便捷的數(shù)據(jù)庫(kù)SQLite,用于儲(chǔ)存用戶的登陸信息。這是一個(gè)直接存儲(chǔ)在客戶端的本地?cái)?shù)據(jù)庫(kù),不涉及到通過(guò)網(wǎng)絡(luò)傳播的作用,每當(dāng)有用戶登陸的時(shí)候,就在數(shù)據(jù)庫(kù)中尋找匹配的項(xiàng)目(用戶名,用戶密碼等),如果找到匹配的信息,就登陸成功,進(jìn)入下一個(gè)界面,否則,登錄失敗。對(duì)于這個(gè)數(shù)據(jù)庫(kù),考慮到信息都保存在本地,數(shù)據(jù)庫(kù)的規(guī)模不宜過(guò)大,因此只存儲(chǔ)基本的用戶信息和登陸記錄,便于查找信息。建立數(shù)據(jù)庫(kù)的語(yǔ)句如下:4.Socket網(wǎng)絡(luò)通信(1)建立通信我們的項(xiàng)目里面包括一個(gè)服務(wù)端和一個(gè)客戶端,菜譜的數(shù)據(jù)保存在服務(wù)端,客戶端如果想要獲得服務(wù)端的數(shù)據(jù),就必須通過(guò)網(wǎng)絡(luò)獲取數(shù)據(jù),這里我們使用socket通信,在客戶端,我們指定輸入服務(wù)器的IP和Port,更具客戶需求,建立通信,連接服務(wù)器的代碼如下:使用BufferReader和PrintWriter兩個(gè)函數(shù)完成數(shù)據(jù)的讀寫。每次當(dāng)客戶端需要從服務(wù)端獲取信息的時(shí)候,就向服務(wù)器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求中包含對(duì)想要獲取的信息的說(shuō)明;收到請(qǐng)求之后,客戶端解析請(qǐng)求,并將客戶端需要的信息分段發(fā)送給客戶端,客戶端持續(xù)監(jiān)聽(tīng),當(dāng)客戶端收到服務(wù)端發(fā)送的結(jié)束符號(hào)后,完成一次通信。通過(guò)BufferReader獲取數(shù)據(jù):通過(guò)PrintWriter發(fā)送數(shù)據(jù):除此之外,由于安卓對(duì)于socket有特殊的要求。安卓為了保證主線程的安全,需要所有的socket連接和信息傳輸?shù)墓ぷ鞫家诜志€程上完成,所以每當(dāng)需要顯示的數(shù)據(jù)時(shí)候,我們就需要調(diào)用handler函數(shù),在線程外部完成信息的輸出,具體實(shí)現(xiàn)如下:(2)分析接收到的內(nèi)容在接收到服務(wù)端發(fā)送的數(shù)據(jù)之后,客戶端必須有分析收到接收到的信息的能力,即必須能夠通過(guò)判斷分隔符的方式,將接受到了一類字符串短程一段段有意義的字符,并將這些字符分別儲(chǔ)存在不同的地方,或者顯示出來(lái)。(3)根據(jù)不同的需求,向服務(wù)端發(fā)送不同的數(shù)據(jù)客戶端必須根據(jù)不同的客戶需求向服務(wù)端發(fā)送不同的符號(hào),服務(wù)器識(shí)別這些符號(hào)之后,會(huì)根據(jù)客戶的需求發(fā)送不同的信息,這里為了方面,每當(dāng)客戶點(diǎn)擊菜品跳轉(zhuǎn)到菜譜頁(yè)面的時(shí)候,我們就返回一個(gè)菜品的ID,具體的實(shí)現(xiàn)如下:6.1客戶端實(shí)現(xiàn):服務(wù)端主要任務(wù)是,根據(jù)客戶端的請(qǐng)求處理數(shù)據(jù)庫(kù),或從數(shù)據(jù)庫(kù)調(diào)出數(shù)據(jù)。這是一種安全的訪問(wèn)數(shù)據(jù)庫(kù)方式,因?yàn)榭蛻舳瞬](méi)有直接通過(guò)SQL語(yǔ)句訪問(wèn)數(shù)據(jù)庫(kù),而是通過(guò)服務(wù)端;客戶端與服務(wù)端間的通信采用非明文的協(xié)議模式,不存在SQL注入等語(yǔ)法攻擊。Socket通信的實(shí)現(xiàn)既然要客戶端和服務(wù)端間通信,我們想到了用Socket的辦法。Socket是套接字,用于通信雙方的識(shí)別,下面是socket的建立過(guò)程。服務(wù)端多線程作為服務(wù)端,不可能只為一個(gè)客戶端服務(wù),因此在這里又要涉及到多線程的實(shí)現(xiàn)。我們采取的辦法是,主線程用于監(jiān)聽(tīng),一旦有遠(yuǎn)端socket接入,新建一個(gè)線程去處理這個(gè)連接請(qǐng)求,并把Server對(duì)象、接入的socket作為參數(shù)傳進(jìn)這個(gè)線程。服務(wù)端在線程中主要任務(wù)是監(jiān)聽(tīng)客戶端的請(qǐng)求:ADO連接數(shù)據(jù)庫(kù)由于服務(wù)端是需要調(diào)用SQLserver的數(shù)據(jù)庫(kù),并以流的方式通過(guò)Socket傳到客戶端,因此我們需要一些數(shù)據(jù)庫(kù)組件來(lái)完成這個(gè)調(diào)出數(shù)據(jù)的過(guò)程。ADO是一種程序?qū)ο?,用于表示用戶?shù)據(jù)庫(kù)中的數(shù)據(jù)結(jié)構(gòu)和所包含的數(shù)據(jù)。在MicrosoftVisualBasic編輯器中,可以使用ADO對(duì)象以及ADO的附加組件(稱為MicrosoftADOExtensionsforDLLandSecurity(ADOX))來(lái)創(chuàng)建或修改表和查詢、檢驗(yàn)數(shù)據(jù)庫(kù)、或者訪問(wèn)外部數(shù)據(jù)源。還可在代碼中使用ADO來(lái)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)。以下分別是連接數(shù)據(jù)庫(kù),以及訪問(wèn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)登陸檢測(cè)的代碼建立SQL數(shù)據(jù)庫(kù)為了測(cè)試,我們先建立一個(gè)簡(jiǎn)單的表格,下面是建表語(yǔ)句:create
table
Users(
Uid
int
primary
key
identity(1,1)
not
null,
Uname
nvarchar(10)
not
null,
Upassword
nvarchar(20)
not
null,
)
create
table
Dish(
Did
nvarchar(3)
primary
key
not
null,
Dname
nvarchar(20)
not
null,
Dintroduction
nvarchar(200)
not
null
default
'暫無(wú)介紹',
Dpic
nvarchar(200),
Dsteps
nvarchar(200)
not
null,
Dmaterial
nvarchar(200)
not
null,
);
create
table
BookmarkList(
Uid
int
not
null
foreign
key(Uid)
references
Users(Uid)
on
delete
cascade,
Did
int
not
null
foreign
key(Did)
references
Dish(Did)
on
delete
cascade,
)客戶端/服務(wù)端協(xié)議,分析指令。為了節(jié)省流量,也為了通信的安全性,我們建立了客戶端和服務(wù)端之間的協(xié)議,用代碼和參數(shù)形式格式化傳遞請(qǐng)求和數(shù)據(jù):結(jié)果注冊(cè)界面2)登陸界面3)主頁(yè)面購(gòu)物清單界面5)菜譜界面16)菜譜界面2總結(jié)與體會(huì)通過(guò)這次的課程設(shè)計(jì),使我們了解了更多數(shù)據(jù)庫(kù)原理與應(yīng)用這門課程,對(duì)以前不太理解和熟悉的內(nèi)容有更多的掌握,特別是如何將數(shù)據(jù)庫(kù)放在服務(wù)器端并通過(guò)網(wǎng)絡(luò)通信實(shí)現(xiàn)與應(yīng)用程序的互連。有了上個(gè)學(xué)期數(shù)據(jù)庫(kù)作業(yè)的經(jīng)驗(yàn),這次課程設(shè)計(jì)中數(shù)據(jù)庫(kù)的建立和查詢語(yǔ)句就不是難點(diǎn)了。畫出E—R圖,建表,插入一些測(cè)試數(shù)據(jù),很快就完成了。但是,本次課設(shè),最具有挑戰(zhàn)性的工作其實(shí)是:Android
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生豬養(yǎng)殖與農(nóng)業(yè)產(chǎn)業(yè)扶貧合作協(xié)議
- 二零二五年度制造業(yè)工傷責(zé)任保險(xiǎn)合同
- 2025年度男方道歉夫妻共同生活保證協(xié)議
- 2025年度飯店短期勞務(wù)合同-客房服務(wù)員職業(yè)健康與安全協(xié)議
- 二零二五年度物業(yè)公司員工勞動(dòng)合同(含社區(qū)文化活動(dòng))
- 監(jiān)理技術(shù)服務(wù)合同
- 綠色數(shù)據(jù)中心建設(shè)運(yùn)營(yíng)合同
- 環(huán)境影響評(píng)估結(jié)果展示表
- 股份制企業(yè)股權(quán)分配與管理制度文書
- 財(cái)務(wù)與成本控制管理細(xì)則
- 2025年山西省太原市衛(wèi)健委直屬單位招聘522人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 勞務(wù)合同協(xié)議書書
- 白城2025年吉林大安市事業(yè)單位面向上半年應(yīng)征入伍高校畢業(yè)生招聘5人筆試歷年參考題庫(kù)附帶答案詳解
- 全球人工智能產(chǎn)業(yè)發(fā)展現(xiàn)狀和趨勢(shì)
- 2025年內(nèi)蒙古化工職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 民法典解讀之婚姻家庭編
- 2025年菏澤醫(yī)學(xué)專科學(xué)校高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年漯河職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- Unit 2 What time is it?-A Let's spell(課件)-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)下冊(cè)
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)下冊(cè)第二單元百分?jǐn)?shù)(二)(含答案)
- 創(chuàng)新教案:《歌唱二小放牛郎》在2025年音樂(lè)教學(xué)中的應(yīng)用
評(píng)論
0/150
提交評(píng)論