# CTPS Final Project - How To Book Train Tickets More Easily
## CodiMD Document
https://playlab.computing.ncku.edu.tw:3001/21LtXVIYT2KhUDfCDcNhug
## Presentation Slides




























## 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' ]
```