?? train_booking_unit.h
字號:
// train_booking_unit.h -- 系統數據單元定義
//
/////////////////////////////////////////////////////////////////////////////
#ifndef TRAIN_BOOKING_UNIT_H_
#define TRAIN_BOOKING_UNIT_H_
#include <time.h>
#include "train_booking_const.h"
/////////////////////////////////////////////////////////////////////////////
// 中途站點信息:雙向鏈表
typedef struct station_info
{
char station_id[MAX_STATION_ID_LEN + 1]; // 車站名
char master[MAX_TRAIN_ID_LEN + 1]; // 從屬列車號
char time_id[MAX_TIME_ID_LEN + 1]; // 從屬列車發出時間標識符
int station_order; // 車站在某特定路線中的次序
int distance; // 存儲距起點站的距離,單位km
struct tm reach_time; // 存儲抵達時間
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct station_info *pre; // 鏈表前趨指針
struct station_info *next; // 鏈表后繼指針
}station_info;
/////////////////////////////////////////////////////////////////////////////
// 軟臥車廂座位信息:順序表
typedef struct sbed_info
{
int car_order; // 本節車廂在列車中的次序
int offset; // 文件定位偏移量
char master[MAX_TRAIN_ID_LEN + 1]; // 從屬列車號
char time_id[MAX_TIME_ID_LEN + 1]; // 從屬列車發出時間標識符
char info[DOT_PER_SB_CAR][MAX_STAION_AMOUNT - 1]; // 座位信息矩陣
}sbed_info;
/////////////////////////////////////////////////////////////////////////////
// 硬臥車廂座位信息:順序表
typedef struct hbed_info
{
int car_order; // 本節車廂在列車中的次序
int offset; // 文件定位偏移量
char master[MAX_TRAIN_ID_LEN + 1]; // 從屬列車號
char time_id[MAX_TIME_ID_LEN + 1]; // 從屬列車發出時間標識符
char info[DOT_PER_HB_CAR][MAX_STAION_AMOUNT - 1]; // 座位信息矩陣
}hbed_info;
/////////////////////////////////////////////////////////////////////////////
// 硬座車廂座位信息:順序表
typedef struct hseat_info
{
int car_order; // 本節車廂在列車中的次序
int offset; // 文件定位偏移量
char master[MAX_TRAIN_ID_LEN + 1]; // 從屬列車號
char time_id[MAX_TIME_ID_LEN + 1]; // 從屬列車發出時間標識符
char info[DOT_PER_HS_CAR][MAX_STAION_AMOUNT - 1]; // 座位信息矩陣
}hseat_info;
/////////////////////////////////////////////////////////////////////////////
// 根據時間標識符區分的每次車的列車列表:鏈表
typedef struct train_item
{
char master[MAX_TRAIN_ID_LEN + 1]; // 從屬車次編號
char train_time_id[MAX_TIME_ID_LEN + 1]; // 該趟列車的時間標識符
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct train_item *next; // 鏈表指針
}train_item;
/////////////////////////////////////////////////////////////////////////////
// 已注冊用戶名列表:鏈表
typedef struct user_item
{
char psngr[MAX_PSNGR_ID_LEN + 1]; // 注冊用戶名
char master[MAX_STATION_ID_LEN + 1]; // 注冊的車站名
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct user_item *next; // 鏈表指針
}user_item;
/////////////////////////////////////////////////////////////////////////////
// 列車信息:單向鏈表
typedef struct train_info
{
// 全局信息
char locked; // 鎖定狀態,1是,0否
char expired; // 過期狀態,1是,0否
char master[MAX_TRAIN_ID_LEN + 1]; // 所屬車次編號
char time_id[MAX_TIME_ID_LEN + 1]; // 列車發出時間標識符
int train_income; // 列車總收入
float price_fac; // 票價因子,由列車檔次決定
int speed; // 列車速度,單位km/h
struct tm start_tm; // 起點站始發時間
struct tm finish_tm; // 抵達終點站時間
// 人員信息
int total_passengers; // 總已載員數
int total_waiters; // 已排隊等票人數
char waiter[MAX_NOTIFY_AMOUNT][MAX_PSNGR_ID_LEN + 1]; // 排隊等票乘客列表
struct sbed_info sbed_info_list[SOFT_BED_CAR]; // 軟臥座位信息結構數組
struct hbed_info hbed_info_list[HARD_BED_CAR]; // 硬臥座位信息結構數組
struct hseat_info hseat_info_list[HARD_SEAT_CAR]; // 硬座座位信息結構數組
// 途經站點信息
int total_station; // 路過站點總數
char start[MAX_STATION_ID_LEN + 1]; // 起始站
char final[MAX_STATION_ID_LEN + 1]; // 終點站
struct station_info station_links; // 途經車站(包括起、終點)鏈表信息
// 附加信息
char reserve[RESERVE_BLOCK]; // 升級數據保留區
struct train_info *next; // 鏈表指針
}train_info;
/////////////////////////////////////////////////////////////////////////////
// 運營車次信息:單向鏈表
typedef struct train_sq_info
{
char train_sq_id[MAX_TRAIN_ID_LEN + 1]; // 車次編號
char master[MAX_STATION_ID_LEN + 1]; // 從屬車站名
int running_amount; // 已運營列車總數
int running_amount_valid; // 有效的運營列車總數
int days_per_train; // 兩趟車間隔天數
struct train_info train_list; // 該車次運營列車鏈表
struct train_item train_item_list; // 該車次運營列車時間標識符鏈表
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct train_sq *next; // 鏈表指針
}train_sq_info;
/////////////////////////////////////////////////////////////////////////////
// 訂票系統配置信息:獨占文件
typedef struct system_info
{
// 全局信息
char open; // 是否開放訂票
char locked; // 鎖定狀態,1是,0否
char location[MAX_STATION_ID_LEN + 1]; // 本地車站名稱
int total_train_sq; // 運營車次總數
int total_train; // 運營列車總數
struct train_sq_info train_sq_list; // 車站管理車次信息鏈表
// 人員信息
int admin_amount; // 管理員人數
char admin[MAX_ADMIN_AMOUNT][MAX_PSNGR_ID_LEN + 1]; // 管理員列表
int psngr_amount; // 已注冊乘客(包括管理員)總數
struct user_item psngr_item_list; // 已注冊乘客名列表鏈表
// 帳目信息
float price_sbed_per_km; // 軟臥每公里票價
float price_hbed_per_km; // 硬臥每公里票價
float price_hseat_per_km; // 硬座每公里票價
float bounce_off; // 乘客退票打折折數
float special_off; // 特殊乘客打折折數
int total_sold; // 總售出票數
long total_income; // 車站總收入
// 附加信息
char reserve[RESERVE_BLOCK]; // 升級數據保留區
}system_info;
/////////////////////////////////////////////////////////////////////////////
// 用戶訂票信息(對應某列列車):獨占文件
typedef struct booked_info
{
char booked_train_sq_id[MAX_TRAIN_ID_LEN + 1]; // 訂票對應的車次編號
char booked_train_time_id[MAX_TIME_ID_LEN + 1]; // 車次的某列列車時間標識符
char master[MAX_PSNGR_ID_LEN + 1]; // 所屬用戶名
int soft_bed; // 已訂軟臥數
int soft_bed_sq[SOFT_BED_CAR][MAX_BOOK_PER_PSNGR]; // 已訂軟臥車廂號、座位號
char soft_bed_st[MAX_BOOK_PER_PSNGR][MAX_STATION_ID_LEN * 2 + 2];
// 存儲起點與終點車站名,兩個名字一起存,中間用#隔開
int hard_bed; // 已訂硬臥數
int hard_bed_sq[HARD_BED_CAR][MAX_BOOK_PER_PSNGR]; // 已訂硬臥車廂號、座位號
char hard_bed_st[MAX_BOOK_PER_PSNGR][MAX_STATION_ID_LEN * 2 + 2];
// 存儲起點與終點車站名,兩個名字一起存,中間用#隔開
int hard_seat; // 已訂硬座數
int hard_seat_sq[HARD_SEAT_CAR][MAX_BOOK_PER_PSNGR]; // 已訂硬座車廂號、座位號
char hard_seat_st[MAX_BOOK_PER_PSNGR][MAX_STATION_ID_LEN * 2 + 2];
// 存儲起點與終點車站名,兩個名字一起存,中間用#隔開
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct booked_info *next; // 鏈表指針
}booked_info;
/////////////////////////////////////////////////////////////////////////////
// 用戶接收系統信息收件箱條目:單向鏈表
typedef struct msgbox_item
{
char title[MAX_TITLE_LEN + 1]; // 消息標題
char body[MAX_BODY_LEN + 1]; // 消息正文
char receiver[MAX_PSNGR_ID_LEN + 1]; // 接收用戶名
char ifnew; // 是否已閱讀;1否,0是
char reserve[RESERVE_BLOCK]; // 升級數據保留區
int offset; // 文件定位偏移量
struct msgbox_item *next; // 鏈表指針
}msgbox_item;
/////////////////////////////////////////////////////////////////////////////
// 前臺用戶信息:獨占文件
typedef struct passenger_info
{
char passenger_id[MAX_PSNGR_ID_LEN + 1]; // 用戶名
char password[MAX_PASS_LEN + 1]; // 用戶密碼
char station_id[MAX_STATION_ID_LEN + 1]; // 注冊的車站名
char type; // 用戶類型:0管理員;1普通用戶;2特殊用戶
int total_booked_train; // 已訂票列車總數
int total_booked_tickets; // 已訂票總數
int total_cost; // 訂票總消費
int sysmsg_amount; // 系統發送消息數
int sysmsg_new; // 新到系統消息數
struct booked_info booked_links; // 訂票信息鏈,每個結點對應一趟列車
struct msgbox_item sysmsg_links; // 系統消息鏈
char reserve[RESERVE_BLOCK]; // 升級數據保留區
struct passenger_info *next; // 鏈表指針:多文件讀取式鏈表
}passenger_info;
/////////////////////////////////////////////////////////////////////////////
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -