#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n// 定义线路结构体\ntypedef struct {\n char id[10]; // 线路编号\n char stations[100][20]; // 途径站点\n int station_num; // 站点数量\n} Line;\n\n// 定义时刻表结构体\ntypedef struct {\n char line_id[10]; // 线路编号\n char date[11]; // 日期\n char start[20]; // 起点\n char end[20]; // 终点\n char start_time[6]; // 发车时间\n char end_time[6]; // 到达时间\n} Schedule;\n\n// 定义全局变量,存储线路和时刻表信息\nLine lines[10];\nint line_num = 0;\nSchedule schedules[100];\nint schedule_num = 0;\n\n// 打印菜单\nvoid print_menu() {\n printf("欢迎使用厦门地铁1号线票务管理系统!\n");\n printf("1. 录入新线路/新站点信息\n");\n printf("2. 录入列车时刻信息\n");\n printf("3. 查询线路及站点信息\n");\n printf("4. 查询票价信息\n");\n printf("5. 查询乘坐信息\n");\n printf("6. 查询列车时刻信息\n");\n printf("7. 统计每日车次数\n");\n printf("0. 退出系统\n");\n printf("请选择操作:");\n}\n\n// 录入新线路/新站点信息\nvoid add_line() {\n printf("请输入线路编号:");\n scanf("%s", lines[line_num].id);\n printf("请输入途径站点(以空格分隔):");\n char station[20];\n int i = 0;\n do {\n scanf("%s", station);\n strcpy(lines[line_num].stations[i], station);\n i++;\n } while (getchar() != '\n');\n lines[line_num].station_num = i;\n line_num++;\n printf("线路信息录入成功!\n");\n}\n\n// 录入列车时刻信息\nvoid add_schedule() {\n printf("请输入线路编号:");\n scanf("%s", schedules[schedule_num].line_id);\n printf("请输入日期(格式:yyyy-mm-dd):");\n scanf("%s", schedules[schedule_num].date);\n printf("请输入起点:");\n scanf("%s", schedules[schedule_num].start);\n printf("请输入终点:");\n scanf("%s", schedules[schedule_num].end);\n printf("请输入发车时间(格式:hh:mm):");\n scanf("%s", schedules[schedule_num].start_time);\n printf("请输入到达时间(格式:hh:mm):");\n scanf("%s", schedules[schedule_num].end_time);\n schedule_num++;\n printf("列车时刻信息录入成功!\n");\n}\n\n// 查询线路及站点信息\nvoid query_line() {\n char id[10];\n printf("请输入线路编号:");\n scanf("%s", id);\n for (int i = 0; i < line_num; i++) {\n if (strcmp(lines[i].id, id) == 0) {\n printf("线路编号:%s,途径站点:", lines[i].id);\n for (int j = 0; j < lines[i].station_num; j++) {\n printf("%s ", lines[i].stations[j]);\n }\n printf("\n");\n return;\n }\n }\n printf("该线路不存在!\n");\n}\n\n// 查询票价信息\nvoid query_price() {\n char start[20], end[20];\n printf("请输入起点:");\n scanf("%s", start);\n printf("请输入终点:");\n scanf("%s", end);\n int start_index = -1, end_index = -1;\n for (int i = 0; i < line_num; i++) {\n for (int j = 0; j < lines[i].station_num; j++) {\n if (strcmp(lines[i].stations[j], start) == 0) {\n start_index = j;\n }\n if (strcmp(lines[i].stations[j], end) == 0) {\n end_index = j;\n }\n }\n if (start_index != -1 && end_index != -1) {\n printf("票价为:%d元\n", (end_index - start_index) * 2);\n return;\n }\n }\n printf("起点或终点不存在!\n");\n}\n\n// 查询乘坐信息\nvoid query_ride() {\n char start[20], end[20];\n printf("请输入起点:");\n scanf("%s", start);\n printf("请输入终点:");\n scanf("%s", end);\n int start_index = -1, end_index = -1;\n for (int i = 0; i < line_num; i++) {\n for (int j = 0; j < lines[i].station_num; j++) {\n if (strcmp(lines[i].stations[j], start) == 0) {\n start_index = j;\n }\n if (strcmp(lines[i].stations[j], end) == 0) {\n end_index = j;\n }\n }\n if (start_index != -1 && end_index != -1) {\n printf("应乘坐的地铁线路信息为:%s,途径站点:", lines[i].id);\n if (start_index < end_index) {\n for (int j = start_index; j <= end_index; j++) {\n printf("%s ", lines[i].stations[j]);\n }\n } else {\n for (int j = start_index; j >= end_index; j--) {\n printf("%s ", lines[i].stations[j]);\n }\n }\n printf("\n");\n printf("发车时间:%s,到达时间:%s\n", schedules[i].start_time, schedules[i].end_time);\n printf("乘坐的站数:%d,换乘信息:无\n", abs(end_index - start_index));\n return;\n }\n }\n printf("起点或终点不存在!\n");\n}\n\n// 查询列车时刻信息\nvoid query_schedule() {\n char id[10], start[20], end[20], date[11];\n printf("请输入线路编号(不填则查询全部):");\n scanf("%s", id);\n printf("请输入起点(不填则查询全部):");\n scanf("%s", start);\n printf("请输入终点(不填则查询全部):");\n scanf("%s", end);\n printf("请输入日期(不填则查询全部,格式:yyyy-mm-dd):");\n scanf("%s", date);\n int flag = 0;\n for (int i = 0; i < schedule_num; i++) {\n if (id[0] == '\0' || strcmp(schedules[i].line_id, id) == 0) {\n if (start[0] == '\0' || strcmp(schedules[i].start, start) == 0) {\n if (end[0] == '\0' || strcmp(schedules[i].end, end) == 0) {\n if (date[0] == '\0' || strcmp(schedules[i].date, date) == 0) {\n printf("线路编号:%s,起点:%s,终点:%s,发车时间:%s,到达时间:%s\n",\n schedules[i].line_id, schedules[i].start, schedules[i].end,\n schedules[i].start_time, schedules[i].end_time);\n flag = 1;\n }\n }\n }\n }\n }\n if (flag == 0) {\n printf("未查询到相关列车时刻信息!\n");\n }\n}\n\n// 统计每日车次数\nvoid count_schedule() {\n char date[11];\n printf("请输入日期(格式:yyyy-mm-dd):");\n scanf("%s", date);\n int count = 0;\n for (int i = 0; i < schedule_num; i++) {\n if (strcmp(schedules[i].date, date) == 0) {\n count++;\n }\n }\n printf("该日共有%d班列车。\n", count);\n}\n\nint main() {\n int choice;\n do {\n print_menu();\n scanf("%d", &choice);\n switch (choice) {\n case 1:\n add_line();\n break;\n case 2:\n add_schedule();\n break;\n case 3:\n query_line();\n break;\n case 4:\n query_price();\n break;\n case 5:\n query_ride();\n break;\n case 6:\n query_schedule();\n break;\n case 7:\n count_schedule();\n break;\n case 0:\n printf("感谢使用本系统!\n");\n break;\n default:\n printf("无效操作!\n");\n break;\n }\n } while (choice != 0);\n return 0;\n

厦门地铁1号线票务管理系统C语言实现 - 简化版

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

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