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

📄 planebookingsystem.cpp

📁 飞机订票系统 功能描述: 1、录入:可以录入航班情况(数据可以存储在一个数据文件中
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	if(fd.Rate<=0||fd.Rate>1)
	{
		printf("折扣应该是大于0小于等于1的数\n");
		return 0;
	}
	printf("8.请输入航班可容乘客数量(例如:200):");
	scanf("%d",&fd.MaxPerson);
	if(fd.MaxPerson<=0)
	{
		printf("你输入的数据有错\n");
		return 0;
	}
	printf("9.请输入航班已有乘客数量(例如:100):");
	scanf("%d",&fd.Person);
	if(fd.Person<0 || fd.Person>fd.MaxPerson)
	{
		printf("你输入的数据有错\n");
		return 0;
	}
	if(0==insertFly(fl,&fd))return 0;
	return 1;
}
//修改航班信息
int changeFly(FlyList fl)

{
	int number;
	printf("修改航班信息\n请输入航班编号:");
	scanf("%d",&number);
	PFly q=returnFly(fl,number);
	if(q==NULL)return 0;
	printf("该航班原来的信息:\n");
	printFly(&q->fd);

	printf("修改航班信息:\n");
	FlyData fd;
	printf("1.请输入航班编号(例如:123):");
	scanf("%d",&fd.Number);
	printf("2.请输入航班起飞时间(例如:2008年08月12日12时30分):");
	scanf("%s",fd.Up);
	fd.Up[24]='\0';
	printf("3.请输入航班降落时间(例如:2008年08月12日14时30分):");
	scanf("%s",fd.Down);
	fd.Down[24]='\0';
	printf("4.请输入航班起飞城市(例如:广州):");
	scanf("%s",fd.FromCity);
	fd.FromCity[49]='\0';
	printf("5.请输入航班抵达城市(例如:北京):");
	scanf("%s",fd.ToCity);
	fd.ToCity[49]='\0';
	printf("6.请输入航班票价(例如:1000.99):");
	scanf("%f",&fd.Price);
	if(fd.Price<0)
	{
		printf("票价应该是大于0的数\n");
		return 0;
	}

	printf("7.请输入航班标价折扣(例如:0.8):");
	scanf("%f",&fd.Rate);
	if(fd.Rate<=0||fd.Rate>1)
	{
		printf("折扣应该是大于0小于等于1的数\n");
		return 0;
	}
	printf("8.请输入航班可容乘客数量(例如:200):");
	scanf("%d",&fd.MaxPerson);
	if(fd.MaxPerson<=0)
	{
		printf("你输入的数据有错\n");
		return 0;
	}
	printf("9.请输入航班已有乘客数量(例如:100):");
	scanf("%d",&fd.Person);
	if(fd.Person<0 || fd.Person>fd.MaxPerson)
	{
		printf("你输入的数据有错\n");
		return 0;
	}
	if(0==insertFly(fl,&fd))return 0;
	return 1;
}
//查询指定编号的航班情况
int findFly(FlyList fl)

{
	int number;
	printf("查询指定编号的航班情况\n请输入你要查询的航班编号:");
	scanf("%d",&number);
	PFly q=returnFly(fl,number);
	if(q==NULL)return 0;
	printf("查询结果:\n");
	printFly(&q->fd);
	return 1;
}
PFly returnFromFly(FlyList fl,char* city)
{
	PFly q=fl;
	while(NULL!=q->next)
	{
		if(strcmp(q->next->fd.FromCity,city)==0)
			return q->next;
		q=q->next;
	}
	return NULL;
}
PFly returnToFly(FlyList fl,char* city)
{
	PFly q=fl;
	while(NULL!=q->next)
	{
		if(strcmp(q->next->fd.ToCity,city)==0)
			return q->next;
		q=q->next;
	}
	return NULL;
}
//查询指定起飞地点的航班情况
int findFromCity(FlyList fl)

{
	char city[50];
	printf("查询指定起飞地点的航班情况\n请输入起飞城市名字:");
	scanf("%s",city);
	PFly q=returnFromFly(fl,city);
	if(q==NULL)return 0;
	printf("查询结果:\n");
	printFly(&q->fd);
	return 1;
}
//查询指定抵达地点的航班情况
int findToCity(FlyList fl)

{
	char city[50];
	printf("查询指定抵达地点的航班情况\n请输入抵达城市名字:");
	scanf("%s",city);
	PFly q=returnToFly(fl,city);
	if(q==NULL)return 0;
	printf("查询结果:\n");
	printFly(&q->fd);
	return 1;
}
//删除内存中的数据
int deleteData(FlyList fl,CheckList cl)
{
	PFly p=fl->next,q;
	while(p!=NULL)
	{
		q=p;
		p=p->next;
		free(q);
	}
	fl->next=NULL;
	return 1;
}
//保存数据
int saveData(FlyList fl,CheckList cl)
{
	PFly q=fl;
	PCheck c=cl;
	FILE *file;
	//保存航班信息
	if(NULL==(file=fopen("flydata.dat","wb")))
		return 0;
	while(NULL!=q->next)
	{	
		fwrite(&q->next->fd,sizeof(FlyData),1,file);
		q=q->next;
	}
	fclose(file);
	//保存机票信息
	if(NULL==(file=fopen("checkdata.dat","wb")))
		return 0;
	while(NULL!=c->next)
	{	
		fwrite(&c->next->cd,sizeof(CheckData),1,file);
		c=c->next;
	}
	fclose(file);
	return 1;
}
//读取数据
int readData(FlyList fl,CheckList cl)
{
	deleteData(fl,cl);
	FILE *file;
	//读取航班信息
	if(NULL==(file=fopen("flydata.dat","rb")))
		return 0;
	FlyData fd;
	while(!feof(file))
	{	
		fread(&fd,sizeof(FlyData),1,file);
		if(feof(file))break;
		if(0==insertFly(fl,&fd))return 0;
	}
	fclose(file);
	//读取机票信息
	if(NULL==(file=fopen("checkdata.dat","rb")))
		return 0;
	CheckData cd;
	while(!feof(file))
	{	
		fread(&cd,sizeof(CheckData),1,file);
		if(feof(file))break;
		if(0==insertCheck(cl,&cd))return 0;
	}
	fclose(file);
	
	return 1;
}

void message()
{
	system("cls");
	printf("     航空公司--飞机订票系统        \n");
	printf("--------------------------------------------\n");
	printf("1.列出航班信息            \n");
	printf("2.录入航班信息            \n");
	printf("3.修改航班信息            \n");
	printf("4.按航班号  查询航班信息      \n");
	printf("5.按起飞城市 查询航班信息      \n");
	printf("6.按抵达城市 查询航班信息      \n\n");

	printf("7.列出所有订票            \n");
	printf("8.订票                \n");
	printf("9.退票                \n\n");

	printf("0.帮助                \n");
	printf("c.刷新                \n");
	printf("x.退出                \n");
	printf("--------------------------------------------\n");
}
void main()
{
	system("cls");
	FlyList fly;
	CheckList check;
	if(NULL==(fly=createFlyList()))
	{
		printf("内存不足,无法运行程序");
		exit(0);
	}
	if(NULL==(check=createCheckList()))
	{
		free(fly);
		printf("内存不中,无法运行程序");
		exit(0);
	}
	readData(fly,check);
	char cmd=' ';//命令号
	while(cmd!='x')
	{
		switch(cmd)
		{
		case '1':
			message();
			listFly(fly);
			break;
		case '2':message();
			if(addFly(fly)==1)
			{
				printf("数据录入成功\n");
				saveData(fly,check);//==1)printf("数据已经保存到文件里!\n");//保存数据
			}
			else
				printf("失败\n");
			break;
		case '3':message();
			if(changeFly(fly)==1)
			{
				printf("修改成功\n");
				saveData(fly,check);//保存数据
			}
			else
				printf("失败\n");
			break;
		case '4':message();
			if(findFly(fly)==1)
				printf("成功查询\n");
			else
				printf("没有该编号航班\n");
			break;
		case '5':message();
			if(findFromCity(fly)==1)
					printf("成功查询\n");
				else
					printf("没有该城市起飞的航班\n");
			break;
		case '6':message();
				if(findToCity(fly)==1)
					printf("成功查询\n");
				else
					printf("没有抵达该城市的航班\n");
			break;
		case '7':message();
			listCheck(check);
			break;
		case '8':message();
			bookCheck(fly,check);
			saveData(fly,check);
			break;
		case '9':message();
			if(refundCheck(fly,check)==0)printf("删除失败\n");
			saveData(fly,check);
			break;
		case '0':
			printf("欢迎使用。\n");//帮助说明:输入操作序号时可以同时输入几个,比如输入“c1”程序将先执行“c”清屏命令,再执行“1”列出所有航班信息\n");
			break;
		case 'c':
		default:
			message();
		}
		printf("请输入操作序号:");
		if('\n'==(cmd=getchar()))
			scanf("%c",&cmd);//接收命令
	}
	printf("程序已经退出\n谢谢使用!\n");
	//程序退出时清除内存
	deleteData(fly,check);
	free(fly);
	free(check);
}
/*
问题描述:设计一个飞机订票系统。
基本要求: 
1、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
2、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
3、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
4、退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5、修改航班信息:当航班信息改变可以修改航班数据文件
*/

⌨️ 快捷键说明

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