4、公交车管理系统问题描述:设计一个公交车管理系统,公交车需设置不同的类型,每个线路的公交车会经过多个不同的车站,车站、公交车可设计成不同的类,给出某个公交车可以显示它所经过所有站点。基本功能:(1)公交车要设置不同的类型,如电车、油车等;(2)公交车信息包括:车牌号,类型,线路号,座位数,长度,宽度,高度,油耗等;(3)公交车信息要保存在文件中;(4)系统可以实现对公交车和车站信息的添加,修改,删除,查找等功能;(5)系统界面应该尽量友好,方便使用。用c语言
时间: 2023-11-14 11:04:58 浏览: 59
以下是一个简单的公交车管理系统的C语言代码示例,包括公交车和车站两个类:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 车站类
typedef struct {
char name[20];
int distance;
} Station;
// 公交车类
typedef struct {
char plateNum[10];
char type[10];
int routeNum;
int seatNum;
double length;
double width;
double height;
double fuelConsumption;
Station *stations; // 经过的车站
int stationNum; // 经过的车站数量
} Bus;
// 添加车站信息
void addStation(Station *stations, int *stationNum) {
printf("请输入车站名称:");
scanf("%s", stations[*stationNum].name);
printf("请输入距离上一站的距离(单位:公里):");
scanf("%d", &stations[*stationNum].distance);
(*stationNum)++;
}
// 添加公交车信息
void addBus(Bus *buses, int *busNum) {
printf("请输入车牌号:");
scanf("%s", buses[*busNum].plateNum);
printf("请输入车辆类型:");
scanf("%s", buses[*busNum].type);
printf("请输入线路号:");
scanf("%d", &buses[*busNum].routeNum);
printf("请输入座位数:");
scanf("%d", &buses[*busNum].seatNum);
printf("请输入长度(单位:米):");
scanf("%lf", &buses[*busNum].length);
printf("请输入宽度(单位:米):");
scanf("%lf", &buses[*busNum].width);
printf("请输入高度(单位:米):");
scanf("%lf", &buses[*busNum].height);
printf("请输入油耗(单位:升/百公里):");
scanf("%lf", &buses[*busNum].fuelConsumption);
buses[*busNum].stations = (Station *)malloc(sizeof(Station) * 10);
buses[*busNum].stationNum = 0;
printf("请输入经过的车站信息(按q结束):\n");
while (1) {
char input[10];
printf("请输入第%d个车站信息:", buses[*busNum].stationNum + 1);
scanf("%s", input);
if (strcmp(input, "q") == 0) {
break;
}
addStation(buses[*busNum].stations, &buses[*busNum].stationNum);
}
(*busNum)++;
}
// 显示所有公交车信息
void showAllBuses(Bus *buses, int busNum) {
printf("所有公交车信息如下:\n");
for (int i = 0; i < busNum; i++) {
printf("车牌号:%s,类型:%s,线路号:%d,座位数:%d,长度:%.2f米,宽度:%.2f米,高度:%.2f米,油耗:%.2f升/百公里,经过的车站有:\n", buses[i].plateNum, buses[i].type, buses[i].routeNum, buses[i].seatNum, buses[i].length, buses[i].width, buses[i].height, buses[i].fuelConsumption);
for (int j = 0; j < buses[i].stationNum; j++) {
printf("%s(距上一站%d公里)", buses[i].stations[j].name, buses[i].stations[j].distance);
if (j != buses[i].stationNum - 1) {
printf(" -> ");
}
}
printf("\n");
}
}
// 保存公交车信息到文件
void saveToFile(Bus *buses, int busNum) {
FILE *fp;
fp = fopen("bus_info.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
for (int i = 0; i < busNum; i++) {
fprintf(fp, "%s %s %d %d %.2f %.2f %.2f %.2f ", buses[i].plateNum, buses[i].type, buses[i].routeNum, buses[i].seatNum, buses[i].length, buses[i].width, buses[i].height, buses[i].fuelConsumption);
for (int j = 0; j < buses[i].stationNum; j++) {
fprintf(fp, "%s %d ", buses[i].stations[j].name, buses[i].stations[j].distance);
}
fprintf(fp, "\n");
}
fclose(fp);
}
// 从文件中读取公交车信息
void readFromFile(Bus *buses, int *busNum) {
FILE *fp;
fp = fopen("bus_info.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %d %d %lf %lf %lf %lf", buses[*busNum].plateNum, buses[*busNum].type, &buses[*busNum].routeNum, &buses[*busNum].seatNum, &buses[*busNum].length, &buses[*busNum].width, &buses[*busNum].height, &buses[*busNum].fuelConsumption);
buses[*busNum].stations = (Station *)malloc(sizeof(Station) * 10);
buses[*busNum].stationNum = 0;
while (1) {
Station station;
fscanf(fp, "%s %d", station.name, &station.distance);
if (strcmp(station.name, "") == 0) {
break;
}
buses[*busNum].stations[buses[*busNum].stationNum++] = station;
}
(*busNum)++;
}
fclose(fp);
}
int main() {
Bus buses[100];
int busNum = 0;
char input[10];
readFromFile(buses, &busNum);
while (1) {
printf("请输入要进行的操作(1-添加公交车信息,2-显示所有公交车信息,3-保存公交车信息到文件,q-退出):");
scanf("%s", input);
if (strcmp(input, "1") == 0) {
addBus(buses, &busNum);
} else if (strcmp(input, "2") == 0) {
showAllBuses(buses, busNum);
} else if (strcmp(input, "3") == 0) {
saveToFile(buses, busNum);
} else if (strcmp(input, "q") == 0) {
break;
} else {
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
在这个代码示例中,我们定义了车站类和公交车类,并实现了添加车站信息、添加公交车信息、显示所有公交车信息、保存公交车信息到文件、从文件中读取公交车信息等基本功能。用户可以通过输入数字选择要进行的操作,从而使用这个公交车管理系统。
阅读全文