最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng)

 更新時(shí)間:2019年12月27日 09:18:05   作者:h___q  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文)

    C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文)

    這篇文章主要介紹了C++萬(wàn)能庫(kù)頭文件在vs中的安裝步驟(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C語(yǔ)言中注釋與注意事項(xiàng)的深入講解

    C語(yǔ)言中注釋與注意事項(xiàng)的深入講解

    在編寫C語(yǔ)言源代碼時(shí),應(yīng)該多使用注釋,這樣有助于對(duì)代碼的理解,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中注釋與注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言大作業(yè)之圖書(shū)管理系統(tǒng)的實(shí)現(xiàn)詳程

    C語(yǔ)言大作業(yè)之圖書(shū)管理系統(tǒng)的實(shí)現(xiàn)詳程

    隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對(duì)圖書(shū)館的日常工作進(jìn)行管理勢(shì)在必行,趁著寒假時(shí)間手把手帶你用C語(yǔ)言實(shí)現(xiàn)一個(gè)圖書(shū)管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二)

    C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(80.有序數(shù)組中去除重復(fù)項(xiàng)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Recommended C Style and Coding Standards中文翻譯版

    Recommended C Style and Coding Standards中文翻譯版

    本文翻譯自Recommended C Style and Coding Standards(C語(yǔ)言編碼風(fēng)格和標(biāo)準(zhǔn)),需要的朋友可以參考下
    2014-04-04
  • C++ 互斥鎖原理以及實(shí)際使用介紹

    C++ 互斥鎖原理以及實(shí)際使用介紹

    本文主要聊一聊如何使用互斥鎖以及都有哪幾種方式實(shí)現(xiàn)互斥鎖。實(shí)現(xiàn)互斥,可以有以下幾種方式:互斥量(Mutex)、遞歸互斥量(Recursive Mutex)、讀寫鎖(Read-Write Lock)、條件變量(Condition Variable)。感興趣的同學(xué)可以參考一下
    2023-04-04
  • 輸出1000以內(nèi)的素?cái)?shù)的算法(實(shí)例代碼)

    輸出1000以內(nèi)的素?cái)?shù)的算法(實(shí)例代碼)

    本篇文章是對(duì)輸出1000以內(nèi)的素?cái)?shù)的算法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ LARGE_INTEGER解析與使用案例詳解

    C++ LARGE_INTEGER解析與使用案例詳解

    這篇文章主要介紹了C++ LARGE_INTEGER解析與使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言數(shù)組學(xué)習(xí)之特殊矩陣的壓縮存儲(chǔ)

    C語(yǔ)言數(shù)組學(xué)習(xí)之特殊矩陣的壓縮存儲(chǔ)

    矩陣在計(jì)算機(jī)圖形學(xué)、工程計(jì)算中都占有舉足輕重的地位,本文將討論如何將矩陣更有效地存儲(chǔ)在內(nèi)存中,并且能夠方便地提取矩陣中的元素。感興趣的同學(xué)可以了解一下
    2021-12-12
  • C++變量存儲(chǔ)的生命周期與作用域?qū)嵗a精講

    C++變量存儲(chǔ)的生命周期與作用域?qū)嵗a精講

    這篇文章主要介紹了C++變量存儲(chǔ)的生命周期與作用域,從創(chuàng)建到消亡的完整過(guò)程,例如人從出生到死亡的整個(gè)過(guò)程就是一個(gè)生命周期。本文將通過(guò)示例為大家詳細(xì)講講,感興趣的可以學(xué)習(xí)一下
    2022-10-10

最新評(píng)論

吉林省| 思南县| 阿瓦提县| 富顺县| 屯门区| 九龙坡区| 桐乡市| 龙口市| 宁蒗| 龙山县| 吕梁市| 西充县| 韶山市| 泸西县| 桓仁| 河西区| 永城市| 天峻县| 太和县| 肇东市| 河津市| 邯郸市| 武威市| 西充县| 青浦区| 南宫市| 长葛市| 荣昌县| 仙居县| 隆林| 鹿邑县| 科尔| 治县。| 灵寿县| 青铜峡市| 龙胜| 梨树县| 正阳县| 罗甸县| 洛川县| 岫岩|