链表 航空订票 各种Bug原始版

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "string.h"

using namespace std;

typedef struct Infm//航班信息结构体
{
	char Hbm[21];//航班名
	char Hbh[6];//航班号
	char Mdd[21];//目的地
	int Tim;//到达时间
	int Len;//余票数
	Infm *Next;
}link,*Link;

typedef struct Booked//已定客户结构体
{
	char Bname[21];//客户名
	char BHh[7];//航班号
	int Bnumber;//订票数量
	Booked *Next;
}blink,*Blink;

int main(int argc,char *argv)
{
	void Insert_(Link S);//输入航班信息函数
	void Output_(Link S);//输出航班信息函数
	void Init_(Link S,Blink Q);//初始化函数
	void Minfo_(Link S,Blink Q);//输出订票信息函数
	void Tticket_(Link S,Blink Q);//退票函数
	void Booking_(Link S,Blink Q);//订票函数

	int x;
	Link S=(Link)malloc(sizeof(link));
	if(!S)exit(-1);
	Blink Q=(Blink)malloc(sizeof(link));
	if(!Q)exit(-1);

	Init_(S,Q);
	Insert_(S);
	puts("1:Query Flight       2:Booking       3:Query information       4:Refund ticket");
	scanf("%d",&x);
	while(1)
	{
		if(x==1)
			Output_(S);
		else if(x==2)
			Booking_(S,Q);
		else if(x==3)
			Minfo_(S, Q);
		else if(x==4)
			Tticket_(S,Q);
		else
			exit(-1);
		puts("Next:");
		scanf("%d",&x);
		system("cls");
	}
	system("pause");
	return 0;
}

void Init_(Link S,Blink Q)
{
	S->Next=NULL;
	Q->Next=NULL;
}

void Insert_(Link S)
{
	char c;
	Link q=S;
	puts("Enter the flight information:");
	while(1)
	{
		Link p=(Link)malloc(sizeof(link));
		if(!p)exit(-1);
		puts("Flight Name:");
		scanf("%s",&p->Hbm);
		puts("Flight Number:");
		scanf("%s",&p->Hbh);
		puts("Destination:");
		scanf("%s",&p->Mdd);
		puts("Departure time:");
		scanf("%d",&p->Tim);
		puts("Remaining tickets:");
		scanf("%d",&p->Len);
		p->Next=q->Next;
		q->Next=p;
		puts("Go ahead?(Y/N):");
		getchar();
		c=getchar();
		if(c=='y')system("cls");
		else
		{
			system("cls");
			break;
		}
	}
}

void Output_(Link S)
{
	Link p=S->Next;
	puts("FName  FNumber   Dtion  Dtime  Retic");
	while(p)
	{
		printf("%s    %s       %s   Week %d   %d\n",&p->Hbm,&p->Hbh,&p->Mdd,p->Tim,p->Len);
		p=p->Next;
	}
}

void Booking_(Link S,Blink Q)
{
	Link p=S->Next;
	Blink q=(Blink)malloc(sizeof(blink));
	int e;
	char ch1[11],ch2[21];

	puts("You want to reach the destination:");
	scanf("%s",&ch2);
	while(p)
	{
		if(strcmp(p->Mdd,ch2)==0)
		{
			puts("Your Name:");
			scanf("%s",&ch1);
			puts("You want to book some tickets:");
			scanf("%d",&e);
			if(p->Len<e)
			{
				puts("Lack of ticket");
				Sleep(2000);
				exit(-1);
			}
			q->Bnumber=e;
			strcpy(q->BHh,p->Hbh);
			strcpy(q->Bname,ch1);
			q->Next=Q->Next;
			Q->Next=q;
			p->Len=p->Len-e;
			puts("Success");
			break;
		}
		p=p->Next;
	}
	if(strcmp(p->Mdd,ch2)!=0)
		puts("Don't you want the flight");
}

void Tticket_(Link S,Blink Q)
{
	Link p=S->Next;
	Blink q=Q->Next;
	int e;
	char ch1[21],ch2[7];

	puts("Your Name:");
	scanf("%s",&ch1);
	puts("Flight number");
	scanf("%s",&ch2);
	puts("How many:");
	scanf("%d",&e);
	while(q)
	{
		if(strcmp(q->Bname,ch1)==0&&q->Bnumber>=e)
		{
			q->Bnumber-=e;
			while(p)
			{
				if(strcmp(p->Hbh,ch2)==0)
					p->Len+=e;
				p=p->Next;
			}
		}
		q=q->Next;
	}
	puts("Success");
}

void Minfo_(Link S,Blink Q)
{
	Blink q=Q->Next;
	Link p=S->Next;
	while(p)
	{
		if(strcmp(p->Hbh,q->BHh)==0)
		{
			puts("Name   FNumber  Dtime  Votes");
			printf("%s %s       %d       %d\n",q->Bname,q->BHh,p->Tim,q->Bnumber);
		}
		p=p->Next;
	}
	
}

9

你可能感兴趣的:(链表 航空订票 各种Bug原始版)