C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng)
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
/*C語(yǔ)言實(shí)現(xiàn)簡(jiǎ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);//初始頁(yè)面
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ù)人員請(qǐng)按 1 ,旅客請(qǐng)按 0 ***********\n");
printf("請(qǐng)選擇:");
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("請(qǐng)選擇:");
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("請(qǐng)選擇:");
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);
//申請(qǐng)空間
*p = (Plane*)malloc(sizeof(Plane)*MAX_SIZE);
if (NULL == *p)
{
printf("開(kāi)辟空間失??!\n");
return;
}
(*p)->Buy_num = 0;
}
//輸入航班信息
void InputAirPlane(Plane* p)
{
if (_size <= MAX_SIZE)
{
printf("航班編號(hào):%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("請(qǐng)重新輸入!\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("航班編號(hào):%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("請(qǐng)輸入要?jiǎng)h除的航班編號(hào):");
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("開(kāi)辟空間失??!\n");
return;
}
}
//訂票
void BookAirPlane(Plane* p, Person* person, Person* person_noticket)
{
int i = -1;
CheckAirPlane(p);
printf("請(qǐng)選擇你要預(yù)定的航班編號(hào):");
scanf("%d", &i);
if ((p + i)->Max_num == (p + i)->Buy_num)
{
printf("對(duì)不起,該航班機(jī)票已售完!\n");
printf("請(qǐng)輸入您的姓名(我們將把您添加進(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("請(qǐng)輸入姓名:");
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("請(qǐng)輸入您的姓名:");
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("訂單編號(hào):%d\n", i);
printf("姓名:%s\n", (person + i)->person_name);
printf("航班編號(hào):%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("請(qǐng)輸入要改簽的訂單編號(hào):");
printf("\n");
scanf("%d", &i);
(p + i)->Buy_num--;
CheckAirPlane(p);
do
{
printf("請(qǐng)輸入要改簽的航班編號(hào):");
scanf("%d", &j);
if ((p + j)->Buy_num >= (p + j)->Max_num)
{
printf("該次航班已滿員,請(qǐng)重新選擇!\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("請(qǐng)輸入要?jiǎng)h除的訂單編號(hào):");
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("航班編號(hào):%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("開(kāi)辟空間失敗!\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("所需要航班編號(hào):%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í)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開(kāi)發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C語(yǔ)言編一個(gè)數(shù)字益智小游戲
欄 目:C語(yǔ)言
下一篇:C語(yǔ)言實(shí)現(xiàn)游戲VIP停車場(chǎng)管理系統(tǒng)
本文標(biāo)題:C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng)
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/5.html
您可能感興趣的文章
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用函數(shù)刪除字符
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)式函數(shù)庫(kù)
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)數(shù)怎么表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段函數(shù)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排序法函數(shù)
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段函數(shù)
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎么打出三角函數(shù)的值
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求階乘


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文


