⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 train_booking_unit.h

📁 火车定标系统...用VC编译通过的
💻 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 + -