出该系统比较复杂,需要设计多个结构体和函数来实现各项功能。以下是一个基本的程序框架,可以根据需要进行修改和完善。

#include <stdio.h> #include <stdlib.h> #include <string.h>

//定义结构体

//线路信息结构体 typedef struct { int line_no; //线路编号 char name[20]; //线路名称 int station_num; //途径站点数量 char station[20][20]; //途径站点名称 } Line;

//列车时刻表结构体 typedef struct { int line_no; //线路编号 char date[10]; //日期 char start_station[20]; //起点站 char end_station[20]; //终点站 char start_time[10]; //发车时间 char end_time[10]; //到达时间 } Train;

//票价信息结构体 typedef struct { char start_station[20]; //起点站 char end_station[20]; //终点站 int price; //票价 } Price;

//函数定义

//录入新线路/新站点信息 void input_line(Line *line); void input_station(Line *line);

//录入列车时刻信息 void input_train(Train *train);

//查询线路详细信息 void search_line(Line *line, int line_no);

//查询票价信息 void search_price(Price *price, char *start_station, char *end_station);

//查询乘坐地铁线路信息 void search_train(Train *train, int line_no, char *start_station, char *end_station);

//列车时刻信息查询 void search_train_time(Train *train, int line_no, char *start_station, char *end_station, char *date);

//按起点/终点统计每日的车次数 void count_train(Train *train, char *station, char *date);

//主函数 int main() { Line line[20]; //最多20条线路 Train train[100]; //最多100条列车时刻信息 Price price[50]; //最多50条票价信息 int choice; int line_no; char start_station[20], end_station[20], date[10];

while (1) {
    printf("=====厦门地铁1号线票务管理系统=====\n");
    printf("1. 录入新线路/新站点信息\n");
    printf("2. 录入列车时刻信息\n");
    printf("3. 查询线路详细信息\n");
    printf("4. 查询票价信息\n");
    printf("5. 查询乘坐地铁线路信息\n");
    printf("6. 列车时刻信息查询\n");
    printf("7. 按起点/终点统计每日的车次数\n");
    printf("8. 退出\n");
    printf("请选择功能:");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            input_line(line);
            break;
        case 2:
            input_train(train);
            break;
        case 3:
            printf("请输入线路编号:");
            scanf("%d", &line_no);
            search_line(line, line_no);
            break;
        case 4:
            printf("请输入起点站:");
            scanf("%s", start_station);
            printf("请输入终点站:");
            scanf("%s", end_station);
            search_price(price, start_station, end_station);
            break;
        case 5:
            printf("请输入起点站:");
            scanf("%s", start_station);
            printf("请输入终点站:");
            scanf("%s", end_station);
            search_train(train, line_no, start_station, end_station);
            break;
        case 6:
            printf("请输入线路编号:");
            scanf("%d", &line_no);
            printf("请输入起点站:");
            scanf("%s", start_station);
            printf("请输入终点站:");
            scanf("%s", end_station);
            printf("请输入日期:");
            scanf("%s", date);
            search_train_time(train, line_no, start_station, end_station, date);
            break;
        case 7:
            printf("请输入站点名称:");
            scanf("%s", start_station);
            printf("请输入日期:");
            scanf("%s", date);
            count_train(train, start_station, date);
            break;
        case 8:
            exit(0);
        default:
            printf("输入错误,请重新选择功能!\n");
            break;
    }
}

return 0;

}

//函数实现

//录入新线路/新站点信息 void input_line(Line *line) { int line_no, station_num, i; char name[20];

printf("请输入线路编号:");
scanf("%d", &line_no);
printf("请输入线路名称:");
scanf("%s", name);
printf("请输入途径站点数量:");
scanf("%d", &station_num);

for (i = 0; i < station_num; i++) {
    printf("请输入第%d个途径站点名称:", i + 1);
    scanf("%s", line[line_no - 1].station[i]);
}

line[line_no - 1].line_no = line_no;
strcpy(line[line_no - 1].name, name);
line[line_no - 1].station_num = station_num;

printf("线路信息录入成功!\n");

}

void input_station(Line *line) { int line_no, station_num, i;

printf("请输入线路编号:");
scanf("%d", &line_no);

printf("请输入要添加的站点数量:");
scanf("%d", &station_num);

for (i = 0; i < station_num; i++) {
    printf("请输入要添加的站点名称:");
    scanf("%s", line[line_no - 1].station[line[line_no - 1].station_num + i]);
}

line[line_no - 1].station_num += station_num;

printf("站点信息录入成功!\n");

}

//录入列车时刻信息 void input_train(Train *train) { int i = 0;

while (1) {
    printf("请输入第%d条列车的信息:\n", i + 1);
    printf("请输入线路编号:");
    scanf("%d", &train[i].line_no);
    printf("请输入日期:");
    scanf("%s", train[i].date);
    printf("请输入起点站:");
    scanf("%s", train[i].start_station);
    printf("请输入终点站:");
    scanf("%s", train[i].end_station);
    printf("请输入发车时间:");
    scanf("%s", train[i].start_time);
    printf("请输入到达时间:");
    scanf("%s", train[i].end_time);

    printf("是否继续录入(Y/N)?");
    getchar(); //清除缓存
    if (getchar() == 'N') {
        break;
    }

    i++;
}

printf("列车时刻信息录入成功!\n");

}

//查询线路详细信息 void search_line(Line *line, int line_no) { printf("线路编号\t线路名称\t途径站点数量\t途径站点名称\n"); printf("%d\t\t%s\t\t%d\t\t", line[line_no - 1].line_no, line[line_no - 1].name, line[line_no - 1].station_num);

int i;
for (i = 0; i < line[line_no - 1].station_num; i++) {
    printf("%s ", line[line_no - 1].station[i]);
}
printf("\n");

}

//查询票价信息 void search_price(Price *price, char *start_station, char *end_station) { int i;

for (i = 0; i < 50; i++) {
    if (strcmp(price[i].start_station, start_station) == 0 && strcmp(price[i].end_station, end_station) == 0) {
        printf("%s 到 %s 的票价为 %d 元\n", start_station, end_station, price[i].price);
        return;
    }
}

printf("未找到 %s 到 %s 的票价信息!\n", start_station, end_station);

}

//查询乘坐地铁线路信息 void search_train(Train *train, int line_no, char *start_station, char *end_station) { int i, j, start_index = -1, end_index = -1;

for (i = 0; i < 100; i++) {
    if (train[i].line_no == line_no) {
        for (j = 0; j < 20; j++) {
            if (strcmp(train[i].start_station, start_station) == 0) {
                start_index = i;
            }
            if (strcmp(train[i].end_station, end_station) == 0) {
                end_index = i;
            }
        }
    }
}

if (start_index == -1 || end_index == -1) {
    printf("未找到 %s 到 %s 的乘坐地铁线路信息!\n", start_station, end_station);
    return;
}

printf("%s 到 %s 的乘坐地铁线路信息如下:\n", start_station, end_station);
printf("从 %s 站(%s)乘坐 %d 号线路,", start_station, train[start_index].start_time, line_no);
printf("途径站点:");

for (i = start_index + 1; i < end_index; i++) {
    printf("%s、", train[i].start_station);
}

printf("%s,", end_station);
printf("到达 %s 站(%s)\n", end_station, train[end_index].end_time);
printf("共乘坐 %d 站,票价为 %d 元\n", end_index - start_index + 1, (end_index - start_index + 1) * 2);

}

//列车时刻信息查询 void search_train_time(Train *train, int line_no, char *start_station, char *end_station, char *date) { int i;

printf("线路编号\t日期\t起点站\t终点站\t发车时间\t到达时间\n");

for (i = 0; i < 100; i++) {
    if (train[i].line_no == line_no && strcmp(train[i].date, date) == 0 &&
        strcmp(train[i].start_station, start_station) == 0 && strcmp(train[i].end_station, end_station) == 0) {
        printf("%d\t\t%s\t%s\t\t%s\t\t%s\t\t%s\n", train[i].line_no, train[i].date, train[i].start_station,
               train[i].end_station, train[i].start_time, train[i].end_time);
    }
}

}

//按起点/终点统计每日的车次数 void count_train(Train *train, char *station, char *date) { int i, count = 0;

for (i = 0; i < 100; i++) {
    if (strcmp(train[i].date, date) == 0 && (strcmp(train[i].start_station, station) == 0 ||
                                              strcmp(train[i].end_station, station) == 0)) {
        count++;
    }
}

printf("%s 在 %s 的车次数量为 %d\n", station, date, count);
设计一个厦门地铁1号线票务管理系统用C语言实现。对该系统功能需求描述如下:1系统功能1新线路新站点相关信息线路编号、途径站点信息等录入。2列车时刻信息线路编号、日期、起点、终点、发车时间、到达时间录入。3根据用户输入线路信息查询线路详细信息。3根据用户输入起终点信息查询票价信息。4根据用户输入起终点信息查询应乘坐地铁线路信息及途径站点信息、发车时间、到达时间、乘坐的站数和换乘信息等。5列车时刻信息

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

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