数据结构大作业

数据结构大作业之链表

它的存储文件格式为记事本文件,程序只能运行一点点,但就是不知道为什么这个程序运行错误,希望路过的大佬能帮忙指点一下

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<malloc.h>
//#include<cstdlib.h>
//#include<iomanip.h>
#include<Windows.h>
#include<fstream>
#include<string>
using namespace std;
/**************************************************************/
typedef struct passengers   //乘客信息
{
char id[20];
char password[20];
char name[20];
char id_card[20];
int phone[11];
int order_num;   //订单号
int ticker_num;   //订票数量
char Airno[8];  //航班号
passengers *pNext;//指向下一个乘客
passengers *head;
passengers *rear;
}passengers;

typedef struct flightnode    //航班信息
{
char Airno[10];
char start[20];  //起飞地点
char end[20];    //抵达地点
char time1[10];    //起飞时间
char time2[10];   //抵达时间
float price;    //票价
float discount;  //折扣      
int remained;    //是否剩余,剩余多少
int isFull;   //航班是否满仓
flightnode *next;  //指向下一个结点

}flighetnode;

/*******************乘客主菜单界面**************************/


void dingpiao(passengers * pHead){}
void tuipiao(passengers * pHead){}
void query(passengers * pHead){}

/*typedef struct passengerList{
passengers *head;
passengers *rear;
}passengerList;*/

/*void init_passengers(passengers *pL){
passengers *pList=(passengers *)malloc(sizeof(passengers));
pList->pNext=(passengers *)malloc(sizeof(passengers));
pList->pNext=pL->pNext;
pL->pNext=pList;
pList->order_num=0;  //订单号从0开始
pList->pNext=NULL;
}*/
void save_passenger(passengers *PList){
	FILE* fp=fopen("passengers.txt","wb");
if(fp==NULL)
	return;
passengers *temp=PList->head->pNext;
while(temp!=NULL){
fwrite(temp,sizeof(passengers),1,fp);
temp=temp->pNext;
};
fclose(fp);
}
void load_passenger(passengers *PList){
FILE* fp=fopen("passengers.txt","rb");
if(fp==NULL)
	return;
passengers *q;
int n;
while(!feof(fp)){
q=(passengers *)malloc(sizeof(passengers));
n=fread(q,sizeof(passengers),1,fp);
if(n!=1)
	break;
PList->rear->pNext=q;
PList->rear=q;
}
PList->rear->pNext=NULL;
fclose(fp);
}
void insert_passengerList(flightnode *&h,passengers *&PList,char *name,char *id_card,char*Airno,int ticket_num){
	//客户订票后,将客户结点插入客户链表中,并修改相应的航班信息
	flightnode *p=h->next;
	for(;p!=NULL;p=p->next){
		if(strcmp(p->Airno,Airno)==0){
		p->remained=p->remained-ticket_num;
		if(p->remained==0)
			p->isFull=1;
		}
		passengers *q=(passengers *)malloc(sizeof(passengers));//新建结点,存放新的客户订单信息
		//strcpy(q->id,id);
		strcpy(q->name,name);
		strcpy(q->id_card,id_card);
		strcpy(q->Airno,Airno);
		q->ticker_num=ticket_num;
		q->pNext=NULL;          //将新的订单连接到链表中
		PList->rear->pNext=q;
		q->order_num=PList->rear->order_num+1;  //生成订单号
		PList->rear=q;
	}
}
/*void save_passenger(flightnode *h){
FILE* fp=fopen("flightList.txt","wb");
if(fp==NULL)
	return;
flightnode *temp=h->next;
while(temp!=NULL){
fwrite(temp,sizeof(flightnode),1,fp);
temp=temp->next;
};
fclose(fp);
}*/
void zhuce(passengers *&PL){
	
	passengers *pList=(passengers *)malloc(sizeof(passengers));
     pList->pNext=PL->pNext;
     PL->pNext=pList;
     pList->order_num=0;  //订单号从0开始
     pList->pNext=NULL;
	FILE* fp=fopen("passenger.txt","wb");    //注册并写入文件,每一行存在一个用户
	if(fp==NULL){
		printf_s("打开文件失败,无法注册!");
		exit(0);
	}
    passengers *temp=PL->pNext;
    char id[20],password[20],name[20],id_card[20];
	
	printf("\t请输入您的昵称:");     scanf_s("%s",id,20);
	printf("\t请输入您的密码:");     scanf_s("%s",password,20);
	printf("\t请输入您的真实姓名:");     scanf_s("%s",name,20);
	printf("\t请输入您的身份证号码:");     scanf_s("%s",id_card,20);
		fprintf(fp,temp->id);  fprintf(fp,"\t");
		fprintf(fp,temp->password);  fprintf(fp,"\t");
		fprintf(fp,temp->name);  fprintf(fp,"\t");
		fprintf(fp,temp->id_card);  fprintf(fp,"\t");
	fwrite(temp,sizeof(passengers),1,fp);
	fclose(fp);
	//return PL;
}
	
int delete_passenger(passengers *&PList,flightnode *&h,char *name,char *id_card){
//目的是按照要退票的顾客的姓名查找该顾客结点,进行删除操作
	passengers *p,*pr=PList->head;
	p=pr->pNext;
	while(p!=NULL){
		if(strcmp(name,p->name)==0&&strcmp(id_card,p->id_card)==0){
			for(flightnode *f=h->next;f!=NULL;f=f->next){
				f->remained=f->remained+p->ticker_num;
				f->isFull=0;
				break;
			}
			pr->pNext=p->pNext;
			free(p);
			printf("\t\t顾客%s,%s退票成功!",name,id_card);
			return 1;
		}
		pr=pr->pNext;
		p=p->pNext;
	}
	printf("\t\t顾客不存在,无法退票!");
	return 0;
}


int order_num_check(passengers *PList,int order_num)
{
	passengers *p=PList->head->pNext;
	printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","身份证号","航班号","订票数量");
	for(;p!=NULL;p=p->pNext)
	{
		if(p->order_num==order_num)
		{
			printf_s("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->id_card, p->Airno,p->ticker_num);
			return 1;
		}
	}
	printf_s("\t\t抱歉,没有订单号为%d的订单信息!\n",order_num);
	return 0;
}
void check_all_passenger(passengers *PList)
{
	passengers *p=PList->head->pNext;
	int m=0;
	printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
	for(;p!=NULL;p=p->pNext)
	{
		printf_s("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->id_card, p->Airno,p->ticker_num);
		m=1;
	}
	if(m==0)
		printf_s("\t\t订单信息为空!\n");
}

int id_check(passengers *PList,char *name,char *id_card)
{
	passengers *p=PList->head->pNext;
	int mark=0;
	printf("%-8s%-20s%-20s%-10s%-8s%\n","订单号","姓名","证件号","航班号","订票数量");
	for(;p!=NULL;p=p->pNext)
	{
		if(strcmp(p->id,id_card)==0&&strcmp(p->name,name)==0)
		{
			printf_s("%-8d%-20s%-20s%-10s%-8d%\n",p->order_num,p->name,p->id_card, p->Airno,p->ticker_num);
			mark=1;
		}
	}
	if(mark==0)
	{
		printf("\t\t抱歉,没有%s,%s的订单信息!\n",name,id_card);
		return 0;
	}
	return 1;
}

void passenger_check(passengers *PList)
{
	char name[20],ID_num[15];
	int order_num;
	char a;
    printf("\t请选择订单查询方式:\n");
	printf("\t\t1表示按客户姓名和证件号进行查询;\n");
	printf("\t\t2表示按订单号进行查询;\n");
 
	cin>>a;
	if(a=='1')
	{
		printf("\t\t请输入客户姓名:");
		scanf_s("%s",name,20);
		printf("\t\t请输入证件号:");
		scanf_s("%s",ID_num,15);
		id_check(PList,name,ID_num);
	}
	else if(a=='2')
	{
		printf("\t\t请输入订单号:");
		scanf_s("%d",&order_num);
		order_num_check(PList,order_num);
	}
 
	else
		return;
}



void cancel(passengers *PList,flightnode *h)//退票
{
	char name[20],id_card[20];
	printf("\t\t请输入你的姓名:");
	cin>>name;
	printf("\t\t请输入你的身份证号码:");
	cin>>id_card;
	delete_passenger(PList,h,name,id_card);
}

void Find_ALL_LIST_DATA(passengers *&PList)//显示所有订单
{
	passengers *p=PList->head;
	while(p->pNext!=NULL)
	{
		cout<<p->name<<"	"<<p->id_card<<"	"<<p->Airno<<"	"<<p->order_num<<"	"<<p->ticker_num<<"	"<<endl;
		p=p->pNext;
	}
	system("pause");
}

	/*passengers * CreateLink(){
	passengers *pHead;   //链表头
	pHead=(passengers *)malloc(sizeof(passengers));
	pHead->pNext=NULL;
	pHead->pPre=NULL;
	passengers *pTemp;   //定义指针,始终指向最后一个
	pTemp=(passengers *)malloc(sizeof(passengers));
	pTemp=pHead;
	int count=0;
	passengers *p;
	while(1){
	p=(passengers *)malloc(sizeof(passengers));  //动态创建节点
	count++;
	printf("请按下面顺序依次输入注册信息(信息之前用空格间隔开!):\n");
	printf("用户名--密码--身份证号码--姓名--电话\n");
	scanf_s("%c %c %c %c %d",&p->id,p->password,p->id_card,p->name,p->phone);
	pTemp->pNext=p;
	p->pPre=pTemp;
	p->pNext=NULL;
	pTemp=pTemp->pNext;
	pTemp->pNext=NULL;   //将最后一个指针指向空
	}
	return pHead;
}*/


/**********************管理员主菜单界面**************************/

/*flightnode initflight(){
flightnode head;
head=new flightnode;

}*/

void init_flight(flightnode *h){          //目的是要建立一个以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表
h=(flightnode *)malloc(sizeof(flightnode));
if(h==NULL)
	exit(0);
h->next=NULL;   //将头结点h的指针域置为空
}
void insert_flight(flightnode *h,char * Airno,char* start,char* end,char* time1,char* time2,int remained,float price,float discount,int isFull ){
//在录入航班情况或增加新的航班后,将新的航班结点插入到航班线链表中
flightnode *q;   //定义q为新增结点的指针的形参
flightnode *p=h;
q=(flightnode *)malloc(sizeof(flightnode));
strcpy_s(q->Airno,Airno);
strcpy_s(q->start,start);
strcpy_s(q->end,end);
strcpy_s(q->time1,time1);
strcpy_s(q->time2,time2);

q->price=price;
q->discount=discount;
q->remained=remained;    //以上是用strcpy函数将新增结点新增加航班的各种信息复制到q结点中
q->isFull=isFull;
q->next=p->next;
p->next=q;
p=p->next;    //指针后移
}

void luru(flightnode *h){
	flightnode *p=(flightnode*)malloc(sizeof(flightnode));
	p=h;
	char Airno[8];
char start[6],end[6],time1[8],time2[8];
float price,discount;       
int remained,isFull,mark=1; 

//for(;p->next!=NULL;p=p->next){}//移动指针,找到最后一个结点
while(mark){
	printf("\t请输入你要增加的航班号:");    scanf_s("%s",Airno,8);
	printf("\t请输入出发地点:");    scanf_s("%s",start,6);	
	printf("\t请输入抵达地点:");    scanf_s("%s",end,6);
	printf("\t请输入起飞时间:");    scanf_s("%s",time1,8);
	printf("\t请输入降落时间:");    scanf_s("%s",time2,8);
	printf("\t请输入票价:");    scanf("%f",&price);
	printf("\t请输入折扣:");    scanf("%f",&discount);
	printf("\t请输入剩余座位数:");    scanf("%d",&remained);
	printf("\t请输入是否满仓(0表示没有,1表示满仓):");    scanf("%d",&isFull);
	insert_flight(p,Airno,start,end,time1,time2,remained,price,discount,isFull);
	printf("\t航班号%s增加成功!\n",Airno);
	printf("----------------------------------------------------------\n");
	printf("*******************是否继续录入航班信息*******************\n");
	printf("=            1.继续                      2.停止          =\n");
	printf("=            请选择您需要的服务:                        =\n");
	printf("----------------------------------------------------------\n");
	scanf_s("%d",mark);
}

}

void save_flight(flightnode *h){
FILE* fp=fopen("flightList.txt","wb");
if(fp==NULL)
	return;
flightnode *temp=h->next;
while(temp!=NULL){
fwrite(temp,sizeof(flightnode),1,fp);
temp=temp->next;
};
fclose(fp);
}
void load_flight(flightnode *&h){
flightnode *pt=h;
FILE* fp=fopen("flightList.txt","rb");
if(fp==NULL)
	return;
flightnode *q;
int n;
while(!feof(fp)){
q=(flightnode *)malloc(sizeof(flightnode));
n=fread(q,sizeof(flightnode),1,fp);
if(n!=1)
	break;
pt->next=q;
pt=q;
}
pt->next=NULL;
fclose(fp);
}
int find_same_flight(flightnode *h,char *Airno){
	flightnode *t=h->next,*p=h->next;
	int mark=0;
	printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8s%\n","航班号","起飞城市","抵达城市","起飞时间","降落时间","票价","折扣","是否满座""空座数");
	while(t!=NULL&&strcmp(t->Airno,Airno)!=0)  
		t=t->next;
	while(p!=NULL){
		if((strcmp(t->start,p->start)==0)&&(strcmp(t->end,p->end)==0)&&(strcmp(t->Airno,p->Airno)!=0)){
			printf("%-8s%-12s%-12s%-10s%-10s%-8.2s%-6.2s%-10d%-8d\n",p->Airno,p->start,p->end,p->time1,p->time2,p->price,p->discount,p->isFull,p->remained);
		mark=1;
		}
		p=p->next;
	
	}
	if(mark==0){
			printf("\t\t抱歉,没有可选的航班!\n");
		return 0;

	}
		return 1;
}
void delete_flight(flightnode *h,passengers *PList)
//目的要按照某个航班号删除航班结点
{
	flightnode *p,*pr;
	passengers *q,*qr;
	char Airno[10];
	int mark=1;
	qr=PList->head;//qr为顾客链表的头结点
	q=qr->pNext;//用p作为中间指针对顾客链表中要删除的顾客结点进行查找
	pr=h;//pr为航线链表的头结点
	p=pr->next;//用p作为指针对航线链表中要删除的航班结点进行查找
	printf("\t\t请输入你要删除的航班号:");
	scanf("%s",Airno);
	while(p!=NULL)//要删除的航班存在,下面进行删除操作
	{
		if(strcmp(Airno,p->Airno)==0)
		{
			pr->next=p->next;//移动指针找着要删除的航班结点
			free(p);
			printf("\t\t删除%s航班成功!\n",Airno);
			mark=0;
			p=NULL;
		}
		if(pr->next!=NULL)
		{
			pr=pr->next;
			p=pr->next;
}
	}
	if(mark==1)
		printf("\t\t无此航班,无法删除!\n");
	else
	{
		while(q!=NULL)//要删除的顾客存在,下面进行删除操作
		{
			if(strcmp(Airno,p->Airno)==0)
			{
				qr->pNext=q->pNext;//移动指针找着要删除的顾客结点
				free(q);
				q=NULL;
			}
			if(qr->pNext!=NULL)
			{
				qr=qr->pNext;
				q=qr->pNext;
			}
		}
	}
}
void add_flight(flightnode *h){   //录入航班信息后调用insert_filght函数增加航班
flightnode *p=h;
char Airno[10],time1[10],time2[10],start[20],end[20];
int remained,isFull,mark=1;
float price,discount;

ifstream infile("file.txt",ios::in);
if(!infile){
cerr<<"open file error!"<<endl;
system("pause");
}
while(infile){
infile>>Airno;

infile>>start;
infile>>end;
infile>>time1;
infile>>time2;
infile>>price;
infile>>discount;
infile>>remained;
infile>>isFull;
insert_flight(p,Airno,start,end,time1,time2,remained,price,discount,isFull);
}
infile.close();
}

int Airno_check(flightnode *h,char *Airno){
	flightnode *p=h;
	printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8s%\n","航班号","起飞城市","抵达城市","起飞时间","降落时间","票价","折扣","是否满座""空座数");
	for(;p!=NULL;p=p->next){
		if(strcmp(p->Airno,Airno)==0){
		printf("%-8s%-12s%-12s%-10s%-10s%-8.2s%-6.2s%-10d%-8d\n",p->Airno,p->start,p->end,p->time1,p->time2,p->price,p->discount,p->isFull,p->remained);
		return 1;
		}
	}
	printf("\t\t抱歉/没有航班号为%s的航班信息!\n",Airno);
	return 0;
}
int place_check(flightnode *h,char *start,char *end){
	flightnode *p=h;
	int mark=0;
	printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8s%\n","航班号","起飞城市","抵达城市","起飞时间","降落时间","票价","折扣","是否满座""空座数");
	for(;p!=NULL;p=p->next){
		if(strcmp(p->start,start)==0&&strcmp(p->end,end)==0){
		printf("%-8s%-12s%-12s%-10s%-10s%-8.2s%-6.2s%-10d%-8d\n",p->Airno,p->start,p->end,p->time1,p->time2,p->price,p->discount,p->isFull,p->remained);
		return 1;
		}
	}
	if(mark=0){
	printf("\t\t抱歉,没有%s到%s的航班信息!\n",start,end);
	return 0;
	}
	return 1;
}

void check_all_flight(flightnode *h){
flightnode *p=h;
int m=0;
printf("%-8s%-12s%-12s%-10s%-10s%-8s%-6s%-10s%-8s%\n","航班号","起飞城市","抵达城市","起飞时间","降落时间","票价","折扣","是否满座""空座数");
for(;p!=NULL;p=p->next){
printf("%-8s%-12s%-12s%-10s%-10s%-8.2s%-6.2s%-10d%-8d\n",p->Airno,p->start,p->end,p->time1,p->time2,p->price,p->discount,p->isFull,p->remained);
		m=1;
}
if(m==0){
	printf("航班信息为空!\n");
}
}
void flight_check(flightnode *h){
flightnode *p=h->next;
char Airno[10],start[20],end[20];
char a;
printf("----------------航班的查询方式:------------------\n");
printf("------------1.按航班号进行查询---------------\n");
printf("------------2.按起飞和抵达地点进行查询---------------\n");
printf("------------3.浏览全部航班信息---------------\n");
printf("-----——--------请选择:--------------\n");
cin>>a;
if(a=='1'){
printf("\t\t请输入您想要查询的航班号:\n");
scanf_s("%s,Airno");
Airno_check(p,Airno);
}
else if(a=='2'){
	printf("\t\t请输入您想要查询的起飞地点:\n");
	scanf_s("%s",start,20);
	printf("\t\t请输入您想要查询的抵达地点:\n");
	scanf_s("%s",end,20);
}
else if(a=='3'){
check_all_flight(p);
}
else 
	return;
}

void modify_flight(flightnode *h,passengers *PList)
{
	flightnode *p=h->next;
	char Airno[10],start_time[10],end_time[10];
	char a;
	printf("*****************航线信息修改******************\n");
	printf("***********************************************\n");
	printf("=                 1.增加航班                  =\n");
	printf("=                 2.删除航班                  =\n");
	printf("=                 3.修改航班时间              =\n");
	printf("-----------------------------------------------\n");
	printf("\t\t请输入您的选择:");
	cin>>a;
	if(a=='1')
		add_flight(h);
	else if(a=='2')
		delete_flight(h,PList);
	else if(a=='3')
	{
		printf("\t请输入要修改的航班的航班号:");
		scanf("%s",Airno);
		if(Airno_check(p,Airno)==1)
		{
			printf("\t请输入修改后的起飞时间:");
			scanf_s("%s",start_time,10);
			printf("\t请输入修改后的抵达时间:");
			scanf_s("%s",end_time,10);
			for(;p!=NULL;p=p->next)
				if(strcmp(Airno,p->Airno)==0)
				{
					strcpy(p->time1,start_time);
					strcpy(p->time2,end_time);
					printf("\t航班%s时间修改成功!\n",Airno);
				}
		}
	}
	else
		return;
}

int book(flightnode *h,passengers *PList)
{
	char name[20];       //姓名
	//char id[20];
	char id_card[20];     //证件号
	char Airno[10]; //航班号
	char start[20];//起飞城市
	char end[20];  //抵达城市
	int ticket_num;      //订票数量
	int k;
	flightnode *p=h->next;
	printf("\t\t请输入信息:\n");
	printf("\t\t请输入起飞城市:");
	scanf("%s",start);
	printf("\t\t请输入抵达城市:");
	scanf("%s",end);
	if(place_check(h,start,end)==1)
	{
		printf("\t航班号:");
		scanf("%s",Airno);
		while(Airno==NULL){
			printf("航班号不能为空!\n");
			printf("\t航班号:");
			scanf("%s",Airno);
		}
		while(p!=NULL){
			if(strcmp(p->Airno,Airno)==0)
			{
				printf("\t姓名:");
				scanf("%s",name);
				printf("\t\t身份证号码:");
				scanf("%s",id_card);
				printf("\t\t订票数量:");
				scanf("%d",&ticket_num);
				while(name==NULL){
					printf("客户姓名不能为空!\n");
					printf("\t\t姓名:");
					scanf("%s",name);
				}
				while(id_card==NULL){
					printf("客户证件号码不能为空!\n");
					printf("\t\t证件号码:");
					scanf("%s",id_card);
				}
				while(ticket_num==0){
					printf("客户订票数量不能为空!\n");
					printf("\t\t订票数量:");
					scanf("%d",&ticket_num);
				}
				if(p->remained>0&&p->remained>=ticket_num)
				{
					insert_passengerList(h,PList,name,id_card,Airno,ticket_num);
					printf("\t\t你应付金额¥%6.2f.\n",p->price*p->discount* ticket_num);
					getchar();
					printf("\t\t恭喜您,订票成功!\n");
					return 1;
				}
				else
				{
					printf("\t\t***很遗憾,该航班已满!***\n");
					printf("\t\t***如选择其他航班请输入-----1\n\t\t***不选则输入-----0***\n");
					printf("\t\t输入数字进行选择:");
					scanf("%d",&k);
					if(k==1)
					{
						printf("\t\t此航线上的其他航班有:\n");
						if(find_same_flight(h,Airno)==1)
						{
							printf("\t\t请输入您选的航班:");
							scanf("%s",Airno);
							insert_passengerList(h,PList,name,id_card,Airno,ticket_num);
							printf("\t\t恭喜您,订票成功!\n");
							return 1;
						}
					}
				}
			}
			else
				p=p->next;
		}
		if(p==NULL)
			printf("\t\t对不起,您输入的航班不存在!\n");
	}
	return 0;
}

void sort_filght(flightnode *h){
	
	//根据 航班起飞时间升序
	flightnode *tump1 = (flightnode*)malloc(sizeof(flightnode));
	flightnode *tump2 = (flightnode*)malloc(sizeof(flightnode));
	flightnode* p1 = h -> next;
	flightnode *p2 = h -> next -> next;
	printf("根据航班起飞时间升序:\n");
	while(p1){
		
		while(p2){
			
			if(strcmp(p2 ->time1, p2 ->time1) > 0){
				
				*tump1 = *p1;
				//tump1 -> next = p1 -> next;
				*p1 = *p2;
				tump2 -> next = p2 -> next;
				*p2 = *tump1;
				p1 -> next = tump1 -> next;
				p2 -> next = tump2 -> next;
			}
			
			p2 = p2 -> next;
		}
		
		p1 = p1 -> next;
		p2 = h -> next -> next;
	}
	
	p1 = h -> next;
	printf("航班号\t起飞城市\t抵达城市\t起飞时间\t降落时间\t票价\t折扣\t是否满座\t空座数\n");
	while(p1){
		
		printf("%-8s%-12s%-12s%-10s%-10s%-8.2s%-6.2s%-10d%-8d\n",p1 ->Airno, p1 ->start, p1 -> end,
										    			p1 ->time1, p1 ->time2, p1 -> price,
														p1 -> price, p1 -> discount, p1 -> isFull,p1->remained);
		p1 = p1 -> next;
	} 
}

void main_passenger(flightnode *fl,passengers *pa){
	
	int mp=0;
	while(1){
	printf("*****************飞机订票系统******************\n");
	printf("*******************欢迎进入********************\n");
	printf("=         1.注册           2.订票            =\n");
	printf("=         3.退票           4.查询            =\n");
	printf("=         5.返回上一级菜单                   =\n");
	printf("=         请选择您需要的服务:               =\n");
	printf("-----------------------------------------------\n");
	scanf_s("%d",&mp);
	switch(mp){
	case 1:
		zhuce(pa);
		break;
	case 2:
		book(fl,pa);
		break;
	case 3:
		cancel(pa,fl);
	    break;
	case 4:
		passenger_check(pa);
		break;
	case 5:
		return;
	default:
		printf("输入错误,请重新输入:\n");
	}
	}
}


void main_admin(flightnode *fl,passengers *pa){
	int t=1,ad;
	/*flightnode *flight;
	passengerList *passenger;
	init_flight(flight);
	load_flight(flight);*/
	while(t){
	printf("*****************飞机订票系统******************\n");
	printf("*******************欢迎进入********************\n");
	printf("=         1.录入           2.修改            =\n");
	printf("=         3.删除           4.查询            =\n");
	printf("=         5.排序           6.返回上一级菜单  =\n");
	printf("=         请选择您需要的服务:            =\n");
	printf("-----------------------------------------------\n");
	scanf_s("%d",&ad);
switch(ad){
	case 1:
		  luru(fl);
		break;
	case 2:
		modify_flight(fl,pa);
		break;
	case 3:
		delete_flight(fl,pa);
		break;
	case 4:flight_check(fl);
		break;
	case 5:
		sort_filght(fl);
		break;
	case 6:
		return;
	default:
		printf("输入错误,请重新输入:\n");
	}
	}
}
int main(){
	int m;
	flightnode *flight= (flightnode*)malloc(sizeof(flightnode));
	passengers* passenger= (passengers*)malloc(sizeof(passengers));
	while(1){
	printf("*****************飞机订票系统******************\n");
	printf("*******************欢迎进入********************\n");
	printf("=         1.乘客           2.管理员            =\n");
	printf("=         请选择您的角色:                     =\n");
	printf("-----------------------------------------------\n");
	scanf_s("%d",&m);
	switch(m){
	case 1:main_passenger(flight,passenger);
	case 2:main_admin(flight,passenger);
    default:
		printf("输入错误,请重新输入:\n");
	}
		
	}
   
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值