#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n// 航班信息结构体\ntypedef struct {\n char flightNo[10];\n char departure[20];\n char destination[20];\n char departureTime[10];\n char arrivalTime[10];\n float price;\n int count;\n} Flight;\n\n// 用户信息结构体\ntypedef struct {\n char username[20];\n int tickets;\n} User;\n\n// 节点结构体\ntypedef struct Node {\n Flight flight;\n struct Node* next;\n} Node;\n\n// 全局变量,头节点指针\nNode* head = NULL;\n\n// 添加航班信息\nvoid addFlight() {\n Node* newNode = (Node*)malloc(sizeof(Node));\n printf("请输入航班信息:\n班次号:");\n scanf("%s", newNode->flight.flightNo);\n printf("始发地:");\n scanf("%s", newNode->flight.departure);\n printf("目的地:");\n scanf("%s", newNode->flight.destination);\n printf("出发时间:");\n scanf("%s", newNode->flight.departureTime);\n printf("到达时间:");\n scanf("%s", newNode->flight.arrivalTime);\n printf("金额:");\n scanf("%f", &newNode->flight.price);\n printf("人数:");\n scanf("%d", &newNode->flight.count);\n newNode->next = NULL;\n \n if (head == NULL) {\n // 如果链表为空,将头节点指向新节点\n head = newNode;\n } else {\n // 遍历链表找到最后一个节点,并将其next指向新节点\n Node* current = head;\n while (current->next != NULL) {\n current = current->next;\n }\n current->next = newNode;\n }\n \n printf("航班信息添加成功!\n");\n}\n\n// 删除航班信息\nvoid deleteFlight() {\n char flightNo[10];\n printf("请输入要删除的航班班次号:");\n scanf("%s", flightNo);\n \n Node* current = head;\n Node* prev = NULL;\n int found = 0;\n \n while (current != NULL) {\n if (strcmp(current->flight.flightNo, flightNo) == 0) {\n found = 1;\n break;\n }\n prev = current;\n current = current->next;\n }\n \n if (found) {\n if (prev == NULL) {\n // 如果要删除的节点是头节点\n head = current->next;\n } else {\n // 将前一个节点的next指向要删除节点的next\n prev->next = current->next;\n }\n free(current);\n printf("航班信息删除成功!\n");\n } else {\n printf("未找到该航班信息!\n");\n }\n}\n\n// 查询航班信息\nvoid queryFlight() {\n char flightNo[10];\n printf("请输入要查询的航班班次号:");\n scanf("%s", flightNo);\n \n Node* current = head;\n int found = 0;\n \n while (current != NULL) {\n if (strcmp(current->flight.flightNo, flightNo) == 0) {\n found = 1;\n printf("航班信息如下:\n");\n printf("班次号:%s\n", current->flight.flightNo);\n printf("始发地:%s\n", current->flight.departure);\n printf("目的地:%s\n", current->flight.destination);\n printf("出发时间:%s\n", current->flight.departureTime);\n printf("到达时间:%s\n", current->flight.arrivalTime);\n printf("金额:%f\n", current->flight.price);\n printf("人数:%d\n", current->flight.count);\n break;\n }\n current = current->next;\n }\n \n if (!found) {\n printf("未找到该航班信息!\n");\n }\n}\n\n// 管理员进行票数的加减\nvoid adjustTicketCount() {\n char flightNo[10];\n printf("请输入要调整票数的航班班次号:");\n scanf("%s", flightNo);\n \n Node* current = head;\n int found = 0;\n \n while (current != NULL) {\n if (strcmp(current->flight.flightNo, flightNo) == 0) {\n found = 1;\n int adjustment;\n printf("请输入票数的调整值(正数为增加,负数为减少):");\n scanf("%d", &adjustment);\n current->flight.count += adjustment;\n printf("票数调整成功!当前票数为:%d\n", current->flight.count);\n break;\n }\n current = current->next;\n }\n \n if (!found) {\n printf("未找到该航班信息!\n");\n }\n}\n\n// 程序入口\nint main() {\n // 添加五组航班信息\n for (int i = 0; i < 5; i++) {\n addFlight();\n }\n \n // 显示航班信息\n printf("航班信息如下:\n");\n Node* current = head;\n while (current != NULL) {\n printf("班次号:%s\n", current->flight.flightNo);\n printf("始发地:%s\n", current->flight.departure);\n printf("目的地:%s\n", current->flight.destination);\n printf("出发时间:%s\n", current->flight.departureTime);\n printf("到达时间:%s\n", current->flight.arrivalTime);\n printf("金额:%f\n", current->flight.price);\n printf("人数:%d\n", current->flight.count);\n printf("\n");\n current = current->next;\n }\n \n // 删除航班信息\n deleteFlight();\n \n // 查询航班信息\n queryFlight();\n \n // 管理员进行票数的加减\n adjustTicketCount();\n \n return 0;\n

C语言链表实现航班管理系统:添加、删除、查询、票数调整

原文地址: https://www.cveoy.top/t/topic/qhKh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录