#include<string.h>
#include<stdlib.h>
#define N 1000
struct customer
{char name[20];
char id[20];
int number;
}t[N];
struct air
{char hangban[10];
int num;
char start[20];
char over[20];
char time[10];
int piaoshu;
int piaojia;
double piaozhekou;
}s[N];
int i,j;
int m=0;
#define PRINT1 " %-10s %d %8s %11s %10s %8d %10d %12lf\n",s[i].hangban,s[i].num,s[i].start,s[i].over,s[i].time,s[i].piaoshu,s[i].piaojia,s[i].piaozhekou
#define PRINT2 "%12s %12s %8d %10d \n",t[i].id,s[i].hangban,s[i].num ,s[i].piaoshu
void shuru();
void shuchu();
void save();
void read();
void chaxun();
void shanchu();
void dingpiao();
void tuipiao();
void main()
{int j;
do
{printf(" *****************************************\n\n");
printf(" * 1.輸入航班信息 * \n\n"
" * 2.瀏覽航班信息 * \n\n"
" * 3.查詢功能 * \n\n"
" * 4.刪除航班信息 * \n\n"
" * 5.訂票功能 * \n\n"
" * 6.退票功能 * \n\n"
" * 0.退出 * \n\n");
printf(" ******************************************\n\n");
printf("請在0-6中選擇並以回車鍵結束:\n\n");
scanf("%d",&j);
switch(j)
{
case 1: shuru();
break;
case 2:shuchu();
break;
case 3:chaxun();
break;
case 4:shanchu();
break;
case 5:dingpiao();
break;
case 6:tuipiao();
break;
case 0:;
break;
}
}while(j!=0);
printf("謝謝使用,再見!\n");
}//主函數結束
void shuru()
{
int y;
for(i=0;i<N;i++)
{
printf("請輸入航班號:\n");
scanf("%s",s[i].hangban);
printf("請輸入飛機號:\n");
scanf("%d",&s[i].num);
flushall();
printf("請輸入起始站:\n");
scanf("%s",s[i].start);
printf("請輸入終點站:\n");
scanf("%s",s[i].over);
flushall();
printf("請輸入時間:\n");
scanf("%s",s[i].time);
printf("請輸入機票數:\n",m);
scanf("%d",&s[i].piaoshu);
printf("請輸入票價:\n",m);
scanf("%d",&s[i].piaojia);
printf("請輸入票價折扣:\n",m);
scanf("%lf",&s[i].piaozhekou);
m++;
printf("第%d個信息已經輸完是否繼續?按任意鍵繼續,按 0結束",m);
flushall();
scanf("%d",&y);
if(y==0)
{
save();
shuchu();
break;
}
}
}
void shuchu()
{
char w[10];
read();
printf(" 航班號 飛機號 起始站 終點站 時間 機票數 票價 票價折扣\n");
for(i=0;i<m;i++)
{
printf(PRINT1);
}
printf("請按任意鍵回車鍵結束返回上層菜單以:\n");
scanf("%s",w);
}
void save()
{
FILE *fp,*fp1;
if((fp=fopen("a.txt","wb"))==NULL)
{
printf("創建文件失敗!\n\n");
getchar();
return;
}
if((fp1=fopen("b.txt","wb"))==NULL)
{
printf("創建文件失敗!\n\n");
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&s[i],sizeof(struct air),1,fp)==0)
printf("向文件輸入數據失敗!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);
fclose(fp1);
}
void read()
{
FILE *fp,*fp1;
if((fp=fopen("a.txt","rb"))==NULL)
{
printf("出錯,請檢查文件是否存在,按任意鍵返回主菜單");
getchar();
}
if((fp1=fopen("b.txt","rb"))==NULL)
{
printf("創建文件失敗!\n\n");
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);
for(i=0;i<m;i++)
{
fread(&s[i],sizeof(air),1,fp);
}
fclose(fp);
}
void chaxun()
{
char name1[20];
char name2[20];
char c[10],no[20];
int n;
do
{
printf("請選擇查詢信息:\n\n");
printf("*******************************\n\n");
printf("* 1.查詢航線信息 * \n\n"
"* 2.查詢客戶信息 * \n\n"
"* 0.返回 *\n\n");
printf("*******************************\n\n");
printf("請在0-2中選擇:\n\n"
"按其他鍵並以回車鍵結束返回主菜單:\n\n");
scanf("%d",&n);
if(n==0)
break;
else
switch(n)
{case 1:
printf("請輸入起始站名稱:\n");
scanf("%s",name1);
printf("請輸入終點站名稱:\n");
scanf("%s",name2);
break;
case 2:
printf("請輸入客戶的證件號:\n");
scanf("%s",no);
break;
}
read();
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)
printf("\n查找航班信息成功!\n");
printf(" 航班號 飛機號 起始站 終點站 時間 機票數 票價 票價折扣\n");
printf(PRINT1);
break;
}
else
if(strcmp(t[i].id,no)==0)
{
printf("\n查找客戶信息成功!\n");
printf("證件號 航班號 飛機號 機票數");
printf(PRINT2);
break;
}
}
printf("沒有您需要的信息或查找完畢:\n\n"
"是否繼續查找?請鍵入y或n以回車鍵結束\n");
scanf("%s",c);
}while(strcmp(c,"y")==0);
}
void shanchu()
{
char name1[20];
char name2[20];
char c[10];
int no,n;
do
{
printf("請選擇刪除以方式回車鍵結束:\n\n");
printf("**********************************\n\n");
printf("* 1.按航班號刪除 *\n\n"
"* 2.按航線刪除 *\n\n"
"* 0.返回 *\n\n");
printf("********************************\n\n");
printf("請在0-2中選擇以回車鍵結束:\n");
scanf("%d",&n);
if(n==0)
break;
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);
read();
break;
case 2:
printf("請輸入起始站 名稱:\n");
scanf("%s",name1);
printf("請輸入終點站名稱:\n");
scanf("%s",name2);
read();
break;
}
for(i=0;i<m;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)
{
s[i]=s[m-1];
m--;
}
}
printf("查找完畢或沒有這個信息\n\n");
printf("是否繼續刪除\n");
printf("請鍵入y或n以回車鍵結束\n");
scanf("%s",c);
save();
if(!strcmp(c,"y"))
printf("請按任意鍵以回車鍵結束返回上層菜單:\n");
break;
}while(n!=1&&n!=2&&n!=0);
}
void dingpiao()
{int n;
char a[10],b[10];
do
{
printf("請輸入客戶證件號:\n");
scanf("%d",&t[i].id);
printf("請輸入航班號:\n");
scanf("%s",b);
printf("請輸入飛機號:\n");
scanf("%d",&s[i].num);
flushall();
m++;
printf("請輸入您要訂的機票數:\n");
scanf("%d",&n);
if(strcmp(s[i].hangban,b)!=0)
{
printf("請輸入有效的機票數!\n");
break;
}
else
if(s[i].piaoshu!=0&&s[i].piaoshu>=n)
{
s[i].piaoshu=s[i].piaoshu-n;
save();
printf("訂票成功,按任意鍵返回主菜單!\n\n");
getchar();
break;
}
printf("是否繼續? 請輸入y或n以回車鍵結束:\n");
scanf("%s",a);
}while(!strcmp(a,"y"));
}
void tuipiao()
{
int n;
char a[10],b[20];
do
{printf("請輸入客戶證件號:\n");
scanf("%s",b);
printf("請輸入您要退的機票數目:\n");
scanf("%d",&n);
if(strcmp(b,t[i].id)==0)
{s[i].piaoshu=s[i].piaoshu+n;
save();
printf("退票成功!\n\n");}
else {printf("退票失敗!\n");
printf("是否繼續? 請鍵入y或n以回車鍵結束:\n\n");
scanf("%s",a);
}while(!strcmp(a,"y"));
getchar();
}