4、公交车管理系统问题描述:设计一个公交车管理系统,公交车需设置不同的类型,每个线路的公交车会经过多个不同的车站,车站、公交车可设计成不同的类,给出某个公交车可以显示它所经过所有站点。基本功能:(1)公交车要设置不同的类型,如电车、油车等;(2)公交车信息包括:车牌号,类型,线路号,座位数,长度,宽度,高度,油耗等;(3)公交车信息要保存在文件中;(4)系统可以实现对公交车和车站信息的添加,修改,删除,查找等功能;(5)系统界面应该尽量友好,方便使用。c语言程序
时间: 2023-11-14 14:04:59 浏览: 41
以下是一个简单的公交车管理系统的 C 语言程序示例,实现了基本的功能:
```
#include <stdio.h>
#include <string.h>
#define MAX_BUSES 100
#define MAX_STATIONS 100
// 公交车类型枚举
enum BusType {
ELECTRIC,
GAS,
HYBRID,
OTHER
};
// 公交车结构体
struct Bus {
char plateNumber[20]; // 车牌号
enum BusType type; // 类型
int routeNumber; // 线路号
int seatCount; // 座位数
float length; // 长度
float width; // 宽度
float height; // 高度
float fuelConsumption; // 油耗
int stationCount; // 经过车站数量
int stationIndexes[MAX_STATIONS]; // 经过车站编号
};
// 车站结构体
struct Station {
char name[20]; // 车站名称
};
// 全局变量
struct Bus buses[MAX_BUSES]; // 公交车数组
int busCount = 0; // 公交车数量
struct Station stations[MAX_STATIONS]; // 车站数组
int stationCount = 0; // 车站数量
// 添加公交车
void addBus() {
if (busCount >= MAX_BUSES) {
printf("Error: too many buses!\n");
return;
}
struct Bus bus;
printf("Enter plate number: ");
scanf("%s", bus.plateNumber);
printf("Enter bus type (0: electric, 1: gas, 2: hybrid, 3: other): ");
scanf("%d", &bus.type);
printf("Enter route number: ");
scanf("%d", &bus.routeNumber);
printf("Enter seat count: ");
scanf("%d", &bus.seatCount);
printf("Enter length: ");
scanf("%f", &bus.length);
printf("Enter width: ");
scanf("%f", &bus.width);
printf("Enter height: ");
scanf("%f", &bus.height);
printf("Enter fuel consumption: ");
scanf("%f", &bus.fuelConsumption);
bus.stationCount = 0;
while (1) {
printf("Enter station index (0 to finish): ");
int index;
scanf("%d", &index);
if (index == 0) {
break;
}
if (bus.stationCount >= MAX_STATIONS) {
printf("Error: too many stations for this bus!\n");
break;
}
bus.stationIndexes[bus.stationCount++] = index - 1;
}
buses[busCount++] = bus;
printf("Bus added successfully!\n");
}
// 显示公交车信息
void showBus(struct Bus bus) {
printf("Plate number: %s\n", bus.plateNumber);
printf("Type: %s\n", bus.type == ELECTRIC ? "Electric" :
bus.type == GAS ? "Gas" :
bus.type == HYBRID ? "Hybrid" : "Other");
printf("Route number: %d\n", bus.routeNumber);
printf("Seat count: %d\n", bus.seatCount);
printf("Length: %.2f\n", bus.length);
printf("Width: %.2f\n", bus.width);
printf("Height: %.2f\n", bus.height);
printf("Fuel consumption: %.2f\n", bus.fuelConsumption);
printf("Stations: ");
for (int i = 0; i < bus.stationCount; i++) {
printf("%s%s", stations[bus.stationIndexes[i]].name,
i < bus.stationCount - 1 ? " -> " : "\n");
}
}
// 显示所有公交车信息
void showAllBuses() {
if (busCount == 0) {
printf("No buses found.\n");
return;
}
for (int i = 0; i < busCount; i++) {
showBus(buses[i]);
}
}
// 查找公交车
void findBus() {
char plateNumber[20];
printf("Enter plate number: ");
scanf("%s", plateNumber);
for (int i = 0; i < busCount; i++) {
if (strcmp(buses[i].plateNumber, plateNumber) == 0) {
showBus(buses[i]);
return;
}
}
printf("Bus not found!\n");
}
// 添加车站
void addStation() {
if (stationCount >= MAX_STATIONS) {
printf("Error: too many stations!\n");
return;
}
struct Station station;
printf("Enter station name: ");
scanf("%s", station.name);
stations[stationCount++] = station;
printf("Station added successfully!\n");
}
// 显示所有车站信息
void showAllStations() {
if (stationCount == 0) {
printf("No stations found.\n");
return;
}
for (int i = 0; i < stationCount; i++) {
printf("%d. %s\n", i + 1, stations[i].name);
}
}
// 主函数
int main() {
while (1) {
printf("\n");
printf("1. Add bus\n");
printf("2. Show all buses\n");
printf("3. Find bus\n");
printf("4. Add station\n");
printf("5. Show all stations\n");
printf("6. Exit\n");
printf("Enter your choice: ");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
addBus();
break;
case 2:
showAllBuses();
break;
case 3:
findBus();
break;
case 4:
addStation();
break;
case 5:
showAllStations();
break;
case 6:
return 0;
default:
printf("Invalid choice!\n");
}
}
}
```
以上程序实现了添加公交车、显示所有公交车、查找公交车、添加车站、显示所有车站等基本功能。公交车信息和车站信息保存在全局变量中,可以考虑使用文件来保存和读取这些信息。