?? main.h
字號:
#include<stdio.h> /*標準輸入、輸出頭文件*/
#include<string.h> /*包含字符串函數處理頭文件*/
#include<stdlib.h> /*包含動態存儲與釋放函數頭文件*/
#define N 1000
struct air /*定義結構體數組*/
/**/{
int num;
char start[20];
char over[20];
char time[10];
int count;
} s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count /*定義輸出格式*/
void input(); /*輸入航班信息*/
void print(); /*輸出航班信息*/
void save(); /*保存航班信息 */
void read(); /*讀取航班信息*/
void search(); /*查找航班信息*/
void shanchu(); /*刪除航班信息*/
void dingpiao(); /*訂票信息*/
void tuipiao(); /*退票信息*/
void xiugai(); /*修改信息*/
void main()
{
return;
int j;
printf(" ★---您好,歡迎進入中國民航管理系統!---★\n");
printf("================================================================================\n");
do
{
printf(" -------- ☆ 1.輸入航班信息 ☆-------- \n\n"
" -------- ☆ 2.瀏覽航班信息 ☆-------- \n\n"
" -------- ☆ 3.修改航班信息 ☆-------- \n\n"
" -------- ☆ 4.查找航班信息 ☆-------- \n\n"
" -------- ☆ 5.刪除航班信息 ☆-------- \n\n"
" -------- ☆ 6.訂票信息 ☆-------- \n\n"
" -------- ☆ 7.退票信息 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("請在0-7中選擇以回車鍵結束:\n\n");
scanf("%d",&j);
switch(j)
{
case 1:input();/*調用輸入模塊*/
break;
case 2:print();/*調用打印模塊*/
break;
case 3:xiugai();/*調用修改模塊*/
break;
case 4:search();/*調用查找模塊*/
break;
case 5:shanchu(); /*調用刪除模塊*/
break;
case 6:dingpiao();/*調用訂票模塊*/
break;
case 7:tuipiao();/*調用退票模塊*/
break;
case 0:;
break;
}
}while(j!=0); /*判斷結束*/
printf("謝謝使用,再見!\n");
}/*主函數結束*/
void input() /*打印模塊程序*/
{
char f[]="202"; /*設置密碼*/
int y;
printf("請輸入密碼并以回車鍵結束:\n\n");
scanf("%s",f); /*讀取密碼*/
if(strcmp(f,"202")==0)
{
printf("請依次輸入航班信息(機票數位0結束輸入):\n\n"
"完成輸入信息請鍵入w以回車鍵結束\n\n"); /*打印提示信息*/
printf("--------------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{
printf("請輸入航班號:\n");
scanf("%d",&s[i].num); /*讀取航班號*/
printf("請輸入起始站:\n");
scanf("%s",s[i].start);/*讀取起始站*/
printf("請輸入終點站:\n");
scanf("%s",s[i].over);/*讀取終點站*/
printf("請輸入時間:\n");
scanf("%s",s[i].time);/*讀取運行時間*/
printf("請輸入機票數(機票數為0結束輸入):\n",m);
scanf("%d",&s[i].count);/*讀取機票數*/
m++;
printf("第%d個信息已經輸完是否繼續?按任意鍵繼續,按 0結束",m);
scanf("%d",&y);
if(y==0)
{
save();/*將結構體信息存盤*/
print();/*輸出輸入的航班信息*/
break;
}
}
}
else
printf("輸入密碼錯誤!請檢查您的密碼是否正確!謝謝!再見!\n\n");
}
void save()/*保存模塊程序*/
{
FILE *fp,*fp1;/*定義文件指針*/
if((fp=fopen("chen.dat","wb"))==NULL)/*打開文件并判斷是否出錯 */
{
printf("創建文件失敗!\n\n");/*打印出錯提示*/
getchar();
return;
}
if((fp1=fopen("hao.dat","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("chen.dat","rb"))==NULL)/*打開文件,并判斷是否出錯*/
{
printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");/*打印出錯提示*/
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)/*打開文件并判斷是否出錯 */
{
printf("創建文件失敗!\n\n");/*打印出錯提示*/
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1); /*關閉文件*/
for(i=0;i<m;i++)
{
fread(&s[i],sizeof(struct air),1,fp); /*從文件中讀取信息*/
}
fclose(fp);/*關閉文件*/
}
void print()/*打印模塊*/
{
char w[10];
read();/*調用讀取文件函數*/
printf("航班號 起始站 終點站 運行時間 機票數\n");
for(i=0;i<m;i++)
{
printf(PRINT);/*打印信息*/
}
printf("請按任意鍵回車鍵結束返回上層菜單以:\n");
scanf("%s",w);
}
void search()/*查詢模塊*/
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("請選擇查找方式:\n\n");/*打印查詢方式菜單*/
printf("1.按航班號查找\n\n"
"2.按終點站查找\n\n"
"3.按航線查找\n\n"
"0.返回\n\n");
printf("請在0-3中選擇:\n\n"
"按其他鍵以回車鍵結束返回主菜單:\n\n");
scanf("%d",&n);/*讀取查找方式*/
if(n==0)
break;
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);/*航班號*/
break;
case 2:
printf("請輸入終點站名稱:\n");
scanf("%s",name2);/*讀取終點站*/
break;
case 3:
printf("請輸入起始站名稱:\n");
scanf("%s",name1);/*讀取起始站*/
printf("請輸入終點站名稱:\n");
scanf("%s",name2);/*終點站*/
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(PRINT);/*打印信息*/
break;
}
if(s[i].num==no)/*按航班號判斷輸出條件*/
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 運行時間 機票數\n");
printf(PRINT);/*打印信息*/
break;
}
}
no=0;/*將航班號賦值為0*/
printf("沒有您需要的信息或查找完畢:\n\n"
"是否繼續查找?請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);/*判斷結束*/
}
void shanchu()/*刪除模塊*/
{
char name1[20];
char name2[20];
char ii[10];
char f[]="202"; /*設置密碼*/
int no,n;
printf("請輸入密碼并以回車鍵結束:\n\n");
scanf("%s",f);/*讀取密碼*/
if(strcmp(f,"202")==0) /*判斷密碼是否正確*/
{
do
{
printf("請選擇刪除以方式回車鍵結束:\n\n");/*打印刪除方式菜單*/
printf("*1.按航班號刪除\n\n"
"*2.按航線刪除\n\n"
"*0.返回\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("請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii); /*讀取是否繼續信息*/
save(); /*調用讀取函數*/
if(!strcmp(ii,"yes")) /*判斷是否繼續刪除*/
printf("請按任意鍵以回車鍵結束返回上層菜單:\n");
break;
}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); /*判斷結束*/
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
void dingpiao()/*訂票模塊*/
{
int n;
char a[10];
do
{
search();/*調用查詢模塊*/
printf("請輸入您要訂的機票數以回車鍵結束:\n");
scanf("%d",&n);/*讀取所訂機票數*/
if(n<0)
{
printf("請輸入有效的機票數!\n");/*判斷機票數是否出錯*/
break;
}
if(s[i].count!=0&&s[i].count>=n)/*判斷是否出錯*/
{
s[i].count=s[i].count-n;
save();/*調用保存函數*/
printf("訂票成功!\n\n");
break;
}
if(s[i].count<n)/*判斷是否出錯*/
{
printf("請輸入有效的機票數:\n");
break;
}
printf("是否繼續? 請輸入yes或no以回車鍵結束:\n");/*判斷是否繼續訂票*/
scanf("%s",a);
}while(!strcmp(a,"yes"));/*判斷結束*/
}
void tuipiao()/*退票模塊*/
{
int n;
char a[10];
do
{
search();/*調用查詢模塊*/
printf("請輸入您要退的機票數目:\n");
scanf("%d",&n);/*輸入所退票數*/
if(n<0) /*判斷票數是否有效*/
printf("請輸入有效的機票數!\n");
s[i].count=s[i].count+n;
save(); /*調用保存模塊*/
printf("退票成功!\n\n");
printf("是否繼續? 請鍵入yes或no以回車鍵結束:\n\n");/*判斷是否繼續退票*/
scanf("%s",a);
}while(!strcmp(a,"yes"));/*判斷并跳出循環*/
getchar();
}
void xiugai() /*修改模塊*/
{
struct xiu /*定義結構體 */
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
} x[1];
char j[10];
char f[]="202";/*設置密碼*/
int n;
printf("請輸入密碼并以回車鍵結束:\n\n");
scanf("%s",f);/*讀取密碼*/
if(strcmp(f,"202")==0)/*判斷是否出錯*/
{
read();/*調用讀取模塊*/
do
{
printf( "請選擇修改方式:\n\n"
"*1,按航班號修改:\n\n"
"*2,按航線修改: \n\n");
printf("請在1---2中修改以回車鍵結束:\n\n");
scanf("%d",&n);/*讀取修改方式*/
switch(n)
{
case 1:printf("請輸入航班號:\n");
scanf("%d",&x[0].no);/*讀取航班號*/
break;
case 2:printf("請輸入起始站:\n");
scanf("%s",x[0].name1);/*讀取起始站*/
printf("請輸入終點站:\n");
scanf("%s",x[0].name2);/*讀取終點站*/
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)/*判斷輸出條件*/
{
printf("航班號 起始站 終點站 運行時間 機票數\n");
printf(PRINT);
break;}
if(s[i].num==x[0].no)/*判斷輸出條件*/
{
printf("航班號 起始站 終點站 運行時間 機票數\n");
printf(PRINT);
break;
}
}
x[0].no=0; /* 將結構體中的航班號置為零*/
printf("請輸入新航班號、起始站、終點站、運行時間(星期幾)、機票數:\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);/*定義輸入格式*/
s[i].num=x[0].no;/*替換航班號*/
strcpy(s[i].start,x[0].name1);/*替換其始站*/
strcpy(s[i].over,x[0].name2);/*替換終點站*/
strcpy(s[i].time,x[0].time);/*替換運行時間*/
s[i].count=x[0].count;/*替換機票數*/
save();/*調用保存模塊*/
printf("是否繼續?請鍵入yes或no以回車鍵結束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); /*判斷結束*/
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -