酒店管理系統數據庫課程設計


前言

為數據庫課程設計做,划水了幾天,實在無聊看了一下書(上課沒咋聽,唉)自己做了一下(剛開始准備划水來着,小組大佬有做),所以有些粗糙,就記錄一下,還請大佬們指教

需求分析

需求大家應都非常理解了,不在多述

E-R圖(充錢不夠,只能畫60個圖標,部分實體屬性不全)

E-R圖轉換為表結構

客戶(證件號[主鍵],證件類型,姓名,性別,聯系電話)

房間類型(類型編號[主鍵],單價/天,押金,是否可為鍾點房,鍾點房價格/h)

房間(房間號[主鍵],類型編號[外鍵],狀態)

入住信息(入住編號[主鍵],房間號[外鍵],證件號[外鍵],入住時間,預入住時間,退房時間,鍾點房標志位,罰款金額)

服務(入住編號,服務編號) 實現服務總金額 sum(消費金額) over()

可服務內容(服務編號[主鍵],服務內容,服務金額)

員工(編號[主鍵],姓名,職務,性別)

結算(入住編號[主鍵],員工編號[主鍵],折扣,折扣原因,收費總金額)
--視圖

入住總覽表:

入住編號,客戶證件號,姓名,聯系電話,房間號,入住時間,預入住時間,鍾點房標志位

--房間空閑表

房間號,房間類型編號,單價/天,押金,是否可為鍾點房,鍾點房價格/h

--服務消費總表

入住編號,服務內容,服務金額

代碼實現

--創建數據庫
create database Hotel_management;
use Hotel_management;
--表的構建

--客戶表customer
CREATE TABLE CUSTOMER
( Cid nvarchar(20) NOT NULL,                                     --證件號[主鍵]
  Ctype nvarchar(10) DEFAULT '身份證號',                         --證件類型
  Cname nvarchar(10) NOT NULL,                                   --姓名
  Csex nvarchar(2) DEFAULT '男' CHECK (Csex = '男' OR Csex='女'),--性別
  Cnumber nvarchar(15) NOT NULL,                                 --聯系電話
  PRIMARY KEY (Cid),
  );
--房間類型表roottype
CREATE TABLE ROOMTYPE
( RTid nvarchar(10) NOT NULL,                  --類型編號[主鍵]
  RTprice float NOT NULL CHECK (RTprice>=0),    --單價/天
  RTdeposit float NOT NULL CHECK (RTdeposit>=0),--押金
  RTjudge bit NOT NULL,                        --是否為鍾點房
  RTjdprice float CHECK (RTjdprice>=0),                             --鍾點房價格
  PRIMARY KEY (RTid),
 );
--房間表root
CREATE TABLE ROOM
( Rid nvarchar(10) NOT NULL,                  --房間號[主鍵]
  Rroomtype nvarchar(10) NOT NULL,            --類型編號[外鍵ROOMTYPE(RTid)]
  Rstate bit NOT NULL,                        --狀態
  PRIMARY KEY (Rid),
  FOREIGN KEY (Rroomtype) REFERENCES ROOMTYPE(RTid),
 );
--入住信息表live
CREATE TABLE LIVE
(  Lid int IDENTITY(1,1),             --入住編號[主鍵]自增
   Lrootid nvarchar(10) NOT NULL,     --房間號[外鍵ROOM(Rid)]
   Lcustomerid  nvarchar(20) NOT NULL,--證件號[外鍵CUSTOMER(Cid)]
   Lstart date NOT NULL,              --入住時間
   Lexpect date NOT NULL,             --預計入住時間
   Lout date,                         --退房時間
   Lfine float CHECK (Lfine>=0),       --罰款金額
   Lmark bit NOT NULL,                --鍾點房標志位
   PRIMARY KEY (Lid),
   FOREIGN KEY (Lrootid) REFERENCES ROOM(Rid),
   FOREIGN KEY (Lcustomerid) REFERENCES CUSTOMER(Cid),
 );
--服務表service
CREATE TABLE SERVICE
( SLid int,    --入住編號
  SCid int,    --服務編號
 );
 --存在的服務CSERVICE
CREATE TABLE CSERVICE
( CSid int IDENTITY(1,1),                       --服務編號[主鍵]
  CScontent nvarchar(10) NOT NULL,              --服務內容
  CSprice float CHECK (CSprice>0) NOT NULL,     --服務金額
  PRIMARY KEY (CSid),
  );
--員工表employees
CREATE TABLE EMPLOYEES
( Eid int IDENTITY(1,1),                                          --職工編號
  Ename nvarchar(10) NOT NULL,                                    --姓名
  Esex nvarchar(2) DEFAULT '男' CHECK (Esex = '男' OR Esex='女'), --性別
  Eposition nvarchar(10) NOT NULL,                                --職務
  PRIMARY KEY (Eid),
  );
--結算表settlement
CREATE TABLE SETTLEMENT
( Sliveid int NOT NULL,            --入住編號
  Semployeesid int NOT NULL,       --員工編號
  Sdiscount float CHECK (1>Sdiscount AND Sdiscount>0), --折扣
  Sdiscountwhy nvarchar(20),            --折扣原因
  Stotalamount float CHECK (Stotalamount>0),   --收費總金額
  PRIMARY KEY (Sliveid,Semployeesid),
  );
--視圖的建立
--入住信息表
go
CREATE VIEW LIVE_INFO(入住編號,客戶證件號,客戶姓名,聯系電話,房間號,入住時間,預入住時,鍾點房標志位)
AS
SELECT LIVE.Lid,LIVE.Lcustomerid,CUSTOMER.Cname,CUSTOMER.Cnumber,LIVE.Lrootid,Lstart,Lexpect,Lmark
FROM LIVE,CUSTOMER
WHERE LIVE.Lcustomerid = CUSTOMER.Cid
WITH CHECK OPTION;
go
--房間空閑表
CREATE VIEW FREE_ROOM(房間號,房間類型編號,房間單價,房間押金,是否可為鍾點房,鍾點房價格)
AS
SELECT ROOM.Rid,ROOM.Rroomtype,ROOMTYPE.RTprice,RTdeposit,RTjudge,RTjdprice
FROM ROOM,ROOMTYPE
WHERE (ROOM.Rroomtype = ROOMTYPE.RTid AND ROOM.Rstate = 'False')
WITH CHECK OPTION;
go
--服務消費總金額表
CREATE VIEW CUSTOMER_SERVICE(入住編號,服務內容,服務金額)
AS
SELECT SERVICE.SCid,CSERVICE.CScontent,CSERVICE.CSprice
FROM SERVICE,CSERVICE
where SERVICE.SLid = CSERVICE.CSid
WITH CHECK OPTION;
go

添加測試數據

--添加數據
--INSERT INTO table_name (column1,column2,column3,...)
--VALUES (value1,value2,value3,...);
--客戶表加數據
INSERT INTO CUSTOMER (Cid,Cname,Csex,Cnumber)
VALUES ('444555200201283625','lnng','男','17837712772');
INSERT INTO CUSTOMER (Cid,Cname,Csex,Cnumber)
VALUES ('414455200201283626','樊星','男','15937711673');
INSERT INTO CUSTOMER (Cid,Cname,Csex,Cnumber)
VALUES ('678876200201283627','李月','女','17037711784');
--房間類型表加數據
INSERT INTO ROOMTYPE (RTid,RTprice,RTdeposit,RTjudge,RTjdprice)
VALUES ('0001','200','200','1','50');
INSERT INTO ROOMTYPE (RTid,RTprice,RTdeposit,RTjudge,RTjdprice)
VALUES ('0002','400','400','0','0');
INSERT INTO ROOMTYPE (RTid,RTprice,RTdeposit,RTjudge,RTjdprice)
VALUES ('0003','600','600','0','0');

--房間表room加數據
INSERT INTO ROOM (Rid,Rroomtype,Rstate)
VALUES ('201','0001','1');
INSERT INTO ROOM (Rid,Rroomtype,Rstate)
VALUES ('301','0002','0');
INSERT INTO ROOM (Rid,Rroomtype,Rstate)
VALUES ('401','0003','0');
--入住信息表live加數據
INSERT INTO LIVE (Lrootid,Lcustomerid,Lstart,Lexpect,Lmark)
VALUES ('201','444555200201283625',getdate(),dateadd(d, 1, getdate()),0);
--存在的服務CSERVICE加數據
INSERT INTO CSERVICE (CScontent,CSprice)
VALUES ('可樂','3');
INSERT INTO CSERVICE (CScontent,CSprice)
VALUES ('午飯','20');
--服務表service加數據
INSERT INTO SERVICE (SLid,SCid)
VALUES ('1','1');
INSERT INTO SERVICE (SLid,SCid)
VALUES ('2','1');
--員工表employees加數據
INSERT INTO EMPLOYEES (Ename,Esex,Eposition)
VALUES ('王晨','男','經理');
INSERT INTO EMPLOYEES (Ename,Esex,Eposition)
VALUES ('王月','女','管家');
----結算表settlement
INSERT INTO SETTLEMENT (Sliveid,Semployeesid)
VALUES ('1','1');

效果圖




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM