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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? train_booking_bookop.c

?? 火車定標(biāo)系統(tǒng)...用VC編譯通過的
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//	train_booking_bookop.c -- 包含用戶票務(wù)操作函數(shù)
//
/////////////////////////////////////////////////////////////////////////////

#ifndef TRAIN_BOOKING_BOOKOP_C_
#define TRAIN_BOOKING_BOOKOP_C_

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

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

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


/////////////////////////////////////////////////////////////////////////////
// 函數(shù)功能:	用戶軟臥票訂票事務(wù)處理
//
// 函數(shù)參數(shù):	op_psngr_pt:操作用戶信息結(jié)構(gòu)體指針
//				system_info_pt:系統(tǒng)信息結(jié)構(gòu)體指針
//				train_info_pt:訂票列車信息結(jié)構(gòu)體指針
//
// 函數(shù)說明:	1、車次、時(shí)間信息輸入在此函數(shù)外完成,站點(diǎn)信息輸入在此函數(shù)內(nèi)完成
//				2、在使用此函數(shù)之前,應(yīng)已找到對(duì)應(yīng)列車及車次數(shù)據(jù),本程序?qū)⒁来?//				搜索該列車的所有要求類型的車廂,直到找到座位
//
/////////////////////////////////////////////////////////////////////////////
status book_sb_ticket(passenger_info *op_psngr_pt, system_info *system_info_pt, 
		train_info *train_info_pt)
{
	booked_info *booked_info_head, *booked_info_pt;
	char t_begin_station[64], t_end_station[64];
	int t_begin_order, t_end_order, t_seat_order, t_distance;
	int booked_state = 0, car_amount = 0, this_cost;
	int ok_car_order, ok_seat_order;
	int booked_car_order;
	char ch;
	int i, j;

	CLS;
	actitle("預(yù)訂軟臥車票");

	// 取得訂票的起點(diǎn)
	printf("第一步:確定始發(fā)站(當(dāng)前站為 %s 站,回車直接確認(rèn))\n",
		system_info_pt->location);

	if (!(get_str("始發(fā)站", t_begin_station, MIN_STATION_ID_LEN, MAX_STATION_ID_LEN)))
	{
		message(INFO, "將當(dāng)前站點(diǎn)設(shè)置為始發(fā)站!", NULL);
		printf("【信息】您輸入的始發(fā)站為 %s 站!\n", system_info_pt->location);
		WAIT;
	}

	// 取得訂票的終點(diǎn)
	printf("第二步:確定終點(diǎn)站\n");
	if (!(get_str("終點(diǎn)站", t_end_station, MIN_STATION_ID_LEN, MAX_STATION_ID_LEN)))
	{
		message(WARN, "預(yù)訂軟臥車票失??!", WC);

		return FAIL;
	}

	// 根據(jù)始、終點(diǎn)確定列車行程區(qū)間的開始、結(jié)束序號(hào)
	if (!(get_span_order(&train_info_pt->station_links, t_begin_station, t_end_station, 
		&t_begin_order, &t_end_order)))
	{
		message(WARN, "抱歉!訂票失敗!", WC);
		
		return FAIL;
	}

	message(INFO, "正在執(zhí)行訂票操作,請(qǐng)稍候...", NULL);
	
	// 依次檢測(cè)每個(gè)軟臥車廂是否還有空位
	for (i = 0; i < SOFT_BED_CAR; i++)
	{
		if (check_sbed_remained(&train_info_pt->sbed_info_list[i], t_begin_order, 
				t_end_order, &t_seat_order))	// 查找到合適的車廂號(hào)
		{
			ok_car_order = i;		
			printf("【信息】在第%d個(gè)軟臥車廂發(fā)現(xiàn)合適座位!", i + 1);
			printf("【信息】該車廂在列車內(nèi)編號(hào)為 %d !\n", ok_car_order + 1);
			message(INFO, "恭喜恭喜", W);
		}
	}
	
	if (i == SOFT_BED_CAR - 1)		// 如果沒有找到合適的車廂
	{
		message(WARN, "抱歉!本趟列車已經(jīng)沒有你需要的票了。", NULL);
		message(TIP, "告訴你一個(gè)好消息,本車站提供系統(tǒng)通知功能。", NULL);
		message(TIP, "如果你選擇排隊(duì)等票,那么你的運(yùn)氣夠好的情況下,", NULL);
		message(TIP, "如果有人退了符合您的要求的票,系統(tǒng)將會(huì)以消息形", NULL);
		message(TIP, "式通知你,以便你能夠得以訂票。", NULL);
		message(TIP, "需要排隊(duì),請(qǐng)按Y鍵,按其他任意鍵返回。", W);

		ch = getch();

		if ('y' == ch)		// 如果用戶要求通知
		{
			// 如果排隊(duì)等候人滿則拒絕請(qǐng)求
			if (train_info_pt->total_waiters == MAX_NOTIFY_AMOUNT)
			{
				message(INFO, "實(shí)在不好意思,排隊(duì)的人太多了,您還是換訂另一趟車的票吧,謝謝合作!", NULL);
				message(WARN, "預(yù)訂軟臥車票失??!", WC);

				return FAIL;
			}
			else
			{
				// 登記本乘客至等候用戶列表
				strcpy(train_info_pt->waiter[train_info_pt->total_waiters], 
					op_psngr_pt->passenger_id);
				train_info_pt->total_waiters++;

				// 將候票操作保存至文件
				if (!(save_train_info(train_info_pt, train_info_pt->master)))
				{
					message(ERROR, "排隊(duì)時(shí)更新文件失敗!", NULL);
					message(WARN, "未能成功排隊(duì)候票!", W);
				}
			}
		}
		else
		{
			message(INFO, "您已放棄訂票操作!", WC);
			
			return FAIL;
		}
	}

confirm_check:
	{
		booked_car_order = ok_car_order + 1;	// 生成面向用戶的車廂號(hào)
		// 確認(rèn)乘客的訂票行為
		printf("【提示】將要預(yù)訂 %s 次列車的 %s 第趟列車的第 %d 號(hào)(軟臥)車廂的第 %d 號(hào)座位,您確認(rèn)嗎(Y/N)?", train_info_pt->master, train_info_pt->time_id,
			booked_car_order, t_seat_order);
		ch == get_choice("yn");
		if ('n' == ch)
		{
			message(INFO, "您已放棄訂票操作!", WC);

			return FAIL;
		}
		else if ('y' != ch)
		{
			goto confirm_check;
		}
		else
		{
			get_distance(&t_distance, &train_info_pt->station_links, 
				t_begin_order, t_end_order);		//計(jì)算路程
			pay_bill(&this_cost, system_info_pt->price_sbed_per_km, t_distance);
				// 取得票價(jià) this_cost
		}
	}

	// 查找用戶是否已在該趟車上訂過票
	booked_info_head = &op_psngr_pt->booked_links;
	while (booked_info_head->next)
	{
		booked_info_pt = booked_info_head->next;
		car_amount++;		// 可直接用作 offset值

		// 如果用戶曾在此趟車上訂過票
		if ((!(strcmp(train_info_pt->master, booked_info_pt->booked_train_sq_id))) &&
			(!(strcmp(train_info_pt->time_id, booked_info_pt->booked_train_time_id))))
		{
			booked_state = 1;
		}
	}

	if (booked_state)		// 如果用戶曾在此趟車上訂過票
	{
		for (i = 0; i < MAX_BOOK_PER_PSNGR; i++)	// 查找是否還未達(dá)到訂票的最大數(shù)目
		{
			if (!booked_info_pt->soft_bed_sq[ok_car_order][i])
			{
				booked_info_pt->soft_bed_sq[ok_car_order][i] = t_seat_order;
			}
		}
		
		if (MAX_BOOK_PER_PSNGR == i)		// 已達(dá)到訂票的最大數(shù)目
		{
			message(ERROR, "您單獨(dú)在這趟車上訂票數(shù)已達(dá)到最大數(shù)目,不能再訂了!", WC);

			return FAIL;
		}

		strcpy(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], t_begin_station);
		strcat(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], "#");
		strcat(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], t_end_station);
		booked_info_pt->soft_bed++;
		save_booked_info(booked_info_pt, op_psngr_pt->passenger_id);
	}
	else					// 如果用戶沒有在此趟車上訂過票
	{
		if (!(booked_info_pt = (booked_info *)malloc(sizeof(booked_info))))
		{
			message(ERROR, "用戶訂票創(chuàng)建訂票信息時(shí)申請(qǐng)內(nèi)存失敗!", NULL);
			message(WARN, "預(yù)訂軟臥車票失?。?quot;, WC);

			return FAIL;
		}

		// 創(chuàng)建新的列車-用戶訂票信息
		strcpy(booked_info_pt->booked_train_sq_id, train_info_pt->master);
		strcpy(booked_info_pt->booked_train_time_id, train_info_pt->time_id);

		for (i = 0; i < SOFT_BED_CAR; i++)	// 軟臥訂票歷史記錄清零
		{
			for (j = 0; j < SOFT_BED_CAR; j++)
			{
				booked_info_pt->soft_bed_sq[i][j] = 0;
			}
		}
		for (i = 0; i < HARD_BED_CAR; i++)	// 硬臥訂票歷史記錄清零
		{
			for (j = 0; j < MAX_BOOK_PER_PSNGR; j++)
			{
				booked_info_pt->soft_bed_sq[i][j] = 0;
			}
		}
		for (i = 0; i < HARD_SEAT_CAR; i++)	// 硬座訂票歷史記錄清零
		{
			for (j = 0; j < MAX_BOOK_PER_PSNGR; j++)
			{
				booked_info_pt->soft_bed_sq[i][j] = 0;
			}
		}

		booked_info_pt->hard_bed = 0;
		booked_info_pt->hard_seat = 0;
		strcpy(booked_info_pt->master, op_psngr_pt->passenger_id);
		booked_info_pt->offset = car_amount;		// 見前文
		booked_info_pt->soft_bed = 0;
		booked_info_pt->soft_bed_sq[ok_car_order][booked_info_pt->soft_bed] = t_seat_order;
		booked_info_pt->next = NULL;
		strcpy(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], t_begin_station);
		strcat(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], "#");
		strcat(booked_info_pt->soft_bed_st[booked_info_pt->soft_bed], t_end_station);
		booked_info_pt->soft_bed++;

		// 即時(shí)更新系統(tǒng)信息并保存在文件
		booked_info_head->next = booked_info_pt;
		if (!(save_booked_info(booked_info_pt, op_psngr_pt->passenger_id)))
		{
			message(ERROR, "執(zhí)行乘客訂票操作時(shí)更新文件失??!", NULL);
			message(WARN, "預(yù)訂軟臥車票失??!", WC);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线你懂的| 91免费精品国自产拍在线不卡| 亚洲一区二区三区激情| 亚洲精品美国一| 91精品久久久久久久99蜜桃| 日韩一区二区三区在线观看 | 亚洲精品一区二区三区四区高清| 欧美日韩成人一区| 成人高清伦理免费影院在线观看| 国产乱子轮精品视频| 国产成人免费在线| 亚洲一区二区三区视频在线| 天天影视色香欲综合网老头| 美女视频一区二区| a亚洲天堂av| 91在线视频播放地址| 欧美影片第一页| 欧美va在线播放| 国产精品不卡一区| 日本中文字幕一区二区有限公司| 日韩成人精品在线| av中文字幕一区| www.久久精品| 欧美mv日韩mv亚洲| 国产日韩欧美精品电影三级在线 | 国产精品蜜臀在线观看| 国产免费成人在线视频| 亚洲天堂免费在线观看视频| 亚洲国产精品一区二区久久| 国产一区三区三区| 欧美综合在线视频| 久久蜜桃av一区精品变态类天堂 | 欧美在线不卡视频| 日韩欧美一区二区三区在线| 欧美日韩中文字幕一区| 国产亚洲美州欧州综合国| 久久久久久久综合日本| 亚洲国产一区在线观看| 福利一区二区在线| 欧美疯狂性受xxxxx喷水图片| 欧美激情综合在线| 免费精品视频在线| 欧美日韩一区二区三区不卡| 国产色综合久久| 久久综合综合久久综合| 成人a区在线观看| 欧美精品乱码久久久久久| 在线电影院国产精品| 亚洲另类中文字| 国产一区二区免费视频| 日韩欧美www| 亚洲一区二区中文在线| 在线亚洲高清视频| 《视频一区视频二区| 免费精品99久久国产综合精品| 欧美性大战久久久久久久蜜臀| 欧美日韩中字一区| 国产精品亲子伦对白| 国产老肥熟一区二区三区| 91精品国产手机| 首页国产丝袜综合| 欧美日韩你懂得| 亚洲激情五月婷婷| gogogo免费视频观看亚洲一| 中文子幕无线码一区tr| 紧缚奴在线一区二区三区| 精品欧美久久久| 久久99精品久久久久久动态图| 制服丝袜成人动漫| 日韩成人免费电影| 日韩一区二区影院| 看电影不卡的网站| 久久久亚洲午夜电影| 风流少妇一区二区| 国产欧美一区二区在线观看| 国产精品99久| 国产欧美日韩综合精品一区二区 | 国产精品色婷婷| 在线观看网站黄不卡| 亚洲综合在线第一页| 91在线精品秘密一区二区| 国产精品乱码一区二三区小蝌蚪| 久久99久久久久| 亚洲欧美偷拍三级| 欧美日韩高清在线播放| 免费一区二区视频| 精品成人一区二区| 成人av在线影院| 综合电影一区二区三区 | 国产专区欧美精品| 午夜精品久久久久久久久久久| 色av一区二区| 久久疯狂做爰流白浆xx| 亚洲综合男人的天堂| 国产精品精品国产色婷婷| 精品国产一区二区三区不卡 | 奇米综合一区二区三区精品视频| 国产精品不卡一区| 国产日韩欧美精品一区| 精品欧美黑人一区二区三区| 精品视频在线免费| 97精品久久久午夜一区二区三区| 国产在线播放一区二区三区| 日韩av一区二区在线影视| 亚洲自拍另类综合| 亚洲欧美成人一区二区三区| 国产精品国产自产拍高清av王其| 久久久蜜桃精品| 久久众筹精品私拍模特| 欧美大尺度电影在线| 欧美一区二区三区四区视频| 欧美视频一区二区在线观看| 一本一本大道香蕉久在线精品| www.欧美色图| 北条麻妃国产九九精品视频| 国产精品一卡二| 国产美女在线观看一区| 国产一区亚洲一区| 国产精品亚洲成人| 国产99久久久久久免费看农村| 国产福利91精品| 成人看片黄a免费看在线| 国产不卡免费视频| 91婷婷韩国欧美一区二区| 91麻豆福利精品推荐| 在线日韩一区二区| 欧美日韩你懂得| 日韩亚洲国产中文字幕欧美| 欧美xxxxxxxx| 欧美极品美女视频| 亚洲人亚洲人成电影网站色| 亚洲黄色在线视频| 午夜久久久久久久久| 久久99久久99| 99视频精品在线| 欧美日韩国产综合一区二区三区| 91精品国产一区二区三区香蕉| 欧美不卡在线视频| 中文av一区二区| 亚洲制服欧美中文字幕中文字幕| 午夜精品福利一区二区三区av | 欧美人伦禁忌dvd放荡欲情| 欧美精品在线视频| 26uuu精品一区二区| 中文字幕欧美一区| 亚洲成人在线网站| 久久成人av少妇免费| jlzzjlzz欧美大全| 欧美日韩国产高清一区二区三区| 欧美大片拔萝卜| 国产精品久久久久久久久果冻传媒| 一区二区三区在线免费| 麻豆91在线观看| 色综合久久精品| 26uuu另类欧美| 亚洲影视在线播放| 国产激情一区二区三区四区| 色婷婷综合久久久中文一区二区| 日韩欧美在线影院| 亚洲欧美另类久久久精品| 美女视频黄频大全不卡视频在线播放 | xnxx国产精品| 一区二区三区高清不卡| 国内国产精品久久| 欧美色图12p| 亚洲国产激情av| 麻豆91小视频| 欧美亚洲国产bt| 欧美国产亚洲另类动漫| 日本不卡中文字幕| 91丨porny丨首页| 久久久久亚洲蜜桃| 国产乱子伦一区二区三区国色天香| 一本久久精品一区二区| 久久精品视频在线免费观看| 亚洲成人午夜影院| 成人黄色免费短视频| 欧美成人r级一区二区三区| 一区二区高清在线| 成人午夜碰碰视频| 久久久五月婷婷| 美女被吸乳得到大胸91| 欧美日韩综合在线免费观看| 亚洲欧美偷拍三级| 岛国精品一区二区| 久久精品亚洲精品国产欧美| 久久成人久久鬼色| 91精品欧美久久久久久动漫 | 99精品欧美一区二区蜜桃免费 | 欧美性一级生活| 亚洲激情图片一区| 日本福利一区二区| 亚洲天堂av老司机| 成a人片亚洲日本久久| 国产欧美日韩激情| 国产成人在线视频网站| 久久婷婷国产综合国色天香| 久久99国产乱子伦精品免费| 日韩三级视频中文字幕| 男男视频亚洲欧美|