?? 427.cpp
字號:
while(i<m)
{
if(f[i].Flight_No==id)
break;
i++;
}
if(i==m)
{system("cls"); printf("\n\n\n\n\t\t\t\t不存在此航班號!\n");}
else
{
i=0;
j=0;
total_amount=0;
printf("\n\n 航班號%d的定票信息如下:\n\n",id);
printf(" --------------------------------------------------------------------------\n");
printf(" 編號 航班號 飛機號 起點 終點 起飛時間 票數 座位號 倉位價格\n");
printf(" --------------------------------------------------------------------------\n");
while(i<n)
{
if(c[i].NUM/1000==id)
{
printf(" %-5d%5d%12d%7s%7s 星期%s%7d%8d-%d%8d\n",c[i].NUM,c[i].Flight_No,c[i].Plane_No,c[i].Beg_Name,c[i].Des_Name,a[c[i].Week_Day-1],c[i].Amount,c[i].Fist_Seat,c[i].Last_Seat,c[i].Rank);
printf(" --------------------------------------------------------------------------\n");
total_amount=total_amount+c[i].Rank*c[i].Amount;
j++;
}
i++;
}
printf("\n\n\t\t\t 總有%d個顧客,總額數為(元):%d",j,total_amount);
}
getch();
}
int menu3()
{int id=5;
do{system("cls");
printf("\n\n\t ~~歡迎光臨~~\n");
printf("\t ____________________________________________________\n");
printf("\t │ 1.查看全部航線 │ 2.查看單個航線 │ 3.返回目錄 │\n");
printf("\t │_________________│________________│_____________│\n");
printf("\n\t 你可以有(1~3)種選擇:");
scanf("%d",&id);
}while(id>3||id<1);
return id;
}
void air_manage()
{int k=1;
for(;;)
{
switch(menu1())
{ case 1:add_air();break; /*航線管理*/
case 2:delete_air();break; /*刪除航線*/
case 3:check_air();break; /*查看航線*/
case 4:change_air();break; /*修改航線*/
default:k=0;save2();save(); /*返回主目錄 */
}
if(k==0)
break;
}
}
void ticket_manage()
{int k=1;
for(;;)
{
switch(menu2())
{ case 1:add_ticket();break; /*訂飛機票*/
case 2:delete_ticket();break; /*當前個人退票處理*/
case 3:check_ticket();break; /*查看當前個人已定票的具體情況*/
case 4:change_ticket();break; /*當前個人換票處理*/
default:k=0;save2();save();break; /*返回主目錄 */
}
if(k==0)
break;
}
}
void ticket_in() /*補票辦理*/
{char beg_name[10];
char end_name[10];
int id=1;
int ed,fd;
int k=1;
int total_amount=0;/*記錄顧客的總票價*/
int t_beg,t_end; /*飛機的開始票位和終止票位(連續的)*/
int rank;
int t;
system("cls"); /*清屏*/
printf("\t------------------------------\n");
printf("\t 你是第%d個來訂票:\n",n+1);
printf("\t------------------------------\n");
printf("\t\t輸入起點:");
scanf("%s",beg_name);
printf("\t\t輸入終點:");
scanf("%s",end_name);
for(j=0;j<m;j++)
{
if((strcmp(beg_name,f[j].beg_Name)==0)&&(strcmp(end_name,f[j].Des_Name)==0))/*比較輸入的地方是否存在航線*/
{printf("\t\t此飛機上還有%d個空位!\n",f[j].Free_Amount);
printf("\n\t\t\t按任何鍵進入該航線訂票信息");
getch();
break;}
}
if(j==m)
{system("cls");
printf("\n\n\n\n\t\t\t OH,sorry! 沒有存在此航班...\n");
getch();
id=0;
}
else
{
system("cls");
total_amount=0;
i=0;
/*打印航線的信息*/
printf("\n\n 第%d航線定票信息如下:\n\n",j+1);
printf(" --------------------------------------------------------------------------\n");
printf(" 編號 航班號 飛機號 起點 終點 起飛時間 票數 座位號 倉位價格\n");
printf(" --------------------------------------------------------------------------\n");
while(i<n)/*打印有關該航線上的信息*/
{
if(c[i].NUM/1000==j+1)
{
printf(" %-5d%5d%12d%7s%7s 星期%s%7d%8d-%d%8d\n",c[i].NUM,c[i].Flight_No,c[i].Plane_No,c[i].Beg_Name,c[i].Des_Name,a[c[i].Week_Day-1],c[i].Amount,c[i].Fist_Seat,c[i].Last_Seat,c[i].Rank);
printf(" --------------------------------------------------------------------------\n");
total_amount=total_amount+c[i].Rank*c[i].Amount;
}
i++;
}
printf("\n\n\t\t\t 總額數為(元):%d\n",total_amount);
}
printf("\n\n 是否繼續(0/1)……");
scanf("%d",&fd);
if(fd==1){
if(id==1) /*找到航線時*/
{f[j].peo+=1; /*購買該航線的票數(或人數)加一*/
c[n].NUM=f[j].peo+(j+1)*1000; /*給相應的航線加上編號,2002表示第二條航線的第二個訂票的人的票的編號*/
strcpy(c[n].Beg_Name,beg_name);/*記錄顧客的訂票信息*/
strcpy(c[n].Des_Name,end_name);
c[n].Flight_No=f[j].Flight_No;
c[n].Plane_No=f[j].Plane_No;
printf(" --------------------------------------------------------\n");
printf("\t\t請輸入名字:");
scanf("%s",c[n].Name);
printf("\t\t請輸入證件號:");
scanf("%d",&c[n]. bianhao);
do{
printf("\t\t請輸入座位號(a-b):");
scanf("%d%d",&t_beg,&t_end);
t=t_beg>t_end?t_beg:t_end;
if(t!=t_end)
{t_beg=t_end;
t_end=t;}
i=0;
while(i<n) /*查找訂的座位起始號是否正確,正確時k=1,錯誤時k=0*/
{
if(c[i].NUM/1000==j+1)
{if(t_beg<c[i].Fist_Seat&&t_end<c[i].Last_Seat)
k=1;
else if(t_beg>c[i].Last_Seat&&t_end<=f[j]. Customer_Amount)
k=1;
else
{k=0;
break;}
}
i++;
}
if(k==0)
{
if(t_end>f[j]. Customer_Amount)
printf("\t\t最大的座位號不能超過%d",f[j]. Customer_Amount);
printf("\n\t\t輸入有錯,是否繼續(0/1)……");
scanf("%d",&ed);
}
}while(k==0&&ed==1);
if(ed!=0)
{
c[n].Fist_Seat=t_beg;/*記錄該顧客的起始座位號*/
c[n].Last_Seat=t_end;
c[n].Amount=t_end-t_beg+1;
printf("\t\t請輸入倉位價(1-3):");
scanf("%d",&rank);
c[n].Rank=f[j].Price[rank-1];/*根據輸入等級計算票價*/
c[n].Week_Day=f[j].Week_Day;
f[j].Free_Amount=f[j].Free_Amount-c[n].Amount;/*修正航線上的空位信息*/
n++;
}
}
}
}
void ticket_out() /*退票辦理*/
{int id; /*接收編號*/
int fd;
int total_amount=0;
system("cls");
printf("\n\n\t請輸入要退票的編號:");
scanf("%d",&id);
i=0;
j=0;
printf(" --------------------------------------------------------------------------\n");
printf(" 編號 航班號 飛機號 起點 終點 起飛時間 票數 座位號 倉位價格\n");
printf(" --------------------------------------------------------------------------\n");
while(i<n) /*查找編號*/
{ if(c[i].NUM==id)
{
printf(" %-5d%5d%12d%7s%7s 星期%s%7d%8d-%d%8d\n",c[i].NUM,c[i].Flight_No,c[i].Plane_No,c[i].Beg_Name,c[i].Des_Name,a[c[i].Week_Day-1],c[i].Amount,c[i].Fist_Seat,c[i].Last_Seat,c[i].Rank);
printf(" --------------------------------------------------------------------------\n");
total_amount=total_amount+c[i].Rank*c[i].Amount;
break;/*找到,則退出查找*/
}
i++;
}
printf("\n\n\t\t\t 總額數為(元):%d",total_amount);
if(i!=n)
{
printf("\n\n\t\t\t 是否要刪除(0/1):");
scanf("%d",&fd); /*提示要不要刪除此航線*/
if(fd==1)
{
while(c[i].Flight_No!=f[j].Flight_No)
{j++;}
f[j].Free_Amount=f[j].Free_Amount+c[i].Amount;
c[i]=c[n-1];
n--;
}
}
else
printf("\n\n\t\t\t 輸入錯誤!\n\t\t\t按任何鍵返回!");
printf("\n\n\t\t\t完成操作,按任何鍵繼續...");
getch();
save();
save2();
}
void if_exit()
{int id;
system("cls");
printf("\n\n\n\n\t\t\t 是否確定要退出系統(0/1)……");
scanf("%d",&id);
if(id==1)
{cover1();
exit(0);
}
else
{system("cls");
printf("\n\n\n\n\t\t\t 按任何鍵繼續……");
getch();}
}
int menu4()
{int id;
do{
system("cls");
printf("\n\n\t ~~歡迎光臨~~\n");
printf("\t ____________________________________________________\n");
printf("\t │ 1.退票處理 │ 2.補票辦理 │ 3.返回目錄 │\n");
printf("\t │_________________│________________│_____________│\n");
printf("\n\t 你可以有(1~3)種選擇:");
scanf("%d",&id);
}while(id>3||id<1);
return id;
}
void ticket_move() /*補票退票入口*/
{int k=1;
for(;;)
{
switch(menu4())
{case 1:ticket_out();break; /*補票處理*/
case 2:ticket_in();break; /*退票處理*/
default:k=0; save();save2();break; /*返回主目錄 */
}
if(k==0)
break;
}
}
void check_passenger()
{int k=1;
for(;;)
{
switch(menu3())
{case 1:customer_all();break; /*輸出全部航線的顧客訂票信息*/
case 2:customer_line();break; /*輸出某個航線的顧客訂票信息*/
default:k=0; break; /*返回主目錄 */
}
if(k==0)
break;
}
}
void main()
{char l;
cover();
while(1)
{system("cls");
printf("\n\t\t\t是否是第一次啟用本系統(Y/N):");
l=getchar();
if(l=='y'||l=='Y')
{ save();
save2();}
else
{read();
read2();
}
switch(menu())
{
case 1:air_manage();break; /*航線管理*/
case 2:ticket_manage();break; /*訂票辦理*/
case 3:ticket_move();break; /*退票補票辦理*/
case 4:check_passenger();break; /*乘客管理*/
case 5:if_exit(); /*退出系統 */
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -