![基于微信小程序的Flask訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view11/M00/24/23/wKhkGWXypkeAA7mnAAGQPLjsSXM218.jpg)
![基于微信小程序的Flask訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view11/M00/24/23/wKhkGWXypkeAA7mnAAGQPLjsSXM2182.jpg)
![基于微信小程序的Flask訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view11/M00/24/23/wKhkGWXypkeAA7mnAAGQPLjsSXM2183.jpg)
![基于微信小程序的Flask訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view11/M00/24/23/wKhkGWXypkeAA7mnAAGQPLjsSXM2184.jpg)
![基于微信小程序的Flask訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view11/M00/24/23/wKhkGWXypkeAA7mnAAGQPLjsSXM2185.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要本文主要從當(dāng)前日益增加的用戶訂餐需求和商家需要降低管理成本的需求出發(fā),以“輕便快捷”的微信小程序?yàn)橐劳?,設(shè)計(jì)并實(shí)現(xiàn)了一款基于微信小程序的,滿足用戶和商家需要的訂餐管理系統(tǒng)。本文設(shè)計(jì)并實(shí)現(xiàn)的訂餐管理系統(tǒng)主要包括小程序前端和管理后臺(tái)兩個(gè)部分,其中前端使用微信小程序里面的WXML,WXSS的可視化層技術(shù),實(shí)現(xiàn)了添加購(gòu)物車和下單美食,可以評(píng)論以及分享,可以管理個(gè)人中心的功能,管理后臺(tái)主要使用FlaskMVC技術(shù)框架,實(shí)現(xiàn)了賬號(hào)管理、美食管理、會(huì)員管理以及財(cái)務(wù)管理等功能,對(duì)于平臺(tái)數(shù)據(jù)本文使用MySQL數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)管理,并使用微信開(kāi)發(fā)平臺(tái)提供的API接口來(lái)實(shí)現(xiàn)前后端數(shù)據(jù)互連,進(jìn)而保證用戶、商家和平臺(tái)管理人員方便快捷的使用該應(yīng)用。關(guān)鍵詞:Flask;MVC;訂餐系統(tǒng);微信小程序I第一章緒論1.1項(xiàng)目背景與意義隨著互聯(lián)網(wǎng)的迅猛發(fā)展,互聯(lián)網(wǎng)已然成為巨大信息的交換和流通的平臺(tái),人們的生活質(zhì)量也因此不斷提高。其中外賣app的發(fā)展就是一個(gè)很好的例子。互聯(lián)網(wǎng)餐飲外賣以其食品種類齊全,方便快捷,成為現(xiàn)代大部分人生活中重要的組成部分,而且激發(fā)了餐飲外賣行業(yè)的創(chuàng)業(yè)與就業(yè)[1]。外賣平臺(tái)雖然流量大,但是增加了餐廳經(jīng)營(yíng)難度,平臺(tái)抽傭較多,使得店家成本高,用戶數(shù)據(jù)基本綁定在第三方,使用戶留存成難題。據(jù)了解某個(gè)大型外賣平臺(tái)目前的傭金約為26%。如此高的外賣傭金意味著他們的收入將大大減少。但微信小程序沒(méi)有傭金,所以當(dāng)它們被用于外賣時(shí),商家自然可以降低成本,提高利潤(rùn)。這使得企業(yè)和商家不得不向小程序跳槽。騰訊于2017年推出的微信小程序是一款依托于微信運(yùn)行的手機(jī)應(yīng)用。據(jù)調(diào)查顯示,截止到2016年12月微信全球共計(jì)8.89億月活用戶,正是這巨大的用戶信息量帶動(dòng)了信息消費(fèi)1742.5億元,同時(shí)也帶動(dòng)了微信小程序的發(fā)展[2]。自小程序誕生以來(lái),各個(gè)行業(yè)都有不少企業(yè)和商家選擇并且發(fā)展了小程序,其中還包括很多外賣行業(yè)的企業(yè)和商家。微信用戶只需要在微信的搜索功能里直接搜索或掃描二維碼即可。微信小程序具備四大特性,分別是無(wú)需下載、觸手可及、用完即走和無(wú)需卸載,這讓它成為了免去客戶端的輕型應(yīng)用程序。這種不需要下載安裝即可使用的應(yīng)用,它真正實(shí)現(xiàn)了互聯(lián)網(wǎng)中“觸手可及”的夢(mèng)想。毫無(wú)疑問(wèn)的是,“外賣點(diǎn)餐+小程序”符合當(dāng)前我國(guó)發(fā)展經(jīng)濟(jì)模式,這種結(jié)合無(wú)論是學(xué)生,還是成年人甚至是老年人都帶來(lái)極大的便利。傳統(tǒng)的人工點(diǎn)餐降低了人們的就餐體驗(yàn)以及出錯(cuò)率比較高,而利用微信小程序?qū)崿F(xiàn)的二維碼點(diǎn)餐系統(tǒng),更加能給客戶帶來(lái)更優(yōu)質(zhì)的體驗(yàn)感[3]。因?yàn)樗鼡碛休p服務(wù)的小程序技術(shù),用戶無(wú)需下載應(yīng)用,點(diǎn)開(kāi)微信即可使用,也不用耗費(fèi)時(shí)間人力去到店點(diǎn)餐,這對(duì)所有用戶來(lái)說(shuō)是非常方便的。因此,將個(gè)外賣點(diǎn)餐與小程序結(jié)合是完全適合當(dāng)下社會(huì)的需求,本系統(tǒng)的開(kāi)發(fā)具有以下意義:從商家層面來(lái)說(shuō),本設(shè)計(jì)能夠幫助商家結(jié)合微信龐大的流量群體,整合線下銷售服務(wù)和互聯(lián)網(wǎng),拓展出視野更加寬闊的線上下線一體化市場(chǎng),通過(guò)微信線上的用戶群體,線下服務(wù)客戶,可以拉近自己與用戶的距離,達(dá)成交易。同時(shí),它可以為企業(yè)節(jié)省人力和運(yùn)營(yíng)費(fèi)用;從開(kāi)發(fā)者角度來(lái)看,小程序開(kāi)發(fā)門檻相對(duì)較低,難度小于APP,既能夠滿足簡(jiǎn)單的基礎(chǔ)應(yīng)用,又適合生活服務(wù)類線下商鋪以及非剛需低頻應(yīng)用的轉(zhuǎn)換;從用戶層面來(lái)看,本設(shè)計(jì)響應(yīng)小程序發(fā)展趨勢(shì),可以節(jié)約使用時(shí)間成本和手機(jī)內(nèi)存空間,改善現(xiàn)代人生活。1.2國(guó)內(nèi)外發(fā)展現(xiàn)狀1.2.1外賣點(diǎn)餐發(fā)展現(xiàn)狀長(zhǎng)期以來(lái),網(wǎng)上訂餐的方式在國(guó)外得到了廣泛的應(yīng)用,不僅節(jié)省了時(shí)間,而且為餐飲管理提供了一種更加簡(jiǎn)單有效的方式。美國(guó)率先提出網(wǎng)上訂購(gòu)模式。對(duì)于餐飲業(yè)來(lái)說(shuō),發(fā)達(dá)國(guó)家的發(fā)展速度和需求遠(yuǎn)遠(yuǎn)高于不發(fā)達(dá)國(guó)家。畢竟,發(fā)達(dá)國(guó)家的人時(shí)間觀念很強(qiáng),對(duì)服務(wù)的需求也很高。更重要的是,他們可以不斷找到更先進(jìn)的管理方法和手段,并將其發(fā)揮到極致,尤其是信息技術(shù)。顧客的消費(fèi)水平在逐漸提高,餐飲行業(yè)的競(jìng)爭(zhēng)相當(dāng)激烈[4]。據(jù)調(diào)查,國(guó)外網(wǎng)上訂購(gòu)大多是通過(guò)互聯(lián)網(wǎng)開(kāi)辦類似超市的網(wǎng)上餐飲,再與專業(yè)物流配送公司合作,因此他們的訂購(gòu)體系廣為傳播,得到了群眾的廣泛認(rèn)可和高度贊賞。近年來(lái),中國(guó)餐飲業(yè)發(fā)展迅猛,據(jù)調(diào)查統(tǒng)計(jì)2017年我國(guó)的外賣市場(chǎng)規(guī)模突破2000億元,我國(guó)網(wǎng)上外賣用戶規(guī)模達(dá)到3.43億人,這數(shù)據(jù)信息足以表明我國(guó)的餐飲市場(chǎng)潛力巨大[5]。當(dāng)今大部分人選擇以訂餐的方式來(lái)解決自己的用餐問(wèn)題,這從而誕生了O2O外賣平臺(tái),它不僅能夠滿足消費(fèi)者的需求而且也順應(yīng)了國(guó)家與社會(huì)經(jīng)濟(jì)發(fā)展趨勢(shì)[6]。商店可以根據(jù)自己的條件和環(huán)境要求選擇適合他們的營(yíng)銷策略。只有這樣,他們才能從激烈的市場(chǎng)競(jìng)爭(zhēng)中嶄露頭角。在當(dāng)今的大數(shù)據(jù)時(shí)代,了解如何使用當(dāng)今快速增長(zhǎng)的網(wǎng)絡(luò)以及掌握如何使用微信可以為您帶來(lái)巨大的商機(jī)。在中國(guó),在線食品訂購(gòu)已基本遍布整個(gè)中國(guó)外賣市場(chǎng)。例如,美團(tuán)和餓了么這兩個(gè)陣營(yíng)占領(lǐng)了中國(guó)的大部分市場(chǎng),并且已經(jīng)出現(xiàn)了無(wú)數(shù)具有在線食品訂購(gòu)系統(tǒng)的公司。1.2.2微信小程序發(fā)展現(xiàn)狀時(shí)代是不斷向前發(fā)展的,同時(shí)科學(xué)技術(shù)也越來(lái)越成熟。輕型應(yīng)用程序在2017年開(kāi)始變得炙手可熱。原因是推出了擁有近10億用戶的微信小程序。根本原因是技術(shù)的發(fā)展,應(yīng)用程序市場(chǎng)模型的缺陷以及用戶探索應(yīng)用程序的意愿下降。隨著小程序的出現(xiàn),市場(chǎng)迫切需要開(kāi)發(fā)人員以較低的成本開(kāi)發(fā)應(yīng)用程序并分發(fā)應(yīng)用程序,以便用戶可以更有效地發(fā)現(xiàn)應(yīng)用程序并使用新的應(yīng)用程序載體。微信小程序不但給用戶帶來(lái)了極大的方便,無(wú)需考慮適應(yīng)性和分發(fā),還免去了傳統(tǒng)app需要下載的煩瑣,即用即來(lái),關(guān)閉即走,不會(huì)占用用戶設(shè)備過(guò)多的內(nèi)存[7]。它的功能恰好滿足了市場(chǎng)的需求。于是,微信小程序成為2018年最熱銷的網(wǎng)點(diǎn),無(wú)數(shù)的企業(yè)家,開(kāi)發(fā)商和投資機(jī)構(gòu)進(jìn)入,共同創(chuàng)造了小程序的早期生態(tài)。移動(dòng)互聯(lián)網(wǎng)時(shí)代也加入了逐漸興起的“輕服務(wù)”。經(jīng)濟(jì)的高速發(fā)展,讓人們不得不加快生活節(jié)奏,時(shí)間效益成為了現(xiàn)代人考慮事情的要點(diǎn)之一。那么“輕服務(wù)”就是一種便捷高效的方式,為他人節(jié)約時(shí)間的服務(wù)。當(dāng)下最稀有的莫過(guò)于時(shí)間,最好的服務(wù)不僅僅是有溫度的,而且也必須是“輕”的[8]。微信小程序無(wú)需下載即可使用。它們也與“輕服務(wù)”的概念相吻合。目前,微信的開(kāi)放環(huán)境已經(jīng)創(chuàng)建了大量的第三方公司。微信訂餐從在線訂餐中脫穎而出,于是微信訂餐的發(fā)展直突飛猛進(jìn),必將成為未來(lái)外賣訂購(gòu)的主流趨勢(shì)。通過(guò)微信點(diǎn)餐系統(tǒng),群眾更加方便快捷,商店與顧客之間的交流更加暢通,同時(shí)商店可以更好地為顧客服務(wù)。大學(xué)生是美團(tuán)、餓了么等外賣平臺(tái)的主要消費(fèi)群體,但由于需下載以及內(nèi)存的占用,學(xué)生尤其高度支持并贊賞微信訂餐[9]。這是一種全新的外賣訂購(gòu)模型,它突破了傳統(tǒng)模型。綜上所述,外賣點(diǎn)餐與微信小程序的聯(lián)合是歷史之必然。根據(jù)日常需求搜索或查找附近的小程序,始終可以找到滿足需要的小程序。由于小程序的出現(xiàn),傳統(tǒng)的電子商務(wù)和零售將重生。目前小程序所展現(xiàn)出來(lái)的勢(shì)頭只是星星之火,未來(lái)可以燎原,潛力無(wú)限。本系統(tǒng)開(kāi)發(fā)的點(diǎn)餐微信小程序,能給外賣行業(yè)注入新血液,減少了高峰期排隊(duì)點(diǎn)餐和就餐的等待時(shí)間,節(jié)約了用戶時(shí)間,能給消費(fèi)者客戶帶來(lái)更高效更快捷訂餐服務(wù)[10]。只需要擁有一個(gè)微信就能使用,快捷高效。第二章開(kāi)發(fā)綜述2.1Python編程語(yǔ)言Python的創(chuàng)始人是荷蘭的吉多·范羅蘇姆,是一種大范圍使用的計(jì)算機(jī)編程語(yǔ)言,是一種解釋型腳本、面向?qū)ο蟮膭?dòng)態(tài)類型語(yǔ)言,吉多·范羅蘇姆一開(kāi)始是用于編寫自動(dòng)化腳本的。但是日新月異升級(jí)的版本以及新的語(yǔ)言語(yǔ)法功能的加入,Python逐漸完善并且它越來(lái)越多地被用于獨(dú)立的大型項(xiàng)目開(kāi)發(fā)中。因?yàn)镻ython語(yǔ)言具有三大特性,分別是簡(jiǎn)潔性、易讀性和可擴(kuò)展性,國(guó)外越來(lái)越多的研究機(jī)構(gòu)使用Python進(jìn)行科學(xué)計(jì)算,甚至一些著名的大學(xué)使用Python來(lái)教授編程課程。Python在設(shè)計(jì)上堅(jiān)持著有條有理,一目了然的風(fēng)格,使Python成為一種易于閱讀和易于維護(hù)的編程語(yǔ)言,所以被大量用戶認(rèn)可。在編程語(yǔ)言排行榜內(nèi)位列第三,也是時(shí)下最熱門的編程語(yǔ)言之一。在計(jì)算機(jī)語(yǔ)言中Python發(fā)展速度不可小覷,可以說(shuō)是最適合零基礎(chǔ)人士入門學(xué)習(xí)的計(jì)算機(jī)語(yǔ)言之一[11],廣泛應(yīng)用于企業(yè)級(jí)Web應(yīng)用開(kāi)發(fā)和移動(dòng)應(yīng)用開(kāi)發(fā)。Python一開(kāi)始就被設(shè)計(jì)為有可擴(kuò)展的特性。并不是全部的特性和功能都集中到語(yǔ)言核心中。程序員可以方便地使用C、C++、Cython來(lái)編寫擴(kuò)充模塊,因?yàn)樗峁┝素S富的API和工具。其次,Python還具有可嵌入性,如果其他程序需要腳本語(yǔ)言,那么Python也可以被集成到它們之內(nèi)。因此,越來(lái)越多人還把Python作為一種“膠水語(yǔ)言”(gluelanguage)使用。2.2Flask框架Python中四大主流MVC框架目前有Flask、Django、Tornado以及Twisted。MVC分層有助于管理復(fù)雜的應(yīng)用程序,可以在不依賴業(yè)務(wù)邏輯的情況下專注于視圖設(shè)計(jì)[12]。其中Flask是一種非常強(qiáng)大的框架,它問(wèn)世于上面提到的三個(gè)框架之后,這讓它具有了其他框架的一些特性。以Werkzeug為WSGI工具集,簡(jiǎn)單來(lái)說(shuō)就是request和response。模板引擎則采用Jinja2。Flask,可以用一個(gè)字來(lái)形容,那就是“輕”。并且它是一個(gè)可以定制的框架,相比其他框架更加靈活,使用方便,它微小的特性更適用于我們開(kāi)發(fā)一些小項(xiàng)目,因此被稱之為“微框架”。同時(shí)它具有可擴(kuò)展性,F(xiàn)lask在操作上并不會(huì)束縛我們,它可以讓開(kāi)發(fā)者有更多的自由選擇權(quán)利,例如可以選擇用什么數(shù)據(jù)庫(kù)插件去存儲(chǔ)他們的數(shù)據(jù)??偨Y(jié)Flask有以下幾點(diǎn)特點(diǎn):整個(gè)系統(tǒng)采用統(tǒng)一語(yǔ)言開(kāi)發(fā),以Werkzeug為WSGI工具集,jinja2為模板引擎;開(kāi)發(fā)人員可以完全專注于業(yè)務(wù)邏輯,前端和后端的分離便于開(kāi)發(fā)和后期維護(hù)。自由靈活、可擴(kuò)展性極強(qiáng),基本所有功能都需要第三方插件框架。因?yàn)槭怯煽蚣芴幚聿僮鳎苑€(wěn)定性和安全性極高。總之,F(xiàn)lask就是提供一個(gè)平臺(tái)給開(kāi)發(fā)者,開(kāi)發(fā)者可以不斷地安裝插件來(lái)完善自己的項(xiàng)目。2.3MySQL數(shù)據(jù)庫(kù)MySQL是被開(kāi)發(fā)者用的最多,也是被大眾所認(rèn)同的關(guān)系型數(shù)據(jù)庫(kù)。由于MySQL是開(kāi)源的,因此我們可以免費(fèi)使用。MySQL的優(yōu)點(diǎn)在于:可以創(chuàng)建不同的數(shù)據(jù)表,并將它們聯(lián)系起來(lái)。在有秩序的表中查找數(shù)據(jù),可以大大提高我們查找數(shù)據(jù)的效率,而并不是在查找一堆雜亂的數(shù)據(jù)。目前大部分的中小型企業(yè)及許多的互聯(lián)網(wǎng)公司都選用MySQL來(lái)作為數(shù)據(jù)庫(kù),MySQL具有極高的性能,對(duì)于應(yīng)付百萬(wàn)級(jí)的數(shù)據(jù),還是相當(dāng)輕松的。因?yàn)樗茉诔汕先f(wàn)條的數(shù)據(jù)中支持同時(shí)處理,就連電商巨頭阿里巴巴也是選擇MySQL作為數(shù)據(jù)庫(kù),足以見(jiàn)到其強(qiáng)大之處。MySQL使用的也是標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式,只有少部分地方會(huì)SQL語(yǔ)法有不一樣的地方[13]。大部分的編程語(yǔ)言都能被MySQL支持,例如C、C++、Python、Java,同時(shí)也支持應(yīng)用于許多系統(tǒng)上,如微軟的Windows系統(tǒng)和開(kāi)源的Linux系統(tǒng)以及蘋果的Mac系統(tǒng)。2.4微信小程序2.4.1小程序簡(jiǎn)介小程序的問(wèn)世,讓世界的人為之驚嘆。它相當(dāng)于一座橋梁,能出色地將用戶與服務(wù)連接起來(lái),能在微信內(nèi)快速被使用和傳播。一般網(wǎng)頁(yè)使用HTML和CSS來(lái)編寫,但是小程序主要使用WXML與WXSS。它主要的開(kāi)發(fā)語(yǔ)言是JavaScript。1、微信小程序中的JavaScript跟網(wǎng)頁(yè)里的JavaScript是非常類似的,唯一不同的是微信小程序具備了一些內(nèi)置的API方法,這些封裝好的方法我們?cè)陂_(kāi)發(fā)過(guò)程中是可以直接拿來(lái)調(diào)用的。2、WXML是基于XML語(yǔ)法開(kāi)發(fā)的。結(jié)合組件和事件系統(tǒng)建立頁(yè)面,可以改動(dòng)相應(yīng)的標(biāo)簽和處理事件邏輯。3、WXSS繼承了CSS大部分的特點(diǎn),它就是一個(gè)樣式語(yǔ)言,可以用來(lái)修飾WXML里面的組件。2.4.2小程序框架小程序框架系統(tǒng)的開(kāi)發(fā)可以分為兩部分,分別是視圖層(View)和邏輯層(AppService),而JavaScript則是在兩者之間提供數(shù)據(jù)傳輸和實(shí)踐系統(tǒng)。技術(shù)框架圖如下圖2-1所示。圖21技術(shù)框架圖邏輯層專門用來(lái)處理邏輯,接收視圖層的請(qǐng)求以及返回參數(shù)。例如請(qǐng)求數(shù)據(jù)和接口調(diào)用等。視圖層則是對(duì)頁(yè)面進(jìn)行渲染的。App是小程序的核心部分,由app.js、app.json、app.wxss三種類型文件構(gòu)成。分別起到處理小程序全局邏輯、小程序全局頁(yè)面設(shè)置、小程序全局頁(yè)面公共視圖層樣式的作用。而Page一般存在四種基礎(chǔ)的文件類型,分別是JS當(dāng)前頁(yè)面邏輯文件、.WXML頁(yè)面描述文件、.WXSS樣式表文件、.JSON配置文件構(gòu)成。2.4.3小程序APIAPI就是開(kāi)放的一些應(yīng)用程序編程接口。現(xiàn)在很多網(wǎng)站為了擁有更多的訪問(wèn)量以及用戶,都會(huì)將自己的資源開(kāi)放給開(kāi)發(fā)者調(diào)用。微信研發(fā)團(tuán)隊(duì)也不例外,供給了開(kāi)發(fā)者大量豐富的原生API。簡(jiǎn)單來(lái)說(shuō)就是微信開(kāi)發(fā)者封裝了很多接口函數(shù),開(kāi)發(fā)者能夠很方便的去調(diào)用這些函數(shù)并且開(kāi)發(fā)者并不需要去關(guān)心這些代碼具體是怎么實(shí)現(xiàn)的。例如獲取用戶基本信息、數(shù)據(jù)存儲(chǔ)以及轉(zhuǎn)發(fā)分享等功能。這極大的減少了我們開(kāi)發(fā)者的時(shí)間與精力。2.5本章小結(jié)本章主要介紹了開(kāi)發(fā)此訂餐小程序之前所涉及到的技術(shù)以及工具,從而希望讀者能通過(guò)文字更加深入了解到這些技術(shù)和工具的來(lái)源、擁有哪些主要功能,為接下來(lái)的開(kāi)發(fā)做好充足的準(zhǔn)備第三章需求分析與設(shè)計(jì)3.1需求分析3.1.1外賣市場(chǎng)需求分析餐飲行業(yè)作為中國(guó)服務(wù)性第三支柱產(chǎn)業(yè),它在人們的生活中一直扮演著無(wú)可替代的角色。改革開(kāi)放以來(lái),我國(guó)的經(jīng)濟(jì)發(fā)展突飛猛進(jìn)以及百姓的人均GDP有顯著的提高,所以餐飲行業(yè)的發(fā)展得以呈現(xiàn)出朝氣蓬勃的發(fā)展趨勢(shì)。但是在這激烈的餐飲行業(yè)競(jìng)爭(zhēng)內(nèi)我們必須要有新鮮血液的注入,需要有一種模式來(lái)帶領(lǐng)餐飲行業(yè)的持續(xù)發(fā)展,并且滿足消費(fèi)者日益變化的需求,是餐飲業(yè)面臨的緊迫問(wèn)題。國(guó)家經(jīng)濟(jì)的快速發(fā)展給餐飲行業(yè)帶來(lái)了無(wú)限潛力,人們外出就餐的可能性大大地提高,消費(fèi)者自己做飯的機(jī)會(huì)越來(lái)越少,選擇外出就餐的人也越來(lái)越多。但是隨著互聯(lián)網(wǎng)的發(fā)展和智能手機(jī)的出現(xiàn),消費(fèi)者不僅可以通過(guò)手機(jī)訂餐就能吃到自己想要的食物,而且不用以到店點(diǎn)餐的方式去花太多的時(shí)間和精力。在餐飲業(yè)中外賣已經(jīng)普遍得到消費(fèi)者們的認(rèn)可,因此越來(lái)越多的餐飲企業(yè)和小企業(yè)除了吸引到店消費(fèi)的顧客以外,還將推出送貨服務(wù),作為消費(fèi)者更方便的輔助營(yíng)銷手段[14]。從以前的到店點(diǎn)餐可以附帶一些小卡片,到至今的互聯(lián)網(wǎng)訂購(gòu)平臺(tái),外賣行業(yè)勢(shì)如破竹,外賣正以意想不到的速度逐漸滲透到我們生活中的方方面面。據(jù)統(tǒng)計(jì),有60%以上的外賣營(yíng)收占據(jù)著大部分餐館的日常主營(yíng)業(yè)務(wù)中。甚至有的商家干脆取消到店點(diǎn)餐的服務(wù),在家里或工廠里做飯,專門從事配送服務(wù),這樣不僅節(jié)省了成本,而且擴(kuò)大了市場(chǎng)。致使這個(gè)行業(yè)逐漸發(fā)展成為今天的O2O平臺(tái)。2020年毫無(wú)疑問(wèn)是一個(gè)不平凡的年,一場(chǎng)疫情打破了我們正常生活的節(jié)奏。在此國(guó)家號(hào)召人們,少外出,少聚餐,也同時(shí)號(hào)召人們盡量不要在餐飲店就餐,可以實(shí)行打包帶走或者點(diǎn)外賣的方式來(lái)避免人流量過(guò)多的頻繁交流。眾志成城,抗擊疫情,是我們每一個(gè)人的職責(zé)所在,不外出就是對(duì)國(guó)家作出最大了最大的貢獻(xiàn)。在此情況下,不出門買菜以及不想自己動(dòng)手做飯的人,外賣訂餐便是作為消費(fèi)者們一個(gè)不二的選擇?;谏钕M(fèi)的本質(zhì),在線外賣服務(wù)已經(jīng)與生活相關(guān)服務(wù)相結(jié)合。一方面拓展服務(wù)入口,另一方面與生活消費(fèi)服務(wù)相結(jié)合,構(gòu)建生活服務(wù)生態(tài)系統(tǒng)。從經(jīng)濟(jì)方面來(lái)講,拉動(dòng)了餐飲消費(fèi)的提高;從人民群眾方面來(lái)講,一是讓商家能與消費(fèi)者有更好的交流,二是更方便消費(fèi)者節(jié)省不必要花費(fèi)的時(shí)間和經(jīng)精力,尤其是對(duì)上班族。3.1.2小程序市場(chǎng)需求分析2017年1月9日前,APP曾主宰著手機(jī)程序市場(chǎng),但在此之后,小程序問(wèn)世,因登錄之后不用安裝,所以App被壓制,相反小程序成為了手機(jī)程序界的新領(lǐng)頭羊。微信小程序自出現(xiàn)以來(lái)就在社會(huì)各個(gè)行業(yè)碰撞出火花,小程序登錄在逐漸的成長(zhǎng)和完善,就為了給大家提供更輕松自在的服務(wù)。雖然它們很小,但對(duì)大眾媒體,特別是應(yīng)用程序,影響深遠(yuǎn)。在全國(guó)人大第十二次會(huì)議上,李克強(qiáng)總理在政府工作報(bào)告首次提出了“互聯(lián)網(wǎng)+”行動(dòng)計(jì)劃,即互聯(lián)網(wǎng)將與社會(huì)各部門相結(jié)合的經(jīng)濟(jì)發(fā)展的新方向,來(lái)帶動(dòng)國(guó)民經(jīng)濟(jì)的發(fā)展[15]。此后,大部分餐飲店以“互聯(lián)網(wǎng)+外賣”為盈利目標(biāo),手機(jī)里也因此出現(xiàn)很多外賣App,例如美團(tuán)、餓了么、百度糯米等在移動(dòng)互聯(lián)網(wǎng)市場(chǎng)上極速發(fā)展。但由于創(chuàng)業(yè)者、開(kāi)發(fā)者甚至是用戶都將局限于“以應(yīng)用為中心”的思想,所以App面臨遭遇瓶頸期。就在此時(shí)微信擁有龐大的流量群,并且微信小程序相對(duì)于移動(dòng)APP更加方便快捷,無(wú)需下載,更加符合現(xiàn)今社會(huì)追求“輕服務(wù)”的理念。小程序的使用日益豐富,甚至成為消費(fèi)者們必備的軟件,在互聯(lián)網(wǎng)發(fā)展勢(shì)頭強(qiáng)勁的背景下,憑借“社交化”和“去中心化”方面的創(chuàng)新優(yōu)勢(shì),外賣小程序?qū)?huì)對(duì)傳統(tǒng)App引發(fā)新一輪競(jìng)爭(zhēng)博弈[16],他的發(fā)展必將為這類應(yīng)用的停滯不前的發(fā)展注入新的活力。3.1.3系統(tǒng)功能需求外賣系統(tǒng)需要有一個(gè)合理的后端處理對(duì)策,一是為了能給商家?guī)?lái)用戶管理、財(cái)務(wù)管理和菜品的正常錄入,庫(kù)存的及時(shí)更新,以及把評(píng)論區(qū)展現(xiàn)給用戶,給消費(fèi)者帶來(lái)更好的體驗(yàn)感。二是防止用戶賬號(hào)密碼以及地址信息泄露,造成不必要的麻煩?!巴赓u管理系統(tǒng)”后端主要功能有“賬號(hào)管理”、“美餐管理”、“會(huì)員管理”以及“財(cái)務(wù)管理”。小程序前端主要功能有“個(gè)人信息管理功能”、“添加購(gòu)物車”、“分享和評(píng)論功能”。本微信小程序訂餐系統(tǒng)包含一下幾個(gè)功能模塊需求服務(wù)器端:1、用戶模塊1)管理員注冊(cè)、登錄、退出登錄。2)管理員間可以互相查看訪問(wèn)記錄、編輯信息以及增刪賬號(hào)操作。2、美食模塊1)美食的添加刪除、分類查找。2)美食的信息編輯以及庫(kù)存更新。3、會(huì)員模塊1)用戶信息查看。2)用戶訂單和評(píng)論查看。4、財(cái)務(wù)模塊1)訂單列表查看。2)財(cái)務(wù)流水統(tǒng)計(jì)。小程序前端:1、首頁(yè)1)菜品展示以及搜索功能。2)分享和添加購(gòu)物車功能。2、購(gòu)物車1)用戶購(gòu)物車菜品的增刪操作。2)用戶結(jié)算功能。3、我的信息1)我的訂單查看。2)地址管理。3)評(píng)價(jià)查看。3.2系統(tǒng)總體設(shè)計(jì)3.2.1系統(tǒng)開(kāi)發(fā)結(jié)構(gòu)設(shè)計(jì)MVC模式是一種軟件架構(gòu)模式,也是一種分層架構(gòu)模式,一般把軟件模式分為三部分,模型(Model)+視圖(View)+控制器(Controller)。1、視圖層(View)是最外面的一層,視圖呈現(xiàn)給用戶,代表著用戶交互頁(yè)面。它可以將用戶的請(qǐng)求傳遞到后端,也就是控制器層(Controller),同時(shí)也可以獲得模型層(Model)傳遞過(guò)來(lái)的參數(shù),并實(shí)時(shí)更新頁(yè)面,當(dāng)然也包括一些DOM事件或者AJAX請(qǐng)求操作(發(fā)布事件),都是放在視圖層來(lái)完成。2、模型層(Model)是最里面的一層,它封裝著數(shù)據(jù)并且用于和數(shù)據(jù)庫(kù)交互。模型層可以直接訪問(wèn)數(shù)據(jù)。模型層并不依靠“視圖層”和“控制器層”,所以說(shuō)模型層是和它們“分離”的,頁(yè)面的展示和操作完全與它無(wú)關(guān)。3、控制器(Controller)是中間的一層,它負(fù)責(zé)處理視圖層發(fā)送過(guò)來(lái)的請(qǐng)求,然后根據(jù)需要去調(diào)用數(shù)據(jù)層Model中的方法來(lái)獲取數(shù)據(jù)并且傳遞給視圖層。MVC三層各司其職,簡(jiǎn)單來(lái)說(shuō),當(dāng)有一層作出改變時(shí),另外兩層都是接連變化的,是相輔相成的,但又互不干擾。所以維護(hù)性極高,當(dāng)我們修改數(shù)據(jù)的時(shí)候或許只需要修改某一層就足夠了,為開(kāi)發(fā)者維護(hù)和調(diào)試代碼節(jié)省了很多時(shí)間。而在本訂餐系統(tǒng)中,View層則是前端,前端用的是PythonFlask中的jinja2模板引擎。Model層則是一個(gè)個(gè)對(duì)應(yīng)數(shù)據(jù)表字段的實(shí)體類,以及一些property裝飾器。Controller層則是用Flask中的路由注冊(cè),注冊(cè)路由的過(guò)程就是建立URL和Python視圖函數(shù)或函數(shù)映射的過(guò)程并且建立一一對(duì)應(yīng)的映射關(guān)系,并且這些路由函數(shù)是可以設(shè)置映射地址的,客戶端可以通過(guò)地址去訪問(wèn)每一個(gè)Controller類。3.2.2系統(tǒng)架構(gòu)設(shè)計(jì)本微信小程序訂餐系統(tǒng)的體系結(jié)構(gòu)是由客戶端(前端)和服務(wù)端(后端)構(gòu)成的,客戶端是為使用本訂餐系統(tǒng)的用戶提供的。本訂餐系統(tǒng)的全部功能幾都是由客戶端、服務(wù)端和數(shù)據(jù)庫(kù)交互的結(jié)果。本微信小程序訂餐系統(tǒng)的總體架構(gòu)如下圖3-1。圖3-1總體架構(gòu)圖3.2.3系統(tǒng)功能架構(gòu)根據(jù)3.1.3系統(tǒng)的功能需求分析,作出微信小程序訂餐系統(tǒng)功能模塊如下圖3-2所示:圖3-2"微信小程序訂餐系統(tǒng)"功能3.3本章小結(jié)本章主要介紹了訂餐小程序系統(tǒng)的總體設(shè)計(jì),通過(guò)本章希望能讓讀者了解到訂餐小程序系統(tǒng)是如何設(shè)計(jì)的、擁有哪些主要功能,以及頁(yè)面所對(duì)應(yīng)的功能與邏輯,從而讓讀者能通過(guò)文字,初步了解訂餐小程序系統(tǒng)是如何使用以及使用邏輯。
第四章系統(tǒng)運(yùn)行所需環(huán)境及數(shù)據(jù)庫(kù)設(shè)計(jì)4.1系統(tǒng)環(huán)境配置Python環(huán)境的安裝及其配置在進(jìn)行Python應(yīng)用開(kāi)發(fā)之前需要安裝Python環(huán)境,Python目前在很多平臺(tái)上都能使用。只要下載適合你所選擇平臺(tái)的二進(jìn)制代碼(win32/64位),然后安裝Python即可。本系統(tǒng)使用的Python版本為Python3.5.1,相應(yīng)的版本可以在/downloads/官網(wǎng)進(jìn)行下載,理論上只要是Python3以上版本都可以滿足本系統(tǒng)的運(yùn)行時(shí)環(huán)境,下載安裝完成之后,在計(jì)算機(jī)屬性里對(duì)系統(tǒng)進(jìn)行環(huán)境變量配置,在Path里添加Python安裝的路徑即可。最后在cmd里面輸入python,就會(huì)看到Python版本,代表安裝成功了。另外需要注意Python中虛擬環(huán)境工具Virtualenv,因?yàn)樵陂_(kāi)發(fā)Python應(yīng)用程序時(shí),默認(rèn)的Python版本或許不適合此時(shí)開(kāi)發(fā)的這個(gè)應(yīng)用程序,一旦開(kāi)發(fā)多個(gè)程序,就極有可能用到多個(gè)版本的Python環(huán)境。Virtualenv就是用來(lái)搭建虛擬且獨(dú)立的Python環(huán)境,可以使每個(gè)項(xiàng)目環(huán)境各自擁有一套獨(dú)立的Python環(huán)境。Virtualenv并不需要手動(dòng)安裝,因?yàn)镻ycharm開(kāi)發(fā)工具非常強(qiáng)大,本身就自帶Virtualenv工具,只需在setting里面中的ProjectInterpreter添加對(duì)應(yīng)的擴(kuò)展包即可。MySQL數(shù)據(jù)庫(kù)在開(kāi)發(fā)的時(shí)候,不管你是大的還是小的項(xiàng)目,數(shù)據(jù)庫(kù)是必不可少的。本系統(tǒng)采用MySQL數(shù)據(jù)庫(kù),版本為5.7,安裝MySQL數(shù)據(jù)庫(kù)你可以到/官網(wǎng)進(jìn)行下載,安裝的過(guò)程中需要特別注意賬號(hào)密碼都需要記住,否則將無(wú)法連接到剛安裝完成的MySQL數(shù)據(jù)庫(kù)。通常學(xué)習(xí)時(shí)我們都將賬號(hào)設(shè)置為root,密碼設(shè)置為123456,這里僅提供參考。Pycharm本系統(tǒng)使用的開(kāi)發(fā)工具為Pycharm,這款工具是由位于捷克的布拉格的JetBrains公司所開(kāi)發(fā),Pycharm是Python程序員公認(rèn)的最好開(kāi)發(fā)工具之一,它自備一整套工具,可以幫助開(kāi)發(fā)者在使用Python語(yǔ)言時(shí)提高效率。例如Debug調(diào)試、代碼跳轉(zhuǎn)、智能提示等等。安裝Pycharm可以到官網(wǎng)/pycharm/下載。在下載的時(shí)候,特別需要注意勾選pip模塊的安裝,pip是包管理工具,它具有安裝和卸載功能,因?yàn)楸鞠到y(tǒng)后面需要通過(guò)pip來(lái)下載一些插件,例如Flask-SQLAlchemy:操作數(shù)據(jù)庫(kù)、Flask-script:支持命令行選項(xiàng)等。本設(shè)計(jì)采用Pycharm2018.1.4破解版,專業(yè)版是需要有一個(gè)授權(quán)碼的,授權(quán)碼百度一下你就可以獲得,當(dāng)然如果你經(jīng)濟(jì)寬裕的話也可以去下載專業(yè)版的。4.2數(shù)據(jù)庫(kù)表設(shè)計(jì)4.2.1數(shù)據(jù)庫(kù)表分析為了滿足訂餐系統(tǒng)的開(kāi)發(fā),本系統(tǒng)需要建立與用戶模塊、菜品模塊、會(huì)員模塊和財(cái)務(wù)模塊等的表來(lái)支持研發(fā)需求。本設(shè)計(jì)對(duì)每個(gè)模塊都提出數(shù)據(jù)表需求:1、用戶信息記錄表(user):用于存放管理員的登陸的基本資料,包括管理員uid、用戶名、手機(jī)號(hào)碼、登陸用戶名和密碼、登陸密碼的隨機(jī)加密秘鑰、郵件等信息。2、會(huì)員用戶記錄表(member):用于存放會(huì)員用戶的登陸記錄,如會(huì)員用戶名、會(huì)員手機(jī)號(hào)碼、性別、頭像、更新時(shí)間等信息。3、美食記錄表(food):用于存放美食列表記錄,如美食名稱、id、售賣金額、描述、庫(kù)存、標(biāo)簽等信息。4、美食分類記錄表(food_cat):用于存儲(chǔ)美食的分類表,包括類別名稱、權(quán)重、更新時(shí)間等。5、美食銷售記錄表(food_sale_change_log):用于存儲(chǔ)美食銷售情況,需要記錄商品id、售賣數(shù)量、售賣金額、會(huì)員id、售賣時(shí)間等。6、美食庫(kù)存變更表(food_stock_change_log):用于存放美食數(shù)據(jù)庫(kù)存變更表,需要商品id、變更數(shù)量、變更之后總量、插入時(shí)間等。7、圖片記錄表(images):用于存放美食圖片的表,需要id、文件名、插入時(shí)間等。8、會(huì)員地址記錄表(member_address):用于存放會(huì)員用戶地址的表,需要會(huì)員id、變更數(shù)量、變更之后總量、插入時(shí)間等。9、購(gòu)物車記錄表(member_cart):用于存放會(huì)員用戶心儀的商品,需要會(huì)員id、商品id、總量、插入時(shí)間等。10、分享記錄表(wx_share_history):用于存放會(huì)員用戶心儀的商品,需要會(huì)員id、商品id、總量、插入時(shí)間等。11、會(huì)員評(píng)論記錄表(member_comments):用于存放會(huì)員用戶的評(píng)價(jià),需要會(huì)員id、商品id、訂單id、評(píng)分、評(píng)論內(nèi)容、插入時(shí)間等。12、在線購(gòu)買訂單記錄表(pay_order):用于存放會(huì)員用戶的訂單,需要會(huì)員id、訂單應(yīng)付金額、運(yùn)費(fèi)、訂單狀態(tài)、插入時(shí)間等。13、訂單詳情記錄表(pay_order_item):用于存放訂單詳情的表,需要會(huì)員id、訂單id、售價(jià)、數(shù)量、訂單狀態(tài)、插入時(shí)間等。14、事件隊(duì)列記錄表(queue_list):用于處理訂單隊(duì)列的表,需要隊(duì)列數(shù)據(jù)、狀態(tài)值、插入時(shí)間。4.2.2數(shù)據(jù)表E-R圖設(shè)計(jì)根據(jù)上面的數(shù)據(jù)表的需求分析,我們可以清晰得到各個(gè)實(shí)體的設(shè)計(jì)思路以及它們之間的關(guān)系,并且使用實(shí)體關(guān)系(E-R)表現(xiàn)出來(lái)。各E-R圖如下圖4-1至4-11.所示:圖4-1用戶表(user)實(shí)體E-R圖圖4-2會(huì)員表(member)實(shí)體E-R圖圖4-3銷售表(food_sale_change_log)實(shí)體E-R圖圖4-4庫(kù)存變更表(food_stock_change_log)實(shí)體E-R圖圖4-5美食表(food)實(shí)體E-R圖圖4-6美食分類表(food_cat)實(shí)體E-R圖圖4-7會(huì)員地址表(member_address)實(shí)體E-R圖圖4-8評(píng)論表(member_comments)實(shí)體E-R圖圖4-9訂單表(pay_order)實(shí)體E-R圖圖4-10購(gòu)物車表(member_cart)實(shí)體E-R圖圖4-11數(shù)據(jù)庫(kù)總表關(guān)系E-R圖4.2.3數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)每個(gè)表的表結(jié)構(gòu)設(shè)計(jì)如表4-12至4-19所示:表4-12會(huì)員評(píng)論記錄(member_comments)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵member_idint11會(huì)員idfood_idsvarchar200商品idspay_order_idint11訂單idscoretinyint4評(píng)分contentvarchar200評(píng)論的內(nèi)容created_timetimestamp無(wú)插入時(shí)間表4-13用戶信息記錄(user)表結(jié)構(gòu)名類型長(zhǎng)度字段含義uidbigint20主鍵nicknamevarchar100管理員用戶名mobilevarchar20手機(jī)號(hào)碼emailvarchar100郵箱地址login_namevarchar20登陸用戶名login_pwdvarchar32用戶登錄密碼login_saltvarchar32登陸密碼的隨機(jī)加密密鑰statustinyint1有效值,1是有效,0是無(wú)效update_timetimestamp無(wú)最后一次更新時(shí)間created_timetimestamp無(wú)插入時(shí)間表4-14會(huì)員用戶記錄(member)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵nicknamevarchar100會(huì)員名mobilevarchar11手機(jī)號(hào)碼sextinyint1性別,1男2女a(chǎn)vatarvarchar200頭像saltvarchar32隨機(jī)saltstatustinyint1有效值,1是有效,0是無(wú)效update_timetimestamp無(wú)最后一次更新時(shí)間created_timetimestamp無(wú)插入時(shí)間表4-15美食記錄(food)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵cat_idint11分類idnamevarchar100食品名稱pricedecimal10售賣金額main_imagevarchar100主圖summaryvarchar10000描述stockInt11庫(kù)存量tagsvarchar200標(biāo)簽statustinyint1有效值,1是有效,0是無(wú)效update_timetimestamp無(wú)最后一次更新時(shí)間created_timetimestamp無(wú)插入時(shí)間表4-16美食庫(kù)存變更(food_stock_change_log)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵food_idint11商品idunitint11變更之后總量total_stockint11總庫(kù)存created_timetimestamp無(wú)插入時(shí)間表4-17圖片記錄(images)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵file_keyvarchar60文件名created_timetimestamp無(wú)插入時(shí)間表4-18在線購(gòu)買訂單記錄(pay_order)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵order_snvarchar40隨機(jī)訂單號(hào)member_idbigint11會(huì)員idtotal_pricedecimal10訂單應(yīng)付金額yun_pricedecimal10運(yùn)費(fèi)金額pay_pricedecimal10訂單實(shí)付金額prepay_idvarchar120第三方預(yù)付idstatustinyint4訂單狀態(tài)。1是支付完成、0是無(wú)效、-1是申請(qǐng)退款、-2是退款中、-9是退款成功、-8是待支付、-7是完成支付待確認(rèn)express_statustinyint4快遞狀態(tài)。-8是待支付、-7是已付款待發(fā)貨、1是確認(rèn)收貨、0是失敗express_address_idint11快遞地址idexpress_infovarchar1000快遞信息update_timetimestamp無(wú)最后一次更新時(shí)間created_timetimestamp無(wú)插入時(shí)間表4-19訂單詳情記錄(pay_order_item)表結(jié)構(gòu)名類型長(zhǎng)度字段含義idint11主鍵pay_order_idvarchar40訂單idmember_idbigint11會(huì)員idquantitydecimal10購(gòu)買數(shù)量。默認(rèn)為1pricedecimal10商品總價(jià)food_iddecimal10美食表idstatustinyint4狀態(tài)值,1是成功,0是失敗update_timetimestamp無(wú)最近一次更新時(shí)間created_timetimestamp無(wú)插入時(shí)間4.3本章小結(jié)本章主要介紹了訂餐小程序系統(tǒng)運(yùn)行所需要的環(huán)境以及表的總體設(shè)計(jì),通過(guò)本章希望能讓讀者了解到訂餐小程序系統(tǒng)的基本環(huán)境和工具的安裝,需要建立哪些對(duì)應(yīng)的主表,從而讓讀者能通過(guò)文字,初步了解訂餐小程序系統(tǒng)的初始工作如何操作的。
第五章系統(tǒng)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)5.1后端的設(shè)計(jì)與實(shí)現(xiàn)5.1.1管理員登陸模塊的設(shè)計(jì)與實(shí)現(xiàn)1.登錄流程登錄流程圖,如圖5-1所示,用戶若執(zhí)行登錄操作,則服務(wù)端會(huì)拿著用戶輸入的賬號(hào)密碼到數(shù)據(jù)庫(kù)去查詢此賬戶信息是否正確,如果正確則登錄成功,如果錯(cuò)誤則需要用戶重新校驗(yàn)信息重新登錄。登陸界面如圖5-2所示。圖5-1登錄流程圖圖5-2登錄界面2.登陸實(shí)現(xiàn)細(xì)節(jié)登陸模塊主要是通過(guò)管理員的用戶名和登陸密碼來(lái)判斷這個(gè)用戶是否存在,首先第一個(gè)判斷登陸用戶名,因?yàn)槲以趗ser表中將login_name設(shè)置成唯一主鍵,是全局唯一的。所以不管是否有成千上萬(wàn)的用戶,用戶名都是唯一的。如果輸入的用戶名在數(shù)據(jù)庫(kù)是已經(jīng)有的,那么將會(huì)登陸失敗,反之登陸成功。第二是校驗(yàn)用戶輸入的密碼,登陸密碼是拿用戶輸入的密碼和數(shù)據(jù)庫(kù)存儲(chǔ)的隨機(jī)加密密鑰進(jìn)行某種加密的密碼得到login_pwd,再拿去數(shù)據(jù)庫(kù)進(jìn)行對(duì)比,如果正確則登錄成功,如果錯(cuò)誤則需要用戶重新校驗(yàn)信息重新登錄。加密算法使用哈希MD5和base64來(lái)實(shí)現(xiàn)。具體加密算法如下圖5-3。圖5-3密碼加密算法為了能讓管理員有更好的交互體驗(yàn)感,本系統(tǒng)使用AJAX進(jìn)行異步提交,AJAX是一種創(chuàng)建快速動(dòng)態(tài)web頁(yè)面的技術(shù)。AJAX通過(guò)在后臺(tái)與服務(wù)器交換少量數(shù)據(jù),使web頁(yè)面能夠異步更新。這意味著可以在不重新加載整個(gè)頁(yè)面的情況下更新頁(yè)面的一部分。如果是傳統(tǒng)的網(wǎng)頁(yè)需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。具體邏輯實(shí)現(xiàn)代碼如下圖5-4。圖5-4AJAX異步提交邏輯圖3.攔截器在登陸成功之后的首頁(yè)面是需要判斷它是否已經(jīng)登陸的,沒(méi)有登陸就需要跳轉(zhuǎn)到登陸頁(yè)面,所以這里需要將用戶的登陸類型給存儲(chǔ)起來(lái)去判斷它是否已經(jīng)登陸。本系統(tǒng)選擇用cookies作為響應(yīng)頭來(lái)存儲(chǔ)它們,而不選用session的原因是當(dāng)有多臺(tái)服務(wù)器進(jìn)行訪問(wèn)的時(shí)候會(huì)出現(xiàn)供不應(yīng)求的情況。Cookies的原理是,將一些信息保存到客戶端,它與每個(gè)請(qǐng)求一起帶來(lái),服務(wù)器通過(guò)這些信息確定客戶機(jī)的身份。由于cookies是可以模擬的,所以本系統(tǒng)將cookies和uid進(jìn)行字符串拼接并且加密。加密算法是跟登陸密碼加密一樣的使用哈希MD5進(jìn)行加密,通過(guò)用戶uid、用戶名、用戶密碼以及隨機(jī)加密密鑰進(jìn)行加密。具體代碼如下圖5-5。圖5-5核心代碼但是,此時(shí)如果將瀏覽器里面的cookies進(jìn)行清除,頁(yè)面是還停留在首頁(yè)面的。理論上來(lái)說(shuō)是應(yīng)該跳轉(zhuǎn)到登陸頁(yè)面的,這迫使我們?cè)诿總€(gè)頁(yè)面都需要寫入方法去判斷它是否已經(jīng)登陸過(guò)。由于太過(guò)于麻煩,本系統(tǒng)引入攔截器的思想。具體方法和效果如下圖5-6和圖5-7。圖5-6判斷是否登陸邏輯圖圖5-7cookies效果圖這是一個(gè)請(qǐng)求之前的方法,在請(qǐng)求所有controller里面的方法之前,會(huì)通過(guò)攔截器攔截下來(lái)。原理是在請(qǐng)求頁(yè)面之前通過(guò)判斷頁(yè)面是是否存在cookies,假設(shè)不存在,則跳轉(zhuǎn)到登陸頁(yè)面,如果存在就不管它。核心就是會(huì)從cookies里面取出uid,通過(guò)uid去數(shù)據(jù)庫(kù)查出他的個(gè)人信息并且生成一個(gè)授權(quán)碼,最后將這個(gè)生成的授權(quán)碼和cookies里面的授權(quán)碼進(jìn)行對(duì)比,如果一致,那么就代表它是對(duì)的,如果不一致就說(shuō)明這個(gè)cookies是經(jīng)過(guò)修改的。但是在這個(gè)過(guò)程中,有一些頁(yè)面是不需要去判斷它是否已經(jīng)登陸的,例如static靜態(tài)文件、favicon.ico圖標(biāo),切記,在登陸頁(yè)面也是不需要去判斷登陸的,不然會(huì)發(fā)生多次重定向。5.1.2管理員信息編輯模塊的設(shè)計(jì)與實(shí)現(xiàn)1.賬號(hào)信息編輯首先在edit.html里最外層包裹一個(gè)user_edit_wrap的JS綁定事件,通過(guò)click點(diǎn)擊事件來(lái)獲取傳遞的變量,例如昵稱和手機(jī)號(hào)碼。同樣的都需要先進(jìn)行JS的參數(shù)有效性判斷。參數(shù)有效性判斷成功通過(guò)后就可以發(fā)送AJKX請(qǐng)求到后端。另外需要記得將后端的methods方法改為get和post,因?yàn)樗J(rèn)是get方法。當(dāng)請(qǐng)求的方法是get的時(shí)候就執(zhí)行頁(yè)面展示功能,如果是post請(qǐng)求就需要進(jìn)行語(yǔ)法處理。效果如下圖5-8。圖5-8信息編輯效果圖2.賬號(hào)密碼編輯首先需要通過(guò)reset_pwd.html獲得id參數(shù)值,因?yàn)閎utton設(shè)置的是id值,所以可以直接在reset_pwd.js里面直接用#來(lái)獲取參數(shù)值。密碼修改的參數(shù)校驗(yàn)也同樣不能省略。然后將用戶輸入的密碼用統(tǒng)一封裝的加密算法進(jìn)行封裝,加密之后就是提交到數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)操作。最后需要注意的是,因?yàn)榍懊孀鲞^(guò)攔截器的處理,所以這里會(huì)遇到用戶更新密碼之后會(huì)退出到登陸頁(yè)面。解決辦法就是需要將cookies進(jìn)行更新操作即可。效果如下圖5-9。圖5-9更改密碼效果圖5.1.3美食編輯模塊的設(shè)計(jì)與實(shí)現(xiàn)1.UEditor插件首先,我們可以去UEditor官網(wǎng)下載相關(guān)的文檔,下載好之后將它進(jìn)行JS引入美食編輯頁(yè)面,即food-set.html,然后需要在JS文件進(jìn)行UEditor初始化,也可以自定義定制工具欄圖標(biāo)toolbars。最后需要寫一個(gè)upload上傳的所有操作的文件,具體實(shí)現(xiàn)代碼如下圖5-10。圖5-10UEditor中讀取配置及解碼操作代碼這步代碼實(shí)現(xiàn)了讀出UEditor配置,處理成json內(nèi)容并返回給它。其中config_data=json.loads(re.sub(r'\/\*.*\*/','',fp.read()))中的fp.read()返回的是一個(gè)字符串,但本系統(tǒng)需要的是返回一個(gè)json對(duì)象。由于配置文件里面有注釋導(dǎo)致讀取失敗,所以我們需要通過(guò)正則表達(dá)式:re.sub(r'\/\*.*\*/')將配置文件里面的注釋進(jìn)行轉(zhuǎn)義成空格。UEditor配置加載完成之后,接下來(lái)就是上傳圖片、封面圖實(shí)現(xiàn)無(wú)刷新上傳的操作以及方法統(tǒng)一的封裝。方法封裝代碼如下圖5-11。圖5-11上傳圖片邏輯圖因?yàn)楹蠖诵枰袛嗌蟼鞯奈募U(kuò)展類型是否合法,所以通過(guò)werkzeug工具包中的secure_filename獲得安全的文件名之后將它們進(jìn)行rsplit切割,0是文件文件名,1是后面的擴(kuò)展。參數(shù)校驗(yàn)合法之后進(jìn)行圖片的存儲(chǔ)操作,需要?jiǎng)?chuàng)建一個(gè)路徑存放上傳的圖片,本系統(tǒng)選擇按照當(dāng)前日期來(lái)創(chuàng)建一個(gè)文件夾來(lái)存放圖片并賦予它權(quán)限,讓使用者擁有全部權(quán)限、組用戶擁有讀取權(quán)限以及其他用戶有全部權(quán)限。最后拼接文件名,通過(guò)uuid里面的uuid4來(lái)統(tǒng)一生成隨機(jī)數(shù),因?yàn)閡uid可以生成唯一不重復(fù)的字符串,最后將文件名里面的-統(tǒng)一替換成空字符串再加上擴(kuò)展類型即可上傳。由于上傳之后需要返回一個(gè)可視化編輯框,但是成功上傳圖片之后返回的URL里面僅僅是個(gè)隨機(jī)的key值,導(dǎo)致點(diǎn)擊本地上傳之后無(wú)法展示的情況。因?yàn)樾枰祷氐氖墙^對(duì)地址,展示正確的圖片的URL地址,所以這里只需要將URL地址拼接出來(lái)就返回一個(gè)可視化編輯框了。效果如下圖5-12。圖5-12上傳圖片效果圖2.封面圖無(wú)刷新上傳傳統(tǒng)的文件上傳是將數(shù)據(jù)上傳到一個(gè)新的頁(yè)面進(jìn)行驗(yàn)收和處理,這樣頁(yè)面就會(huì)被刷新,用戶體驗(yàn)不好。在更多情況下,用戶可能更喜歡上傳文件而不刷新頁(yè)面。上傳成功后,給出相應(yīng)提示或繼續(xù)執(zhí)行相應(yīng)操作。目前很多插件都能實(shí)現(xiàn)無(wú)刷新上傳,為了能讓管理員的體驗(yàn)感更加良好,本設(shè)計(jì)選擇用iframe插件來(lái)實(shí)現(xiàn)無(wú)刷新上傳技術(shù)。首先需要?jiǎng)?chuàng)建一個(gè)iframe隱藏的域并且將form表單里面的target值指向iframe中的name值。通過(guò)js去監(jiān)控上傳文件域的change事件,并且動(dòng)態(tài)的去觸發(fā)form表單中submit提交事件,簡(jiǎn)單來(lái)說(shuō)就是,food/set.html和iframe是兩個(gè)頁(yè)面,food/set.html是iframe的父頁(yè)面,iframe可以通過(guò)某種手段去調(diào)用父頁(yè)面的JS事件。最后將事件提交到后端處理。具體邏輯實(shí)現(xiàn)代碼如下圖5-13。圖5-13無(wú)刷新上傳邏輯圖Window.parent.upload是返回當(dāng)前窗口的父窗口并且調(diào)用set.js里面的upload方法,失敗就調(diào)用error方法,成功則調(diào)用success方法并且將file_key傳遞過(guò)去就可以展示了。展示的時(shí)候需要綁定一個(gè)del_image事件,讓用戶可以點(diǎn)擊刪除。效果圖如下圖5-14。圖5-14無(wú)刷新上傳效果圖3.美食編輯和添加功能的實(shí)現(xiàn)本訂餐系統(tǒng)最主要的功能就是美食的編輯和添加功能,同樣的都需要進(jìn)行后端參數(shù)有效性判斷,如果是get請(qǐng)求,那就是編輯操作,如果是post請(qǐng)求那么就進(jìn)行添加美食的操作。將提交信息返回給前端之后,需要進(jìn)行數(shù)據(jù)庫(kù)的存儲(chǔ)操作。具體邏輯實(shí)現(xiàn)代碼和效果如下圖5-15和5-16。圖5-15美食添加邏輯代碼圖圖5-16效果圖通過(guò)foodid去查找這個(gè)美食是否存在,如果不存在,就將美食插入;如果存在這個(gè)美食信息,就進(jìn)行更新操作。這里有個(gè)庫(kù)存變更表,系統(tǒng)每一次的庫(kù)存變更都會(huì)把它記錄下來(lái),所以定義了一個(gè)before_stock代表庫(kù)存量,默認(rèn)值是0。如果是編輯美食,那就直接讀取數(shù)據(jù)庫(kù)的變更表并且更改庫(kù)存,就是當(dāng)前庫(kù)存(stock)減去之前的庫(kù)存(before_stock),減少就是負(fù)數(shù),增加就是正數(shù)。5.1.4財(cái)務(wù)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)1.訂單列表獲取訂單列表的展示需要通過(guò)pay_order_item表去尋找每一個(gè)food的信息,也就是說(shuō)從表pay_order_item中的pay_order_id可能對(duì)應(yīng)著兩條food信息,所以這里需要將pay_order_item轉(zhuǎn)換成map對(duì)象之后取出來(lái)再進(jìn)行遍歷,然后將數(shù)據(jù)返回給前端循環(huán)展示即可。效果如下圖5-17。圖5-17訂單列表效果圖2.財(cái)務(wù)流水展示財(cái)務(wù)流水展示跟訂單列表展示不同的是,訂單列表是不管你用戶有沒(méi)有支付成功都需要將數(shù)據(jù)返回到頁(yè)面,而財(cái)務(wù)流水只需要將支付成功的,也就是狀態(tài)值status為1的訂單展示出來(lái)即可。效果如下圖5-18。圖5-18訂單列表效果圖5.2小程序端的設(shè)計(jì)與實(shí)現(xiàn)5.2.1登陸模塊的設(shè)計(jì)與實(shí)現(xiàn)1.登錄流程登錄流程圖,如圖5-19所示,當(dāng)用戶在小程序上若執(zhí)行登錄操作,則小程序端會(huì)調(diào)用login方法并且獲取code,然后將code發(fā)送到開(kāi)發(fā)者服務(wù)器去獲取用戶的唯一標(biāo)識(shí)(openid)及本次登錄的會(huì)話密鑰(session_key)等來(lái)完成登陸。圖5-19小程序登陸流程時(shí)序2.小程序入口首先需要在controller層創(chuàng)建一個(gè)小程序的入口,即API。小程序的所有功能都將通過(guò)API接口來(lái)操作。具體代碼如下圖5-20。圖5-20小程序API入口3.登陸實(shí)現(xiàn)細(xì)節(jié)根據(jù)官方文檔,獲取code之后能得到openid和session_key,但是這個(gè)對(duì)用戶來(lái)說(shuō)沒(méi)有任何意義,我們是希望能獲得這個(gè)用戶的昵稱、頭像和性別等信息。所以需要調(diào)用wx.getUserInfo(OBJECT)接口去獲取用戶的詳細(xì)信息。因微信的這個(gè)接口涉及到個(gè)人隱私,所以略有調(diào)整:在用戶未授權(quán)過(guò)的情況下調(diào)用此接口,將不再出現(xiàn)授權(quán)彈窗。實(shí)現(xiàn)授權(quán)登陸代碼邏輯如下圖5-21。圖5-21小程序登陸邏輯圖根據(jù)上圖所示,open-type=”getUserInfo”調(diào)用的就是wx.login()方法,而傳遞過(guò)來(lái)的參數(shù)e就是用戶詳細(xì)信息,例如昵稱、頭像以及位置等。由于返回的數(shù)據(jù)類型并不是正常form表單提交,它是json類型,所以可以自定義頭部信息。獲取信息之后,調(diào)用wx.request()方法將數(shù)據(jù)發(fā)送AJAX請(qǐng)求到后端處理。但是根據(jù)官方文檔只獲得用戶的基本信息是無(wú)法注冊(cè)一個(gè)用戶的,所以需要通過(guò)openid作為用戶的唯一標(biāo)識(shí),去識(shí)別這個(gè)用戶是否已經(jīng)在用戶里面注冊(cè)過(guò)的用戶。獲取openid和Appsecret的請(qǐng)求地址如下:GET/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code。只需將自己對(duì)應(yīng)的openid和Appsecret填上即可。當(dāng)獲得用戶的基本信息之后,就可以獲得token并且拿它去獲得code,最后通過(guò)code去獲取我們最終想要的openid。在注冊(cè)登陸的時(shí)候?qū)penid放到里面去,等下一次再登陸的時(shí)候就可以通過(guò)oauth_member_bind表里面的openid去查這個(gè)用戶的member_id,再通過(guò)member_id表去查詢這個(gè)用戶的所有信息并且判斷是否已經(jīng)注冊(cè)了,如果注冊(cè)了就說(shuō)明用戶不用再注冊(cè)了,證明是同一個(gè)用戶。效果如下圖5-22。圖5-22小程序登陸封面圖4.小程序登錄攔截器上面介紹了網(wǎng)頁(yè)版的攔截器,做了一個(gè)cookies,每一次登陸都需要取得cookies并進(jìn)行判斷它是否是合法的。同樣的小程序也需要做一個(gè)API攔截器,例如在查找訂單的時(shí)候,需要判斷是當(dāng)前的用戶是哪一個(gè)。所以在小程序登陸成功之后的每個(gè)頁(yè)面的功能都是需要判斷它當(dāng)前登陸的用戶是哪一個(gè),沒(méi)有登陸就需要跳轉(zhuǎn)到登陸頁(yè)面。那么小程序在每個(gè)頁(yè)面發(fā)送請(qǐng)求的時(shí)候,都會(huì)發(fā)送一個(gè)自定義的header頭部信息,那么就可以將注冊(cè)過(guò)后返回的token封裝在頭部信息,讓后端API層能讀取并且解析這個(gè)頭部信息來(lái)判斷他是否是登陸過(guò)的。首先需要判斷請(qǐng)求的URL地址是否有API字符串,如果沒(méi)有就不進(jìn)行操作,反之直接過(guò)濾掉傳遞給后臺(tái)。然后判斷他是否已經(jīng)登陸,需要解析他的Authorization里面攜帶的token,由于token的加密算法和cookies加密算法是一樣的,所以一樣將它進(jìn)行切割判斷,具體邏輯和效果如下圖5-23和圖5-24。圖5-23判斷是否登陸邏輯圖圖5-24小程序獲取token效果圖5.2.2美食展示模塊的設(shè)計(jì)與實(shí)現(xiàn)1.美食分類和輪播圖展示首先定義兩個(gè)接口,一個(gè)是輪播圖和分類的接口,一個(gè)是搜索和美食列表的接口。分類接口從FoodCat表中導(dǎo)入相關(guān)的數(shù)據(jù),由于“全部”這個(gè)分類是默認(rèn)無(wú)法返回的,所以需要將數(shù)據(jù)進(jìn)行統(tǒng)一構(gòu)造。即構(gòu)造在一個(gè)字典,然后添加到數(shù)組里面去。輪播圖是從Food表中取出3個(gè)比較熱門的美食進(jìn)行倒序排列,并將圖片地址返回到小程序前端。效果如下圖5-25。圖5-25輪播圖以及美食分類效果圖2.搜索和美食列表展示關(guān)于搜索和美食列表展示,我們可以將它們合并到一個(gè)事件,即寫一個(gè)搜索事件專門來(lái)處理用戶搜索和首頁(yè)美食的展示。首先美食的展示需要一個(gè)bindtap分類點(diǎn)擊事件,當(dāng)每次點(diǎn)擊分類的時(shí)候它都會(huì)自動(dòng)去處理這個(gè)事件。同理,當(dāng)用戶搜索美食的時(shí)候也是自動(dòng)去查找并且展示。將后臺(tái)需要的參數(shù)分類id(cat_id)和搜索字段(mix_kw)返回到前端即可。效果如下圖5-26。圖5-26輪播圖以及美食分類效果圖5.2.3購(gòu)物車模塊的設(shè)計(jì)與實(shí)現(xiàn)1.添加購(gòu)物車功能添加購(gòu)物車的前提是根據(jù)庫(kù)存的量來(lái)決定的,如果庫(kù)存不夠滿足客戶的需求是不能夠添加購(gòu)物車的,即buyNumber<stock。同時(shí)需要注意當(dāng)前的用戶是哪一個(gè),因?yàn)樾枰袛嗍悄囊粋€(gè)用戶收藏的,如果沒(méi)有用戶那么就不能收藏到購(gòu)物車。添加成功之后需要將購(gòu)物車框hideShopPopup隱藏起來(lái),同時(shí)將購(gòu)物車?yán)锩娴拿朗硵?shù)量返回到購(gòu)物車角標(biāo)上面。效果如下圖5-27。圖5-27添加購(gòu)物車效果圖5.2.4下單模塊的設(shè)計(jì)與實(shí)現(xiàn)1.訂單生成關(guān)于后臺(tái)訂單生成,需要將用戶購(gòu)物車下單的美食信息加載到訂單頁(yè)面里來(lái),例如食物名字、數(shù)量以及支付金額等。通過(guò)JQuery發(fā)送網(wǎng)絡(luò)請(qǐng)求到后端獲取參數(shù),參數(shù)成功獲取后點(diǎn)擊提交訂單來(lái)生成用戶的訂單,之后統(tǒng)一封裝下單PayService的方法并且創(chuàng)建一個(gè)createOrder方法來(lái)處理下單的動(dòng)作。首先獲取和判斷type購(gòu)物車和goods食物列表參數(shù),通過(guò)循環(huán)將價(jià)格取出來(lái),如果價(jià)格是小于零,證明美食沒(méi)有被選中,最后將數(shù)量和價(jià)格統(tǒng)一返回。具體邏輯和效果如下圖5-28和圖5-29。圖5-28訂單處理邏輯代碼圖5-29美食訂單獲取效果圖2.下單提交實(shí)現(xiàn)及并發(fā)處理在多用戶環(huán)境中,可能會(huì)有多個(gè)用戶同時(shí)需要獲取同一數(shù)據(jù)的情況,所以系統(tǒng)就會(huì)導(dǎo)致沖突。這就是典型的并發(fā)性問(wèn)題。防止并發(fā)的操作分別有悲觀鎖和樂(lè)觀鎖,悲觀鎖就是當(dāng)用戶去查詢數(shù)據(jù)的時(shí)候都會(huì)認(rèn)為其他用戶會(huì)修改數(shù)據(jù),所以每次讀取數(shù)據(jù)之前都會(huì)上鎖,當(dāng)下一個(gè)用戶想要讀取的時(shí)候就會(huì)被鎖上,而且必須拿到鎖才能讀取這個(gè)數(shù)據(jù)。悲觀鎖有行鎖、表鎖等;樂(lè)觀鎖就是就是當(dāng)用戶去查詢數(shù)據(jù)的時(shí)候都會(huì)認(rèn)為其他用戶不會(huì)修改數(shù)據(jù)并且不上鎖,但是每次讀取數(shù)據(jù)之前會(huì)判斷在此期間有沒(méi)有用戶讀取這個(gè)數(shù)據(jù)。在這里我選擇用前者來(lái)處理并發(fā)問(wèn)題,簡(jiǎn)單來(lái)說(shuō):假設(shè)有兩個(gè)用戶同時(shí)查詢事務(wù)的時(shí)候,A用戶在查詢數(shù)據(jù)的時(shí)候,B用戶會(huì)被卡住并且需要等A用戶查完才能查詢數(shù)據(jù)。并發(fā)處理實(shí)現(xiàn)代碼如下圖5-30。圖5-30并發(fā)處理核心代碼本系統(tǒng)使用SELECT語(yǔ)句中的forupdate的用法,它的作用就是行級(jí)鎖。當(dāng)一個(gè)用戶查詢的時(shí)候,它會(huì)鎖住所有的food_ids里面的記錄,如果其他人再來(lái)查詢這個(gè)記錄是查詢不到的。簡(jiǎn)單來(lái)說(shuō):假設(shè)有兩個(gè)用戶同時(shí)查詢事務(wù)的時(shí)候,A用戶在查詢數(shù)據(jù)的時(shí)候,B用戶會(huì)被卡住并且需要等A用戶查完才能查詢數(shù)據(jù)。最后在下單成功之后將訂單的信息狀態(tài)設(shè)置為-8,發(fā)貨狀態(tài)設(shè)置為-8,表示訂單未支付以及發(fā)貨狀態(tài)也是未支付。3.訂單處理支付時(shí)需要判斷訂單狀態(tài)值是否為-8(待支付)或者-7(完成支付待確認(rèn)),如果是就不需要再進(jìn)行處理。支付成功之后,將訂單的信息狀態(tài)設(shè)置為1,發(fā)貨狀態(tài)設(shè)置為-7,表示已付款待發(fā)貨。代碼和效果如下圖5-31和圖5-32。圖5-31支付成功核心代碼圖5-32支付成功效果圖
第六章總結(jié)與展望在這個(gè)小程序的開(kāi)發(fā)中,我花了幾個(gè)月的時(shí)間,結(jié)合網(wǎng)絡(luò)工程相關(guān)的計(jì)算機(jī)基礎(chǔ)理論和開(kāi)發(fā)理論知識(shí)與實(shí)踐,完成了基于Python的Flask訂餐系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),也即將完成畢業(yè)論文的撰寫。在這個(gè)過(guò)程中,我學(xué)到的東西受益匪淺。通過(guò)閱讀大量的文獻(xiàn)資料,我了解到當(dāng)今社會(huì)人們對(duì)點(diǎn)外賣的態(tài)度和小程序簡(jiǎn)潔方便的優(yōu)點(diǎn)。據(jù)了解大部分現(xiàn)代人因?yàn)楣ぷ鞣泵蛘呦掳嗷丶抑蟾械狡v,而不想自己動(dòng)手做飯。因此希望開(kāi)發(fā)此小程序,能改變現(xiàn)代人的生活方式,并且簡(jiǎn)化外賣訂餐流程方式。至于選擇小程序來(lái)當(dāng)作載體,是因?yàn)樗谏鐣?huì)各行各業(yè)都有積極的響應(yīng)。以輕服務(wù)的理念作為核心,我大膽猜想認(rèn)為小程序是將來(lái)會(huì)是APP的強(qiáng)硬對(duì)手,因?yàn)樗僮骱?jiǎn)單易懂,更不需要下載和刪除,這對(duì)我們快節(jié)奏快步伐的時(shí)代提供了極大的方便。與此同時(shí)它能節(jié)省開(kāi)發(fā)成本,微信小程序本身就能提供大量的API接口,這極大的減少了開(kāi)發(fā)者的開(kāi)發(fā)難度。在本訂餐系統(tǒng)的開(kāi)發(fā)過(guò)程中,我碰到過(guò)很多難題,因?yàn)樵陂_(kāi)發(fā)過(guò)程中發(fā)現(xiàn)很多需要學(xué)習(xí)的新知識(shí),也曾為代碼的邏輯思維所束縛,甚至為技術(shù)和框架理論知識(shí)而苦惱。但是我最終還是堅(jiān)持了下來(lái),通過(guò)一些書籍知識(shí)、百度甚至貼吧去查詢自己想要的答案。所以我這幾個(gè)月面頗有感觸的是,第一,當(dāng)我們?cè)陂_(kāi)發(fā)任何系統(tǒng)的時(shí)候,大腦一定要有自己設(shè)計(jì),無(wú)論你是大項(xiàng)目還是小項(xiàng)目,都首先需要去了解它的框架,一層一層的把它拆分并且摸透,自己的邏輯思維一定要跟著大腦轉(zhuǎn)動(dòng);第二,當(dāng)我們遇到困難例如BUG,我們千萬(wàn)不要急躁,急躁你就輸了,一定要有耐心,任何問(wèn)題都有它解決的辦法。當(dāng)面對(duì)有問(wèn)題的代碼,我們就不斷的去調(diào)試這些代碼就行了;第三,當(dāng)我們每完成一個(gè)功能的時(shí)候,就需要對(duì)這些功能進(jìn)行測(cè)試,不然等開(kāi)發(fā)完成再去測(cè)試,那么你將會(huì)成為一只無(wú)頭蒼翼,我們需要將調(diào)試的東西控制在一個(gè)范圍內(nèi)才不會(huì)讓自己的工作量巨大化??傮w來(lái)說(shuō),訂餐小程序是一款非常實(shí)用的系統(tǒng),相比需要手動(dòng)下載的APP,本小程序具有無(wú)需下載、用完即走、方便快捷等優(yōu)勢(shì),極大的簡(jiǎn)化了我們訂餐的需求操作,也符合我們當(dāng)今社會(huì)發(fā)展的需要,它的潛力是我們無(wú)法估量的。
參考文獻(xiàn)[1]張瓊芳.互聯(lián)網(wǎng)餐飲外賣行業(yè)現(xiàn)狀及發(fā)展策略研究[J]..科技創(chuàng)業(yè)月刊,2017(19):35-37.[2]申燕萍,何夢(mèng)磊.基于微信小程序的點(diǎn)餐系統(tǒng)[J]..電腦知識(shí)與技術(shù),2018(04):62-63.[3]范國(guó)婷,任樂(lè)琦,周靈輝等.基于微信小程序的二維碼點(diǎn)餐系統(tǒng)設(shè)計(jì)研究[J].阜陽(yáng)師范大學(xué),2019(12):59-62.[4]趙曉燕.基于顧客參與的餐飲業(yè)服務(wù)創(chuàng)新和顧客滿意的關(guān)系研究[D].哈爾濱工業(yè)大學(xué),2012.[5]張文紅.O2O模式下的餐飲外賣行業(yè)分析研究[J].農(nóng)村經(jīng)濟(jì)與科技,2019(22):116-157.[6]于少彬.純O2O外賣模式中餐店設(shè)計(jì)要點(diǎn)研究[D].大連理工大學(xué),2018[7]胡亞琛.探究微信小程序的開(kāi)辟與走向[J].現(xiàn)代營(yíng)銷,2019(04):1[8]衡亮亮.為什么未來(lái)的服務(wù)是“輕”的?[J].現(xiàn)代家電,2017(15):47.[9]崔育帥,王春江.基于O2O的校園“食堂外賣”微信小程序的開(kāi)發(fā)及推廣[J].信息與電腦,2018(11):98-100.[10]王艷輝.基于微信小程序訂餐系統(tǒng)的設(shè)計(jì)與研究[J].現(xiàn)代營(yíng)銷,2019(21):97-98.[11]周佳,周志輝.\t"/interlibSSO/goto/75/=jmr9bmjh9mds/KCMS/detail/kcmstarget"淺談Python在日常工作中的應(yīng)用[J].中國(guó)設(shè)備工程,2019(23):196-198.[12]葉鋒.Python最新Web編程框架Flask研究[J].電腦編程技巧與維護(hù),2015(15):27-28.[13]明日科技.《MySQL從入門到精通》[M].\o"清華大學(xué)出版社"清華大學(xué)出版社,2017.[14]李悅媛.百度外賣成都地區(qū)經(jīng)營(yíng)情況及市場(chǎng)分析[D].西南交通大學(xué),2016.[15]何爽.互聯(lián)網(wǎng)+時(shí)代及眾創(chuàng)形勢(shì)下線上新生APP運(yùn)營(yíng)公司的商業(yè)發(fā)展模式研究——以KeepAPP運(yùn)營(yíng)公司為例[J].經(jīng)貿(mào)實(shí)踐,2017(16):183-184.[16]韓玉坤微信小程序?qū)PP市場(chǎng)擾動(dòng)的博弈論分析[J].商業(yè)經(jīng)濟(jì),2020(01):70-73.
致謝本次論文寫作的成功與畢業(yè)設(shè)計(jì)系統(tǒng)開(kāi)發(fā)的完成,首先要感謝的是我的指導(dǎo)老師黃晴晴老師。在這5個(gè)月的時(shí)間里,當(dāng)我遇到論文的撰寫或者畢業(yè)設(shè)計(jì)上的困難時(shí),黃晴晴老師都會(huì)給我一些建議,讓我能夠更有思路的去處理遇到問(wèn)題。老師始終對(duì)我都是秉著督促和耐心的指導(dǎo),讓我有了進(jìn)一步的成長(zhǎng),不僅將大學(xué)四年學(xué)到的許多理論知識(shí)應(yīng)用到實(shí)踐當(dāng)中去,還提升了自己解決困難的能力,奠定了我在畢業(yè)后面對(duì)各種任務(wù)的能力打下堅(jiān)實(shí)的基礎(chǔ)。另外,我也要感謝我的同學(xué)和朋友們,在我寫畢業(yè)論文以及這個(gè)系統(tǒng)的開(kāi)發(fā)和過(guò)程中幫助我。正是在他們的幫助和支持下,我的畢設(shè)才得以完成。最后,我衷心感謝四年來(lái)教我的老師們,感謝您的教導(dǎo)和培養(yǎng)。
PowerPoint課件制作實(shí)用技巧PowerPoint是微軟公司生產(chǎn)的制作幻燈片和簡(jiǎn)報(bào)的軟件(以下簡(jiǎn)稱PPT)。在我們?cè)S多人看來(lái),它只不過(guò)是一個(gè)簡(jiǎn)單地對(duì)文字、圖形、圖片進(jìn)行演示的軟件,教學(xué)中的課件制作軟件當(dāng)屬Authorware、Flash。Authorware和Flash制作的動(dòng)畫效果的確很好,而且它們的功能也很強(qiáng)大。不過(guò)這些軟件在制作課件的過(guò)程中往往非常耗時(shí),用這些專業(yè)軟件來(lái)制作課件用于平時(shí)的教學(xué)往往效率很低。PPT就是一個(gè)非常簡(jiǎn)單、實(shí)用的制作課件的軟件,只要你用好它,同樣能做非常棒的課件來(lái)。一、掌握基本,知道“插入”。(一)知道從“插入”菜單進(jìn)入,會(huì)給PPT課件添加文字、圖片、影片和聲音等,也就會(huì)做一般的課件了。(二)圖片插入與處理1.插入圖片具體方法:a)插入剪貼畫或文件中的圖片;b)添加圖片做背景;c)給自選圖形做填充。2.處理圖片具體方法:我們用PPT制作課件時(shí),經(jīng)常從網(wǎng)上下載圖片來(lái)用,而網(wǎng)絡(luò)中的圖片往往含有超鏈接和網(wǎng)站名稱痕跡,我們需要?jiǎng)h除其中超鏈接,并對(duì)圖片進(jìn)行裁剪處理。在Powerpoint中,我們一般可以利用“圖片”工具欄上的“裁剪”工具進(jìn)行裁剪處理,但是,這里的工具只能對(duì)圖片進(jìn)行矩形裁剪,若想裁剪成圓形、多邊形等其他形狀,通常方法就無(wú)能為力了。其實(shí)這個(gè)問(wèn)題在PPT中是可以解決的。我們用給自選圖形做填充圖片的方法就可以實(shí)現(xiàn)我們需要的效果。具體步驟:a)首先利用“繪圖”工具欄畫一個(gè)想要裁剪的圖形,如橢圓。b)選中橢圓后單擊“繪圖”工具欄上“填充顏色”按鈕右側(cè)黑三角,從列表菜單中單擊“填充效果”命令。c)打開(kāi)選擇“圖片”選項(xiàng)卡,單擊〔選擇圖片〕按鈕,從“選擇圖片”對(duì)話框中找到合適的圖片,單擊〔插入〕按鈕后返回到“填充效果”對(duì)話框最后單擊〔確定〕按鈕后退出。此圖片當(dāng)作橢圓圖形的背景出現(xiàn),改變了原來(lái)的矩形形狀,獲得了滿意的裁剪圖片效果。圖片在插入PPT之前,我們可以用ACDSEE軟件進(jìn)行加工,如改變大小,裁剪等操作。二、學(xué)會(huì)下載,查找方法。在制作課件過(guò)程中,我們時(shí)常需要從網(wǎng)絡(luò)上下載各種資源用以豐富課件內(nèi)容,提升課堂效果。但有許多網(wǎng)站的flash動(dòng)畫都不提供下載;還有網(wǎng)站為我們提供了許多視頻素材,這些視頻素材都是FLV流媒體格式。FLV流媒體格式是一種新的視頻格式,全稱為FlashVideo。由于它形成的文件極小、加載速度極快,使得網(wǎng)絡(luò)觀看視頻文件成為可能,它的出現(xiàn)也有效地解決了視頻文件導(dǎo)入Flash后,使導(dǎo)出的SWF文件體積龐大,不能在網(wǎng)絡(luò)上很好的使用等缺點(diǎn)。目前各在線視頻網(wǎng)站均采用此視頻格式。如新浪播客、56、優(yōu)酷、土豆、酷6等,無(wú)一例外。FLV已經(jīng)成為當(dāng)前視頻文件的主流格式。這些網(wǎng)站一般都不提供下載。我們想要這些素材,怎樣辦?1.尋找下載方法:a)在百度網(wǎng)站搜索欄中輸入下載的內(nèi)容,搜索下載方法。b)弄清格式,再搜索方法。2.具體方法推薦①flasah動(dòng)畫的下載方法一:IE緩存中尋找在網(wǎng)上看過(guò)一個(gè)flash后,一般情況下都會(huì)保存在IE緩存里。右擊桌面上的IE圖標(biāo),選“屬性”命令,單擊中間的“設(shè)置”按鈕,彈出“Internet臨時(shí)文件和歷史記錄設(shè)置”面板,單擊“查看文件”,可以打開(kāi)臨時(shí)文件夾,按時(shí)間排序,找到剛才打開(kāi)的flash動(dòng)畫文件。優(yōu)點(diǎn):不需要安裝其它軟件。缺點(diǎn):操作相對(duì)煩瑣。方法二:借助Flashsaver等軟件下載,這些軟件都可以快速、方便的下載你所需要的flash文件。優(yōu)點(diǎn):簡(jiǎn)單、方便、快速。缺點(diǎn):需要安裝使用。②FLV視頻的獲取方法一:IE緩存中尋找,方法同flasah。方法二:flv視頻解析下載/三、學(xué)用控件,轉(zhuǎn)化應(yīng)用1.flash動(dòng)畫的插入方法一:安裝flash插件,再插入flash。步驟:a)安裝“ppt插flash軟件”插件;b)單擊“插入”→“flashmovie”→打開(kāi)要播放的flash文件→確定。方法二:利用控件插入flash動(dòng)畫。步驟:a)插入“ShockwaveFlashObject”控件對(duì)象:右擊“工具欄”→選“控件工具箱”(或點(diǎn)“視圖→工具欄→控件工具箱”);點(diǎn)“其他控件”(控件工具箱中最后一個(gè)形似錘子斧頭的按鈕),拖動(dòng)滾動(dòng)條或在英文輸入法狀態(tài)下按鍵盤上“s”鍵,快速定位到以s開(kāi)頭的控件,選擇“ShockwaveFlashObject”控件。將鼠標(biāo)移到幻燈片工作區(qū),鼠標(biāo)指針變成“十”字型,拖動(dòng)鼠標(biāo)繪制出一個(gè)形似信封的矩形。b)打開(kāi)控件對(duì)象“屬性”對(duì)話框:右擊矩形控件對(duì)象,在彈出的快捷菜單中選“屬性”命令。c)正確設(shè)置控件對(duì)象屬性:主要是在“Movie”空白文本域中正確輸入演示文稿要播放的.swf動(dòng)畫的完整名稱。d)將控件對(duì)象適當(dāng)縮放:為了獲得比較好的播放效果,拖動(dòng)控件對(duì)象的縮放點(diǎn)使它幾乎覆蓋整個(gè)幻燈片工作區(qū),但要在幻燈片工作區(qū)底部保留少許空白區(qū)域。這樣既可以享受.swf動(dòng)畫大屏幕播放的好處,又能夠保證幻燈片能夠順利地切換。e)一般情況下,幻燈片應(yīng)顯示出動(dòng)畫的第一幀圖形。如果控件對(duì)象仍是空白的,可保存演示文稿,關(guān)閉后再打開(kāi)它,按F5放映幻燈片,應(yīng)該能夠正確播放動(dòng)畫。2.FLV視頻的插入FLV視頻與FLASH不一樣的。全稱是flashvideo,所用的播放器也不一樣。①利用控件插入PPT的方法也是有區(qū)別的。不同點(diǎn):先要下載pptflv.swf文件,此文件是類似于網(wǎng)頁(yè)中FLV視頻播放器的一個(gè)Flash文件(可用百度搜索下載下來(lái)后記著要改文件名,保留擴(kuò)展名);例如改成:pptflv1.swf“Movie”參數(shù)值填入方法不一樣,參數(shù)值示例:pptflv.swf?file=視頻.FLV“pptflv.swf”即為步驟一下載下來(lái)的Flash文件的完整文件,“視頻.FLV”即為需要播放的FLV視頻的文件名,大家只要將pptflv.swf換成自己下載后起的文件名,將“視頻.FLV”換成自己的FLV視頻文件名,則此FLV文件就可以在PowerPoint中播放了。如播放2.flv視頻參數(shù)填法:示例:pptflv1.swf?file=2.FLV②方法二:將flv轉(zhuǎn)換成swf再插入轉(zhuǎn)換軟件:UltraFlashVideoFLVConverter3.2.0軟件說(shuō)明:該軟件又叫全格式FLV轉(zhuǎn)換器,支持將幾乎所有主流視頻格式轉(zhuǎn)換為FLV或者SWF且對(duì)用戶較為關(guān)心的RealMedia(RM/RMVB...)和QuickTime(MOV/QT...)支持良好。三大特色功能:既可輸出FLV格式,也可輸出SWF格式,甚至同時(shí)輸出FLV+SWF格式。此軟件也支持創(chuàng)建調(diào)用播放的網(wǎng)頁(yè)支持導(dǎo)入所有的主流字幕格式。srt,*.sub,*.idx,*.ssa,*.ass,*.psb,*.smi)有字幕合成功能,你現(xiàn)在無(wú)需再使用那些繁瑣的專業(yè)軟件來(lái)合成字幕到視頻中去,字幕合成與格式轉(zhuǎn)換一氣呵成!支持視頻分割,右鍵點(diǎn)擊列表中的源文件,選擇[編輯視頻],自己設(shè)置下起點(diǎn)終點(diǎn)即可對(duì)視頻進(jìn)行去粗取精處理?、鄯椒ㄈ簩lv轉(zhuǎn)換成其他格式視頻文件再插入工具:FLV轉(zhuǎn)AVI(FreeFLVtoAVIConverter1.5)作用:一個(gè)免費(fèi)的將FLV轉(zhuǎn)換成AVI的軟件,簡(jiǎn)單好用,自帶解碼器。四、學(xué)做交互,理解運(yùn)用。1.利用母版進(jìn)行交互母版≠模版母版和模版可以使課件統(tǒng)一整體風(fēng)格,展現(xiàn)自己的個(gè)性和特點(diǎn);模版是對(duì)同一類課件所做的整體風(fēng)格統(tǒng)一設(shè)置,母版則是對(duì)某一部課件內(nèi)部所做的個(gè)性化統(tǒng)一設(shè)置。母版設(shè)置得好,就可以存為模版,供別人在制作同類題材時(shí)使用。修改幻燈片母板的方法和技巧。如果我們希望為每一張幻燈片添加上一項(xiàng)固定的內(nèi)容,并做超鏈接,可以通過(guò)修改“母板”來(lái)實(shí)現(xiàn)。a)執(zhí)行“視圖→母板→幻燈片母板”命令,進(jìn)入“幻燈片母板”編輯狀態(tài)。b)插入固定內(nèi)容。例如:將圖片插入到幻燈片中,調(diào)整好大小、定位到合適的位置上。c)給這張圖片插入超鏈接,就可以進(jìn)行交互了。d)單擊“關(guān)閉母板視圖”按鈕退出“幻燈片母板”編輯狀態(tài)。以后添加幻燈片時(shí),該幻燈片上自動(dòng)添加上該圖片。如果說(shuō)一個(gè)PPT有它的靈魂的話,那就是PPT的母板,它的作用猶如摩天大廈的根基一般。2.在PPT演示文稿中插入PowerPoint演示文稿對(duì)象實(shí)現(xiàn)交互具體效果:①導(dǎo)航目錄內(nèi)容展示效果②單擊小圖片就可看到該圖片的放大圖自動(dòng)縮效果《畫家鄉(xiāng)》一課五個(gè)畫面交互的具體操作方法:a)單擊“插入→對(duì)象”,在出現(xiàn)的選擇頁(yè)中選擇“MicrosoftPowerPoint演示文稿”,單擊確定。此時(shí)就會(huì)在當(dāng)前幻燈片中插入一個(gè)“PowerPoint演示文稿”的編輯區(qū)域。b)在此編輯區(qū)域中我們就可以對(duì)插入的演示文稿對(duì)象進(jìn)行編輯了,編輯方法與PowerPoint演示文稿的編輯方法一樣。c)在插入的演示文稿對(duì)象中創(chuàng)建所需的幻燈片??蓪D片設(shè)置為幻燈片相同大小,退出編輯后,就可發(fā)現(xiàn)圖片以縮小方式顯示了(其實(shí)是整個(gè)插入的演示文稿對(duì)象被縮小顯示了)。d)最后,我們只需對(duì)剩余的圖片進(jìn)行插入。為了提高效率,可將這個(gè)插入的演示文稿對(duì)象進(jìn)行復(fù)制,并按照上面的方法對(duì)圖片進(jìn)行替換即可。e)完畢后,單擊“觀看放映”命令進(jìn)行演示,單擊小圖片馬上會(huì)放大,再單擊放大的圖片馬上又返回到了瀏覽小圖片的幻燈片中了。原理:這里的小圖片實(shí)際上是插入的演示文稿對(duì)象,它們的“動(dòng)作設(shè)置”屬性中的“單擊鼠標(biāo)”中的“對(duì)象動(dòng)作”被設(shè)為了“演示”(這是默認(rèn)值)。因此我們?cè)谘菔緯r(shí),單擊小圖片,就是等于對(duì)插入的演示文稿對(duì)象進(jìn)行“演示觀看”。而演示文稿對(duì)象在播放時(shí)就會(huì)自動(dòng)全屏幕顯示。所以我們看到的圖片就好像被放大了一樣,而我們單擊放大圖片時(shí),插入的演示文稿對(duì)象實(shí)際上已被播放完了(因?yàn)橹挥幸粡垼?,它就?huì)自動(dòng)退出,所以就回到了主幻燈片中了。3.用觸發(fā)器控制自定義動(dòng)畫進(jìn)行交互以前我們?cè)谑褂肞owerPoint制作課件時(shí),常常發(fā)現(xiàn)制作人機(jī)交互性的課件非常麻煩。其實(shí)在PowerPoint2003里,用觸發(fā)器控制自定義動(dòng)畫可以輕松地制作出交互性很強(qiáng)的課件。觸發(fā)器功能可以將畫面中的任一對(duì)象設(shè)置為觸發(fā)器,單擊它,該觸發(fā)器下的所有對(duì)象就能根據(jù)預(yù)先設(shè)定的動(dòng)畫效果開(kāi)始運(yùn)動(dòng),并且設(shè)定好的觸發(fā)器可以多次重復(fù)使用。類似于Authorware、Flash等軟件中的熱對(duì)象、按鈕、熱文字等,單擊后會(huì)引發(fā)一個(gè)或者的一系列動(dòng)作。例1:?jiǎn)螕簟袄馀_(tái)”后,“小球”開(kāi)始按一定路徑運(yùn)動(dòng)。例2:分別單擊“變色一”和“變色二”,讓“笑臉”顏色。例3:?jiǎn)螕粝旅嬉欢卧挼年P(guān)鍵詞,讓詞語(yǔ)變紅色讀下面一段話,說(shuō)說(shuō)從哪些詞語(yǔ)中可以看出侵略者采用了各種野蠻手段掠奪、毀滅圓明園的?他們把園內(nèi)凡是能拿走的東西,統(tǒng)統(tǒng)掠走,拿不動(dòng)的,就用大車或牲口搬運(yùn)。實(shí)在運(yùn)不走的,就任意破壞、毀掉。步驟:a)將原來(lái)段落中的重點(diǎn)詞消去;(將詞語(yǔ)顏色變成和背景色一樣)b)將重點(diǎn)詞作為單獨(dú)文本覆蓋到原來(lái)位置;c)設(shè)置重點(diǎn)詞自定義動(dòng)畫為“添加效果→強(qiáng)調(diào)→更改字體顏色→紅色”d)右擊重點(diǎn)詞自定義動(dòng)畫,選擇“效果選項(xiàng)”,選擇“計(jì)時(shí)”,選擇“觸發(fā)器”,選“單擊下列對(duì)象時(shí)啟動(dòng)效果”,再選重點(diǎn)詞,按確定。五、學(xué)會(huì)截取,合理選用。(一)視頻的截取加工1.工具:萬(wàn)能轉(zhuǎn)換器(英文名TotalVideoConverter)作用:可以幫助你快速的分割,修整大的AVI、MPEG、ASF或者WMV文件為一個(gè)個(gè)小的視頻文件,內(nèi)置視頻播放器,你可以很方便的按照所選擇的播放時(shí)間進(jìn)行切割操作,不需要另外具備
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京課改版歷史七年級(jí)上冊(cè)第11課《秦朝的統(tǒng)一》聽(tīng)課評(píng)課記錄
- 新人教版九年級(jí)歷史下冊(cè)第19課《現(xiàn)代音樂(lè)和電影》聽(tīng)課評(píng)課記錄
- 蘇科版九年級(jí)數(shù)學(xué)聽(tīng)評(píng)課記錄:第31講 與圓有關(guān)的位置關(guān)系
- 人教版九年級(jí)數(shù)學(xué)下冊(cè):29《復(fù)習(xí)題》聽(tīng)評(píng)課記錄1
- 二年級(jí)體育聽(tīng)評(píng)課記錄
- 首師大版道德與法治七年級(jí)下冊(cè)1.2《彼此尊重顯自尊》聽(tīng)課評(píng)課記錄
- 五年級(jí)數(shù)學(xué)下冊(cè)聽(tīng)評(píng)課記錄-《6 圓的面積》蘇教版
- 蘇教版小學(xué)數(shù)學(xué)四年級(jí)上口算部分
- 三年級(jí)語(yǔ)文教學(xué)計(jì)劃模板
- 新員工入職工作計(jì)劃書
- 人教版小學(xué)數(shù)學(xué)(2024)一年級(jí)下冊(cè)第五單元100以內(nèi)的筆算加、減法綜合素養(yǎng)測(cè)評(píng) B卷(含答案)
- 2024-2025學(xué)年北京市豐臺(tái)區(qū)高三語(yǔ)文上學(xué)期期末試卷及答案解析
- 2024年度體育賽事贊助合同:運(yùn)動(dòng)員代言與贊助權(quán)益2篇
- 2025屆西藏林芝一中高三第二次診斷性檢測(cè)英語(yǔ)試卷含解析
- 藥企銷售總經(jīng)理競(jìng)聘
- 開(kāi)封市第一屆職業(yè)技能大賽健康照護(hù)項(xiàng)目技術(shù)文件(國(guó)賽)
- 公路電子收費(fèi)系統(tǒng)安裝合同范本
- 醫(yī)院培訓(xùn)課件:《傷口評(píng)估與測(cè)量》
- 2021年全國(guó)高考物理真題試卷及解析(全國(guó)已卷)
- 期末試卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 《第一單元口語(yǔ)交際:即興發(fā)言》教案-2023-2024學(xué)年六年級(jí)下冊(cè)語(yǔ)文統(tǒng)編版
評(píng)論
0/150
提交評(píng)論