




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VI基于Django框架和微信小程序的慢病食療管理系統(tǒng)設(shè)計(jì)摘要隨著我國經(jīng)濟(jì)快速進(jìn)步和社會(huì)信息化的快速發(fā)展,使得我們更加注重自己的身心狀況,慢病食療也越來越受到人們的關(guān)注。本項(xiàng)目為了能提供給用戶居家慢病食療養(yǎng)生的服務(wù),設(shè)計(jì)開發(fā)了慢病食療小程序系統(tǒng)。目前小程序?qū)τ诖蟛糠钟脩魜碚f,相較于原生的APP,微信小程序的便捷操作流程會(huì)更加滿足線下推廣的需求,基于本著“方便快捷,觸手可及,即用即關(guān)”的特點(diǎn),微信小程序能更好滿足人們?cè)谏钪械男枨蠓?wù)。本研究論文以官方的食療網(wǎng)站作為慢病食療文章保障點(diǎn)并且結(jié)合微信小程序的開發(fā)技術(shù),采用了面向?qū)ο蟮难芯块_發(fā)方法,研制了一種能夠更加便于使用、方便快捷地查詢有關(guān)慢病食療文章的微信小程序。本系統(tǒng)采用Django的框架技術(shù),小程序的客戶端則是采用了微信小程序的MINA框架??蛻舳说膶?shí)現(xiàn)是通過網(wǎng)絡(luò)接口與服務(wù)器的API接口進(jìn)行交互然后對(duì)SQLite數(shù)據(jù)庫進(jìn)行相應(yīng)的操作[1]。在系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)中,本系統(tǒng)采用了MVC模式設(shè)計(jì)理念,并且頁面的實(shí)現(xiàn)也采用template模板來減少代碼的重復(fù)性編寫。慢病食療雖然見效慢,但是長期的食療對(duì)于自身的體質(zhì)改善是藥物不能帶來的巨大好處,也是本質(zhì)的提升。系統(tǒng)目前實(shí)現(xiàn)了食療文章推薦、附近藥店、發(fā)布動(dòng)態(tài)功能,能給慢病患者居家療養(yǎng)提供一些幫助。在此基礎(chǔ)上,未來會(huì)給與小程序增加針對(duì)慢病專業(yè)服務(wù)和專業(yè)咨詢等功能,為海南的慢病食療貢獻(xiàn)自己的力量。關(guān)鍵詞:小程序,慢病食療,MVC模式目錄TOC\o"1-3"\h\u11159本科生畢業(yè)論文 I14232本科生畢業(yè)論文獨(dú)創(chuàng)性聲明 II11866本科生畢業(yè)論文使用授權(quán)聲明 II3888摘要 37436Abstract 49044目錄 5322741慢病食療小程序的研究意義以及發(fā)展 6280341.1研究背景 617661.2研究的目的及意義 639871.3我國居民慢病情況 749112慢病食療小程序的可行性分析 768802.1技術(shù)可行性 7189302.1.1微信小程序 7126042.1.2微信開發(fā)者工具 823142.1.3DjangoRestFramework 8222832.1.4SQLite數(shù)據(jù)庫 9126682.2操作可行性分析 9181082.3經(jīng)濟(jì)可行性分析 98782.4國內(nèi)現(xiàn)有食療小程序分析 10228993慢病食療小程序的系統(tǒng)分析 10283553.1系統(tǒng)業(yè)務(wù)流程分析 10301203.2系統(tǒng)功能總體功能分析 1196423.3功能模塊詳細(xì)需求分析 12153573.3.1食療推薦模塊 13267943.3.2發(fā)布模塊 13111723.3.3附近藥店模塊 14327413.3.4食療文章分類 147724慢病食療小程序的設(shè)計(jì)與實(shí)現(xiàn) 15132324.1小程序的總體框架 1516674.2小程序開發(fā)方法及環(huán)境部署 16262904.3慢病食療小程序的數(shù)據(jù)庫設(shè)計(jì) 16262704.3.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì) 17179544.3.2數(shù)據(jù)庫邏輯設(shè)計(jì) 1919684.3.3數(shù)據(jù)庫的配置與實(shí)施 21268535慢病食療小程序的設(shè)計(jì)與實(shí)現(xiàn) 22166725.1小程序與Django服務(wù)器的交互設(shè)計(jì) 23155045.2食療文章推薦模塊的設(shè)計(jì)實(shí)現(xiàn) 2358365.3慢病分類模塊的設(shè)計(jì)實(shí)現(xiàn) 24224365.3.1慢病分類詳情模塊 25181485.4發(fā)布動(dòng)態(tài)模塊的設(shè)計(jì)實(shí)現(xiàn) 25170215.4.1動(dòng)態(tài)發(fā)布模塊 256040參考文獻(xiàn) 275313附錄A 2927465附錄B 311慢病食療小程序的研究意義以及發(fā)展1.1研究背景食物對(duì)人類來說是最重要的。我們?nèi)祟惷刻於汲允澄?,這些食物供給我們營養(yǎng)和能源,養(yǎng)活我們的身體。社會(huì)發(fā)展得越快,人們的生活水平也越高,人們購買食物的機(jī)會(huì)就越大,更重要的是,正確的營養(yǎng)選擇使得我們擁有健康的身體。然而,飲食也有可能會(huì)威脅我們的健康,會(huì)讓我們患上肥胖癥、高血壓、糖尿病等慢病。為了避免“病從口入”,飲食尤其要注意。此外,營養(yǎng)和疾病之間的聯(lián)系一直是醫(yī)生和營養(yǎng)學(xué)家都解決的問題。隨著人類社會(huì)的進(jìn)步和營養(yǎng)的改善,人類疾病的普遍程度也發(fā)生了變化。美國科學(xué)家提出人類飲食改變的三步理論,指出“饑餓減少、慢性疾病和行為改變”。指出,隨著生活水平的提高,越來越多的慢性疾病由于沒有充分注意積極預(yù)防工作而起作用。慢性病的增加引來了人們對(duì)慢性病預(yù)防和控制行為的變化的關(guān)注。當(dāng)人們的生活水平繼續(xù)提高的時(shí)候,慢性病,特別是心血管疾病,由于缺乏采取積極的預(yù)防措施而變得越來越嚴(yán)重。慢性病的崛起引人注目,因此,我們應(yīng)該關(guān)注行為的變化以阻止和控制慢性病的發(fā)生。許多慢性病的根源在于飲食不平等,包括營養(yǎng)不良和肥胖。慢性病是一種需要長期耐力的慢性病。對(duì)于慢性病人來說,食物療法是目前比較理想的的一種治療方法。1.2研究的目的及意義由于慢性病的病期一般都會(huì)很長,因此,要對(duì)付它的辦法,就要要求治療的方法求有持久性。食物療法就有較好的持久性,但是用戶對(duì)于慢性病有效的食療確是云里霧里,雖然現(xiàn)在市面上有有一些主打的食療養(yǎng)生的小程序,但是大多數(shù)食療小程序操作過于繁瑣,對(duì)于有些菜譜和食材詮釋的不夠細(xì)致,慢病食療微信小程序會(huì)簡化推薦食療的操作步驟,為用戶推送與時(shí)俱進(jìn)的養(yǎng)生方法和熱點(diǎn)并且用戶還可以發(fā)布自己編輯好的食療文章。即滿足大部分老百姓的需要,又更加智能化,增強(qiáng)用戶體驗(yàn)。此微信小程序的建立和運(yùn)行相對(duì)于其他的大部分小程序在食療推薦部分和互動(dòng)性更全面,操作步驟更簡潔,還能加深用戶對(duì)“食療”的了解,并以此向人們推行健康的飲食習(xí)慣和生活方式,這對(duì)提高老百姓的身體素質(zhì)具有十分重要的意義。1.3我國居民慢病情況慢性病發(fā)病率的增加與經(jīng)濟(jì)、社會(huì)、人口、行為、環(huán)境和許多其他因素有關(guān)。一方面,人們的生活質(zhì)量和醫(yī)療保健水平也得到了提高,預(yù)期壽命也在增加,老年人的數(shù)量也在相應(yīng)增加;另一方面,衛(wèi)生系統(tǒng)的改革提高了人們的健康意識(shí),增加了衛(wèi)生服務(wù)的使用,提高了衛(wèi)生服務(wù)的水平。擴(kuò)大對(duì)慢性病的早期診斷和治療,延長了慢性病患者的壽命,降低了死亡率,減少了復(fù)員人數(shù)。中國慢性病發(fā)病率的上升在一定程度上反映了社會(huì)經(jīng)濟(jì)和醫(yī)療水平的提高,以及人口生活水平和平均預(yù)期壽命的提高。但與此同時(shí),死于慢性病的比例有所上升。傳染病、嬰兒和產(chǎn)婦死亡率。習(xí)先生一直強(qiáng)調(diào)傳統(tǒng)醫(yī)學(xué)的價(jià)值。中國傳統(tǒng)醫(yī)學(xué)強(qiáng)調(diào)預(yù)防、預(yù)防、預(yù)防和預(yù)防復(fù)發(fā),適用于慢性病的預(yù)防和預(yù)防。因此,我們鼓勵(lì)公眾將飲食納入日常生活,但我們也特別注意飲食的科學(xué)方法。不同的人有不同的健康飲食,這提高了他們的健康知識(shí),使中醫(yī)在包括康復(fù)在內(nèi)的慢性病預(yù)防中發(fā)揮更大的作用。2慢病食療小程序的可行性分析2.1技術(shù)可行性2.1.1微信小程序微信小程序可簡稱為小程序(MiniProgram),是可通過“二維碼”或者“搜一搜”找到并能直接使用的應(yīng)用。小型程序使用全新的服務(wù)模式以及與通用網(wǎng)絡(luò)通信應(yīng)用框架MIMA框架與web前端開發(fā)技術(shù)類似的開發(fā)思路。微信小程序一旦推出,便迅速引起了行業(yè)內(nèi)部人士的廣泛關(guān)注和熱烈追捧,其開發(fā)模式相比web前端的開發(fā)、app的開發(fā)更為簡單、開發(fā)費(fèi)用成本小、開發(fā)門檻低。開發(fā)人員只要充分利用微信小程序MIMA的框架和微信小程序的組件以及所需要對(duì)應(yīng)的樣式表,就可以迅速開發(fā)并設(shè)計(jì)出微信小程序的產(chǎn)品[2]。小程序的優(yōu)點(diǎn)包括:在實(shí)際使用過程時(shí),小程序不需要下載安裝,隨掃隨用,隨開隨用,且不占用移動(dòng)終端設(shè)備的系統(tǒng)資源,系統(tǒng)效率高。應(yīng)用場(chǎng)景豐富,可根據(jù)使用需要的場(chǎng)景進(jìn)行開發(fā)。開發(fā)成本較低、實(shí)現(xiàn)功能完善,維護(hù)相對(duì)簡易。同樣的需求進(jìn)行系統(tǒng)設(shè)計(jì)使用小程來實(shí)現(xiàn)比其他方式更靈活方便。分享便捷,傳播范圍廣,可通過微信好友間分享或掃描小程序二維碼隨時(shí)使用。2.1.2微信開發(fā)者工具微信開發(fā)者工具是官方所推薦的開發(fā)微信小程序的編輯器,使用微信開發(fā)者工具首先要選擇相應(yīng)的模式,有開發(fā)模式和普通模式兩種模式。在編輯器編寫小程序的代碼后,保存之后即可在模擬器中顯示效果,如有報(bào)錯(cuò)可在調(diào)試控制臺(tái)進(jìn)行查看。除了模擬器查看效果之外,還可以點(diǎn)擊預(yù)覽或上傳,然后調(diào)用接口和數(shù)據(jù)庫進(jìn)行交互,實(shí)現(xiàn)微信掃一掃手機(jī)上真機(jī)預(yù)覽體驗(yàn)。2.1.3DjangoRestFrameworkdjango-rest是Djangoweb框架的一個(gè)插件,透過DjangoRESTframework(DRF)建立RESTAPI非常方便快速?,F(xiàn)在的常見的開發(fā)的模式是前后端分離模式,頁面是由前端工程師使用vue、react等前端框架編寫,接口由后端工程師通過其他框架編寫,簡單來說,前端工程師負(fù)責(zé)頁面渲染,后端工程師負(fù)責(zé)接口,為前端頁面提供數(shù)據(jù)。2.1.4SQLite數(shù)據(jù)庫SQLite是一個(gè)進(jìn)程內(nèi)的輕量級(jí)嵌入式數(shù)據(jù)庫,它的數(shù)據(jù)庫就是一個(gè)文件,實(shí)現(xiàn)了自給自足、無服務(wù)器、零配置的、事務(wù)性的SQL數(shù)據(jù)庫引擎[3]。它是一個(gè)無需在系統(tǒng)配置,就可以使用的的數(shù)據(jù)庫。SQLite對(duì)于其他數(shù)據(jù)庫有什么優(yōu)勢(shì)[3]:1.不需要配置,不需要安裝和管理[3]2.一個(gè)完整的SQLite數(shù)據(jù)庫是存儲(chǔ)在一個(gè)單一的跨平臺(tái)的磁盤文件[3]3.SQLite是非常小的,輕量級(jí)的數(shù)據(jù)庫,完全配置時(shí)小于400KiB,省略可選功能配置時(shí)小于250KiB[3]4.SQLite事務(wù)是完全兼容\t"/l199616j/p/_blank"ACID的,允許從多個(gè)進(jìn)程或線程安全訪問[3]2.2操作可行性分析此小程序的客戶端的界面主要是用WXML文件進(jìn)行設(shè)計(jì)的,樣式和布局則是由WXSS文件布局的,用戶使用小程序的所有操作這是由JS文件通過網(wǎng)絡(luò)接口對(duì)服務(wù)器進(jìn)行通信并將數(shù)據(jù)返回ISON數(shù)據(jù),小程序獲取后在前端展示。后端的處理邏輯則是由DRF框架的Serializers序列化獲取到小程序傳來的數(shù)據(jù)進(jìn)行處理并對(duì)數(shù)據(jù)庫進(jìn)行操作。所以此小程序的操作性是可行的。2.3經(jīng)濟(jì)可行性分析小程序的開發(fā)對(duì)于硬件和軟件需要的成本的要求較低,而且對(duì)于初學(xué)的開發(fā)者來說小程序的學(xué)習(xí)資料也較為容易得到,學(xué)習(xí)周期也很短,因此創(chuàng)建小程序相關(guān)開發(fā)環(huán)境所需的成本是相對(duì)較低的,這是不會(huì)給開發(fā)人員帶來經(jīng)濟(jì)的負(fù)擔(dān),所以在經(jīng)濟(jì)上是具有可行性的。2.4國內(nèi)現(xiàn)有食療小程序分析1、推薦食療類:“健康吃啥”微信小程序創(chuàng)意:此產(chǎn)品主要根據(jù)身體狀況智能推薦系統(tǒng),根據(jù)病狀查詢吃什么能治療,以及查看某種食物的功能屬性。有以下特色:簡單、革命性、顛覆優(yōu)點(diǎn):打造推薦食療平臺(tái),實(shí)現(xiàn)了查看某種食物的功能屬性。不足:無定期小活動(dòng),無任何交流互動(dòng),無任何游戲娛樂功能,吸引力差。2、菜譜知識(shí)類:“查菜譜”微信小程序創(chuàng)意:提供了超多精品的菜肴做法,菜譜主要分為一日三餐、家常菜譜、火鍋、美容養(yǎng)身、孕嬰食譜、驅(qū)寒溫補(bǔ)等類別,還直接搜索菜名或選擇功效查詢菜譜。優(yōu)點(diǎn):豐富的菜譜,大量高清圖片。不足:缺少交流平臺(tái),缺少互動(dòng)性。3、食物營養(yǎng)查詢類:“食物營養(yǎng)大全”微信小程序創(chuàng)意:用戶可以查詢食物的營養(yǎng)素含量(鉀鈣磷蛋白質(zhì)鈉水能量)優(yōu)點(diǎn):參照了《慢性腎臟病患者膳食指導(dǎo)》不足:缺少互動(dòng)性。4、養(yǎng)生類:“十堰食療養(yǎng)生”微信小程序創(chuàng)意:都是嚴(yán)格精選的養(yǎng)身類產(chǎn)品,是一個(gè)高度垂直的專業(yè)做養(yǎng)生類產(chǎn)品的網(wǎng)上商城。平臺(tái)還開辟了類UGC板塊和用戶同行業(yè)商戶“交朋友”,幫助各類個(gè)體戶商家以及平臺(tái)用戶入駐開店。優(yōu)點(diǎn):集合了行業(yè)專家。不足:缺少互動(dòng)性,對(duì)用戶習(xí)慣了解不夠。3慢病食療小程序的系統(tǒng)分析3.1系統(tǒng)業(yè)務(wù)流程分析本文在項(xiàng)目系統(tǒng)中的主要完成小程序的整體框架和數(shù)據(jù)庫的開發(fā)和設(shè)計(jì)。在慢病食療小程序的客戶端部分,用戶可以進(jìn)入到小程序,查看推薦食療、食療搜索、健康數(shù)據(jù)測(cè)評(píng)、附近藥店、發(fā)布食療文章、個(gè)人信息等功能的使用,在數(shù)據(jù)庫的設(shè)計(jì)中,通過比較嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì),就能夠使得每個(gè)數(shù)據(jù)表之間不僅相互有關(guān)聯(lián)關(guān)系而且還不冗余,使得設(shè)計(jì)的數(shù)據(jù)庫具備一定的可擴(kuò)展性。圖3.1慢病食療小程序推薦食療文章業(yè)務(wù)流程圖慢病食療小程序的推薦食療文章的流程如圖3.1所示,用戶使用小程序后無論用戶是否授權(quán)微信登錄都可以查看小程序推薦的食療文章,當(dāng)?shù)阶约焊信d趣的食療文章時(shí),可以點(diǎn)擊進(jìn)去詳細(xì)的預(yù)覽食療文章,但小程序推薦的食療文章不是用戶所感興趣的時(shí),用戶可以自行通過搜索功能進(jìn)行搜索自己感興趣的文章,小程序收錄了很多都是官方慢病食療網(wǎng)站上的食療文章供用戶自行選擇。3.2系統(tǒng)功能總體功能分析隨著互聯(lián)網(wǎng)的快速發(fā)展使得人們能夠獲取信息的主要方式便轉(zhuǎn)移到了智能手機(jī)等移動(dòng)設(shè)備上,雖然現(xiàn)在市面上有有一些主打的食療養(yǎng)生的小程序,但是大多數(shù)食療小程序操作過于繁瑣,對(duì)于有些菜譜和食材詮釋的不夠細(xì)致,并且市面上還未有一款食療小程序是專門針對(duì)慢病的食療進(jìn)行推薦的,這就慢病這塊有空白上的空缺,無法為想要知道慢病食療的用戶提供較好的線上體驗(yàn)服務(wù),導(dǎo)致用戶的體驗(yàn)極差。針對(duì)以上不足進(jìn)行分析,設(shè)計(jì)了慢病食療小程序,小程序主要面對(duì)的是想要查詢慢病食療的用戶,通過小程序,能幫助用戶深入了解慢病食療的制作方法和相關(guān)的慢病治療有益的文章推薦。食療小程序是一款用戶方便查詢慢病食療的小程序,秉承著用完即丟的思想,方便快捷且易于操作的設(shè)計(jì)理念,會(huì)極大的改進(jìn)慢病食療小程序上的空缺,極大地改進(jìn)用戶的使用體驗(yàn)。本小程序的業(yè)務(wù)邏輯模塊3.3功能模塊詳細(xì)需求分析用戶在微信登錄慢病食療小程序后,如果用戶未進(jìn)行登錄微信授權(quán),那么便是以游客的身份進(jìn)行使用小程序,游客可以使用其他小程序的功能,當(dāng)時(shí)不能使用發(fā)布朋友圈和健康測(cè)評(píng)的功能,用戶只有在授權(quán)微信登錄后才可以使用小程序的所有功能,圖3.3.1為食療小程序的功能用例圖。3.3.1食療推薦模塊用戶在微信登錄慢病食療小程序后,無論用戶是否進(jìn)行微信授權(quán),都可以直接進(jìn)入到微信小程序的各個(gè)頁面中對(duì)其進(jìn)行預(yù)覽并且還可以使用部分功能,當(dāng)一個(gè)用戶在預(yù)覽了小程序的"資訊"頁面時(shí),就有自動(dòng)觸發(fā)食療文章的推薦模塊的功能,主要是為用戶推薦被其他用戶預(yù)覽次數(shù)較多的食療文章。當(dāng)推薦的食療文章用戶不感興趣時(shí),用戶也可以在搜索框內(nèi)輸入自己想要查詢的慢病食療文章。慢病食療小程序的食療文章分類用例圖如圖3.3.2發(fā)布模塊用戶登錄授權(quán)微信后就可以使用發(fā)布的功能,用戶在“我的”頁面點(diǎn)擊朋友圈的即可進(jìn)入到發(fā)布頁面,發(fā)布頁面會(huì)展示其他用戶通過發(fā)布功能發(fā)布的慢病食療文章、心情等其他動(dòng)態(tài)。用戶若想發(fā)表自己的評(píng)論只需點(diǎn)擊所想要評(píng)論的動(dòng)態(tài)就能進(jìn)入到動(dòng)態(tài)的詳情頁面,在底下的輸入框能輸入想要發(fā)表的評(píng)論即可,也可以評(píng)論其他人的評(píng)論。用戶想要發(fā)表自己的動(dòng)態(tài)時(shí)只需返回到動(dòng)態(tài)的首頁,點(diǎn)擊照相機(jī)圖標(biāo)就可以發(fā)布自己的動(dòng)態(tài),動(dòng)態(tài)發(fā)布后,用戶可以選擇是否查看動(dòng)態(tài)或者是繼續(xù)發(fā)布新的動(dòng)態(tài)。慢病食療小程序的食療文章分類用例圖如圖3.3.3附近藥店模塊用戶在“食療坊”頁面會(huì)看到藥店的列表頁面,當(dāng)用戶未定位時(shí)所推薦的藥店即為默認(rèn)的附近藥店,用戶定位后則食療小程序會(huì)推薦離用戶較近的藥店,點(diǎn)擊藥店后便可以進(jìn)入到藥店的詳情頁,里面會(huì)羅列出藥店所有的對(duì)慢病治療有效的藥品信息,采用了購物車的方式,用戶可以點(diǎn)擊所選購的藥品,小程序會(huì)自動(dòng)的幫用戶結(jié)算費(fèi)用,方便用戶能透明的看到藥品的價(jià)格,防止用戶對(duì)藥品價(jià)格有所模糊不清。慢病食療小程序的食療文章分類用例圖如圖 3.3.4食療文章分類用戶在慢病食療小程序的“食療坊”頁面,可以根據(jù)想要了解的慢病類別點(diǎn)擊進(jìn)入到詳情頁面,用戶可以在該頁面快速的找到所需要的慢病食療文章,同時(shí)在用戶在分類瀏覽不同的慢病類別的過程中,也可以從分類的角度更加全面的認(rèn)識(shí)了解慢病食療的范圍和特點(diǎn)。慢病食療小程序的食療文章分類用例圖如圖4慢病食療小程序的設(shè)計(jì)與實(shí)現(xiàn)4.1小程序的總體框架4.2小程序開發(fā)方法及環(huán)境部署小程序的客戶端采用的是面向?qū)ο蟮拈_發(fā)方法,利用面向?qū)ο蠓椒ㄖ械姆庋b、繼承和多態(tài)性,將小程序劃分為相對(duì)獨(dú)立的個(gè)體模塊,每個(gè)模塊都有自己功能模塊設(shè)計(jì)與實(shí)現(xiàn),在開發(fā)的過程中先將每個(gè)模塊功能開發(fā)實(shí)現(xiàn),然后再將各個(gè)模塊進(jìn)行集成和組織[4],使得整個(gè)小程序系統(tǒng)結(jié)構(gòu)具有一定的層次分明,且這也也便于開發(fā)工作的管理。面向?qū)ο蟮拈_發(fā)方法是為了避免在開發(fā)過程中經(jīng)常重復(fù)性的工作,進(jìn)行可重復(fù)性的使用設(shè)計(jì)能減少開發(fā)的重復(fù)工作以便提高開發(fā)的效率。例如在實(shí)現(xiàn)食療文章推薦時(shí),將其封裝設(shè)計(jì)成為一個(gè)相對(duì)獨(dú)立的可重復(fù)使用的代碼作為基類,當(dāng)其他功能需要調(diào)用時(shí),直接調(diào)用即可無需再復(fù)寫代碼,也可以避免代碼的冗余。本項(xiàng)目的基礎(chǔ)環(huán)境基于Django2.1.4版本,在小程序的頁面開發(fā)上選擇采用的是微信開發(fā)者工具,采用djangorestframework3.11.0版本作為序列化器的編寫處理用戶對(duì)小程序的操作以及數(shù)據(jù)庫的數(shù)據(jù)返回存儲(chǔ),選用Navicat連接SQLite數(shù)據(jù)庫作為可視化管理工具。4.3慢病食療小程序的數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫的設(shè)計(jì)是所有軟件開發(fā)中最基礎(chǔ)和最核心的一部分[5],良好的數(shù)據(jù)庫設(shè)計(jì)不僅能讓小程序具有更快更好的運(yùn)行速度,而且還能減少代碼的冗余使得開發(fā)過程避免不必要的代碼返工。目前關(guān)系型數(shù)據(jù)庫是小程序的主流選擇,關(guān)系型數(shù)據(jù)庫具有更加嚴(yán)格的設(shè)計(jì)規(guī)范,對(duì)各類數(shù)據(jù)進(jìn)行有效的存儲(chǔ)和維護(hù),為了實(shí)現(xiàn)這個(gè)目標(biāo)在數(shù)據(jù)庫設(shè)計(jì)的過程中規(guī)范設(shè)計(jì)就顯得尤為重要。在對(duì)小程序進(jìn)行數(shù)據(jù)庫設(shè)計(jì)時(shí),不僅要嚴(yán)格滿足數(shù)據(jù)庫的設(shè)計(jì)準(zhǔn)則,而且還要結(jié)合小程序的實(shí)際業(yè)務(wù)進(jìn)行分析出系統(tǒng)中不同的實(shí)體之間關(guān)系來確定這些實(shí)體之間的關(guān)系類型。4.3.1數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)作為其他數(shù)據(jù)模型的共同基礎(chǔ),它具有比數(shù)據(jù)模型更加抽象,對(duì)于數(shù)據(jù)模型更穩(wěn)定的特點(diǎn)。概念結(jié)構(gòu)設(shè)計(jì)的過程就是要將用戶的需求綜合抽象為一個(gè)信息結(jié)構(gòu)的過程,E-R圖作為最實(shí)用的一種概念設(shè)計(jì)模型,包含實(shí)體、屬性、聯(lián)系三個(gè)要素,所以它是目前所要描述現(xiàn)實(shí)世界關(guān)系概念模型的有效方法[6]。本文從慢病食療小程序的用戶實(shí)際的業(yè)務(wù)和功能模塊進(jìn)行分析然后確定系統(tǒng)所需要的實(shí)體集,并確定了實(shí)體與實(shí)體之間的相關(guān)聯(lián)系。慢病食療小程序的實(shí)體信息如下:(1)慢病食療小程序的食療文章推薦實(shí)體圖的屬性包含標(biāo)題、導(dǎo)語、文章內(nèi)容、封面圖片、游覽數(shù)、創(chuàng)建時(shí)間,如圖所示(2)慢病食療小程序的附近藥店實(shí)體圖的屬性包含商店名稱、商店封面、商店介紹、人均消費(fèi)、商店詳情、類型,購買人數(shù)、商店所在城市,如圖所示(3)慢病食療小程序的慢病食療文章分類實(shí)體圖的屬性包含文章標(biāo)題、導(dǎo)語、封面、內(nèi)容、分類類型,如圖所示(4)慢病食療小程序的附近商店模塊藥品信息實(shí)體圖的屬性包含藥品名稱、藥品數(shù)量、藥品封面、價(jià)格、藥品信息、所屬商店,如圖所示慢病食療小程序的動(dòng)態(tài)發(fā)布實(shí)體圖的屬性包含封面、內(nèi)容、話題、發(fā)布者、贊數(shù)、游覽數(shù)、評(píng)論數(shù)、創(chuàng)建時(shí)間,如圖所示慢病食療小程序的評(píng)論記錄表實(shí)體圖的屬性包含動(dòng)態(tài)、評(píng)論內(nèi)容、評(píng)論者、評(píng)論時(shí)間、贊數(shù),如圖所示4.3.2數(shù)據(jù)庫邏輯設(shè)計(jì)根據(jù)概念邏輯設(shè)計(jì)中的E-R圖進(jìn)行數(shù)據(jù)庫的轉(zhuǎn)換規(guī)則,對(duì)數(shù)據(jù)庫中各數(shù)據(jù)表的字段進(jìn)行準(zhǔn)確規(guī)劃,從而將各類的數(shù)據(jù)信息轉(zhuǎn)換成其相對(duì)應(yīng)的數(shù)據(jù)庫的表的過程。本系統(tǒng)最后的數(shù)據(jù)模型將以表格的形式進(jìn)行展示,表中具體說明數(shù)據(jù)中屬性名稱,主鍵、含義、類型、約束條件,是否為空等信息[1],慢病食療小程序的數(shù)據(jù)庫表設(shè)計(jì)詳細(xì)如下[7]:(1)食療文章信息表News基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵標(biāo)題titlevarchar128否導(dǎo)語descvarchar128否封面imagevarchar100否內(nèi)容detailtext否游覽數(shù)readNumPositiveIntegerField是(2)附近藥品商店信息表Store基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵藥店名稱namevarchar128否藥店封面picvarchar100否藥品介紹descriptiontext100否人均消費(fèi)priceinteger否藥店詳情detailstext否類型typeinteger否購買人數(shù)buynuminteger否商店所在城市cityvarchar128否食療分類信息表Producttype基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵文章標(biāo)題titlevarchar128否導(dǎo)語descvarchar128否封面imagevarchar100否內(nèi)容detailtext否分類類型typeinteger是藥品信息表ProductDetail基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵藥品名稱namevarchar128否藥品封面picvarchar100否數(shù)量numinteger否藥品信息infovarchar256否價(jià)格priceinteger否所屬商店storeinteger否發(fā)布動(dòng)態(tài)信息表release_news基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵動(dòng)態(tài)封面covervarchar128否內(nèi)容contenttext否話題topicinteger是位置addressvarchar128否發(fā)布者userinteger否贊數(shù)favor_countIntegerunsigned是游覽數(shù)viewer_countIntegerunsigned是評(píng)論數(shù)comment_countIntegerunsigned是創(chuàng)建時(shí)間Create_datedatetime否評(píng)論記錄信息表commentRecord基本數(shù)據(jù)表,如表名稱字段名類型大小是否為空鍵IDinteger否主鍵動(dòng)態(tài)news_idinteger否評(píng)論內(nèi)容contentvarchar255否評(píng)論者user_idinteger否評(píng)論時(shí)間create_datedatetime否回復(fù)reply_idinteger否評(píng)論層級(jí)depth_idIntegerunsigned是根評(píng)論root_idRoot_id否贊數(shù)favor_countIntegerunsigned是4.3.3數(shù)據(jù)庫的配置與實(shí)施本文結(jié)合慢病食療小程序業(yè)務(wù)的實(shí)際情況,在開發(fā)環(huán)境中建立了SQLite數(shù)據(jù)庫,且用Navicat工具來圖形化管理數(shù)據(jù)庫,以及根據(jù)數(shù)據(jù)庫的概念結(jié)構(gòu)和邏輯結(jié)構(gòu)進(jìn)行合理的分析,在本數(shù)據(jù)庫中一共建立了13張表并創(chuàng)建了與數(shù)據(jù)庫相對(duì)應(yīng)的語句,用Navicat工具輸入了相應(yīng)表的測(cè)試數(shù)據(jù)。并在后端Django項(xiàng)目中的配置文件settings.py數(shù)據(jù)庫配置參數(shù)如[8]:DATABASES={
'default':{
'ENGINE':'django.db.backends.sqlite3',
'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
}
}BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))通過以上配置便可以實(shí)現(xiàn)服務(wù)器與SQLite數(shù)據(jù)庫的通信,Django訪問數(shù)據(jù)庫的數(shù)據(jù)采用了ORM(ObjectRelationalMapping)即對(duì)象關(guān)系映射,其主要作用是在編程中,把面向?qū)ο蟮母拍罡鷶?shù)據(jù)庫中表的概念對(duì)應(yīng)起來[6]。使用ORM能使得開發(fā)更具有靈活性,不必要去過度的關(guān)注數(shù)據(jù)庫的語句調(diào)用且在轉(zhuǎn)換其他數(shù)據(jù)庫時(shí)更方便快捷,無需進(jìn)行二次開發(fā)。通過ORM開發(fā)人員就只需要利用模型對(duì)象就能實(shí)現(xiàn)更加復(fù)雜的業(yè)務(wù)邏輯而且需要的代碼量會(huì)比之前少很多很多,使得開發(fā)速度更加的快速不用關(guān)注數(shù)據(jù)庫的邏輯是怎么實(shí)現(xiàn)的,ORM會(huì)將訪問的數(shù)據(jù)庫代碼封裝到類的模型中,開發(fā)人員只需要在服務(wù)器的控制層便能調(diào)用模型類來支持控制層的業(yè)務(wù)邏輯。例如資訊的輪播圖的數(shù)據(jù)實(shí)例如下:queryset=Banner.objects.all()
ser=bannerserializers(instance=queryset,many=True)5慢病食療小程序的設(shè)計(jì)與實(shí)現(xiàn)用戶在慢病食療小程序客戶端完成閱讀食療文章、定位、發(fā)布動(dòng)態(tài)等行為都是有一定的處理邏輯才能實(shí)現(xiàn),除了微信小程序自帶的WeUI組件庫外,還需要慢病食療小程序客戶端與Django服務(wù)器和微信服務(wù)器中的API接口支持,用戶在慢病食療小程序進(jìn)行的食療查詢文章則是通過ORM對(duì)sqlite數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢并將數(shù)據(jù)返回給小程序的前端。在微信小程序的整體實(shí)現(xiàn)代碼遵循MVC模式的設(shè)計(jì)思想,其中慢病食療小程序的.js文件充當(dāng)控制器角色,model.py文件是模型層角色,最后.wxml文件和.wxss文件則是視圖層。5.1小程序與Django服務(wù)器的交互設(shè)計(jì)用慢病食療小程序的頁面效果是需要請(qǐng)求服務(wù)器的數(shù)據(jù),用戶使用小程序的任何動(dòng)作,也需要請(qǐng)求Django服務(wù)器的數(shù)據(jù)更新頁面數(shù)據(jù)。如下圖所示,這個(gè)過程需要小程序的.wxml文件、.js文件和服務(wù)器的API進(jìn)行交互。當(dāng)小程序客戶端需要向服務(wù)器請(qǐng)求數(shù)據(jù)時(shí),.js文件會(huì)通過wx.request 函數(shù)發(fā)送HTTPS請(qǐng)求服務(wù)器的API并請(qǐng)求獲取數(shù)據(jù)庫的數(shù)據(jù),當(dāng)服務(wù)器接到請(qǐng)求后會(huì)通過序列化器返回處理結(jié)果并將結(jié)果返回js文件的請(qǐng)求函數(shù)中,請(qǐng)求成功后success可以輸出返回結(jié)果,在js文件中可以通過setData數(shù)據(jù)綁定的方式將數(shù)據(jù)返回到wxml文件并在客戶端展示數(shù)據(jù)效果。5.2食療文章推薦模塊的設(shè)計(jì)實(shí)現(xiàn)用戶閱讀食療文章的功能設(shè)計(jì)和實(shí)現(xiàn)是在小程序的“首頁”頁面中,為了使得數(shù)據(jù)能快速得取得,將獲取數(shù)據(jù)寫在.js文件的onLand:function中即監(jiān)聽頁面加載,通過index.js文件的wx.request向Django服務(wù)器發(fā)送HTTPS請(qǐng)求,數(shù)據(jù)請(qǐng)求成功后賦值給list列表并在index.wxml文件通過wx:for循環(huán)將獲取的數(shù)據(jù)展示,簡要代碼如下,主要程序代碼及注釋請(qǐng)查看附錄A<viewclass='item'wx:for='{{list}}'wx:key='index'bindtap='indexDetail'data-id='{{item.id}}'><viewclass='title'>{{item.title}}</view><viewclass='item-wrapper'><viewclass='img'><imagesrc=':8000{{item.image}}'></image></view><viewclass='info'>{{item.desc}}</view></view><viewclass='ready-num'><text>{{item.readNum}}</text>次閱讀</view></view>點(diǎn)擊食療文章,會(huì)跳轉(zhuǎn)到相應(yīng)文章的詳細(xì)頁面,慢病食療小程序的推薦食療文章運(yùn)行效果圖如下所示:5.3慢病分類模塊的設(shè)計(jì)實(shí)現(xiàn)慢病分類頁面可以實(shí)現(xiàn)不同慢病種類的快速導(dǎo)航功能,更加方便用戶快速的查詢慢病類型。用戶可以在“食療坊”頁面看到慢病分類模塊,點(diǎn)擊慢病分類的圖片和文字便可以進(jìn)入到相應(yīng)的詳情頁面,以上的邏輯具體實(shí)現(xiàn)如下:在food.wxml文件中包含兩個(gè)view用來展示和item.imgUrl,從productType循環(huán)遍歷讀取定義在productdata.js文件中的慢病名稱和圖標(biāo)。當(dāng)用戶點(diǎn)擊慢病分類的圖片或文字就會(huì)觸發(fā)productType事件將不同慢病類型的id傳值跳轉(zhuǎn)到productType頁面,productType方法的簡要實(shí)現(xiàn)如下:productDetail:function(e){wx.navigateTo({url:'../productDetail/productDetail?itemId='+e.currentTarget.datasetid,})}5.3.1慢病分類詳情模塊在慢病分類頁面點(diǎn)擊圖片和文字就可以切換帶相應(yīng)的慢病分類的數(shù)據(jù)頁面,在productType.js的onLoad:function中定義一個(gè)num變量用來取得從food.js傳值過來的id,用wx.request向服務(wù)器發(fā)送HTTPS請(qǐng)求并將num作為data傳值給服務(wù)器,Django服務(wù)器API接受到請(qǐng)求后會(huì)對(duì)其進(jìn)行相應(yīng)的邏輯處理,簡要代碼如下所示:classProductTypeserializers(serializers.ModelSerializer):classMeta:model=ProductTypefields=['id','title','desc','image','detail','type']classProductTypeView(APIView):defget(self,request,*args,**kwargs):type=request.query_params.get('type')queryset=ProductType.objects.filter(type=type)ser=ProductTypeserializers(instance=queryset,many=True)returnResponse(ser.data,status=200)5.4發(fā)布動(dòng)態(tài)模塊的設(shè)計(jì)實(shí)現(xiàn)當(dāng)用戶授權(quán)微信登錄后便可以使用慢病食療小程序的發(fā)布動(dòng)態(tài)模塊,在“我的”頁面點(diǎn)擊“朋友圈”便可以進(jìn)入到發(fā)布動(dòng)態(tài)的頁面。用戶可以在此發(fā)布自己的心情或者想要分享的慢病食療文章,當(dāng)看到感興趣的文章時(shí)還可以點(diǎn)擊進(jìn)到動(dòng)態(tài)的詳情頁面進(jìn)行查看和評(píng)論。5.4.1動(dòng)態(tài)發(fā)布模塊動(dòng)態(tài)發(fā)布模塊的前端頁面設(shè)計(jì)和樣式控制是在push.wxml、push.wxss文件實(shí)現(xiàn)的,用戶點(diǎn)擊在動(dòng)態(tài)頁面點(diǎn)擊“相機(jī)”圖標(biāo)就可以通過Publish事件跳轉(zhuǎn)到push頁面,在push.wxml頁面用戶可以點(diǎn)擊“圖片”圖標(biāo)進(jìn)行上傳照片,在下面的文本框中可以發(fā)布自己想要發(fā)布的動(dòng)態(tài),動(dòng)態(tài)發(fā)布還添加了定位位置和選擇相關(guān)話題的功能,用戶可以自行的添加或者不添加皆可。在push.js文件中則對(duì)用戶的動(dòng)作做了相應(yīng)的處理,如上傳圖片的事件為uploadImage:function其中l(wèi)ettotalCount=res.tempFiles.length+this.data.imageList.length定義看上傳的圖片最多為九張,當(dāng)超過時(shí)會(huì)由wx.showTost事件進(jìn)行提醒。用戶上傳的圖片是存儲(chǔ)在騰訊云的對(duì)象存儲(chǔ)中,騰訊云對(duì)象存儲(chǔ)上傳文件臨時(shí)秘鑰簡要代碼如下所示:cos=newCOS({getAuthorization:function(options,callback){wx.request({url:':8000/release/credential/',data:{},success:function(result){vardata=result.data;varcredentials=data.credentials;callback({TmpSecretId:credentials.tmpSecretId,TmpSecretKey:credentials.tmpSecretKey,XCosSecurityToken:credentials.sessionToken,ExpiredTime:data.expiredTime,});}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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/CCASC 3002-2023聚氯乙烯動(dòng)態(tài)熱穩(wěn)定性試驗(yàn)雙輥開煉機(jī)塑煉法
- T/CCAS 038-2024水泥行業(yè)5G智能安全帽
- T/CAS 851-2024氫氣輸送工業(yè)管道技術(shù)規(guī)程
- T/CAQI 41-2018直飲水水站安裝驗(yàn)收要求
- 大一c語言考試題及答案
- 畫圖教程考試題及答案
- 健康學(xué)院面試題及答案
- 畜牧英語面試題及答案
- 新人教版語文七年級(jí)上冊(cè)文言文知識(shí)點(diǎn)總結(jié)模版
- 人生規(guī)劃班會(huì)課件
- 高級(jí)審計(jì)師考試關(guān)注熱點(diǎn)試題及答案
- 2024年建筑《主體結(jié)構(gòu)及裝飾裝修》考試習(xí)題庫(濃縮500題)
- 致2025屆高考生高二到高三如何順利轉(zhuǎn)型
- 慈善專項(xiàng)捐贈(zèng)協(xié)議書
- 2025年高考數(shù)學(xué)二輪熱點(diǎn)題型歸納與演練(上海專用)專題06數(shù)列(九大題型)(原卷版+解析)
- 2025中國鐵路南寧局集團(tuán)有限公司招聘高校畢業(yè)生32人四(本科及以上學(xué)歷)筆試參考題庫附帶答案詳解
- 第1章 整式的乘法(單元測(cè)試)(原卷)2024-2025學(xué)年湘教版七年級(jí)數(shù)學(xué)下冊(cè)
- 2025貴州中考:歷史必考知識(shí)點(diǎn)
- 《高中數(shù)學(xué)知識(shí)競賽》課件
- 2025-2030年中國城市燃?xì)庑袠I(yè)發(fā)展分析及發(fā)展戰(zhàn)略研究報(bào)告
- 人民醫(yī)院關(guān)于印發(fā)對(duì)口支援工作管理辦法(暫行)
評(píng)論
0/150
提交評(píng)論