mysql數(shù)據(jù)庫課程設計——點餐系統(tǒng)(python連接實現(xiàn)可視化,含源碼,含報告)
一、設計題目與內容
通過了解餐飲行業(yè)的特點和實際情況,從分析飯店的基本情況入手,結合要實現(xiàn)的功能,對系統(tǒng)的可行性進行分析,為提高其可行性,故做了以下數(shù)據(jù)分析,用以完成飯店點餐系統(tǒng)
二、系統(tǒng)分析與設計
2.1 數(shù)據(jù)需求
餐桌數(shù)據(jù)包括餐桌號、座位數(shù)、狀態(tài)(空/有人)。 餐廳存儲有顧客信息,員工信息。菜品信息有菜品編號、名稱、類別、價格等 。
具體數(shù)據(jù)需求如下:
2.1.1下訂單階段需要的數(shù)據(jù):
?顧客信息:包括顧客編號。
?訂單信息:包括訂單編號、消費時間。
?餐桌信息:包括編號、可容人數(shù)、使用狀態(tài)等?
員工信息:包括員工工號。
2.1.2點菜階段需要的數(shù)據(jù):
?訂單信息:訂單編號
?菜品信息:包括菜品編號、菜品名稱、菜品數(shù)量等。
2.1.3結賬階段需要的數(shù)據(jù):
?訂單信息:包括訂單編號、顧客編號
?菜品信息:包括菜品編號、菜品名稱、菜品數(shù)量等。
?員工信息:包括員工工號
?折扣信息:包括消費金額、折扣數(shù)?
2.1.4員工管理需要的數(shù)據(jù):
?員工檔案:包括工號、姓名、性別、工資
2.1.5顧客管理需要的數(shù)據(jù):
顧客檔案:包括編號、姓名、性別等。
2.1.6消費記錄管理需要的數(shù)據(jù)有:
消費信息:訂單編號、消費金額、折扣后金額、結賬時間
2.2事務需求??
2.2.1數(shù)據(jù)錄入
?錄入顧客信息、錄入餐桌信息、錄入員工信息、錄入菜品信息?
2.2.2數(shù)據(jù)更新/刪除
?更新/刪除餐桌信息、更新/刪除菜譜菜品信息、更新/刪除員工信息、更新/刪除顧客信息、更新/刪除訂單菜品信息?
2.2.3數(shù)據(jù)查詢
?查詢可用餐桌信息、查詢在售菜品信息、查詢訂單信息、查詢顧客點菜信息 、查詢員工信息、查詢顧客消費信息?
三、數(shù)據(jù)庫概念設計
3.1菜譜(Menus)E-R圖

3.2顧客(Tomer)E-R圖

3.3餐桌(FoodTable)E-R圖

3.4員工(Worke)E-R圖

3.5訂單(Oder)E-R圖

3.6消費記錄( Sales_bill)E-R圖

3.7折扣規(guī)則(Discount_rules)E-R圖

3.8全局E-R圖

四、數(shù)據(jù)庫邏輯設計
4.1轉換規(guī)則
一個實體型轉換成一個關系模型。實體的屬性就是關系的屬性,實體的碼就是關系的碼。
實體型間的聯(lián)系常有如下不同的情況:
a. 一個1:1聯(lián)系可以轉換為一個獨立的關系模式,也可以任意一端對應的關系模式合并。
b. 一個1:n聯(lián)系可以轉換成一個獨立的關系模式,也可以與n端對應的關系模式合并。
c. 一個m:n聯(lián)系轉換成一個關系模式。
d. 3或3個以上實體間的一個多聯(lián)系可以轉換成一個關系模式。
e. 具有相同碼的關系模式可合并。
4.1.1關系模型:(紅色為主碼)
菜譜(菜品編號,菜品名稱,菜品類別,菜品價格)
顧客(顧客編號,姓名,性別,年齡,聯(lián)系方式)
餐桌(餐桌號,座位數(shù),使用狀態(tài))
員工(工號,姓名,性別,年齡,工資)
訂單(訂單編號,顧客編號,消費時間,餐桌編號,服務員編號)
菜譜_訂單(訂單編號,菜品編號,菜品名稱,菜品數(shù)量)
消費記錄(訂單號,消費金額,折扣后金額,賬單時間)
折扣規(guī)則(消費金額,折扣)
4.2建立基本表
4.2.1菜譜(Menus)
create table Menus(
M_id varchar(10) primary key,
M_name varchar(20),
M_class varchar(10),
M_price float);

4.2.2顧客(Tomer)
create tale Tomer
(T_id varchar(10) primary key,
?T_name varchar(10) not null
T_rsex varchar(4) check (T_sex='男'or T_sex='女') ,
T_phone varchar(20) );

4.2.3餐桌(FoodTable)
create table Foodtable
(Cz_id varchar(10) primary key,
Cz_number int not null,
Cz_zt varchar(6)check(Cz_zt="空" or Cz_zt="有人"));

4.2.4員工(Worke)
create table Worke?
(W_id varchar(10) primary key, W_name varchar(10),?
W_sex varchar(4) check(W_sex='男' or W_sex='女'),
W_age int,
W_salary float) ;

4.2.5訂單(Oder)
create table Menus_Oder
(O_id varchar(10),
M_id varchar(10),
M_name varchar(10),
M_number? int not null,
Primary key(M_id ,O_id),
foreign key(M_id) references Menus(M_id ),
foreign key(O_id) references Oder(O_id) ) ;

4.2.6菜譜_訂單(Menus_Oder)
create table Menus_Oder
(O_id varchar(10),
M_id varchar(10),
M_name varchar(10),
M_number? int not null,
Primary key(M_id ,O_id),
foreign key(M_id) references Menus(M_id ),
foreign key(O_id) references Oder(O_id) ) ;

4.2.7折扣規(guī)則(Discount_rules)
create table Discount_rules
?(Je float primary key,
?Zk float);

4.2.8消費賬單(Sales_bill)
create table Sales_bill
(O_id varchar(10) primary key ,
?S_price float,
S_priceafter float,
time datetime,
foreign key(O_id ) references Oder(O_id ) );

4.3管理基本表
有時候應用環(huán)境和應用需求的改變,我們需要修改已經(jīng)建立好的基本表的模式結構或者更新已經(jīng)插入的數(shù)據(jù)。mysql語句采用alter table<>語句修改基本表的結構,利用drop<>子句刪除基本表,利用update更新已經(jīng)插入的數(shù)據(jù)。alter table語句以修改基本表的名字,增加新列或者增加新的完整性約束條件,修改原有列的定義,包括修改列名和數(shù)據(jù)類型等。drop子句用于刪除指定的完整性約束條件。UPDATE用于把插入表的數(shù)據(jù)更新改變。
因為在建立表時將Tomer表中的T_sex錯誤的錄為T_rsex,因此用alter table 表名 change 舊字段名 新字段名 新字段類型。

五、系統(tǒng)實現(xiàn)
訪問數(shù)據(jù)庫
5.1數(shù)據(jù)查詢
5.1.1 Foodtable表

5.2.1menus表

5.1.3員工表(worke)

5.1.4消費記錄( Sales_bill)

5.1.5顧客(Tomer)

5.1.6訂單(Oder)

5.1.7折扣規(guī)則(Discount_rules)

5.1.8點菜(menus_oder)

5.2數(shù)據(jù)更新
將員工表(worker)中的01號員工W_age數(shù)據(jù)項改為20.
原來的表:

改過之后

