vue開發餐廳訂餐系統
系統結構設計體系結構整體上,本系統采用了三級模式兩級映像的經典數據庫管理系統體系結構。在三級模式中,內模式即為數據的物理結構
系統結構設計
體系結構
整體上,本系統采用了三級模式兩級映像的經典數據庫管理系統體系結構。
在三級模式中,內模式即為數據的物理結構,描述了數據在物理結構中的存儲方式;模式即為數據的全局邏輯結構,描述了全體數據的邏輯結構及其特性;外模式即為局部邏輯結構,描述了與某一應用有關的數據的邏輯結構。
在兩級映像中,模式/內模式映像描述了數據的物理獨立性,即數據的邏輯結構與物理結構間的對應關系;外模式/模式映像則描述了數據的邏輯獨立性,即全局邏輯結構的改變不會對局部邏輯結構造成影響。
系統體系結構如下圖:

圖 1 系統體系結構
- 功能結構
根據系統設計文檔,本系統的功能共分為三部分,分別為面向管理員的功能、面向顧客的功能,以及用戶管理功能。
對于不同的使用對象,系統提供的功能權限也不相同,具體的系統功能結構如下圖:

圖 2 系統功能結構圖
需要注明的是,針對管理員和顧客這兩個不同的對象,他們能夠進行查詢的數據范圍也不相同。
管理員可以查詢整個數據庫中除了用戶管理信息外的全部信息;而對于顧客用戶,可以查詢的數據范圍除了餐廳的“靜態”信息外,只有屬于該用戶的訂單、反饋等信息可以查詢。
數據庫基本表的定義
表 1 取餐信息表(address_information)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_ai | INT | 4 | 取餐信息的編號 |
| name | VARCHAR | 45 | 取餐人姓名 |
| tele | VARCHAR | 45 | 取餐人電話 |
| address | VARCHAR | 45 | 取餐地址 |
| id_customer | VARCHAR | 4 | 該信息所屬的顧客的編號 |
表 2 管理員賬戶表(administrator)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_administrator | INT | 4 | 管理員的編號 |
| name_administrator | VARCHAR | 45 | 管理員賬戶名 |
| password_administrator | VARCHAR | 45 | 管理員賬戶密碼 |
表 3 顧客賬戶表(customer)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_customer | INT | 4 | 顧客的編號 |
| username_customer | VARCHAR | 45 | 顧客賬戶名 |
| password_customer | VARCHAR | 45 | 顧客賬戶密碼 |
表 4 員工信息表(employee)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_employee | INT | 4 | 員工的編號 |
| name_employee | VARCHAR | 45 | 員工姓名 |
| age_employeer | VARCHAR | 45 | 員工年齡 |
| occupation_employee | VARCHAR | 45 | 員工職位 |
| tele_employee | VARCHAR | 45 | 員工電話 |
表 5 入職信息表(employee_information)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_employee | INT | 4 | 員工的編號 |
| id_restaurant | INT | 4 | 餐廳的編號 |
| in_date | VARCHAR | 45 | 入職時間 |
| occupation | VARCHAR | 45 | 員工職位 |
| leave_date | VARCHAR | 45 | 離職時間 |
表 6 反饋信息表(feedback)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_feedback | INT | 4 | 反饋信息的編號 |
| id_customer | INT | 4 | 顧客的編號 |
| id_order | INT | 4 | 訂單的編號 |
| time_feedback | VARCHAR | 45 | 反饋時間 |
| content_feedback | VARCHAR | 200 | 反饋內容 |
表 7 食物表(food)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_food | INT | 4 | 食物的編號 |
| name_food | VARCHAR | 45 | 食物的名字 |
| price_food | FLOAT | 4 | 食物的價格 |
表 8 食物訂單表(food)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_order | INT | 4 | 訂單的編號 |
| id_food | INT | 4 | 食物的編號 |
| num_food | INT | 4 | 食物的數量 |
表 9 職位表(job)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| name_job | VARCHAR | 45 | 工作名稱 |
| salary_job | VARCHAR | 45 | 月工資 |
表 10 訂單表(myorder)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_order | INT | 4 | 訂單編號 |
| id_restaurant | INT | 4 | 餐廳編號 |
| id_ai | INT | 4 | 地址信息編號 |
| tot_price | FLOAT | 4 | 訂單總價格 |
| time_order | VARCHAR | 45 | 訂餐時間 |
表 11 餐廳信息表(restaurant)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_restaurant | INT | 4 | 餐廳編號 |
| loc_restaurant | VARCHAR | 45 | 餐廳地址 |
| accom_restaurant | VARCHAR | 45 | 餐廳容納人數 |
| tele_restaurant | VARCHAR | 45 | 餐廳電話 |
表 12 套餐表(set_meal)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_set_meal | INT | 4 | 套餐的編號 |
| name_set_meal | VARCHAR(45) | 45 | 套餐名字 |
| price_set_meal | FLOAT | 4 | 套餐價格 |
表 13 套餐訂單表(set_meal_order)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_order | INT | 4 | 訂單的編號 |
| id_set_meal | INT | 4 | 套餐的編號 |
| num_set_meal | INT | 4 | 套餐的數量 |
表 14 套餐組成(set_from)
| 字段名 | 數據類型 | 寬度 | 字段描述 |
|---|---|---|---|
| id_set_meal | INT | 4 | 套餐的編號 |
| id_food | INT | 4 | 食物的編號 |
| num | INT | 4 | 食物的數量 |
系統重要功能實現方法
用戶管理
登錄:
登錄分為管理員登陸和用戶登錄,前端在接收到輸入的用戶名和密碼后,返回給后端,同時多返回給后端一個值用來告知是管理員還是用戶在登錄。后端接收到數據后,首先判斷是誰登錄,然后調用相應的登陸函數。檢查時首先檢查用戶名是否存在,如果不存在則提示,然后再檢查是否密碼錯誤并給出相應提示,最后如果登陸成功則提示登陸成功并且返回用回答,后端記錄下當前用戶的 id。



注冊:
顧客在前端輸入用戶名和密碼,前端接收到后往目錄下發送,后端接收到后先去數據庫中查詢用戶名是否重復,如果重復則報錯,否則進行注冊,并且提示注冊成功。

- 管理端
增加餐廳信息:
管理員在前端填寫餐廳的地址,餐廳的容量,餐廳的電話,然后前端發送給后端,調用相應函數添加至數據庫。

修改餐廳信息:
前端向后端發送查詢請求,后端接收到請求后查詢數據庫中的餐廳列表,并且返回給前端以下拉菜單的形式展示出來,管理員在菜單中選擇,并且輸入修改后的信息,前端將選中的餐廳信息以及修改后的信息發送給后端,后端接收到后調用函數進行修改。

刪除餐廳信息:
前端向后端發送查詢請求,后端接收到請求后查詢數據庫中的餐廳列表,并且返回給前端以下拉菜單的形式展示出來,管理員在菜單中選擇,前端將選中的餐廳信息發送給后端,后端接收到后調用函數進行刪除。

查詢餐廳信息:
前端向后端發送請求,后端接收到數據后查詢數據庫中的餐廳列表,并且返回給前端以表格的形式展示出來。

增刪改查員工信息、食物信息:
實現方法與餐廳信息類似,此處不再贅述。
添加套餐信息:
添加套餐時需要添加套餐組成信息,同時需要修改套餐表以及套餐組成表。

增刪改查套餐組成信息:
前端向后端發送請求,后端接收到請求后分別查詢在套餐中的食物編號名稱以及數量,以及不在套餐中的食物編號和名稱,分別返回給前端并且顯示,管理員可以選擇不在套餐中的食物添加進套餐,也可以選擇修改套餐中的食物數量,也可以刪除套餐中的食物,前端將收集到的信息發送給后端進行相應操作。
查詢:

修改:

增刪改查員工入職信息:
整體邏輯同餐廳信息類似,不過前端需要向后端查詢三個列表,分別是餐廳信息、職位信息、以及員工信息,同時前端提供入職日期選擇,將選中的數據返回給后端。
查詢:

- 顧客端
下單:
首先前端一個發送請求,后端接收到請求后會查詢食物、套餐、取餐信息以及餐廳列表并存在一個結構為 Map<String,List> 的數據中,其中每個表的信息為一個 List,然后返回給前端。

前端接收到數據后,以下拉菜單的形式顯示給用戶。用戶選擇了相應的數據后,前端同樣存在一個結構為 Map<String,List> 的數據中,并且發送給后端:

后端在接收到數據后,分別調用訂單初始化、給訂單添加食物、給訂單添加套餐、給訂單添加取餐信息和餐廳信息的函數,并且將計算好的總價格返回給前端,前端在收到價格后顯示出來。

增刪改查取餐信息:
整體邏輯與上文類似,對于用戶的姓名、取餐地址和聯系電話都可以增加、修改、刪除和查詢。
用戶評價:
用戶在每次用餐后可選擇平靜自己的某一個歷史訂單。后端向前端返回該用戶的歷史訂單列表,用戶可對此訂單進行評分和評價,評價將存儲在數據庫內。

系統實現結果
以下為全部功能的實現結果截圖:
用戶管理(DBMS)功能

注冊功能

登錄功能
- 顧客功能

顧客初始界面

點餐功能

查詢訂單功能

評價功能

添加取餐信息功能

修改取餐信息功能

刪除取餐信息功能

查詢取餐信息功能

查詢餐廳功能
- 管理員功能

添加餐廳功能

修改餐廳信息功能

刪除餐廳功能

查詢餐廳功能

添加員工信息功能

修改員工信息功能

刪除員工信息功能

查詢員工信息功能

添加食品功能

修改食品功能

刪除食品功能

查詢食品功能

添加套餐功能

修改套餐功能

刪除套餐功能

查詢套餐功能

添加入職記錄功能

修改入職記錄功能

刪除入職記錄功能

查詢入職記錄功能

添加職位信息功能

修改職位信息功能

刪除職位信息功能

修改職位信息功能
總結
在本次的數據庫設計和實現過程中,我們從最開始的選題分工,到逐步進行設計、實現,組內的三位同學親身體驗了依次從設計到前、后端開發的過程。在這個過程中,一方面我們加深了對數據庫系統原理的理論理解,另一方面也增強了自身的工程能力。
在實現的過程中,我們曾經遇到過諸多問題,包括數據庫后端框架的選擇、前端的從零開始、功能設計問題、交流對接問題等等。面對這樣的挑戰,雖然客觀上我們付出了大量時間和精力,但最終的結果大多還是較為順利的。在解決這些問題的過程中,我們也體會到了這門課程從理論到實踐的挑戰。
整體上來說,數據庫的這次大作業帶給我們的是對于整個數據庫實際實現層面的經驗上的增長。過程雖然充滿艱辛,但收獲也是之前所無法想象的。
上一篇:水波紋造型鋁方通吊頂
下一篇:成都流云建筑公司









