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

📄 book sys.txt

📁 订票系统
💻 TXT
字号:
订票系统
通过此系统可以实现如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件
要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成以上功能。


#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<time.h>

const MAX=20;
typedef struct time 
{
	char day[20];
	int hour;
	int min;
}Time;

typedef struct flight
{
	char id[MAX];//航班号
	Time leatime;//飞机起飞时间
	Time arrtime;//飞机降落时间
	char tocity[MAX];//飞机抵达城市
	int price;//票价
	float discout;//票价折扣
	int manren;//能载的人数
	int xianren;//现定票的人数
}Flight ,*FL;

typedef struct dpiao
{

	int id;
	char name[MAX];
	char zjnum[MAX];
	int dingnum;
	FL df;
}Dpiao,*DP;

typedef struct dpxx
{
	DP dpx;
	struct dpxx *next;
}Dpxx,*DPL;

typedef struct hban
{
	Flight *fli;
	struct hban *next;
}Hban,*HB;

void init(DPL &d,HB &h)
{
	d=new Dpxx;
	d->dpx=new Dpiao;
	d->next=NULL;
	d->dpx->id=0;
	h=new Hban;
	h->fli=new Flight;
	h->next=NULL;
}

void in(HB &h)
{
	HB p;
	FL q;
	p=h;
	while(p->next)
		p=p->next;
	q=new Flight;
	cout<<"请输入航班号:"<<endl;
	cin>>q->id;
	
	cout<<"请输入起飞时间:"<<endl;
	cin>>q->leatime.day>>q->leatime.hour>>q->leatime.min;
	
	cout<<"请输入降落时间:"<<endl;
	cin>>q->arrtime.day>>q->arrtime.hour>>q->arrtime.min;

	cout<<"请输入抵达城市:"<<endl;
	cin>>q->tocity;
	
	cout<<"请输入票价,票价折扣:"<<endl;
	cin>>q->price>>q->discout;
	
	cout<<"请输入满仓人数,现定票人数:"<<endl;
	cin>>q->manren>>q->xianren;
	
	p->next=new Hban;
	p->next->fli=new Flight;
    p->next->fli =q;
	p=p->next;
	p->next=NULL;
}

void printff(FL f)
{
	cout<<"该航班的情况为:  "<<endl;
	cout<<"\n"<<endl;
	cout<<"航班号为:        "<<f->id<<endl;
	cout<<"\n"<<endl;
	cout<<"起飞时间为:      "<<f->leatime.day<<"    ";
	cout<<f->leatime.hour<<"    "<<f->leatime.min<<endl;
	cout<<"\n"<<endl;
	cout<<"降落时间为:      "<<f->arrtime.day<<"    ";
	cout<<f->arrtime.hour<<"    "<<f->arrtime.min<<endl;
	cout<<"\n"<<endl;
	cout<<"抵达城市为:      "<<f->tocity<<endl;
	cout<<"\n"<<endl;
	cout<<"票价为:          "<<f->price<<endl;
	cout<<"\n"<<endl;
	cout<<"票价折扣为:      "<<f->discout<<endl;
	cout<<"\n"<<endl;
	cout<<"满仓人数为:      "<<f->manren<<endl;
	cout<<"\n"<<endl;
	cout<<"现定票人数为:    "<<f->xianren<<endl;
	system("pause");
}
void printd(DP d)
{
	cout<<"该订单的情况为:  "<<endl;
	cout<<"\n"<<endl;
	cout<<"号码为:          "<<d->id<<endl;
	cout<<"\n"<<endl;
	cout<<"客户姓名为:      "<<d->name <<endl;
	cout<<"\n"<<endl;
	cout<<"客户证件号码为:  "<<d->zjnum <<endl;
	cout<<"\n"<<endl;
	cout<<"订的数量为:      "<<d->dingnum <<endl;
	cout<<"\n"<<endl;
	cout<<"该客户订的航班   "<<endl;
	printff(d->df);
}


FL chaid(HB &h,char c[])
{
	HB p;
	p=h->next;
	while(p->next)
	{
		if(!strcmp(p->fli->id,c))
		{
			printff(p->fli);
			return(p->fli);
			break;
		}
		p=p->next ;
	}
	if(!p->next&&strcmp(p->fli->id,c))
	{
		cout<<"对不起,没有该航班情况,请检查航班号是否输入错误!"<<endl;
		cout<<"\n"<<endl;
		cout<<"您输入的航班号为:"<<c<<endl;
		cout<<"\n"<<endl;
		cout<<"重新输入请按1,退出请按0"<<endl;
		int sel;
		cin>>sel;
		char cfx[MAX];
		if(sel)
		{
			cout<<"输入要查询的航班的航班号:"<<endl;
			cin>>cfx;
			FL a;
			a=chaid(h,cfx);
			return a;
		}
		else
			return(NULL);
	}
	else
	{	printff(p->fli);
		return(p->fli);
	}
}



HB chacity(HB &h,char c[])
{
	HB p,q=NULL,r=q;
	p=h->next ;
	int i=0;
	while(p->next)
	{
		
		if(!strcmp(p->fli->tocity,c))
		{
			if(!i)
				r=q=p;
			else
			{
				
				r->next->fli =p->fli;
				r=r->next;
			}
			printff(p->fli);
			i++;
		}
		p=p->next;
	}
	if(!strcmp(p->fli->tocity,c))
	{
		printff(p->fli);
		i++;
	}
	if(!i)
	{
		cout<<"航班信息中没有抵达该城市的航班!"<<endl;
		cout<<"\n"<<endl;
		cout<<"请检查城市名是否输入错误!"<<endl;
		cout<<"\n"<<endl;
		cout<<"您输入的城市名为;"<<c<<endl;
		cout<<"\n"<<endl;
		cout<<"重新输入请按1,退出请按0"<<endl;
		int se;
		cin>>se;
		if(se)
		{
			cout<<"输入要查询的航班的抵达城市:"<<endl;
			char a[MAX];
			cin>>a;HB b;
			b=chacity(h,a);
			return b;
		}
		else 
			return q;
	}
	else
		return q;
}

void dengj(DP &book)
{
	cout<<"请输入您的姓名:"<<endl;
	cin>>book->name;
	cout<<"\n"<<endl;
	cout<<"请输入您的证件号码:"<<endl;
	cin>>book->zjnum;
	cout<<"\n"<<endl;
	cout<<"输入您要订的该航班的票的数量:"<<endl;
	cin>>book->dingnum;
}



void bookt(DPL &d,HB h)
{
	DPL q=d;
	FL hb;
	DP book;
	book=new Dpiao;
	HB cd;
	char a[MAX];
	cout<<"输入要订的航班的航班号:"<<endl;
	cin>>a;
	hb=chaid(h,a);
	if(hb)
	{	
		dengj(book);
		book->df=new Flight;
		book->df=hb;
		if(hb->xianren+book->dingnum>hb->manren)
		{
			cout<<"该航班的票不够!"<<endl;
			goto city;
		}
		else
		{
			hb->xianren+=book->dingnum;
			while(q->next)
				q=q->next;
			book->id=q->dpx->id+1;
			q->next=new Dpxx;
			q->next->dpx=new Dpiao;
			q->next->dpx =book;
			q=q->next;
			q->next=NULL;
		}
	}
			
	else
	{
		cout<<"没有您要订的航班";
		char city[MAX];
city:
		cout<<"请输入您要去的城市:"<<endl;
		cin>>city;
		cout<<"\n"<<endl;
		cd=chacity(h,city);
		if(cd)
		{
			cout<<"您可以在这些航班中选择一个!"<<endl;
			bookt(d,h);
		}
	}
	
}



void tui(DPL &d)
{
	DPL p,q;
	p=q=d;
	cout<<"请输入您订单的号码:"<<endl;
	int n;
	cin>>n;
	while(p)
	{
		if(p->dpx->id==n)
		{
			if(p==d)
				d=d->next;
			else
				q->next=p->next;
			p->dpx->df->xianren-=p->dpx->dingnum;
		}
		p=p->next;
	}
	if(p)
	{
		cout<<"没有您输入的号码的订单!"<<endl;
		cout<<"\n"<<endl;
		cout<<"1-重新输入号码     2-退出"<<endl;
xuan:
		cout<<"请选择:"<<endl;
		int select;
		cin>>select;
		if(select==1)
			tui(d);
		else
			if(select==2)
				exit(0);
		else
		{
			cout<<"选择错误,请重新选择:"<<endl;
			goto xuan;
		}
	}
}


void xiugai(HB &h)
{
	FL f;
	cout<<"请输入要修改的航班的航班号:"<<endl;
	char hbh[MAX];
	cin>>hbh;
	f=chaid(h,hbh);
	if(f)
	{
		while(1)
		{
			system("cls");
			cout<<"**********请选择要修改的信息***********"<<endl;
			cout<<"\n"<<endl;
			cout<<"* 1-航班号               * 2-起飞、抵达时间"<<endl;
			cout<<"* 3-抵达城市             * 4-票价、票价折扣"<<endl;
			cout<<"* 5- 能载的人数          * 6-现订票的人数"<<endl;
			cout<<"* 0-退出"<<endl;
			cout<<"\n"<<endl;
			cout<<"***请选择(0-6):"<<endl;
			int select;
			cin>>select;
			switch (select)
			{
			case 1:cout<<"请输入要修改成的航班号:"<<endl;
				cin>>hbh;strcpy(f->id,hbh);
				break;
			case 2:cout<<"请输入起飞时间:"<<endl;
				cin>>f->leatime.day>>f->leatime.hour>>f->leatime.min;
				cout<<"请输入降落时间:"<<endl;
				cin>>f->arrtime.day>>f->arrtime.hour>>f->arrtime.min;
				break;
			case 3:cout<<"请输入抵达城市:"<<endl;
				cin>>f->tocity;
				break;
			case 4:cout<<"请输入票价,票价折扣:"<<endl;
				cin>>f->price>>f->discout;break;
			case 5:cout<<"请输入满仓人数:"<<endl;
				cin>>f->manren;break;
			case 6:cout<<"请输入现定票人数:"<<endl;
				cin>>f->xianren;break;
			case 0:exit(0);
			default:cout<<"输入的选择错误!请重新选择!"<<endl;
				break;
			}
		}
	}
	else
		cout<<"航班信息中没有您要修改的航班!"<<endl;
}

void main()
{
	DPL d;
	HB h;
	init(d,h);
	while(1)
	{
		system("cls");
		cout<<"现在时间为:"<<endl;
		system("   date/t");
		system("   time/t");
		cout<<endl;
		cout<<"         ***订票系统***"<<endl;
		cout<<"\n                     "<<endl;
		cout<<"           * 1   录入 *"<<endl;
		cout<<"           * 2   查询 *"<<endl;
		cout<<"           * 3   订票 *"<<endl;
		cout<<"           * 4   退票 *"<<endl;
		cout<<"           * 0   退出 *"<<endl;
		cout<<"\n                     "<<endl;
		cout<<"           请选择(0-4):"<<endl;
		int s;
		cin>>s;
		switch(s)
		{
		case 1:
			cout<<"您选择的是录入!"<<endl;
			in(h);
			break;
		case 2:
			cout<<"您选择的是查询!"<<endl;
		    cout<<"\n                "<<endl;
			cout<<"   ***查询选项***:"<<endl;
			cout<<"\n                "<<endl;
			cout<<"   * 1  按航班号"<<endl;
			cout<<"   * 2  按抵达城市"<<endl;
			cout<<"\n                "<<endl;
			cout<<"   请选择(1-2):"<<endl;
			int ss;
			cin>>ss;
			FL z;
			if(ss==1)
			{
				cout<<"您选择的是按航班号查询!"<<endl;
				cout<<"\n                     "<<endl;
				cout<<"请输入航班号:"<<endl;
				char a[MAX];
				cin>>a;
				z=chaid(h,a);
			}
			else
			if(ss==2)
			{
				HB j;
				cout<<"您选择的是按抵达城市查询!"<<endl;
				cout<<"\n                       "<<endl;
				cout<<"请输入抵达城市:"<<endl;
				char c[MAX];
				cin>>c;
				j=chacity(h,c);
			}
			else
				cout<<"选择错误!"<<endl;
			break;
		case 3:
			cout<<"您选择的是订票!"<<endl;
			bookt(d,h);
			break;
		case 4:
			cout<<"您选择的是退票!"<<endl;
			tui(d);
			break;
		case 0:
			cout<<"您选择的是退出!"<<endl;
			exit(0);
		default:
			cout<<"选择错误!"<<endl;
			system("pause");
			break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -