最全—航班信息管理系統【數組版】

航班管理系統(數組版)

航班信息查詢系統
1、 導言 用所學過的 C 語言,以及鏈表相關知識,實現一個航班信息的錄入、查詢、顯示、 排序等功能。航班信息
節點設計,請參見附錄。
2、 基本功能: 使用鏈表或數組,實現以下功能:
1) 錄入(可以直接從鍵盤錄入,也可通過文件存儲)
2) 顯示所有航班信息
3) 按照查詢要求(比如日期、地點等),列出相關的航班信息。
4) 完善該項目功能。
5) 對錄入的信息進行排序(比如按起飛時間排序、按起飛地址排序等)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_FLIGHTS 100 // 定義最大航班數量static int flight_num = 0; // 當前航班的數量typedef struct airplane
{char number[10];     // 航班號char Start_City[20]; // 起飛城市char End_City[20];   // 到達城市// char type;              //機型char Start_Time[20]; // 起飛時間char End_Time[20];   // 到達時間float Price;         // 機票價格float Discount;      // 機票折扣int Tickets;         // 機票剩余數量
} Plane;Plane flights[MAX_FLIGHTS]; // 存儲航班信息的數組void Menu();           // 菜單
void addFlight();      // 添加
void findFlight();     // 查詢
void displayFlights(); // 顯示所有
void modifyFlight();   // 修改
void deleteFlight();   // 刪除
void Sort();           // 排序/*功能:  顯示菜單信息參數:  無返回值:無*/
void Menu()
{int choice;while (1){printf("        航班管理系統        \n");printf("----------------------------\n");printf("|1、添加航班信息            |\n");printf("|2、顯示所有航班信息        |\n");printf("|3、查詢航班信息            |\n");printf("|4、修改航班信息            |\n");printf("|5、刪除航班信息            |\n");printf("|6、排序                    |\n");printf("|0、退出                    |\n");printf("----------------------------\n");printf("請輸入相應的序號選擇!       \n");scanf("%d", &choice);getchar();switch (choice){case 1:addFlight();break;case 2:displayFlights();break;case 3:findFlight();break;case 4:modifyFlight();break;case 5:deleteFlight();break;case 6:Sort();break;case 0:exit(0);break;default:printf("無效的選擇,請重試!\n");}// 暫停操作printf("\n");system("pause"); // 這行代碼會使程序等待用戶按下任意鍵system("cls");   // 清屏操作}
}/*功能:  添加航班信息參數:  無返回值:無
*/
void addFlight()
{if (flight_num >= MAX_FLIGHTS){printf("無法添加更多航班,已達到最大限制!\n");return;}Plane newFlight;printf("請輸入航班號: ");gets(newFlight.number);printf("請輸入起飛城市: ");gets(newFlight.Start_City);printf("請輸入到達城市: ");gets(newFlight.End_City);printf("請輸入起飛時間: ");gets(newFlight.Start_Time);printf("請輸入到達時間: ");gets(newFlight.End_Time);printf("請輸入機票價格: ");scanf("%f", &newFlight.Price);getchar();printf("請輸入機票折扣: ");scanf("%f", &newFlight.Discount);getchar();printf("請輸入剩余票數: ");scanf("%d", &newFlight.Tickets);getchar();flights[flight_num++] = newFlight; // 將新航班添加到數組中printf("航班添加成功!\n");
}/*功能:  顯示所有航班信息參數:  無返回值:無
*/
void displayFlights()
{if (flight_num == 0){ // 檢查是否有航班信息printf("沒有可顯示的航班信息!\n");return;}printf("航班號\t\t起飛城市\t到達城市\t起飛時間\t到達時間\t機票價格\t優惠折扣\t剩余票數\n");for (int i = 0; i < flight_num; i++){printf("%s\t\t%s\t-->\t%s\t\t%s\t\t%s\t\t%.2f\t\t%.2f\t\t%d\n",flights[i].number, flights[i].Start_City, flights[i].End_City,flights[i].Start_Time, flights[i].End_Time,flights[i].Price, flights[i].Discount, flights[i].Tickets);}
}/*功能:  查詢航班信息參數:  無返回值:無
*/
void findFlight()
{if (flight_num == 0){ // 檢查是否有航班信息printf("沒有可查詢的航班信息!\n");return;}char fnum[10];printf("請輸入要查詢的航班號:");fgets(fnum, sizeof(fnum), stdin);fnum[strcspn(fnum, "\n")] = '\0'; // 去除換行符for (int i = 0; i < flight_num; i++){if (strcmp(fnum, flights[i].number) == 0){printf("航班號\t\t起飛城市\t到達城市\t起飛時間\t到達時間\t機票價格\t優惠折扣\t剩余票數\n");printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%.2f\t\t%.2f\t\t%d\n",flights[i].number, flights[i].Start_City, flights[i].End_City,flights[i].Start_Time, flights[i].End_Time,flights[i].Price, flights[i].Discount, flights[i].Tickets);return;}}printf("未找到該航班!\n");
}/*功能:  修改航班信息參數:  無返回值:無
*/
void modifyFlight()
{if (flight_num == 0){ // 檢查是否有航班信息printf("沒有修改的航班信息!\n");return;}printf("請輸入要修改的航班號:");char fnum[10];int flag = 0;fgets(fnum, 10, stdin);fnum[strcspn(fnum, "\n")] = 0; // 去掉換行符for (int i = 0; i < flight_num; i++){if (strcmp(fnum, flights[i].number) == 0){flag = 1;printf("修改開始\n請輸入航班號: ");gets(flights[i].number);printf("請輸入起飛城市: ");gets(flights[i].Start_City);printf("請輸入到達城市: ");gets(flights[i].End_City);printf("請輸入起飛時間: ");gets(flights[i].Start_Time);printf("請輸入到達時間: ");gets(flights[i].End_Time);printf("請輸入機票價格: ");scanf("%f", &flights[i].Price);getchar();printf("請輸入機票折扣: ");scanf("%f", &flights[i].Discount);getchar();printf("請輸入剩余票數: ");scanf("%d", &flights[i].Tickets);getchar();printf("航班修改成功!\n");break;}}if (flag == 0){printf("未找到該航班號對應的航班信息!\n");}
}/*功能:  刪除航班信息參數:  無返回值:無
*/void deleteFlight()
{if (flight_num == 0){ // 檢查是否有航班信息printf("沒有可刪除的航班信息!\n");return;}printf("請輸入要刪除的航班號:");char fnum[10];int flag = 0;fgets(fnum, sizeof(fnum), stdin);fnum[strcspn(fnum, "\n")] = 0;for (int i = 0; i < flight_num; i++){if (strcmp(fnum, flights[i].number) == 0){flag = 1;for (int j = i; j < flight_num - 1; j++){strcpy(flights[j].number, flights[j + 1].number);strcpy(flights[j].Start_City, flights[j + 1].Start_City);strcpy(flights[j].End_City, flights[j + 1].Start_Time);strcpy(flights[j].Start_Time, flights[j + 1].Start_Time);strcpy(flights[j].End_Time, flights[j + 1].End_Time);flights[j].Price = flights[j + 1].Price;flights[j].Discount = flights[j + 1].Discount;flights[j].Tickets = flights[j + 1].Tickets;}flight_num--;printf("刪除成功!");break;}}if (!flag)printf("未找到該航班號對應的航班信息!\n");
}/*功能:  刪除航班信息參數:  無返回值:無
*/
void Sort()
{if (flight_num == 0){ // 檢查是否有航班信息printf("沒有可排序的航班信息!\n");return;}printf("請選擇排序方式:\n");printf("1.按日期升序排序\n2.按日期降序排序\n3.按價格升序排序\n4.按價格降序排序\n");int num;scanf("%d", &num);if (num == 1 || num == 2) // 1.按日期升序排序 2.按日期降序排序{for (int i = 0; i < flight_num - 1; i++){for (int j = 0; j < flight_num - i - 1; j++){if ((num == 1 && strcmp(flights[j].Start_Time, flights[j + 1].Start_Time) > 0) ||(num == 2 && strcmp(flights[j].Start_Time, flights[j + 1].Start_Time) < 0)){Plane temp = flights[j];flights[j] = flights[j + 1];flights[j + 1] = temp;}}}printf("日期排序成功!\n");}else if (num == 3 || num == 4) // 3.按價格升序排序 4.按價格降序排序{for (int i = 0; i < flight_num - 1; i++){for (int j = 0; j < flight_num - i - 1; j++){if ((num == 3 && (flights[j].Price - flights[j + 1].Price) > 0) ||(num == 4 && (flights[j].Price - flights[j + 1].Price) < 0)){Plane temp = flights[j];flights[j] = flights[j + 1];flights[j + 1] = temp;}}}printf("價格排序成功!\n");}printf("航班號\t\t起飛城市\t到達城市\t起飛時間\t到達時間\t機票價格\t優惠折扣\t剩余票數\n");for (int i = 0; i < flight_num; i++){printf("%s\t\t%s\t-->\t%s\t\t%s\t\t%s\t\t%.2f\t\t%.2f\t\t%d\n",flights[i].number, flights[i].Start_City, flights[i].End_City,flights[i].Start_Time, flights[i].End_Time,flights[i].Price, flights[i].Discount, flights[i].Tickets);}
}int main(int argc, char const *argv[])
{Menu();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46026.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開發指南047-前端模塊版本

平臺前端框架內置了一個文件version.vue <template> <div> <br> 應用名稱: {{name}} <br> 當前版本&#xff1a;{{version}} <br> 服務網關: {{gateway}} </div> </template> <scrip…

分析示例 | Simufact Additive鋪粉增材制造工藝缺陷仿真分析方案

近年來&#xff0c;隨著增材制造工藝的快速發展&#xff0c;仿真模擬的重要性日益凸顯&#xff0c;越來越多的科研及應用單位選擇在實際打印之前&#xff0c;通過仿真預測打印問題&#xff0c;從而優化打印工藝、減少物理試錯次數、降低打印成本。就不同增材工藝仿真的占比而言…

netxduo http server 創建回復以及json解析

我們今天要整http的response,比如我創建的http server,我對它發送了一個POST,然后服務器解析出json里的body,再回復過去。今天會用到json的解析庫cjson以及postman去發送消息。這次用nx_web_http_server.h這個庫,不用之前的nx_http_server.h 本教程在最后附帶app_netxduo…

大數據基礎:Doris重點架構原理

文章目錄 Doris重點架構原理 一、Apache Doris介紹 二、Apache Doris使用場景 三、Apache Doris架構原理 四、Apache Doris 特點 Doris重點架構原理 一、Apache Doris介紹 基于 MPP 架構的高性能、實時的分析型數據庫&#xff0c;以極速易用的特點被人們所熟知&#xff…

JVM---對象是否存活及被引用的狀態

1.如何判斷對象是否存活 1.1 引用計數算法 概念&#xff1a;在對象頭部增加一個引用計數器,每當有一個地方引用它時&#xff0c;計數器值就加一&#xff1b;當引用失效時&#xff0c;計數器值就減一&#xff1b;任何時刻計數器為零的對象就是不可能再被使用的。 優點&#xff1…

vue2遷移到vue3注意點

vue2遷移到vue3注意點 1、插槽的修改 使用 #default &#xff0c; 以及加上template 模板 2、 類型的定義&#xff0c;以及路由&#xff0c;vue相關資源&#xff08;ref, reactive,watch&#xff09;的引入等 3、類裝飾器 1&#xff09;vue-class-component是vue官方庫,作…

ubuntu搭建harbor私倉

1、環境準備 鏈接: https://pan.baidu.com/s/1q4XBWPd8WdyEn4l253mpUw 提取碼: 7ekx --來自百度網盤超級會員v2的分享 準備一臺Ubuntu 機器:192.168.124.165 將上面兩個文件考入Ubuntu上面 2、安裝harbor 安裝Docker Harbor倉庫以容器方式運行,需要先安裝好docker,參考:…

詳解python基本語法

文章目錄 數據變量數據結構 循環-判斷-用戶輸入判斷用戶輸入循環 函數參數返回值將函數存儲在模塊中 文件和異常讀取文件異常操作Json文件 類對象創建類使用類類的繼承導入外部類 測試測試函數創建測試 Python 是一種廣泛使用的高級編程語言&#xff0c;以其清晰的語法和代碼可…

which 命令在Linux中是一個快速查找可執行文件位置的工具

文章目錄 0、概念1、which --help2、which命令解釋 0、概念 which命令用于查找命令的可執行文件的路徑which 命令在 Linux 中用于查找可執行命令的完整路徑。當你在 shell 中輸入一個命令時&#xff0c;shell 會在環境變量 $PATH 定義的目錄列表中查找這個命令。which 命令可以…

React基礎學習-Day06

React基礎學習-Day06 zustand基本使用方式 1.基礎使用 基本使用 zustand 的步驟包括創建狀態存儲和在組件中使用這些狀態和更新函數。以下是一個基礎的示例&#xff0c;演示如何使用 zustand 來管理一個簡單的計數器狀態。 安裝 首先&#xff0c;確保你的項目中已經安裝了…

socket編程(2) -- TCP通信

TCP通信 2. 使用 Socket 進行TCP通信2.1 socket相關函數介紹socket()bind()listen()accept()connect()2.2 TCP協議 C/S 模型基礎通信代碼 最后 2. 使用 Socket 進行TCP通信 Socket通信流程圖如下&#xff1a; 這里服務器段listen是監聽socket套接字的監聽文件描述符。如果客戶…

Redis--布隆過濾器

解決緩存穿透是構建高效緩存系統中的關鍵問題之一。緩存穿透指的是惡意或者非法請求經過緩存層直接訪問數據庫或者后端服務&#xff0c;導致系統資源浪費和性能下降的情況。為了有效應對緩存穿透問題&#xff0c;以下是幾種常見的解決方法&#xff1a; 1. 布隆過濾器預檢查 布…

運維-Docker-黑馬

運維-Docker-黑馬 編輯時間&#xff1a;2024/7/15 來源&#xff1a;黑馬程序員 docker&#xff1a;快速構建&#xff0c;運行&#xff0c;管理應用的工具 Docker安裝 部署mysql 命令解讀

[Cesium for Supermap] 加載3dTiles,點擊獲取屬性

代碼&#xff1a; // 設為橢球var obj [6378137.0, 6378137.0, 6356752.3142451793];Cesium.Ellipsoid.WGS84 Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));var viewer new Cesium.Viewer(cesiumContainer);var scene viewer.scenescene.lightSource.ambi…

Oracle TDE(Transparent Data Encryption) 常見問題解答 - 官網

此FAQ來源于官網鏈接。此為新版&#xff0c;老版的博客參見Oracle TDE(Transparent Data Encryption) 常見問題解答。 通用問題 透明數據加密 (TDE) 提供什么功能&#xff1f; TDE 以透明方式加密 Oracle 數據庫中的靜態數據。它可以阻止操作系統未經授權嘗試訪問存儲在文件…

徹底改變時尚:使用 GAN 實現 AI 的未來

徹底改變時尚&#xff1a;使用 GAN 實現 AI 的未來 一、介紹 想象一下&#xff0c;在這個世界里&#xff0c;時裝設計師永遠不會用完新想法&#xff0c;我們穿的每一件衣服都是一件藝術品。聽起來很有趣&#xff0c;對吧&#xff1f;好吧&#xff0c;我們可以在通用對抗網絡 &a…

鴻蒙基本工程目錄

工程級目錄 AppScope 中存放應用全局所需要的資源文件。entry 是應用的主模塊&#xff0c;存放 HarmonyOS 應用的代碼、資源等。oh_modules 是工程的依賴包&#xff0c;存放工程依賴的源文件。build-profile.json5 是工程級配置信息&#xff0c;包括簽名、產品配置等。hvigorf…

品牌產業出海指南如何搭建國際化架構的跨境電商平臺?

在“品牌&產業出海指南 – 成功搭建跨境電商平臺”系列中&#xff0c;我們將從電商分銷系統、跨境平臺商城/多商戶商城系統和國際化架構三個方面對幫助您梳理不同平臺模式的優缺點、應用場景、開發重點和運營建議。 在“品牌&產業出海指南 – 成功搭建跨境電商平臺”系…

【漏洞復現】Rejetto HTTP文件服務器——遠程命令執行(CVE-2024-23692)

聲明&#xff1a;本文檔或演示材料僅供教育和教學目的使用&#xff0c;任何個人或組織使用本文檔中的信息進行非法活動&#xff0c;均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 Rejetto HTTP文件服務器是一個輕量級的HTTP服務器軟件&#xff…

VBA學習(20):一批簡單的Excel VBA編程問題解答

1.如何確定單元格區域內的行數和列數&#xff1f; 使用Range.Rows.Count和Range.Columns.Count屬性。 2.Application.Columns指的是什么&#xff1f; 活動工作表中的列。 3.你的程序在列B位置插入一個新列&#xff0c;原來的列B會怎樣&#xff1f; 它向右移動成為列C。 4.假…