C語言實(shí)現(xiàn)簡單航班管理系統(tǒng)
更新時(shí)間:2019年12月27日 09:18:05 作者:h___q
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)航班管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
/*C語言實(shí)現(xiàn)簡單的航班管理系統(tǒng)(單個(gè)文件)*/ #include <stdio.h> #include <string.h> #include<stdlib.h> #include<assert.h> #define PERSON_MAXNUM 100 #define PERSONNOTICKET_MAX 10 #define MAX_SIZE 10 int _size = 0; int _person_size = 0; int _personnoticket_size = 0; //定義航班信息結(jié)構(gòu)體 typedef struct plane { char ID[10]; char Start_Place[10]; char End_Place[10]; float price; int Buy_num; int Max_num; char time[20]; }Plane; //定義乘客信息結(jié)構(gòu)體 typedef struct Person { int AirPlane_Num; char person_name[20]; }Person; void home(Plane* p,Person* person, Person* person_noticket);//初始頁面 void InitAirPlane(Plane** p);//初始化航班信息內(nèi)存 void InputAirPlane(Plane* p);//輸入航班信息 void CheckAirPlane(Plane* p);//查看航班信息 void DelAirPlane(Plane* p);//刪除航班信息 void CheckAirPlaneOrder(Plane* p,Person* person);//查看航班訂單 void PrintPerson(Plane* p, Person* person, int i);//打印航班乘客 void InitPerson(Person** person);//初始化乘客信息內(nèi)存 void BookAirPlane(Plane* p, Person* person,Person* person_noticket);//預(yù)定航班 int CheckPerson(Plane* p, Person* person);//查看乘客訂單信息 void ChangeAirPlane(Plane* p, Person* person);//改簽 void ReturnTicket(Plane* p, Person* person);//退票 void PrintPerson(Plane* p, Person* person, int i); void CheckPersonNoTicket(Plane* p, Person* person_noticket);//查看候補(bǔ)名單 /////////////////////////////////////// void home(Plane* p, Person* person, Person* person_noticket) { int a, i, j; printf("\n*****************************歡迎進(jìn)入飛機(jī)票務(wù)系統(tǒng)*****************************\n"); printf("\n*************您好,現(xiàn)在要確認(rèn)您的身份!票務(wù)人員請按 1 ,旅客請按 0 ***********\n"); printf("請選擇:"); scanf("%d", &a); //航班管理人員操作 if (a == 1) do{ printf("\n****************** 1.輸入航班信息 *******************\n"); printf("\n****************** 2.刪除航班信息 *******************\n"); printf("\n****************** 3.瀏覽航班信息 *******************\n"); printf("\n****************** 4.瀏覽目前已訂票信息 *************\n"); printf("\n****************** 5.查看候補(bǔ)名單 *******************\n"); printf("\n****************** 0.退出 ********************\n"); printf("請選擇:"); scanf("%d", &i); switch (i) { case 0: break; case 1:InputAirPlane(p);break; case 2:DelAirPlane(p);break; case 3:CheckAirPlane(p);break; case 4:CheckAirPlaneOrder(p, person); break; case 5:CheckPersonNoTicket(p, person_noticket); break; default: printf("輸入錯(cuò)誤!\n"); break; } } while (i != 0); //乘客操作 if (a == 0) do{ printf("\n*********************** 1.訂票 **********************\n"); printf("\n*********************** 2.改簽 **********************\n"); printf("\n*********************** 3.退票 **********************\n"); printf("\n*********************** 4.瀏覽航班信息 **************\n"); printf("\n*********************** 5.查詢個(gè)人訂票信息 **********\n"); printf("\n*********************** 0.退出 **********************\n"); printf("請選擇:"); scanf("%d", &j); switch (j) { case 0:break; case 1:BookAirPlane(p, person,person_noticket);break; case 2:ChangeAirPlane(p, person);break; case 3:ReturnTicket(p, person);break; case 4:CheckAirPlane(p);break; case 5:CheckPerson(p, person); break; } } while (j != 0); } //初始化 void InitAirPlane(Plane** p) { assert(p); //申請空間 *p = (Plane*)malloc(sizeof(Plane)*MAX_SIZE); if (NULL == *p) { printf("開辟空間失敗!\n"); return; } (*p)->Buy_num = 0; } //輸入航班信息 void InputAirPlane(Plane* p) { if (_size <= MAX_SIZE) { printf("航班編號:%d\n", _size); printf("輸入航班ID:"); scanf("%s", (p+_size)->ID); printf("輸入始發(fā)地:"); scanf("%s", (p + _size)->Start_Place); printf("輸入目的地:"); scanf("%s", (p + _size)->End_Place); printf("輸入航班起飛時(shí)間:"); scanf("%s", (p + _size)->time); printf("輸入價(jià)格:"); scanf("%f", &(p + _size)->price); printf("輸入航班可乘坐最大人數(shù):"); scanf("%d", &(p + _size)->Max_num); do { printf("目前賣出機(jī)票數(shù)量:"); scanf("%d", &(p + _size)->Buy_num); if ((p + _size)->Buy_num > (p + _size)->Max_num) { printf("輸入已賣出機(jī)票數(shù)量錯(cuò)誤!\n"); printf("請重新輸入!\n\n"); } } while ((p + _size)->Buy_num > (p + _size)->Max_num); _size++; printf("添加航班信息完成!\n\n"); } else { printf("內(nèi)存已滿!\n"); return; } } //瀏覽航班信息 void CheckAirPlane(Plane* p) { int i = 0; printf("目前在售的航班信息:\n\n"); for (i = 0; i < _size; i++) { printf("航班編號:%d\n", i); printf("ID:%s\n", (p+i)->ID); printf("始發(fā)地:%s\n", (p + i)->Start_Place); printf("目的地:%s\n", (p + i)->End_Place); printf("起飛時(shí)間:%s\n", (p + i)->time); printf("機(jī)票價(jià)格:%2f\n", (p + i)->price); printf("剩余機(jī)票:%d\n", ((p + i)->Max_num - (p + i)->Buy_num) ); printf("\n"); } } //刪除航班信息 void DelAirPlane(Plane* p) { int j = 0; int i = -1; assert(p); printf("請輸入要?jiǎng)h除的航班編號:"); scanf("%d", &i); for (j = i; j < _size; j++) { strcpy((p + j)->ID, (p + j + 1)->ID); strcpy((p + j)->Start_Place, (p + j + 1)->Start_Place); strcpy((p + j)->End_Place, (p + j)->End_Place); strcpy((p + j)->time, (p + j + 1)->time); (p + j)->price = (p + j + 1)->price; (p + j)->Max_num = (p + j + 1)->Max_num; (p + j)->Buy_num = (p + j + 1)->Buy_num; } _size--; } //初始化訂票信息 void InitPerson(Person** person) { assert(person); *person = (Person*)malloc(sizeof(Person)*PERSON_MAXNUM); if (NULL == *person) { printf("開辟空間失敗!\n"); return; } } //訂票 void BookAirPlane(Plane* p, Person* person, Person* person_noticket) { int i = -1; CheckAirPlane(p); printf("請選擇你要預(yù)定的航班編號:"); scanf("%d", &i); if ((p + i)->Max_num == (p + i)->Buy_num) { printf("對不起,該航班機(jī)票已售完!\n"); printf("請輸入您的姓名(我們將把您添加進(jìn)候補(bǔ)名單):"); scanf("%s", (person_noticket+_personnoticket_size)->person_name); (person_noticket + _personnoticket_size)->AirPlane_Num = i; _personnoticket_size++; printf("添加候補(bǔ)名單成功!\n\n"); return; } else { if (_person_size > PERSON_MAXNUM) { printf("存儲(chǔ)容量不足!\n"); return; } printf("請輸入姓名:"); scanf("%s", (person + _person_size)->person_name); (person + _person_size)->AirPlane_Num = i; _person_size++; (p + i)->Buy_num++; printf("預(yù)定成功!\n"); } } //查看個(gè)人訂票信息 int CheckPerson(Plane* p, Person* person) { int flag = 0; int i = 0; char _name[20] = { 0 }; printf("請輸入您的姓名:"); scanf("%s", &_name); printf("您的個(gè)人訂票信息:\n\n"); for (i = 0; i < _person_size; i++) { if (0 == strcmp(_name, (person + i)->person_name)) { flag = 1; printf("訂單編號:%d\n", i); printf("姓名:%s\n", (person + i)->person_name); printf("航班編號:%d\n", (person + i)->AirPlane_Num); printf("航班ID:%s\n", (p + (person + i)->AirPlane_Num)->ID); printf("始發(fā)地:%s\n", (p + (person + i)->AirPlane_Num)->Start_Place); printf("目的地:%s\n", (p + (person + i)->AirPlane_Num)->End_Place); printf("起飛時(shí)間:%s\n", (p + (person + i)->AirPlane_Num)->time); printf("機(jī)票價(jià)格:%f\n", (p + (person + i)->AirPlane_Num)->price); printf("\n"); } } if (0 == flag) { printf("未找到該乘客訂票信息!\n"); return 0; } return 1; } //改簽 void ChangeAirPlane(Plane* p, Person* person) { int i = -1; int j = -1; if (0 == CheckPerson(p, person)) { return; } printf("請輸入要改簽的訂單編號:"); printf("\n"); scanf("%d", &i); (p + i)->Buy_num--; CheckAirPlane(p); do { printf("請輸入要改簽的航班編號:"); scanf("%d", &j); if ((p + j)->Buy_num >= (p + j)->Max_num) { printf("該次航班已滿員,請重新選擇!\n"); } } while ((p + j)->Buy_num >= (p + j)->Max_num); (person + i)->AirPlane_Num = j; (p + j)->Buy_num++; printf("改簽成功!\n\n"); } //刪除訂單 void ReturnTicket(Plane* p, Person* person) { int i = -1; int j = 0; CheckPerson(p, person); printf("請輸入要?jiǎng)h除的訂單編號:"); scanf("%d", &i); for (j = i; j < _person_size; j++) { (person + j)->AirPlane_Num = (person + j + 1)->AirPlane_Num; strcpy((person + j)->person_name, (person + j + 1)->person_name); } printf("退票成功!\n"); } //查看目前訂票信息 void CheckAirPlaneOrder(Plane* p, Person* person) { int i = -1; for (i = 0; i < _size; i++) { printf("航班編號:%d\n", i); printf("ID:%s\n", (p + i)->ID); printf("始發(fā)地:%s\n", (p + i)->Start_Place); printf("目的地:%s\n", (p + i)->End_Place); printf("起飛時(shí)間:%s\n", (p + i)->time); printf("機(jī)票價(jià)格:%2f\n", (p + i)->price); printf("剩余機(jī)票:%d\n", ((p + i)->Max_num - (p + i)->Buy_num)); printf("買票人信息:"); PrintPerson(p,person, i); } } void PrintPerson(Plane* p, Person* person,int i) { int ticket_num = 0; int j = 0; for (j = 0; j < _person_size; j++) { if ((person + j)->AirPlane_Num == i) { printf("%s ,", (person + j)->person_name); ticket_num++; } } printf("\n\n"); } //候補(bǔ)名單初始化 void InitPersonNoTicket(Person** person_noticket) { assert(person_noticket); *person_noticket = (Person*)malloc(sizeof(Person)*PERSONNOTICKET_MAX); if (NULL == *person_noticket) { printf("開辟空間失??!\n"); return; } } //查看候補(bǔ)名單 void CheckPersonNoTicket(Plane* p, Person* person_noticket) { int i = 0; printf("候補(bǔ)名單:\n\n"); if (0 == _personnoticket_size) { printf("候補(bǔ)名單為空!\n\n"); return; } for (i = 0; i < _personnoticket_size; i++) { printf("姓名:%s\n", (person_noticket + i)->person_name); printf("所需要航班編號:%d\n", (person_noticket + i)->AirPlane_Num); printf("航班ID:%s\n", (p + ((person_noticket + i)->AirPlane_Num))->ID); printf("始發(fā)地:%s\n", ((p + ((person_noticket + i)->AirPlane_Num))->Start_Place)); printf("目的地:%s\n", (p + ((person_noticket + i)->AirPlane_Num))->End_Place); } } //主函數(shù) int main() { Plane* p=NULL; Person* person=NULL; Person* person_noticket = NULL; InitPersonNoTicket(&person_noticket); InitAirPlane(&p); InitPerson(&person); while (1) { home(p, person, person_noticket); } system("pause"); return 0; }
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
C++編程中的const關(guān)鍵字常見用法總結(jié)
這篇文章主要介紹了C++編程中的const關(guān)鍵字常見用法總結(jié),const關(guān)鍵字的使用是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-11-11一文帶你了解C語言中static關(guān)鍵字的3個(gè)作用
static這個(gè)關(guān)鍵字是“靜態(tài)”的意思,在C語言里主要有3個(gè)作用。這篇文章主要通過一些簡單示例為大家詳細(xì)講講這3個(gè)左右,感興趣的小伙伴可以了解一下2023-04-04Qt編寫自定義控件實(shí)現(xiàn)抽獎(jiǎng)轉(zhuǎn)盤
這篇文章主要為大家詳細(xì)介紹了Qt編寫自定義控件實(shí)現(xiàn)抽獎(jiǎng)轉(zhuǎn)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06