亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? train_booking_fread.c

?? 火車定標系統...用VC編譯通過的
?? C
?? 第 1 頁 / 共 2 頁
字號:
	create_iii_dir(filepath, TRAIN_INFO_DIR, sq_id, 
		time_id, SB_INFO_FILE);				// 生成文件路徑

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載列車軟臥車廂信息失敗!", WC);

		return FAIL;
	}

	fp = fopen(filepath, "rb");

	// 讀取信息到順序表中
	fread(sbed_arr, sizeof(sbed_info), amount, fp);

	// 檢測車廂與列車的從屬關系
	if ((strcpy(sq_id, sbed_arr->master)) || 
		(strcpy(time_id, sbed_arr->time_id)))
	{
		message(ERROR, "加載的車廂信息不屬于本列車!", NULL);
		message(WARN, "加載車廂信息完全失敗!", WC);

		return FAIL;
	}
	fclose(fp);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載列車硬臥信息數組
//
// 函數參數:	hbed_arr:硬臥信息結構數組首地址
//				sq_id:車次編號
//				timd_id:該趟列車的時間標識符
//				amonut:硬臥車廂數量
//
/////////////////////////////////////////////////////////////////////////////
status load_hbed_info_list(hbed_info *hbed_arr, char *sq_id, 
						   char *time_id, int amount)
{
	char filepath[MAX_FILE_PATH_LEN];
	FILE *fp;

	printf("【信息】正在加載列車(%s)的硬臥車廂信息...\n", sq_id);

	create_iii_dir(filepath, TRAIN_INFO_DIR, sq_id, 
		time_id, HB_INFO_FILE);				// 生成文件路徑

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載列車硬臥車廂信息失敗!", WC);

		return FAIL;
	}

	fp = fopen(filepath, "rb");

	// 檢測車廂與列車的從屬關系
	if ((strcmp(sq_id, hbed_arr->master)) || 
		(strcmp(time_id, hbed_arr->time_id)))
	{
		message(ERROR, "加載的車廂信息不屬于本列車!", NULL);
		message(WARN, "加載車廂信息完全失敗!", WC);

		return FAIL;
	}

	// 讀取信息到順序表中
	fread(hbed_arr, sizeof(hbed_info), amount, fp);
	fclose(fp);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載列車硬座信息數組
//
// 函數參數:	hseat_arr:軟臥信息結構數組首地址
//				sq_id:車次編號
//				timd_id:該趟列車的時間標識符
//				amonut:硬座車廂數量
//
/////////////////////////////////////////////////////////////////////////////
status load_hseat_info_list(hseat_info *hseat_arr, char *sq_id, 
						   char *time_id, int amount)
{
	char filepath[MAX_FILE_PATH_LEN];
	FILE *fp;

	printf("【信息】正在加載列車(%s)的硬座車廂信息...\n", sq_id);

	create_iii_dir(filepath, TRAIN_INFO_DIR, sq_id, 
		time_id, HS_INFO_FILE);				// 生成文件路徑

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載列車硬座車廂信息失敗!", WC);

		return FAIL;
	}

	fp = fopen(filepath, "rb");

	// 檢測車廂與列車的從屬關系
	if ((strcmp(sq_id, hseat_arr->master)) || 
		(strcmp(time_id, hseat_arr->time_id)))
	{
		message(ERROR, "加載的車廂信息不屬于本列車!", NULL);
		message(WARN, "加載車廂信息完全失敗!", WC);

		return FAIL;
	}

	// 讀取信息到順序表中
	fread(hseat_arr, sizeof(hseat_info), amount, fp);
	fclose(fp);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載所有座位信息
//
// 函數參數:	sbed_arr:軟臥信息結構數組首地址
//				hbed_arr:硬臥信息結構數組首地址
//				hseat_arr:硬座信息結構數組首地址
//				sq_id:列車對應車次編號
//				time_id:列車時間標識符
//				sbed:軟臥車廂數量
//				hbed:硬臥車廂數量
//				hseat:硬座車廂數量
//
/////////////////////////////////////////////////////////////////////////////
status load_dot_info_list(sbed_info *sbed_arr, hbed_info *hbed_arr, 
						  hseat_info *hseat_arr, char *sq_id, char time_id,
						  int sbed, int hbed, int hseat)
{
	load_sbed_info_list(sbed_arr, sq_id, time_id, sbed);
	load_hbed_info_list(hbed_arr, sq_id, time_id, hbed);
	load_hseat_info_list(hseat_arr, sq_id, time_id, hseat);

	return OK;
}




/////////////////////////////////////////////////////////////////////////////
// 函數功能:	生成默認的管理員信息
//
// 函數參數:	psngr_info_head:默認管理員信息結構體指針
//				system_info_pt:指向系統配置信息體的指針
//
/////////////////////////////////////////////////////////////////////////////
status create_default_admin_info(passenger_info *psngr_info_pt,
								 system_info *system_info_pt)
{
	message(WARN, "正在重置默認管理員信息...", NULL);

	build_ii_dir(USER_INFO_DIR, "陸遙", NULL);
	prepare_psngr_dir("陸遙");

	strcpy(psngr_info_pt->passenger_id, "陸遙");		// 設置默認管理員名
	strcpy(psngr_info_pt->password, "123");
	strcpy(psngr_info_pt->station_id, "武漢");
	psngr_info_pt->type = 0;

	psngr_info_pt->total_booked_tickets = 0;
	psngr_info_pt->total_booked_train = 0;
	psngr_info_pt->total_cost = 0;
	psngr_info_pt->sysmsg_amount = 0;
	psngr_info_pt->sysmsg_new = 0;

	psngr_info_pt->booked_links.next = NULL;
	psngr_info_pt->sysmsg_links.next = NULL;

	// 注冊索引
	register_psngr_info(system_info_pt, psngr_info_pt->passenger_id, 1);

	// 將創建信息寫入文件
	if (save_psngr_info(psngr_info_pt))
	{
		message(INFO, "成功創建默認管理員信息!", NULL);
	}
	else
	{
		message(ERROR, "創建默認管理員信息時存儲文件出錯!", NULL);
		message(WARN, "創建默認管理員信息失敗!", WC);

		return FAIL;
	}
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載已注冊用戶列表
//
// 函數參數:	user_item_head:已注冊用戶鏈表頭結點指針
//				station_id:已注冊用戶所屬車站名
//				amount:已注冊用戶數量
//
/////////////////////////////////////////////////////////////////////////////	
status load_psngr_item_list(user_item *user_item_head, char *station_id, int amount)
{
	int i;
	FILE *fp;
	user_item *user_item_pt;
	char filepath[MAX_FILE_PATH_LEN];

	printf("【信息】正在加載車站(%s)的所有用戶列表...\n", station_id);

	// 生成文件路徑
	create_i_dir(filepath, SYS_INFO_DIR, PSNGR_ITEM_FILE);

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載用戶列表失敗!", WC);

		return FAIL;
	}
		
	fp = fopen(filepath, "rb");

	for (i = 0; i < amount; i++)
	{
		// 從文件中讀取用戶鏈表信息
		if (!(user_item_pt = (user_item *)malloc(sizeof(user_item))))
		{
			message(ERROR, "加載用戶列表時讀申請內存失敗!", NULL);
			message(WARN, "加載用戶列表失敗!", WC);

			free_user_item_info_list(user_item_head);		// 釋放無效內存

			return FAIL;
		}

		fread(user_item_pt, sizeof(user_item), 1, fp);

		// 檢測用戶與車站的從屬關系
		if (strcmp(station_id, user_item_pt->master))
		{
			message(ERROR, "加載的用戶信息不屬于本車站!", NULL);
			message(WARN, "加載用戶列表信息完全失敗!", WC);// 斷點

			// 釋放無效內存
			free_user_item_info_list(user_item_head);
			free(user_item_pt);

			return FAIL; 
		}

		user_item_head->next = user_item_pt;
		user_item_head = user_item_head->next ;
	}
	
	if (amount)			// 如果加載的索引數量不為0則要封尾
	{
		user_item_pt->next = NULL;
	}
	fclose(fp);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載前臺用戶信息鏈
//
// 函數參數:	psngr_info_head:前臺用戶鏈表頭結點指針,用于返回加載數據
//				station_id:前臺用戶所屬車站名
//				user_item_head:用戶信息索引鏈表頭結點指針
//				amount:前臺用戶數量
//
/////////////////////////////////////////////////////////////////////////////	
status load_psngr_info_list(passenger_info *psngr_info_head, char *station_id,
							user_item *user_item_head, int amount)
{
	FILE *fp;
	char filepath[MAX_FILE_PATH_LEN];
	passenger_info *psngr_info_pt;
	int i, amt = 0;

	printf("【信息】正在加載站點(%s)的前臺用戶信息...\n", station_id);

	if (!(user_item_head->next))
	{
		message(WARN, "乘客數據索引為空!沒有乘客數據可加載。", W);

		return FAIL;
	}

	while (user_item_head->next)		// 根據索引來載入信息
	{
		user_item_head = user_item_head->next;
		// 生成文件路徑
		create_ii_dir(filepath, USER_INFO_DIR, user_item_head->psngr, PSNGR_INFO_FILE);

		// 檢測文件有效性
		if (!check_data(filepath, 1))
		{
			message(ERROR, "從文件加載前臺用戶信息失敗!", WC);

			return FAIL;
		}

		// 只讀二進制方式打開文件讀取信息
		fp = fopen(filepath, "rb");

		if (!(psngr_info_pt = (passenger_info *)malloc(sizeof(passenger_info))))
		{
			message(ERROR, "加載前臺用戶信息時申請內存失敗!", NULL);
			message(ERROR, "加載前臺用戶信息失敗!", WC);

			// 釋放無效內存空間
			free_passenger_info_list(psngr_info_head);

			return FAIL;
		}

		fread(psngr_info_pt, sizeof(passenger_info), 1, fp);

		// 檢測用戶與車站的從屬關系
		if (strcmp(station_id, psngr_info_pt->station_id))
		{
			printf("【錯誤】加載的前臺用戶(%s)信息不屬于本車站!\n", psngr_info_pt->passenger_id);

#ifdef _DEBUG_
			printf("車站名:%s\n", station_id);
			printf("乘客名:%s\n", psngr_info_head->passenger_id); 
			printf("乘客注冊車站名:%s\n", psngr_info_head->station_id);
#endif

			message(WARN, "加載前臺用戶信息完全失敗!", WC);

			// 釋放無效內存空間
			free_passenger_info_list(psngr_info_head);
			free(psngr_info_pt);

			return FAIL;
		}

		// 加載用戶的系統消息鏈表
		load_sysmsg_list(&psngr_info_pt->sysmsg_links,
			psngr_info_pt->passenger_id,
			psngr_info_pt->sysmsg_amount);

		// 加載用戶已訂票信息鏈表
		load_booked_info_list(&psngr_info_pt->booked_links, 
			psngr_info_pt->passenger_id, 
			psngr_info_pt->total_booked_train);

		// 鏈上前臺用戶信息
		psngr_info_head->next = psngr_info_pt;
		psngr_info_head = psngr_info_head->next;

		amt++;		// 檢測計數器自加
	}
	psngr_info_pt->next = NULL;		// 封尾

	if (amt != amount)
	{
		message(WARN, "加載的乘客個數與系統配置中的乘客個數不一致,可能存在數據丟失問題。", W);
	}

	fclose(fp);

	return OK;
}

/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載用戶訂票信息
//
// 函數參數:	booked_info_head:用戶訂票信息鏈表頭結點指針
//				psngr_id:用戶名
//				amount:總共訂了幾次列車的票(每次列車的每趟列車為一個結點)
//
/////////////////////////////////////////////////////////////////////////////	
status load_booked_info_list(booked_info *booked_info_head, char *psngr_id,
							 int amount)
{
	FILE *fp;
	char filepath[MAX_FILE_PATH_LEN];
	int i;
	booked_info *booked_info_pt;

	printf("【信息】正在加載用戶(%s)的訂票信息...\n", psngr_id);

	// 生成文件路徑
	create_ii_dir(filepath, USER_INFO_DIR, psngr_id, BOOKED_INFO_FILE);

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載用戶訂票信息失敗!", WC);

		return FAIL;
	}

	// 只讀二進制方式打開文件讀取信息
	fp = fopen(filepath, "rb");

	for (i = 0; i < amount; i++)
	{
		if (!(booked_info_pt = (booked_info *)malloc(sizeof(booked_info))))
		{
			message(ERROR, "加載用戶訂票信息時申請內存失敗!", NULL);
			message(ERROR, "加載用戶訂票信息失敗!", WC);

			// 釋放無效內存
			free_booked_list(booked_info_head);

			return FAIL;
		}

		fread(booked_info_pt, sizeof(booked_info), 1, fp);

		// 檢測訂票信息與用戶的從屬關系
		if (strcmp(psngr_id, booked_info_pt->master))
		{
			message(ERROR, "加載的用戶訂票信息不屬于本用戶!", NULL);
			message(WARN, "加載用戶訂票信息完全失敗!", WC);

			// 釋放無效內存空間
			free_booked_list(booked_info_head);
			free(booked_info_pt);

			return FAIL;
		}

		// 鏈上用戶訂票信息
		booked_info_pt = booked_info_head->next;
		booked_info_head = booked_info_head->next;
	}

	if (amount)		// 訂票信息數不為0才封尾
	{
		booked_info_pt->next = NULL;
	}
	fclose(fp);

	message(INFO, "訂票信息加載成功。", NULL);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	從文件加載用戶的系統消息
//
// 函數參數:	sysmsg_head:用戶的系統消息鏈表頭結點指針
//				psngr_id:用戶名
//				amount:系統消息(包括新舊)總數量
//
/////////////////////////////////////////////////////////////////////////////
status load_sysmsg_list(msgbox_item *sysmsg_head, char *psngr_id, int amount)
{
	FILE *fp;
	char filepath[MAX_FILE_PATH_LEN];
	int i;
	msgbox_item *msgbox_item_pt;

	printf("【信息】正在加載用戶(%s)的系統消息...\n", psngr_id);

	// 生成文件路徑
	create_ii_dir(filepath, USER_INFO_DIR, psngr_id, MSGBOX_FILE);

	// 檢測文件有效性
	if (!check_data(filepath, 1))
	{
		message(ERROR, "從文件加載用戶系統消息失敗!", WC);

		return FAIL;
	}

	// 只讀二進制方式打開文件讀取信息
	fp = fopen(filepath, "rb");

	for (i = 0; i < amount; i++)
	{
		if (!(msgbox_item_pt = (msgbox_item *)malloc(sizeof(msgbox_item))))
		{
			message(ERROR, "加載用戶系統消息時申請內存失敗!", NULL);
			message(ERROR, "加載用戶系統消息失敗!", WC);

			// 釋放無效內存
			free_user_item_info_list(sysmsg_head);

			return FAIL;
		}

		fread(msgbox_item_pt, sizeof(booked_info), 1, fp);

		// 檢測用戶系統消息與用戶的從屬關系
		if (strcmp(psngr_id, msgbox_item_pt->receiver))
		{
			message(ERROR, "加載的用戶系統消息不屬于本用戶!", NULL);
			message(WARN, "加載用戶系統消息完全失敗!", WC);

			// 釋放無效內存空間
			free_user_item_info_list(sysmsg_head);
			free(msgbox_item_pt);

			return FAIL;
		}

		// 鏈上用戶訂票信息
		msgbox_item_pt = sysmsg_head->next;
		sysmsg_head = sysmsg_head->next;
	}
	
	if (amount)			// 如果消息數不為0才封尾
	{
		msgbox_item_pt->next = NULL;
	}
	fclose(fp);

	message(INFO, "系統消息加載成功。", NULL);

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
这里是久久伊人| 在线精品国精品国产尤物884a| 亚洲丝袜另类动漫二区| 麻豆高清免费国产一区| 香蕉久久夜色精品国产使用方法 | 日韩欧美亚洲另类制服综合在线 | 日韩精品中文字幕一区二区三区| 一本色道a无线码一区v| 99久久er热在这里只有精品15| 国产精品一二三四| 国内精品不卡在线| 国产成人精品免费网站| 成人精品免费视频| 成人午夜在线免费| 亚洲美女淫视频| 亚洲一区影音先锋| 日韩成人一级大片| 美日韩一区二区| 国产99久久久久久免费看农村| 国产成人av电影在线观看| 国产v综合v亚洲欧| 色婷婷av一区二区三区软件| 在线观看日产精品| 日韩一级二级三级| 高清不卡一区二区| 91日韩一区二区三区| 欧美色综合天天久久综合精品| 在线电影国产精品| 国产日产欧美精品一区二区三区| 国产精品色婷婷| 亚洲一区二区视频在线观看| 奇米在线7777在线精品| 成人免费不卡视频| 欧美福利视频一区| 久久老女人爱爱| 777久久久精品| 国产欧美一区二区精品性| 一区二区三区在线免费| 免费在线观看精品| av电影在线观看一区| 欧美一区二区三区免费大片| 国产精品视频你懂的| 午夜不卡av免费| 91捆绑美女网站| 欧美一区二区三区爱爱| 亚洲天堂精品视频| 国产欧美一区在线| 日本中文在线一区| 91免费在线看| 26uuu久久天堂性欧美| 亚洲香蕉伊在人在线观| 成人午夜激情在线| 久久美女高清视频| 免费看欧美女人艹b| 色婷婷av一区二区三区大白胸| 精品久久久久久久久久久久包黑料 | 奇米一区二区三区| 色综合天天综合狠狠| 久久夜色精品国产欧美乱极品| 亚洲一区在线观看视频| av爱爱亚洲一区| 亚洲国产高清在线| 国产乱码精品1区2区3区| 欧美日韩免费一区二区三区| 国产精品毛片久久久久久| 久久激五月天综合精品| 日本怡春院一区二区| 欧美亚洲一区二区在线| 亚洲老妇xxxxxx| 色综合天天综合网天天狠天天| 亚洲欧洲日产国产综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美mv和日韩mv国产网站| 亚洲国产精品人人做人人爽| 成人黄色小视频| 国产精品美女久久久久久久网站| 蜜桃精品视频在线观看| 欧美久久久久久蜜桃| 亚洲国产视频直播| 欧美视频精品在线观看| 亚洲va天堂va国产va久| 99精品热视频| 亚洲日本va午夜在线影院| 91麻豆产精品久久久久久| 亚洲伦理在线免费看| 欧美在线观看你懂的| 亚洲成av人片www| 日韩欧美一区二区久久婷婷| 久久国产福利国产秒拍| 国产色婷婷亚洲99精品小说| 成人午夜激情在线| 亚洲一区二区在线观看视频| 538prom精品视频线放| 极品美女销魂一区二区三区| 久久久久久亚洲综合| 不卡一二三区首页| 亚洲免费av观看| 日韩一区二区三区高清免费看看| 久久99国产精品久久99| 国产精品美女久久久久高潮| 色婷婷狠狠综合| 麻豆精品一区二区三区| 国产日韩欧美在线一区| 色婷婷精品大在线视频| 麻豆91免费看| |精品福利一区二区三区| 欧美日韩国产中文| 国产91在线观看丝袜| 亚洲国产欧美在线| 国产日产精品1区| 欧美三级午夜理伦三级中视频| 美女网站色91| 亚洲欧美日韩久久| 精品国产91亚洲一区二区三区婷婷| 国产精品羞羞答答xxdd| 欧美日韩精品一区二区天天拍小说| 美女免费视频一区| 亚洲另类春色校园小说| 久久综合999| 欧美日韩亚洲综合在线 | 欧美一区二区三区思思人| 国产一区二区福利视频| 亚洲最大成人网4388xx| 久久夜色精品国产欧美乱极品| 欧美性受xxxx| 91看片淫黄大片一级在线观看| 国产在线精品一区二区三区不卡| 亚洲男女毛片无遮挡| 国产一区二区三区在线观看免费视频| 亚洲精品国产a| 国产精品色婷婷| www久久久久| 日韩一区二区免费在线电影| 一本一道波多野结衣一区二区| 国产精品一区二区久激情瑜伽| 舔着乳尖日韩一区| 亚洲已满18点击进入久久| 国产精品免费视频观看| 精品国产乱码久久久久久浪潮| 欧美日韩一区二区电影| 一本色道久久综合亚洲aⅴ蜜桃 | 日韩精品一区二区三区在线| 欧美视频中文字幕| 99国产精品久久久| 大白屁股一区二区视频| 国产精品一级在线| 国产精品一二三四区| 国产一区在线精品| 国内欧美视频一区二区| 激情小说亚洲一区| 韩国一区二区视频| 国产精品中文字幕欧美| 国产精品自拍一区| 国产高清视频一区| 国产69精品久久久久777| 国产老妇另类xxxxx| 国产精品88av| www.亚洲在线| 日本精品视频一区二区三区| 91麻豆swag| 色综合激情久久| 美女尤物国产一区| 日本网站在线观看一区二区三区| 亚洲激情第一区| 亚洲综合色区另类av| 亚洲一区二区影院| 青青草视频一区| 经典一区二区三区| 国产成人久久精品77777最新版本| 国产美女精品在线| 91在线一区二区三区| 欧美色电影在线| 2023国产精品视频| 国产精品视频观看| 一区二区三区欧美| 日韩精品电影在线| 国产一区二区成人久久免费影院| 国产精品一区二区免费不卡| 91在线视频免费91| 欧美精品777| 国产午夜久久久久| 亚洲资源在线观看| 精品一区二区三区在线观看国产 | 亚洲视频在线观看三级| 亚洲网友自拍偷拍| 麻豆成人综合网| 色香蕉成人二区免费| 欧美电影免费观看高清完整版在 | 欧美高清你懂得| 精品精品国产高清a毛片牛牛| 国产女主播在线一区二区| 亚洲第一精品在线| 国产区在线观看成人精品| 亚洲黄色av一区| 久久精品av麻豆的观看方式| 91网站黄www| 日韩视频在线你懂得| 综合久久一区二区三区| 激情综合五月婷婷| 欧美剧在线免费观看网站|