📄 ticket.cpp
字号:
}
}
}
int EditTicket(){ //修改定票信息
FILE *f;Ticket ticket[10];int i,op;char temp[6]={"8"};
char user[10];
if ((f=fopen("Ticket.dat","r"))==NULL)
{
return 0;
}
else
{
fread(&ticket,sizeof(ticket),1,f);
}
fclose(f);
while(1)
{
if(admin==2)ShowTicket(0);else ShowTicket(1);
printf("\n\n\n\t\t请输入要修改旅客的姓名(8:退出):");
scanf("%s",user);
if((strcmp(user,temp))==0)return 0;
for(i=0;i<AvailableTag(1);i++)
{
if((strcmp(ticket[i].user,user))==0&&(admin==2||(strcmp(ticket[i].agency,ID))==0))
{
system("cls");
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<": 旅客姓名:: 姓别 :: 单位 :: 身份证 :: 航班 :: 舱位 :: 状态 :"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<" "<<ticket[i].user<<" "<<ticket[i].sex<<" "<<ticket[i].Inc<<" "<<ticket[i].ID<<" "<<ticket[i].name;
cout<<" ";
switch(ticket[i].grade)
{
case 0:cout<<"头等舱";break;
case 1:cout<<"头等舱";break;
case 2:cout<<"头等舱";break;
}
cout<<" ";
switch(ticket[i].state)
{
case 0:cout<<"已经退票";break;
case 1:cout<<"已交定金";break;
case 2:cout<<"交款取票";break;
}
cout<<endl;
switch(CheckFlightState(ticket[i].name)) //航班状态
{
case -1:printf("\n\t\t\t该旅客所在航班已经不存在!");break;
case 1:printf("\n\t\t\t该旅客所在航班正常!");break;
case 0:printf("\n\t\t\t该旅客所在航班已经取消!");break;
}
printf("\n\n*---------------------------------------------------------------------*"); //旅行社
printf("\n\n\t0:姓名 1性别 2单位 3身份证 8保存并退出"); //旅行社
if(admin==2)printf("\n\n\t10取票确认 11退票"); //航空公司
printf("\n\n*---------------------------------------------------------------------*");
while(op!=8)
{
printf("\n\t\t请按以上序号修改:");
scanf("%d",&op);
switch(op)
{
case 0:
printf("\n\t\t姓名:");
scanf("%s",ticket[i].user);
break;
case 1:printf("\n\t\t性别:");scanf("%s",ticket[i].user);break;
case 2:printf("\n\t\t单位:");scanf("%s",ticket[i].Inc);break;
case 3:printf("\n\t\t身份证:");scanf("%s",ticket[i].ID);break;
case 10: //取票确认
if(admin==2)
{
if(CheckFlightState(ticket[i].name)==-1)
{
printf("\n\t\t该航班已经不在,请为旅客退票!");
break;
}
if(CheckFlightState(ticket[i].name)==0)
{
printf("\n\t\t该航班已经取消,请为旅客退票!");
break;
}
ticket[i].state=2;
if ((f=fopen("Ticket.dat","w+b"))==NULL)
{
return 0;
}
else
{
fwrite(&ticket,sizeof(ticket),1,f);
}
fclose(f);
printf("\n\t\t确认取票!");
break;
}
else
{
printf("\n\t\t旅行社无该权限!");
break;
}
case 11: //退票
if(admin==2)
{
ReTicket(ticket[i]);
if ((f=fopen("Ticket.dat","w+b"))==NULL)
{
return 0;
}
else
{
for(;i<AvailableTag(1);i++)
{
//ticket[i]=ticket[i+1];
memcpy(&ticket[i],&ticket[i+1],sizeof(Ticket));
//TicketCopy(,);
}
//TicketCopy(ticket[AvailableTag(1)-1],ticket[AvailableTag(1)]);
fwrite(&ticket,sizeof(ticket),1,f);
}
fclose(f);
printf("\n\t\t##退票成功!##");return 1;
break;
}
else
{
printf("\n\t\t*旅行社无该权限!*");
break;
}
}//switch
} //while
CheckTicket(ticket[i]);
if ((f=fopen("Ticket.dat","w+b"))==NULL)
{
return 0;
}
else
{
fwrite(&ticket,sizeof(ticket),1,f);
}
fclose(f);
printf("\n\t\t保存成功!");
return 1;
}//if
}//for
printf("\n\t\t没有该旅客资料!");
}
return 0;
}
int ReTicket(Ticket &ticket){
if(CheckFlightState(ticket.name)!=-1)
{
Flight flight[10];int money;
FILE *f;///*
if ((f=fopen("Flight.dat","rb"))==NULL)
{
return 0;
}
else
{
fread(&flight,sizeof(flight),1,f);
fclose(f);
}
for(int i=0;i<AvailableTag(0);i++)
{
if((strcmp(flight[i].name,ticket.name))==0)
{
printf("\n\t\t*----------------------------------------------------------*");
switch(ticket.grade) //增加一票
{
case 0:printf("\n\t\t\t 舱位:头等舱 ");
money=flight[i].price[0];flight[i].re_ticket[0]++;
break;
case 1:printf("\n\t\t\t 舱位:公务舱 ");
money=flight[i].price[1];flight[i].re_ticket[1]++;
break;
case 2:printf("\n\t\t\t 舱位:经济舱 ");
money=flight[i].price[2];flight[i].re_ticket[2]++;
break;
}
if(ticket.state==1)
{
printf("\n\t\t该旅客只交过定金,现只能退80%的定金!");
}
else
{
printf("\n\t\t现只能还80%的金额:%d",money*0.8);
}
printf("\n\t\t*----------------------------------------------------------*");
}//if
}//for
if ((f=fopen("Flight.dat","w+b"))==NULL)
{
return 0;
}
else
{
fwrite(&flight,sizeof(flight),1,f);
}
fclose(f);
}
else
{
printf("\n在航班已经不在,请退还相应金额!");
}
ticket.state=0; //确认为退票
return 1;
}
int ShowTicket(int mode){
FILE *f;Ticket ticket[10];int i;
if ((f=fopen("Ticket.dat","r"))==NULL)
{
return 0;
}
else
{
fread(&ticket,sizeof(ticket),1,f);
}
fclose(f);
cout<<"*-----------------------------------------------------------------------------*"<<endl;
cout<<": 旅客姓名::姓别::单 位::身 份 证::航 班:: 舱 位::状 态:"<<endl;
cout<<"*-----------------------------------------------------------------------------*"<<endl;
for(i=0;i<AvailableTag(1);i++)
{
if(mode==0||(strcmp(ticket[i].agency,ID))==0)
{
cout<<" "<<ticket[i].user<<" "<<ticket[i].sex<<" "<<ticket[i].Inc<<" "<<ticket[i].ID<<" "<<ticket[i].name;
cout<<" ";
switch(ticket[i].grade)
{
case 0:cout<<"头等舱";break;
case 1:cout<<"头等舱";break;
case 2:cout<<"头等舱";break;
}
cout<<" ";
switch(ticket[i].state)
{
case 1:cout<<"已交定金";break;
case 2:cout<<"交款取票";break;
}
cout<<endl;
}
}
return 1;
}
/*
typedef struct{
char agency[7];
char user[10];
char sex[2]; //0女 1男
char Inc[20]; //单位
char ID[20];//身份证
int grade; //0:头等舱 1:公务舱 2:经济舱
int state; //0没交定金 1交定金 2交钱取票
char name[6]; //航班名称
}Ticket;
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -