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

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

?? train_booking_attach.c

?? 火車定標系統...用VC編譯通過的
?? C
?? 第 1 頁 / 共 2 頁
字號:
//	train_booking_attach.c -- 包含輔助函數
//
/////////////////////////////////////////////////////////////////////////////

#ifndef TRAIN_BOOKING_ATTACH_C_
#define TRAIN_BOOKING_ATTACH_C_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <windows.h>

#include "train_booking_declare.h"
#include "train_booking_const.h"
#include "train_booking_unit.h"

/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放車次鏈表及相關內存區域(列車標識、列車、車站鏈表)
//
// 函數參數:	train_sq_info_head:車次鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_train_sq_info_list(train_sq_info *train_sq_info_head)
{
	train_sq_info *train_sq_info_pt;

	while (train_sq_info_head->next)	// 如果還有下一個結點沒釋放
	{
		train_sq_info_head = train_sq_info_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		train_sq_info_pt = train_sq_info_head;			// 取得要銷毀的內存指針

		// 釋放該車次的所有列車標識信息
		free_train_item_info_list(&train_sq_info_pt->train_item_list);

		// 釋放該車次的所有列車信息
		free_train_info_list(&train_sq_info_pt->train_list);

		free(train_sq_info_pt);			// 釋放內存
	}

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放列車鏈表
//
// 函數參數:	train_info_head:列車鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_train_info_list(train_info *train_info_head)
{
	train_info *train_info_pt;

	while (train_info_head->next)		// 如果還有下一個結點沒釋放
	{
		train_info_head = train_info_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		train_info_pt = train_info_head->next;		// 取得要釋放內存指針

		// 釋放該列車的站點信息內存
		free_station_info_list(&train_info_pt->station_links);
							
		free(train_info_pt);			// 釋放列車內存
	}

	return OK;
}




/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放車站鏈表
//
// 函數參數:	station_info_head:車站鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_station_info_list(station_info *station_info_head)
{
	station_info *station_info_pt;

	while (station_info_head->next)		// 如果還有下一個結點沒釋放
	{
		station_info_head = station_info_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		station_info_pt = station_info_head;		// 取得要銷毀的內存指針
		free(station_info_pt);			// 釋放車站內存
	}

	return OK;
}

/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放列車標識鏈表
//
// 函數參數:	train_item_head:列車標識鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_train_item_info_list(train_item *train_item_head)
{
	train_item *train_item_pt;

	while (train_item_head->next)		// 如果還有下一個結點沒釋放
	{
		train_item_head = train_item_head->next;
								// 指針指向下一個結點,第一次運行時跳過頭結點
		train_item_pt = train_item_head;			// 取得要銷毀的內存指針
		free(train_item_pt);			// 釋放列車標識內存
	}

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放用戶信息鏈表
//
// 函數參數:	passenger_info_head:用戶信息鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_passenger_info_list(passenger_info *passenger_info_head)
{
	passenger_info *passenger_info_pt;

	while (passenger_info_head->next)	// 如果還有下一個結點沒釋放
	{
		passenger_info_head = passenger_info_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		passenger_info_pt = passenger_info_head;	// 取得要銷毀的內存指針

		// 釋放系統消息鏈占用內存
		free_msgbox_item_list(&passenger_info_pt->sysmsg_links);

		// 釋放訂票信息鏈占用內存
		free_booked_list(&passenger_info_pt->booked_links);

		free(passenger_info_pt);		// 釋放用戶信息占用內存
	}

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放用戶系統消息鏈表
//
// 函數參數:	msg_box_item_head:用戶系統消息鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_msgbox_item_list(msgbox_item *msg_box_item_head)
{
	msgbox_item *msg_box_item_pt;

	while (msg_box_item_head->next)			// 如果還有下一個結點沒釋放
	{
		msg_box_item_head = msg_box_item_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		msg_box_item_pt = msg_box_item_head;	// 取得要銷毀的內存指針

		free(msg_box_item_pt);		// 釋放內存
	}

	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放用戶已訂票信息鏈表
//
// 函數參數:	booked_info_head:用戶已訂票信息鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_booked_list(booked_info *booked_info_head)
{
	booked_info *booked_info_pt;

	while (booked_info_head->next)			// 如果還有下一個結點沒釋放
	{
		booked_info_head = booked_info_head->next;
							// 指針指向下一個結點,第一次運行時跳過頭結點
		booked_info_pt = booked_info_head;	// 取得要銷毀的內存指針

		free(booked_info_pt);		// 釋放內存
	}

	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	釋放用戶標識鏈表
//
// 函數參數:	user_item_head:用戶標識鏈表頭結點指針
//
/////////////////////////////////////////////////////////////////////////////
status free_user_item_info_list(user_item *user_item_head)
{
	user_item *user_item_pt;

	while (user_item_head->next)		// 如果還有下一個結點沒釋放
	{
		user_item_head = user_item_head->next;
								// 指針指向下一個結點,第一次運行時跳過頭結點
		user_item_pt = user_item_head;			// 取得要銷毀的內存指針
		free(user_item_pt);				// 釋放列車標識內存
	}

	return OK;
}



/////////////////////////////////////////////////////////////////////////////
// 函數功能:	延遲時間,單位為秒
//
// 函數參數:	sec:延遲秒數
//
/////////////////////////////////////////////////////////////////////////////
status delay(int sec)
{
	clock_t delay = sec * CLOCKS_PER_SEC;	// 換算延遲時間	
	clock_t start = clock();				// 取得當前時間

	while (clock() - start < delay);		// 計算時差是否滿足條件

	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	字符菜單顯示,序號為數組下標法
//
// 函數參數:	itme:菜單條目字符串數組
//				warn:附加提示信息(可選)
//				start:從第幾項開始顯示
//				end:顯示到第幾項
//
/////////////////////////////////////////////////////////////////////////////
key text_menu(char item[][MAX_MENU_LEN], char *warn, int start, int end)
{
	int i, t;
	char choice;

	do {
		CLS;

		if (*warn)			// 如果有附加信息串則輸出
		{
			puts(warn);
		}

		printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
		for (i = start; i <= end; i++)
		{
			t = i + 1;
			if (10 == t)
			{
				t = 0;
			}
			printf("【%d】%s	\n", t, item[i]);
		}
		printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

		printf("【提示】請作出一個選擇:");
		choice = getch();
		putchar('\n');

		choice -= '1';			// 轉換為便于判斷的整數類型
	} while ((choice < start) || (choice > end));

	return choice + '1';		// 仍然返回字符
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	獲取字符選擇
//
// 函數參數:	case:可選項的字符組合(字符串)
//
/////////////////////////////////////////////////////////////////////////////
key get_choice(char *cases)
{
	char choice;
	int i, len = strlen(cases);
	
input:
	{
		printf("\n【提示】請作出一個選擇:");
		choice = getch();
		
		for (i = 0; i < len; i++)	// 檢測作出的選擇是否在可選范圍內
		{
			if (choice == cases[i])
			{
				return choice;		// 是則返回該選擇
			}
		}
		goto input;
	}
	
	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	屏幕消息函數
//
// 函數參數:	head:消息類型:ERROR(錯誤);WARN(警告);INFO(信息);
//								TIP(提示)
//				body:消息正文
//				deal:消息發送完后處理方式:WC(等待確認并清屏);
//								W(等待確認);C(清屏);NULL(不做任何動作)
//
/////////////////////////////////////////////////////////////////////////////
status message(char *head, char *body, char *deal)
{
	char msg[MAX_MSG_LEN];

	// 生成消息串
	strcpy(msg, "");
	strcat(msg, head);
	strcat(msg, body);

	printf("%s\n", msg);

	if (deal == NULL)
	{
		return OK;		// 如果沒有操作直接返回
	}
	
	// 根據參數執行后續操作
	if (!strcmp(WC, deal))
	{
		WAIT;
		CLS;
	}
	else if (!strcmp(W, deal))
	{
		WAIT;
	}
	else if (!strcmp(C, deal))
	{
		CLS;
	}
	
	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	一級路徑文件名生成函數
//
// 函數參數:	dir_i:第一級目錄名
//				filename:要操作的文件名
//
/////////////////////////////////////////////////////////////////////////////
status create_i_dir(char *finalpath, char *dir_i, char *filename)
{
	strcpy(finalpath, "");
	strcat(finalpath, dir_i);
	strcat(finalpath, "\\");
	strcat(finalpath, filename);

	return OK;
}


/////////////////////////////////////////////////////////////////////////////
// 函數功能:	二級路徑文件名生成函數
//	
// 函數參數:	dir_i:第一級目錄名
//				dir_ii:第二級目錄名
//				filename:要操作的文件名
//
/////////////////////////////////////////////////////////////////////////////
status create_ii_dir(char *finalpath, char *dir_i, char *dir_ii, char *filename)
{
	strcpy(finalpath, "");
	strcat(finalpath, dir_i);
	strcat(finalpath, "\\");
	strcat(finalpath, dir_ii);
	strcat(finalpath, "\\");
	strcat(finalpath, filename);

	return OK;
}

/////////////////////////////////////////////////////////////////////////////
// 函數功能:	三級路徑文件名生成函數
//
// 函數參數:	dir_i:第一級目錄名
//				dir_ii:第二級目錄名
//				dir_iii:第三級目錄名
//				filename:要操作的文件名
//
/////////////////////////////////////////////////////////////////////////////
status create_iii_dir(char *finalpath, char *dir_i, char *dir_ii, 
					 char *dir_iii, char *filename)
{
	strcpy(finalpath, "");
	strcat(finalpath, dir_i);
	strcat(finalpath, "\\");
	strcat(finalpath, dir_ii);
	strcat(finalpath, "\\");
	strcat(finalpath, dir_iii);
	strcat(finalpath, "\\");
	strcat(finalpath, filename);

	return OK;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲超丰满肉感bbw| 国产精品不卡在线| 欧美无乱码久久久免费午夜一区| 精品一区二区成人精品| 最新成人av在线| 亚洲欧洲制服丝袜| 一区二区三区自拍| 亚洲一区二区三区四区五区黄| 中文字幕一区二区在线播放| 中文字幕免费观看一区| 国产精品美日韩| 亚洲男人都懂的| 午夜免费久久看| 久久狠狠亚洲综合| 成人中文字幕在线| 波多野结衣中文一区| 色婷婷久久99综合精品jk白丝 | 国产精品一区二区不卡| 国产成人av一区二区三区在线观看| 国产成a人亚洲| 色婷婷亚洲精品| 精品欧美一区二区三区精品久久| 精品少妇一区二区三区日产乱码| 久久综合五月天婷婷伊人| 中文字幕一区日韩精品欧美| 天天综合网 天天综合色| 寂寞少妇一区二区三区| 欧美在线综合视频| 亚洲精品在线免费播放| 中文字幕高清一区| 午夜日韩在线观看| 99久久精品99国产精品| 97久久超碰国产精品电影| 日韩女优电影在线观看| 亚洲免费观看高清在线观看| 日韩电影在线一区二区三区| 国产成人亚洲综合色影视 | 欧美日韩视频一区二区| 欧美三电影在线| 中文字幕一区av| 国产一区二区三区久久久| 91国产视频在线观看| 欧美经典三级视频一区二区三区| 日韩精品国产欧美| 成人黄色在线看| 专区另类欧美日韩| 国产一区二区网址| 国产性做久久久久久| 国内成人精品2018免费看| 欧美综合欧美视频| 亚洲成人免费看| 欧美精品在线一区二区三区| 1024亚洲合集| 欧美日韩一区久久| 天堂成人国产精品一区| 91传媒视频在线播放| 亚洲一区二区三区四区在线免费观看| 成人av在线电影| 亚洲精选视频在线| 欧美美女直播网站| 麻豆精品久久久| 国产精品午夜春色av| 91麻豆免费在线观看| 五月综合激情网| 欧美高清视频不卡网| 国产剧情在线观看一区二区| 精品久久一二三区| 日韩成人av影视| 精品国产伦理网| 成人黄色电影在线| 亚洲高清在线精品| 精品国产一区二区三区四区四 | 9久草视频在线视频精品| 亚洲国产美女搞黄色| 国产欧美一区二区三区网站| 欧美性淫爽ww久久久久无| 亚洲一区二区三区不卡国产欧美| 日韩一二在线观看| 一本一道久久a久久精品综合蜜臀| 日本一道高清亚洲日美韩| 中文字幕在线观看一区| 日韩三级av在线播放| 91久久精品一区二区| 国产一区二区三区高清播放| 亚洲成人激情av| 国产午夜精品福利| 日韩精品一区二区三区三区免费| 一本久久综合亚洲鲁鲁五月天| 国产成人啪免费观看软件| 蜜桃视频在线观看一区二区| 亚洲成年人网站在线观看| 18涩涩午夜精品.www| 精品国产在天天线2019| 欧美一区二区久久| 51午夜精品国产| 欧美精品一卡二卡| 色哟哟一区二区| 丁香一区二区三区| 91免费在线播放| 91成人免费网站| www.亚洲在线| 91丨porny丨最新| 欧美天堂亚洲电影院在线播放| 91亚洲国产成人精品一区二区三| 韩国av一区二区三区| 美女在线视频一区| 国产成人自拍高清视频在线免费播放| 国内精品伊人久久久久av影院| 精品亚洲aⅴ乱码一区二区三区| 亚洲国产成人av| 国产在线不卡一卡二卡三卡四卡| 国内精品自线一区二区三区视频| 精品中文av资源站在线观看| 国产精品2024| 欧美三区在线观看| 欧美另类videos死尸| 国产精品免费aⅴ片在线观看| 一区二区久久久| 国产精品资源在线看| 91麻豆精东视频| 久久久久久9999| 亚洲成av人影院| 亚洲综合一区二区精品导航| 国产精品久久久一区麻豆最新章节| 精品少妇一区二区| 亚洲444eee在线观看| 成人午夜激情视频| 欧美成人女星排名| 亚洲第一在线综合网站| 国产91清纯白嫩初高中在线观看| 91伊人久久大香线蕉| 国产日韩v精品一区二区| 日本在线不卡视频| 欧美色涩在线第一页| 洋洋成人永久网站入口| 人人爽香蕉精品| 日韩欧美卡一卡二| 日本视频中文字幕一区二区三区| 欧美系列亚洲系列| 久久久亚洲欧洲日产国码αv| 亚洲一区二区综合| 欧美三日本三级三级在线播放| 欧美高清在线一区二区| 丁香婷婷综合五月| 国产精品久久一级| 91麻豆福利精品推荐| 一区av在线播放| 日本韩国欧美三级| 亚洲r级在线视频| 日韩欧美亚洲国产另类| 国产精选一区二区三区| 国产精品久久精品日日| 色综合av在线| 久久9热精品视频| 国产女人18毛片水真多成人如厕 | 欧美日韩免费电影| 懂色av一区二区在线播放| 天天射综合影视| 国产精品国产自产拍高清av王其| 欧美疯狂做受xxxx富婆| gogogo免费视频观看亚洲一| 91伊人久久大香线蕉| 国产精品夜夜爽| 亚洲高清免费在线| 日韩女优av电影在线观看| 久久国产剧场电影| 日韩区在线观看| 国产伦精品一区二区三区免费| 亚洲摸摸操操av| 精品欧美久久久| 久久精品国产999大香线蕉| 国产精品久久久久aaaa樱花| 91精品国产欧美日韩| 欧美日韩免费一区二区三区 | 色婷婷av一区二区三区gif| 国产精品一区二区男女羞羞无遮挡 | 精品日韩在线一区| 91视频国产资源| 久久成人久久鬼色| 国产一区二区精品久久91| 国产在线精品一区在线观看麻豆| 蜜臀精品一区二区三区在线观看 | 精品国精品国产| 国产午夜精品福利| 亚洲精品视频免费看| 亚洲综合一区二区三区| 亚洲超碰精品一区二区| 精品一区二区久久| heyzo一本久久综合| 欧美美女直播网站| 久久看人人爽人人| 国产精品久久久久久妇女6080| 一区二区三区在线视频播放| 久久精品理论片| 一本色道久久综合精品竹菊| 欧美成人女星排行榜| 亚洲中国最大av网站| 国模无码大尺度一区二区三区| 色综合中文字幕国产 | 国产精品18久久久久久vr|