資料庫期末project proposal

20
資料庫期末 Project Proposal 高鐵訂票系統 資工三乙 494512102 張逸豪 494512059 孫于婷 494512217 吳則漢

Upload: frank-chang

Post on 18-Nov-2014

3.744 views

Category:

Entertainment & Humor


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 資料庫期末Project Proposal

資料庫期末 Project Proposal

高鐵訂票系統

資工三乙

494512102 張逸豪

494512059 孫于婷

494512217 吳則漢

Page 2: 資料庫期末Project Proposal

一、 系統介紹:本系統提供使用者透過網路來訂取、查詢、及取消高鐵車廂

座位;並提供管理者介面供管理者做售票等相關紀錄的查詢。

二、 功能、規則:

1. 依起迄站、日期及欲搭乘時段查詢仍有空位之列車車次。

2. 查詢票價。

3. 查詢訂位紀錄。

4. 查詢空位數量。

5. 取消訂位紀錄。

6. 提供旅客預訂當日及未來 14 日以內之車票。訂位開放時間為乘車日(含)

前 14 日凌晨 0 點開始,但當日車次之預訂僅受理至列車起站出發時間前

2 小時為止。

7. 車廂數目:5,單一車廂座位數量:100,共 500 個座位。

8. 座位號碼依序排列(一排四人):

1 2 3 4

5 6 7 8

9 10 11 12

‧ ‧ ‧ ‧

9. 站數:共八站-台北,板橋,桃園,新竹,台中,嘉義,台南,左營。

10. 不可一票多買。

11. 座位可被分段購買。

12. 被取消訂票之座位還可再被訂。

13. 管理者可以利用匯入檔案的方式來完成大量訂票(僅限訂票功能)。

14. 系統管理者可對系統做售票的統計。

15. 系統管理者可將所有交易的資料匯出成 record.txt 檔。

16. 系統管理者可將不合理之購票紀錄刪除。

17. 當使用者完成訂票後,將自動產生其所訂座位資訊及流水號給使用者。

三、 系統架構:

1. 使用者介面:

(1) 訂票:

使用者需輸入其身分證字號(SSID)、姓名、E-mail、購票數、車次、

乘車日期、起點、終點等資訊訂票。當資料送出並確定無誤時,系

統訂票完成後會給予一組流水號做識別用;在完成每”次”的訂票後

系統都會提供一組不同的流水號。

(2) 查詢自己的訂票紀錄:

使用者需輸入其身分證字號(SSID)來查詢自己所訂的票。

(3) 取消訂票:

使用者需輸入其身分證字號(SSID)、及系統所提供之流水號查詢自己

Page 3: 資料庫期末Project Proposal

已訂的票,而後勾選所要取消之班次。

(4) 查詢時課表:

點入連結頁面即顯示時課表。

(5)查詢空座位及乘車率:

輸入車次、日期、起站與迄站並顯示所剩空位及乘車率百分比。

2. 管理者介面:管理者有其獨立之頁面可做帳號的登入。

(1) 查詢:

管理者可以查詢某一天各個班次的訂票人數(Group by Date)。也可查

詢某位乘客的購票資訊。

(2) 訂票:

管理者可以手動大量新增資料,並利用管理者介面處理電話訂票的

資料。

(3) 刪除:

管理者可以手動刪除任何一筆資料。

(4) File 輸入:

當需要大量訂票的資料輸入時,管理者可以匯入 input.txt 檔,裡面

記載著所有所需訂票之資訊,其格式為:

編號、身分證字號(SSID)、姓名、E-mail、購票數、車次、乘車日期、

起點、終點。若成功,系統將會自動完成訂票並產生座位資訊及流

水號;若格式不符,系統將會拒絕檔案匯入。

(5) File 輸出:

管理者可以將所有交易的資料輸出成:record.txt,其包含:

編號、身分證字號(SSID)、姓名、購票/退票時間、購票數、退票數、

車次、北上/南下、乘車日期、起點、終點、車廂、座位…資訊。

四、 Schema:

customers(cus_name,cus_ SSID, cus_email, tickets, reservation_No, cus_date,

cus_time)

train(train_No, [0],[1], [2], [3],[4], [5], [6],[7] )

seat_info(reservation_No, train_No,

carriage_No,seat_No,seat_date,seat_dep,seat_dest)

state_table(city_No, city_name)

cancel_seat(cus_name, train_No, carriage_No, seat_No, seat_date, seat_dep,

seat_dest)

Page 4: 資料庫期末Project Proposal

五、E-R model:

Page 5: 資料庫期末Project Proposal

六、SQL:

(1) 訂票:

a. 加入到 customer 表格:

INSERT INTO customer(reservation_No, cus_name, cus_SSID,

cus_email, cus_time, cus_date, tickets)

VALUES (‘使用者所輸入的資料’)

b. 加入到 seat_info 表格:

INSERT INTO seat_info (reservation_No, train_No, seat_date,

carriage_No, seat_No, seat_dep, seat_dest)

VALUES (‘使用者所輸入的資料’)

c. 從退票表格中取出座位來訂:

SELECT TOP ‘ 多 餘 需 要 從 退 票 表 格 中 訂 的 票 數 ’ * FROM

cancel_seat WHERE train_No = ‘使用者所輸入的車次 ’ AND

seat_date = ‘使用者所輸入的日期’

(2) 查詢訂票紀錄:

Page 6: 資料庫期末Project Proposal

SELECT (train_No, dep_time, carriage_No, seat_date, seat_No,

seat_dep, seat_dest)

FROM customer INNER JOIN seat_info

WHERE reservation = ‘使用者輸入的流水號碼’ AND cus_SSID = ‘使用

者輸入的身分證字號’

(3) 取消所有訂票紀錄:

網頁端需先判斷所輸入的數字是否等於 0,若不符則無法刪除:

DELETE FROM customer, seat_info

WHERE reservation_No = ‘使用者所輸入的流水號碼’

(4) 取消某個座位訂票紀錄:

Memo:網頁端需先判斷所輸入的數字是否大於該使用者所訂票數,

若超過則顯示錯誤訊息。

UPDATE customer

SET tickets = tickets – ‘使用者所輸入需取消的票數’

WHERE reservation_No = ‘使用者所輸入的流水號碼’

DELETE FROM seat_info

WHERE IN(

SELECT TOP 3 seat_No

FROM seat_info

WHERE reservation_No = ‘使用者所輸入的流水號碼’)

(5) 查詢某一天各班的乘車人數:

SELECT train_No, SUM (tickets)

FROM customer INNER JOIN seat_info

WHERE seat_date = ‘管理者所輸入的日期’

ORDER BY train_No

(6) 管理者強制刪票功能:

DELETE FROM customer, seat_info

WHERE reservation_No = ‘管理者所輸入的流水號碼’

(7) File 輸出:

SELECT (cus_SSID, cus_name, tickets, train_No, seat_date, seat_dep,

seat_dest)

FROM ((customer INNER JOIN seat_info) INNER JOIN train_info) INNER

JOIN state_table

WHERE reservation = ‘使用者輸入的流水號碼’ AND cus_SSID = ‘使用

者輸入的身分證字號’

(8) 列出時刻表:

南下列車:SELECT * FROM train WHERE ‘台北出發的時間’ < ‘板橋站

Page 7: 資料庫期末Project Proposal

出發的時間’ ORDER BY ‘台北出發的時間’

北上列車:SELECT * FROM train WHERE ‘台北出發的時間’ > ‘板橋站

出發的時間’ ORDER BY ‘台北出發的時間

(9) 查詢乘車率:

南下列車:SELECT train_No FROM seat_info WHERE train_No = ‘使用

者所輸入的車次 ’ AND seat_date = ‘使用者所輸入的日期’ AND

seat_dep < ‘使用者所輸入的迄站’ AND seat_dest > ‘使用者所輸入的

起站’

北上列車:SELECT train_No FROM seat_info WHERE train_No = ‘使用

者所輸入的車次 ’ AND seat_date = ‘使用者所輸入的日期’ AND

seat_dep > ‘使用者所輸入的迄站’ AND seat_dest < ‘使用者所輸入的

起站’

(10) 退票紀錄查詢:

SELECT train_No, carriage_No, seat_No, seat_date, seat_dep, seat_dest

FROM cancel_seat WHERE cus_name = ‘使用者所輸入的姓名’ ORDER

BY carriage_No, seat_No

七、前端網頁瀏覽畫面截圖:

首頁:

網路訂票:

Page 8: 資料庫期末Project Proposal
Page 9: 資料庫期末Project Proposal
Page 10: 資料庫期末Project Proposal

查詢、變更、取消訂票:

Page 11: 資料庫期末Project Proposal
Page 12: 資料庫期末Project Proposal

時刻表:

Page 13: 資料庫期末Project Proposal
Page 14: 資料庫期末Project Proposal

乘車率查詢:

Page 15: 資料庫期末Project Proposal

退票紀錄查詢:

Page 16: 資料庫期末Project Proposal

八、後端管理者介面截圖:

訂票:

Page 17: 資料庫期末Project Proposal

存檔:

Page 18: 資料庫期末Project Proposal

刪票:

查詢訂票記錄:

Page 19: 資料庫期末Project Proposal

查詢乘車人數:

檔案輸入:

Page 20: 資料庫期末Project Proposal