# CTPS Final Project - How To Book Train Tickets More Easily ## CodiMD Document https://playlab.computing.ncku.edu.tw:3001/21LtXVIYT2KhUDfCDcNhug ## Presentation Slides ![](https://i.imgur.com/K9zlGZA.jpg) ![](https://i.imgur.com/banEFnx.png) ![](https://i.imgur.com/rgi9hLT.jpg) ![](https://i.imgur.com/HGmSdzi.png) ![](https://i.imgur.com/qH4zsmg.png) ![](https://i.imgur.com/eIMtxkt.png) ![](https://i.imgur.com/eCBEO5Y.png) ![](https://i.imgur.com/fcnhsXT.png) ![](https://i.imgur.com/0ZWUyUF.jpg) ![](https://i.imgur.com/jn03Brg.jpg) ![](https://i.imgur.com/WAMDYmT.png) ![](https://i.imgur.com/oiESWhZ.png) ![](https://i.imgur.com/Wsverht.png) ![](https://i.imgur.com/TH7D8Hm.png) ![](https://i.imgur.com/Ln6NByT.png) ![](https://i.imgur.com/oZMr4Ca.png) ![](https://i.imgur.com/BXPsIb3.png) ![](https://i.imgur.com/VHCaMRo.png) ![](https://i.imgur.com/6cSe8qD.png) ![](https://i.imgur.com/rXvFNEM.png) ![](https://i.imgur.com/dOKsz23.png) ![](https://i.imgur.com/HHB2rWc.png) ![](https://i.imgur.com/Tk4eJPC.png) ![](https://i.imgur.com/0Zam4fl.png) ![](https://i.imgur.com/DVY79mJ.png) ![](https://i.imgur.com/ZUqAn9T.png) ![](https://i.imgur.com/vKQr2CE.png) ![](https://i.imgur.com/423HQzU.jpg) ## Introduction to API Functions ### TimeFunction - 匯入方式: ```python import TimeFunction ``` - Constant: - string->資料庫的起始日 ```python DATABASE_FIRST_DAY ``` - string->當下即時日期 ```python TODAY ``` - Function: - 傳入兩個時間 A、B,判斷 A 是否早於 B ```python is_time_early(Time1, Time2) ``` - 傳入值:string->時間A(Time1)、string->時間B(Time2) - 回傳值:boolean->True/False - 傳入兩個時間 A、B,判斷 A 是否晚於 B ```python is_time_late(Time1, Time2) ``` - 傳入值:string->時間A(Time1)、string->時間B(Time2) - 回傳值:boolean->True/False - 傳入兩個時間,求得時間差(分鐘) ```python time_difference(Time1, Time2) # 若時間1晚於時間2,將以跨日計算 ``` - 傳入值:string->時間(Time1)、string->時間(Time2) - 回傳值:integer->時間長 - 傳入某日期,獲取後一日之日期 ```python get_tomorrow(Day) ``` - 傳入值:string->日期(Day) - string->後一日日期 - 傳入某日期,獲取前一日之日期 ```python get_yesterday(Day) ``` - 傳入值:string->日期(Day) - string->前一日日期 - 傳入兩個日期 A、B,判斷 A 是否早於 B ```python is_date_early(Day1, Day2) ``` - 傳入值:string->日期A(Day1)、string->日期B(Day2) - 回傳值:boolean->True/False - 傳入兩個日期 A、B,判斷 A 是否晚於 B ```python is_date_late(Day1, Day2) ``` - 傳入值:string->日期A(Day1)、string->日期B(Day2) - 回傳值:boolean->True/False - 傳入兩個日期,獲得期間所有日期的清單 ```python get_between_dates(Day1, Day2) ``` - 傳入值:string->日期(Day1)、string->日期(Day2) - 回傳值:list->日期清單[string->日期] ```python [ '2020-10-30' , '2020-10-31' , '2020-11-01' ] ``` - 傳入兩個日期,求出兩日期相減的結果 ```python dates_difference(Day1, Day2) ``` - 傳入值:string->日期(Day1)、string->日期(Day2) - 回傳值:integer->日期差 - 傳入日期,求該日期是星期幾 ```python get_day_in_week(Day) ``` - 傳入值:string->日期(Day) - 回傳值:integer->星期幾 - 傳入時間及增加分鐘數,回傳增加後的時間 ```python add_time(time, add_minutes) ``` - 傳入值:string->時間(time)、integer->分鐘數(add_minutes) - string->時間 ### RemainingSeats_API - 匯入方式: ```python import RemainingSeats_API ``` - Function: - 檢查資料庫是否可查詢到該日期 ```python in_database_range(date) ``` - 傳入值:string->日期(date) - 回傳值:boolean->True/False - 傳入日期、車次、起站、迄站,求得剩餘座位數 ```python get_remaining_seats(date, train_no, start_station, dest_station) ``` - 傳入值:string->日期(date)、string->車次(train_no)、string->起站編號(start_station)、string->迄站編號(dest_station) - 回傳值:integer->剩餘座位數 ### StationList_API - 匯入方式: ```python import StationList_API ``` - Function: - 傳入起站、迄站,求得所有自起站前往迄站的路徑(行經的車站) ```python get_through_stop_list(start_station, dest_station) ``` - 傳入值:string->起站編號(start_station)、string->迄站編號(dest_station) - 回傳值:list->路線清單 [ list->路線一 [string->車站編號] , list->路線二 [string->車站編號] ] ```python [ ['1000', '4420', '6000'] , ['1000', '7000', '6000'] ] ``` - 傳入車站編號,譯為中文站名 ```python get_station_name(station_code) ``` - 傳入值:string->車站編號(station_code) - 回傳值:string->中文站名 - 傳入中文站名,譯為車站編號: ```python get_station_code(station_name) ``` - 傳入值:string->中文站名(station_name) - 回傳值:string->車站編號 ### TimeTable_API - 匯入方式: ```python import TimeTable_API ``` - 檢查資料庫內是否可查詢到該日期 ```python in_database_range(Day) ``` - 傳入值:string->日期(date) - 回傳值:boolean->True/False - 獲取時刻表資料可查詢的最新日期 ```python get_latest_exist_date() ``` - 傳入值:無 - 回傳值:string->可查詢的最後一天的日期 - 傳入日期、車次,檢查是否存在該班車 ```python train_exist(Day, TrainNo) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo) - 回傳值:boolean->True/False - 傳入日期、車次,獲取該班車停靠站 ```python stop_stations(Day, TrainNo) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo) - 回傳值:list->停靠站列表[string->車站編號] ```python [ '1000' , '1010' , '1020' ] ``` - 傳入日期、車次、起站、迄站,求得出發及抵達的時間 ```python get_run_time(Day, TrainNo, Stop1, Stop2) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo)、string->起站(Stop1)、string->迄站(Stop2) - 回傳值:list->出發/抵達時間列表[string->時間] ```python [ '10:00' , '10:20' ] ``` - 傳入日期、車次、起站、迄站,求得搭乘的時間長度 ```python get_taking_time(Day, TrainNo, Stop1, Stop2) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo)、string->起站(Stop1)、string->迄站(Stop2) - 回傳值:integer->乘車時間(分鐘) - 傳入日期、起站、迄站,找出所有行經的班次 ```python stop_trains(Day, Stop1, Stop2) ``` - 傳入值:string->日期(Day)、string->起站(Stop1)、string->迄站(Stop2) - 回傳值:list->列車清單[string->列車車次] ```python [ '127' , '206' , '438' ] ``` - 傳入日期、車次、起站、迄站,回傳全票票價 ```python get_Price(Day, TrainNo, Stop1, Stop2) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo)、string->起站(Stop1)、string->迄站(Stop2) - 回傳值:integer->票價 - 傳入日期、車次、起站、迄站,獲取歷史資料庫內截至當日該班車運行的日期清單 ```python get_available_date(Day, TrainNo, Stop1, Stop2) ``` - 傳入值:string->日期(Day)、string->車次(TrainNo)、string->起站(Stop1)、string->迄站(Stop2) - 回傳值:list->日期清單[string->日期] ```python [ '2020-10-30' , '2020-11-07' , '2020-11-25' ] ```