?? flightmanagement.txt
字號:
repeat3:
scanf("%d",&c);
if(c<1||c>2)
{
printf("輸入有誤!請重輸:\n"); /*輸入正誤判斷*/
goto repeat3;
}
switch(c)
{
case(1):
p1=p2=head;
goto repeat;
break;
case(2):break;
}
}
break;
case(2):
printf("你真的要刪除全部記錄?"); /*刪除全部記錄*/
printf("請選擇:\n1.確認\t2.取消\n:\n");
repeat2:
scanf("%d",&b);
if(b<1||b>2)
{
printf("輸入有誤!請重輸:\n"); /*輸入正誤判斷*/
goto repeat2;
}
switch(b)
{
case(1):
while(p1) /**/
{
p2=p1->next; /*記錄下一結點*/
free(p1); /*釋放*/
p1=p2;
}
head=NULL;
printf("刪除成功!\n");
case(2):
break;
}
break;
}
}
return(head);
}
void menu2() /*菜單顯示函數*/
{
printf("\n1.航線\n");
printf("2.航班號\n");
printf("3.航班日期\n");
printf("4.機型\n");
printf("5.所屬公司\n");
printf("6.取消\n");
printf("請您選擇你需要修改的信息編號<1~5>:\n");
}
/****************更新記錄函數************************/
void change(struct Address *head) /*信息更改改函數*/
{
struct Address *p;
p=head;
int i;
char chline[20];
if(head==NULL) /*系統信息有無判斷*/
{
system("cls");
printf("\n對不起,系統中暫時沒有可更改的信息!\n");
}
else
{
system("cls");
start:
printf("\n請輸入您要更改信息的航線:\n");
printf("如:bjsh\n");
scanf("%s",chline);
while(strcmp(chline,p->Airline)!=0&&p->next!=0)
p=p->next;
if(strcmp(chline,p->Airline)==0) /*尋找系統中存在的要更改的結點*/
{
system("cls");
printf("您所需更改的航線信息為:\n");
printf("航線\t航號班\t航班日期\t機型\t所屬公司\n\n");
printf("%s\t%s\t%ld\t%d\t%s\n",p->Airline,p->Number,p->Date,p->Plane,p->Company);
menu2();
repeat2:
scanf("%d",&i);
if(i<1||i>6)
{
printf("輸入錯誤!請重輸:\n");
goto repeat2;
}
switch(i)
{
case(1):
system("cls");
printf("請輸入正確航線的信息:\n"); /*修改航線信息*/
scanf("%s",p->Airline);
system("cls");
printf("*航線信息修改成功!\n");
break;
case(2):
system("cls");
printf("請輸入正確航班號的信息:\n"); /*修改航班號信息*/
scanf("%s",p->Number);
system("cls");
printf("*航線信息修改成功!\n");
break;
case(3):
system("cls");
printf("請輸入正確航班日期的信息:\n"); /*修改航班日期信息*/
scanf("%ld",&p->Date);
system("cls");
printf("*航線信息修改成功!\n");
break;
case(4):
system("cls");
printf("請輸入正確機型的信息:\n"); /*修改機型信息*/
scanf("%d",&p->Plane);
system("cls");
printf("*航線信息修改成功!\n");
break;
case(5):
system("cls");
printf("請輸入正確所屬公司的信息:\n"); /*修改所屬公司信息*/
scanf("%s",p->Company);
system("cls");
printf("*航線信息修改成功!\n");
break;
case(6):
system("cls");
break;
}
}
else
{
system("cls");
printf("你輸入的信息有誤!請重試!\n");
printf("~ ~ ~ ~ ~ ~ ~");
p=head;
goto start;
}
}
}
/******************信息保存函數**********************/
void save(struct Address * head) /*保存信息函數*/
{
struct Address *p;
p=head;
FILE *fp;
if(head!=NULL)
{
if((fp=fopen("flight.txt","wb"))==NULL) /*文件打開判斷*/
{
printf("文件打開失敗!\n");
return; /*退出函數*/
}
while(p)
{
if(fwrite(p,sizeof(struct Address),1,fp)!=1) /*將鏈表寫入文件*/
printf("file write error!\n");
p=p->next;
}
fclose(fp);
}
else
{
system("cls");
printf("對不起,系統中暫時沒有可保存的信息!");
}
fclose(fp); /*關閉文件*/
}
/******************文件打開函數**********************/
struct Address *open()
{
struct Address *p1,*p2,*head=NULL; /*定義變量*/
FILE *fp;
if((fp=fopen("flight.txt","rb"))==NULL)
{
printf("文件打開失敗!\n"); /*如不能打開,則結束程序*/
exit(0);
}
p1=(struct Address *)malloc(sizeof(struct Address));/*開辟空間*/
if(!p1) /*開辟空間與否判斷*/
{
printf("內存溢出!Out of memory!\n");
return(head);
}
head=p1;
while(!feof(fp)) /*判斷文件是否結束*/
{
if(fread(p1,sizeof(struct Address),1,fp)!=1) break; /*如果沒讀到數據,跳出循環*/
p1->next=(struct Address *)malloc(sizeof(struct Address)); /*為下一個結點開辟空間*/
if(!p1->next)
{
printf("Out of memory!\n");
return (head); /*節點開辟失敗,返回head值*/
}
p2=p1; /*使p2指向剛才p1指向的結點*/
p1=p1->next; /*指針后移,新讀入數據鏈到當前表尾*/
}
p2->next=NULL; /*最后一個結點的后繼指針為空*/
fclose(fp);
system("cls");
printf(" ~*********************\n");
printf(" ---讀取數據成功!----\n");
printf(" ~*********************\n");
return(head);
}
void illuminate() /*定義解釋航線命名函數*/
{
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n有關航線命名:\n如:bjsh 表示 \t始發地:北京\t目的地:上海\n");
printf("********************************************");
printf("\n有關本系統用到的地點:\nbj\t北京\tsh\t上海\tgz\t廣州\nbl\t柏林\tny\t紐約\tld\t倫敦\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n********************************************\n");
printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n有關本系統用到的航空公司:\nCA\t國航\t\t UA\t美聯航\nCZ\t南航\t\t LH\t漢莎\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
void mainmenu() /*主菜單函數*/
{
printf("\n\t************~~~~~~~~~~~~~~~~~************");
printf("\n\n\t*\t歡迎您使用航班信息管理系統 !\t*");
printf("\n\n\t************~~~~~~~~~~~~~~~~~************\n\n");
printf("菜單\n");
printf("1.添加記錄\n");
printf("2.顯示記錄\n");
printf("3.分類查詢\n");
printf("4.航班號的排序\n");
printf("5.刪除記錄\n");
printf("6.更新記錄\n");
printf("7.保存記錄\n");
printf("8.讀入記錄\n");
printf("9.說明\n");
printf("10.退出\n");
printf("請輸入菜單選項(1~10):\n");
}
void main() /*主函數*/
{
struct Address *head=NULL;
start: /*主菜單位置標志*/
int i;
mainmenu(); /*輸入值位置標志*/
repeat2:
scanf("%d",&i);
if(i<1||i>10)
{
printf("輸入錯誤!請重輸:\n");
goto repeat2;
}
switch(i)
{
case(1): /*添加記錄*/
system("cls");
printf("請輸入:\n如:\n航線\t航班號\t航班日期\t機型\t所屬公司(全部輸入0時輸入結束)\n");
printf("bjsh\tCA231\t20080808\t737\tCU\n");
printf("0\t0\t0\t\t0\t0\n");
printf("*-**--***---****----*****-----******------*******-------********-----~");
printf("\n\n請輸入:\n航線\t航班號\t航班日期\t機型\t所屬公司(全部輸入0時輸入結束)\n");
head=creat(head);
getchar();
printf("\n*****記錄添加完成!*****\n\n");
printf("*****按任意鍵返回主菜單!\n");
getchar();
system("cls");
goto start;
break;
case(2): /*顯示所有記錄*/
system("cls");
if(head==NULL)
printf("\n對不起,系統暫時沒有您需要的信息!\n");
else
print(head);
getchar();
printf("* * * * * * *\n");
printf("----按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
break;
case(3): /*實現分類查詢記錄*/
system("cls");
if(head==NULL)
printf("\n對不起,系統暫時沒有您需要的信息!\n");
else
inqurement(head);
getchar();
printf("* * * * * * *\n");
printf("----按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
break;
case(4): /*航班號排序后顯示*/
system("cls");
if(head==NULL)
printf("\n對不起,系統暫時沒有您需要的信息!\n");
else
{
printf("************\n");
printf("*排序后的記錄:\n\n");
print(list(head));
}
getchar();
printf("* * * * * * *\n");
printf("----按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
break;
case(5): /*實現記錄的刪除*/
head=dele(head);
getchar();
printf("* * * * * * *\n");
printf("----按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
break;
case(6): /*實現對已存在記錄的信息更改*/
change(head);
getchar();
printf("* * * * * * *\n");
printf("----按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
break;
case(7):
if(head==NULL)
{
system("cls");
printf("\n對不起,系統暫時沒有您可以保存的信息!\n");
getchar();
}
else
{
save(head); /*將記錄保存在文件中*/
getchar();
system("cls");
printf("---保存成功!\n");
}
printf("* * * * * * *\n");
printf("---按回車鍵返回主菜單!~\n");
getchar();
system("cls");
goto start;
case(8): /*從文件讀入記錄*/
head=open();
getchar();
printf("\n-----按回車鍵返回主菜單!\n");
getchar();
system("cls");
goto start;
break;
case(9):
system("cls");
illuminate();
getchar();
printf("\n\n---按回車鍵返回主菜單!\n");
getchar();
system("cls");
goto start;
break;
case(10): /*退出系統*/
system("cls");
free(head); /* 釋放內存*/
printf("\n~~~~~~~~~~~~~~~~~~\n");
printf("*感謝您使用本系統!\n******************\n* 再見!*\n\n");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -