明:本次文章是看了B站上的視頻和分享的代碼筆記后,自己敲了一遍代碼。然后再敲一遍代碼的同時寫文章梳理邏輯,看不懂的同學可以去看原文章和視頻。文章如有雷同,可聯系我刪除!視頻鏈接:
https://www.bilibili.com/video/BV1pq4y1W7a1?spm_id_from=333.999.0.0
博客目錄:
一、基于Django+mysql的點餐系統設計--第一篇(開篇:確認需求功能、數據庫設計、程序設計)
二、基于Django+mysql的點餐系統設計--第二篇(搭建工程、前后端調試)
三、基于Django+mysql的點餐系統設計--第三篇(編寫后臺員工管理頁面)
四、基于Django+mysql的點餐系統設計--第四篇(編寫后臺菜品分類管理功能)
五、基于Django+mysql的點餐系統設計--第五篇(編寫后臺店鋪管理頁面)
六、基于Django+mysql的點餐系統設計-第六篇(編寫后臺菜品管理頁面)
本章源碼下載地址:https://github.com/hopeSuceess/testorder/tree/testorder_2022051501
寫到第六篇簡單的增刪改查已經都非常熟悉了,這里不做過多闡述,本篇針對以下重點功能進行說明:父頁面添加路徑、外鍵、菜品分類瀏覽頁的查看菜品、圖片修改(另一種考慮更全面的方式)、商鋪和菜品分類的二級聯動。
前端父頁面添加路徑比較簡單,但是非常重要。它是菜品管理頁面展示的入口,相關示例圖和代碼如下
外鍵對于數據表來說是很常見的,怎么將外鍵展示到頁面是一個技術點。前面講菜品分類管理的時候涉及到外鍵了,這次菜品管理涉及到店鋪、菜品分類兩個外鍵,但是從技術邏輯來說,菜品管理的外鍵展示和菜品分類管理的展示差不多,具體代碼如下:
for vo in list2:
shopDetail = Shop.objects.get(id=vo.shop_id)
vo.shopname = shopDetail.name
categoryDetail = Category.objects.get(id=vo.category_id)
vo.categoryname = categoryDetail.name
菜品分類瀏覽頁的查看菜品:前面在講菜品分類管理的時候有一個"查看菜品"的功能沒有實現。在寫完菜品分類管理的代碼后可以實現這一功能了。
現在開始實現查看菜品的功能,首先在myadmin/urls.py中添加菜品分類的路由
path('product/category/<int:sid>', product.categoryProduct, name="myadmin_categoryProduct_index"), #菜品分類-查看菜品瀏覽頁
確定完url控制器,開始在views視圖中寫具體的邏輯,在myadmin/views/product.py中的實現看下圖
def categoryProduct(request,sid,pIndex=1):
'''瀏覽信息'''
list = Product.objects.filter(status__lt=9, category_id=sid)
# smod = Product.objects
# list = smod.filter(status__lt=9)
mywhere = []
# 獲取、判斷并封裝keyword建搜索
kw = request.GET.get("keyword", None)
if kw:
# 查詢店鋪名稱中只要含有關鍵字就可以
list = list.filter(Q(price__contains=kw) | Q(name__contains=kw))
mywhere.append("keyword=" + kw)
list = list.order_by("id") # 對id排序
# 執行分頁處理
pIndex = int(pIndex)
page = Paginator(list, 5) # 以5條每頁創建分頁對象
maxpages = page.num_pages # 最大頁數
# 判斷頁數是否越界
if pIndex > maxpages:
pIndex = maxpages
if pIndex < 1:
pIndex = 1
list2 = page.page(pIndex) # 當前頁數據
plist = page.page_range # 頁碼數列表
for vo in list2:
shopDetail = Shop.objects.get(id=vo.shop_id)
vo.shopname = shopDetail.name
categoryDetail = Category.objects.get(id=vo.category_id)
vo.categoryname = categoryDetail.name
# 封裝信息加載模板輸出
context = {"productlist": list2, 'plist': plist, 'pIndex': pIndex, 'maxpages': maxpages, 'mywhere': mywhere}
return render(request, "myadmin/product/categoryProduct.html", context)
寫完了views視圖層開始寫templates展示層,在templates/product目錄下寫一個categoryProduct.html頁面,categoryProduct.html頁面的內容如下:
{% extends "myadmin/base.html" %}
{% block main_body %}
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
菜品信息管理
<small>訂餐系統后臺管理</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> 首頁</a></li>
<li class="active">菜品信息管理</li>
</ol>
</section>
<!-- Main content -->
<section class="content container-fluid">
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header">
<h3 class="box-title"><i class="fa fa-calendar"></i> 菜品信息表</h3>
</div>
<!-- /.box-header -->
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
<tr>
<th>ID</th>
<th>店鋪名稱</th>
<th>菜品分類</th>
<th>菜品圖片</th>
<th>菜品名稱</th>
<th>單價</th>
<th width="45">狀態</th>
<th>添加時間</th>
</tr>
{% for vo in productlist %}
<tr>
<td>{{ vo.id }}</td>
<td>{{ vo.shopname }}</td>
<td>{{ vo.categoryname }}</td>
<td><img src="/static/uploads/product/{{ vo.cover_pic }}" width="30"/></td>
<td>{{ vo.name }}</td>
<td>{{ vo.price }}</td>
<td >
{% if vo.status == 1 %}
<span style="color:green">正常</span>
{% elif vo.status == 2 %}
<span style="color:red">停售</span>
{% elif vo.status == 9 %}
<span style="color:red">已刪除</span>
{% else %}
<span style="color:red">未知狀態</span>
{% endif %}
</td>
<td width="10%">{{ vo.create_at|date:'Y-m-d' }}</td>
</tr>
{% endfor %}
</table>
</div>
<!-- /.box-body -->
<div class="box-footer clearfix">
<ul class="pagination pagination-sm no-margin pull-right">
<li><a href="{% url 'myadmin_product_index' pIndex|add:-1 %}?{{ mywhere|join:'&' }}">?</a></li>
{% for p in plist %}
<li {% if pIndex == p %}class="active"{% endif %}><a href="{% url 'myadmin_product_index' p %}?{{ mywhere|join:'&' }}">{{ p }}</a></li>
{% endfor %}
<li><a href="{% url 'myadmin_product_index' pIndex|add:1 %}?{{ mywhere|join:'&' }}">?</a></li>
</ul>
</div>
</div>
<!-- /.box -->
</div>
</div>
</section>
<!-- /.content -->
{% endblock %}
templates展示層也搞定了,現在需要在templates/category/index.html的"查看菜品"標簽下放一個路徑進行調試了,如下:
<a href="{% url 'myadmin_categoryProduct_index' vo.id %}" class="btn btn-warning btn-xs">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span> 查看菜品</a>
在菜品分類瀏覽頁,點擊查看菜品,跳到了菜品詳情頁:
在上一篇店鋪管理中涉及到了圖片上傳和修改的功能,在本篇繼續介紹圖片修改(另一種考慮更全面的方式)。在菜品修改時,考慮更全面的代碼如下:
#后端代碼
def update(request,sid):
try:
# 獲取原圖片
oldpicname = request.POST['oldpicname']
# 圖片的上傳處理
myfile = request.FILES.get("cover_pic", None)
if not myfile:
cover_pic = oldpicname
else:
cover_pic = str(time.strftime("%Y%m%d.%H%M%S"))+"."+myfile.name.split('.').pop()
destination = open("./static/uploads/product/"+cover_pic, "wb+")
for chunk in myfile.chunks():
destination.write(chunk)
destination.close()
productList = Product.objects.get(id=sid)
productList.shop_id = request.POST['shop_id']
productList.category_id = request.POST['category_id']
productList.name = request.POST['name']
productList.price = request.POST['price']
productList.cover_pic = request.POST['cover_pic']
productList.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
productList.save()
context = {'info': '修改成功!'}
# 判斷并刪除老圖片
if myfile:
os.remove("./static/uploads/product/"+oldpicname)
except Exception as err:
print(err)
context = {'info': '添加失敗!'}
# 判斷并刪除新圖片
if myfile:
os.remove("./static/uploads/product/"+cover_pic)
return render(request, "myadmin/info.html", context)
templates/myadmin/product/edit.html圖片更改的前端代碼如下:
......
<input type="hidden" name="oldpicname" value="{{ product.cover_pic }}" />
......
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">菜品圖片:</label>
<div class="col-sm-4">
<input type="file" name="cover_pic" /><br/>
<img src="/static/uploads/product/{{ product.cover_pic }}" width="200"/>
</div>
</div>
......
菜品在新增或修改之前,需要帶出來其屬于哪個商鋪下的哪個菜品分類。本篇在實現菜品新增、修改的功能時,在后端傳入商鋪信息,前端在解析后端傳過來的商品信息時,通過ajax調用相對應的菜品分類信息,商鋪和菜品分類的二級聯動是本篇非常重要的一個知識點和功能點。
這里以新增菜品為例,闡述商鋪和菜品分類的二級聯動。myadmin/views/product.py中add函數獲取店鋪信息并渲染到前端,代碼如下:
def add(request):
"""加載信息添加表單"""
# 獲取當前所以店鋪
slist = Shop.objects.values("id", "name")
context = {"shoplist": slist}
return render(request, "myadmin/product/add.html", context)
templates/myadmin/product/add.html中,店鋪標簽接收后端傳過來的店鋪信息,如下:
<div class="col-sm-4">
<select name="shop_id" id="shop_id" onchange="doLoadCategory()" class="form-control select2" style="width: 100%;">
{% for svo in shoplist %}
<option value="{{ svo.id }}">{{ svo.name }}</option>
{% endfor %}
</select>
</div>
在上面的代碼中,大家可以看到doLoadCategory函數,沒錯,店鋪級聯菜品分類靠的就是doLoadCategory函數。在調用店鋪標簽時會自動調用doLoadCategory函數,從而實現店鋪和菜品分類的同步展示。下邊看下doLoadCategory函數的代碼實現:
//自定義函數,實現通過店鋪id,Ajax加載對應的菜品分類信息
function doLoadCategory(){
//獲取選中的id號
var id = $("#shop_id").val();
$("#category_id").empty();
$.ajax({
url: "/myadmin/category/load/"+id,
type: 'get',
data: {},
dataType:'json',
success:function(res){
if(res.data.length<1)
return;
var data = res.data;
var select = $("#category_id")
for(var i=0;i<data.length;i++){
$('<option value="'+data[i].id+'">'+data[i].name+'</option>').appendTo(select)
//select.append('<option value="'+data[i].id+'">'+data[i].name+'</option>');
}
}
});
}
這里說下doLoadCategory函數中的 url: "/myadmin/category/load/"+id, 它對應myadmin/urls.py中的
path('category/load/<int:sid>', category.loadCategory, name="myadmin_category_load"), 該路由通過調用loadCategory函數實現對應店鋪下菜品分類的展示。
loadCategory函數實現邏輯如下:
def loadCategory(request,sid):
clist = Category.objects.filter(status__lt=9,shop_id=sid).values("id","name")
# 返回QuerySet對象,使用list強轉成對應的菜品分類列表信息
print(clist)
print(list(clist))
return JsonResponse({'data': list(clist)})
最后看下商鋪和菜品分類二級聯動的效果圖:
好了,本篇的重點功能講完了,下一篇講一下后臺賬號管理頁面
下時節,上海青打過霜更加甜糯,新米已上市,新做的咸肉也好了,燒咸肉菜飯吧: 紅潤咸肉、臘腸煸出油脂,搭配打過霜的油綠上海青和新米燜一鍋咸肉菜飯,成飯紅白綠三色相間,有肉有菜有顏,米香肉香菜清香,色味俱佳,令人胃口大開。
By 慢熊熊
1、米洗凈入電飯煲加正常燜飯水量、先泡著;入鍋稱了一下:米和水一共880克,米與水的比例是1:1.2。
2、咸肉、臘腸洗凈,切片;
3、上海青摘洗干凈,切塊段;姜切片;
4、起鍋熱油,下姜片炒香; 接著下咸肉、臘腸片,煸香、煸出油脂后關火; 揀出姜片不要; 將炒香的臘腸咸肉鏟出; 炒鍋內留下煸出的油脂待用。
5、將煸香的咸肉、臘腸鏟出放入電飯煲,和第2步的米拌勻,合蓋,欽下煮飯鍵。
6、燜飯程序結束后、不急揭蓋;炒鍋內的余油加熱, 下洗凈切好的上海青小段翻炒,撒一點點鹽,幾克糖,翻炒均勻至青菜變軟、斷生,不要炒出水! 關火鏟出。
7、打開電飯煲,香噴噴。
8、加入并鋪平剛才炒過的上海青; 淋1小勺芝麻油在青菜表面,加蓋,再次欽下燜飯鍵,燜5分鐘,燜熟青菜。
9、開蓋,拌勻鍋內肉菜飯。
10、加一勺雪白的豬油、和所有菜飯拌勻;這一勺豬油是咸肉菜飯的點睛,強烈建議加,滿滿的回憶殺啊! 熬出雪白的豬油可以參看這里:http://www.douguo.com/cookbook/3060854.html
11、盛出,米肉菜香三合一,紅綠白相間也很好看啊!開飯!
大米可提供豐富B族維生素;大米具有補中益氣、健脾養胃、益精強志、和五臟、通血脈、聰耳明目、止煩、止渴、止瀉的功效;米粥具有補脾、和胃、清肺功效。
做菜好吃都有技巧,我的每道菜都有小妙招,大家搜索“豆果”可以直接查看我的菜譜!
喜歡這個食譜記得收藏、關注哦!歡迎在下方留言分享您對這道美食的建議。
、課題簡介
在信息技術逐漸滲入到生活各個方面的今天,互聯網在我們的生活中扮演著越來越重要的角色。現在信息化技術不僅可以提高我們的工作效率,而且能有效的規避錯誤風險,節約人力成本。美食行業現如今也越來越利用信息化技術來提高點餐效率和質量,餐廳點餐管理系統現在也越來越被個大中小餐廳加以有效利用。
隨著餐飲業的發展,開發一套具有普遍通用意義的餐廳點菜管理系統會受到大部分餐廳的青睞,并且該系統必須具備操作簡單,功能齊全,可擴展性好,易于維護等特點。由于系統的可擴展性好,我們很容易在原有的功能上進行擴展新的功能,來為每個客戶開發一套符合自己特色的餐廳點菜管理系統。所以開發這樣一套具有普遍通用意義的餐廳點菜管理系統是非常有必要的。
餐廳訂餐系統不僅可以提高餐廳的檔次,也減輕了服務員的工作量,便于餐廳管理后廚出菜,提高了服務效率,有效減少了因為人工點菜而會產生的錯誤,提高了用戶體驗和服務質量,也為餐廳減少了很大的人工成本支出。
二、選題依據(來源)、背景及其目的意義
隨著信息化建設的發展,社會各個領域都在進行不同程度的信息化建設,餐飲系統也一樣。餐飲業的信息化不僅需要將整個餐飲業務通過信息系統進行系統管理,同時需要將整個餐飲業務通過信息系統進行系統管理,同時需要將各種人工服務交由計算機處理,比如點菜和菜單的傳送等。截止至2007年底,我國餐飲業經營網點已達到350多萬家,就業人員超過1500萬人。據國家統計局統計,今年上半年全國餐飲業實現營業額2327.2億元,比去年同期增加319.9億元、增長9%,增幅比社會商品零售總額增長多出7.3%,在去年營業額實現4368.9億元,同比增長16.4%的基礎上,繼續呈現穩步快速發展的良好勢頭。
傳統的餐飲行業,點餐過程都是由餐廳服務員人工完成的。通常的過程都是這樣的,客人進入餐廳后,選擇好座位開始點餐,服務員等待客人點餐完成,將客人的點餐內容送到廚房,由廚師下廚做菜。這一過程對于一個很小的餐館來說沒有問題,但是如果餐館比較大或者人比較多,客人的等待時間就會相對于比較長,而且服務員因為忙,會出錯,因而提高訂單錯誤的概率,由此引發顧客的不滿和投訴,造成客戶的流失,也會造成餐廳服務質量的下降,進一步就會危及企業的聲譽,造成不可估量的損失。隨著移動點餐的技術進步和加強,某些規模比較大的餐飲企業,已經運用更先進的點餐系統,建立一個便捷、高效的餐飲管理系統,以便于更加便捷的優化管理細節,使餐飲業的服務和管理質量提升一個質的飛躍,行業競爭力和品牌形象得到顯著提升。
隨著市場法規的進一步建立和健全,在激烈競爭中的中國餐飲市場將會得到進一步規劃和凈化。中國現有的數家餐飲企業和近5000億的營業額將會不斷增加,中國餐飲市場潛力巨大。今后餐飲業將繼續保持較快的發展勢頭,行業規模不斷擴大。同時,市場競爭也將更加激烈,市場細分化的趨勢使企業特色與個性化更加明顯,競爭焦點將更集中地表現在創新能力、經營手段、管理水平與人才保證等方面。
激烈競爭的局面仍將維持,通過競爭將繼續對現有的餐飲網點進行優勝略汰,市場的調劑與配置作用更加充分,對企業進一步進行整合與調整,不斷推動行業的持續發展。創新經營、品牌營銷的力度加強,在行業由品種向品牌、數量向質量、單店經營向規模經營的方向轉化中,企業要在市場中占據一定的地位必須加強創新經營力度和文化品牌內涵,進一步突出個性化經營,加強創新、樹立品牌、注重營銷是廣大企業面臨的重要課題。傳統餐飲向現代餐飲的轉化步伐加快,傳統餐飲的手工隨意性生產、單店作坊式經營、人為經驗型管理為主的表現特征,隨著餐飲市場需求的不斷擴大和社會化、國際化、工業化與產業化的推進,在繼承傳統飲食文化與烹飪技藝的基礎上,以快餐為代表的大眾餐飲逐步向標準化操作、工廠化生產,連鎖規模化經營和現代科學化管理的目標邁進,不斷加快現代餐飲的步伐!
三、國內外對本課題的研究現狀
在國內研究中,以餐廳點餐系統為主要研究方向,但早期的系統如點菜寶,電子菜譜等都不太成熟。它們只能顯示菜品的圖片與價格。簡而言之,這些點餐軟件只是將傳統的紙質菜單顯示換成了電子屏顯示,并不具備支付、預約功能,沒有給傳統的點菜過程帶來太多的變革,也沒有為餐廳的管理帶來顯著提高,而顧客的實際體驗也沒有得到太大的改善。隨著技術的進步,點餐系統的功能也得到了進一步的完善。通過菜單不僅能看到豐富的菜品樣式,還能了解到菜品的原材料。這種方式以顧客為中心,大大地提升了用戶體驗,還降低了餐廳的人力成本。在研究醫院點餐系統中,東南大學附屬中醫院引進了移動點餐系統,用于病原膳食管理,取得了良好的社會反向和經濟效益(朱永堅.2015)。還有少部分的研究是校園點餐系統,其中高應波在文章中提出系統應當采用C/S結構,并從服務器的穩定、可靠性,響應速度,界面的美觀程度和易維護性這四個方面進行闡述(高應波.2016)。
除了研究系統,有的學者研究食堂服務質量,通過有效性、可靠性、響應性、保障性這四個維度設計問卷,得出了滿意度和消費額之間存在的關系、不同年紀的學生對食堂服務的滿意度也不盡相同等結論。有的學者對如何提高食堂服務質量提出了自己的看法,通過足夠的溝通機制來提高真實瞬間的服務質量,如:建立食堂經理工作臺,隨時保持著跟學生們的溝通和交流。
點餐系統從2004年開始出現相關研究,2014年達到最熱,卻以餐廳點餐系統為主。在近幾年中,也出現了對高校食堂點餐系統的研究與開發。但由于軟件開發難度大,開發周期長等特點,并沒有得到很好的推廣與運用。在功能上只是將必備的功能設計出來,并沒有針對單一用戶進行個性化地推薦菜單或分析飲食健康問題。所以,一款易開發、易使用并能分析師生飲食健康的高校點餐系統將變得不可替代。而目前現有的對高效學生食堂的研究不單單針對學生食堂存在的問題,如日常管理、成本核算等(高慶.2012)。近年來,食品安全漸漸走入大眾的視野之中。隨著經濟水平的提升,越來越多的人已經擺脫了最基本的物質需要,更加注重膳食的營養、合理性。而高校餐飲的消費人群有其特殊性,使其在這樣的行業競爭中頗感壓力,積極投身改革的浪潮,不斷提升服務水平和質量(梁傳紅.2015)
研究方案:
本文結合餐飲業背景,在對國內外研究現狀進行剖析的同時,分析了其中存在的問題和潛在需求,指出餐廳點餐系統的優勢。
根據上述思想,本文設計餐廳點餐系統,實現集餐廳點餐與餐廳管理與一體的點餐系統,實現了餐飲業信息化管理,從而加快了餐飲業信息化技術的完善,實現了餐飲業信息化與實踐的有效結合。本餐飲系統實現點菜功能,并通過局域網將點菜信息實時傳輸至后臺系統,實現點菜單的實時傳送,并能夠傳送到相應的廚房打印機,并且可以修改菜單,進行退菜、加菜等操作。同時實現餐飲系統的各類信息維護和數據統計。闡述系統的結構、功能以及實現方法,并提出進一步研究的內容。
技術實現方案:
首先使用HTML加CSS來構成前端頁面(及Template)。使用Javascript來進行人機交互。用Ajax來進行頁面和服務器之間數據的異步傳輸,使用Django的MVC模式中的M來對數據庫進行操作。再使用V來將生成的結果顯示在HTML中,在M和V之間需要使用C來處理業務邏輯與model和view交互,返回結果。
Django是高水準的Python編程語言驅動的一個開源模型,控制器風格的Web應用程序框架,它起源于開源社區。使用這種架構,程序員可以方便、快捷地創建高品質、易維護、數據庫驅動的應用程序。這也正是OpenStack的Horizon組件采用這種架構進行設計的主要原因。另外,在Django框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性。Django項目源自一個在線新聞Web站點,于 2005年以開源的形式被釋放出來。
Django是用python語言寫的開源web開發框架(open source web framework),它鼓勵快速開發,并遵循MVC設計。Django遵守BSD版權,初次發布于2005年7月, 并于2008年9月發布了第一個正式版本1.0 。
Django 根據比利時的爵士音樂家Django Reinhardt命名,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。由于Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜志SD Times評選為2013 SD Times 100,位列“API、庫和框架”分類第6位,被認為是該領域的佼佼者。
本系統對于用戶僅需一臺裝有瀏覽器的計算機,即可完成大多數操作,對用戶個人電腦本身沒有特殊要求,一般當前個人電腦即可滿足要求。主要采用了Django框架。對于餐飲點餐系統十分的快捷和便利。用戶利用這些開源軟件豐富的解決方案可以快速開發系統。
酒店點餐系統,是以方便、簡單、直觀為前提所開發的,將我們所需要的各項菜品以及用戶選項結合到系統中去,讓我們的工作信息化,智能化,高效化,取代原有的紙質菜單點餐環節,目前,很多大型餐飲企業,都已經使用自己的點餐系統,通過這些,大大提高了酒店的服務效率。但是時代在發展,酒店系統也會越來越完善,現在的點餐系統,當然不能滿足公司的需求,因此,這就推動了酒店點餐系統的進一步優化升級與再次開發。
酒店點餐系統的前端是由HTML加CSS主要構成的,與后端進行交互,使用的是Django框架,使用的數據庫是Mysql。主要的內容:菜品信息管理、會員信息管理、大堂點餐管理,以及大堂店鋪菜品展出和點餐購物車等。
已經具備的條件
對于Python中Django框架有了詳細的學習,以及Django對Mysql有了熟練的掌握,軟硬件的兼容問題的解決,同時在網絡上也可以查閱大量的資料。
未具備的條件及提出的解決方案
要實現菜單的數據庫部分,是根據各種收集得來的數據,需要收集大部分的圖片信息。
七、主要參考文獻:
[1] 陳承歡.HTML5+CSS3網頁設計與制作使用教程.人民郵電出版社.2018
[2] 宋美玲,陳書理.CSS3和HTML5的優勢及其在網頁布局中的應用.開封大學學報.2017
[3] 錢彬.Python Web開發從入門到實戰(Django+Boot).清華大學出版社.2020
[4] 張曉.Django實戰Python Web典型模塊與項目開發.人民郵電出版社.2020
[5] 朱永堅.移動點餐系統在醫院食堂信息化建設中的應用.信息技術與信息化.2015
[6] 高應波.基于C/S結構的校園食堂智能點餐系統的研究.湖北科技學院學報.2016
[7] 高慶.基于飲食生活型態的大學生餐飲消費市場細分研究.論壇與信息論壇.2012
[8] 梁傳紅.淺析新疆高效餐飲品牌建設.考試周刊.2015
*請認真填寫需求信息,我們會在24小時內與您取得聯系。