下面是“C语言数组实现公交车管理系统”的完整攻略:
1. 设计思路
公交车管理系统需要对公交路线、车辆和乘客信息进行管理,我们可以设计三个数组来存储这些信息:
bus_line[]
数组:存储公交路线信息,每个元素表示一条公交路线,包括路线编号、起始站点、终点站点和票价等信息。bus[]
数组:存储车辆信息,每个元素表示一辆车,包括车牌号、所属路线、座位数和已售座位数等信息。passenger[]
数组:存储乘客信息,每个元素表示一个乘客,包括姓名、性别、电话和所购车票等信息。
针对公交车管理系统的不同功能,我们可以设计不同的函数来实现:
add_bus_line()
函数:添加一条新的公交路线。add_bus()
函数:添加一辆新的车辆。sell_ticket()
函数:售出一张车票。show_bus_line()
函数:显示所有的公交路线信息。show_bus()
函数:显示所有的车辆信息。show_passenger()
函数:显示所有的乘客信息。
2. 代码实现
下面是示例代码,仅供参考。
#include <stdio.h>
#include <string.h>
// 公交路线结构体
struct BusLine
{
int id;
char start[20];
char end[20];
float price;
};
// 车辆结构体
struct Bus
{
char plate[10];
int line_id;
int seat_count;
int sold_count;
};
// 乘客结构体
struct Passenger
{
char name[10];
char gender[3];
char phone[12];
char plate[10];
};
// 公交路线数组
struct BusLine bus_line[10];
int bus_line_count = 0;
// 车辆数组
struct Bus bus[50];
int bus_count = 0;
// 乘客数组
struct Passenger passenger[100];
int passenger_count = 0;
// 添加一条新公交路线
void add_bus_line()
{
struct BusLine new_line;
printf("请输入公交路线编号:");
scanf("%d", &new_line.id);
printf("请输入起始站点:");
scanf("%s", new_line.start);
printf("请输入终点站点:");
scanf("%s", new_line.end);
printf("请输入票价:");
scanf("%f", &new_line.price);
bus_line[bus_line_count++] = new_line;
}
// 添加一辆新车辆
void add_bus()
{
struct Bus new_bus;
printf("请输入车牌号:");
scanf("%s", new_bus.plate);
printf("请输入所属公交路线编号:");
scanf("%d", &new_bus.line_id);
printf("请输入座位数:");
scanf("%d", &new_bus.seat_count);
new_bus.sold_count = 0;
bus[bus_count++] = new_bus;
}
// 售出一张车票
void sell_ticket()
{
struct Passenger new_passenger;
printf("请输入乘客姓名:");
scanf("%s", new_passenger.name);
printf("请输入乘客性别:");
scanf("%s", new_passenger.gender);
printf("请输入乘客电话:");
scanf("%s", new_passenger.phone);
printf("请输入所购车辆牌号:");
scanf("%s", new_passenger.plate);
passenger[passenger_count++] = new_passenger;
// 在车辆数组中查找对应的车辆,增加售票数
for (int i = 0; i < bus_count; i++)
{
if (strcmp(bus[i].plate, new_passenger.plate) == 0)
{
bus[i].sold_count++;
break;
}
}
}
// 显示所有公交路线信息
void show_bus_line()
{
printf("公交路线信息如下:\n");
printf("%-10s%-20s%-20s%s\n", "编号", "起始站点", "终点站点", "票价");
for (int i = 0; i < bus_line_count; i++)
{
printf("%-10d%-20s%-20s%.2f\n", bus_line[i].id, bus_line[i].start,
bus_line[i].end, bus_line[i].price);
}
}
// 显示所有车辆信息
void show_bus()
{
printf("车辆信息如下:\n");
printf("%-10s%-10s%-10s%s\n", "车牌号", "编号", "座位数", "已售座位数");
for (int i = 0; i < bus_count; i++)
{
printf("%-10s%-10d%-10d%d\n", bus[i].plate, bus[i].line_id,
bus[i].seat_count, bus[i].sold_count);
}
}
// 显示所有乘客信息
void show_passenger()
{
printf("乘客信息如下:\n");
printf("%-10s%-10s%-15s%s\n", "姓名", "性别", "电话", "车辆牌号");
for (int i = 0; i < passenger_count; i++)
{
printf("%-10s%-10s%-15s%s\n", passenger[i].name, passenger[i].gender,
passenger[i].phone, passenger[i].plate);
}
}
int main()
{
int choice;
do
{
printf("请输入功能选项:\n");
printf("1. 添加公交路线\n");
printf("2. 添加车辆\n");
printf("3. 售票\n");
printf("4. 显示公交路线信息\n");
printf("5. 显示车辆信息\n");
printf("6. 显示乘客信息\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice)
{
case 1:
add_bus_line();
break;
case 2:
add_bus();
break;
case 3:
sell_ticket();
break;
case 4:
show_bus_line();
break;
case 5:
show_bus();
break;
case 6:
show_passenger();
break;
case 0:
printf("程序结束,感谢使用!\n");
break;
default:
printf("无效选项,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
示例一:添加一条公交路线
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
1
请输入公交路线编号:1
请输入起始站点:学院路
请输入终点站点:人民广场
请输入票价:2.5
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
4
公交路线信息如下:
编号 起始站点 终点站点 票价
1 学院路 人民广场 2.50
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
示例二:售出一张车票
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
2
请输入车牌号:沪A12345
请输入所属公交路线编号:1
请输入座位数:50
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
3
请输入乘客姓名:张三
请输入乘客性别:男
请输入乘客电话:13812345678
请输入所购车辆牌号:沪A12345
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
5
车辆信息如下:
车牌号 编号 座位数 已售座位数
沪A12345 1 50 1
请输入功能选项:
1. 添加公交路线
2. 添加车辆
3. 售票
4. 显示公交路线信息
5. 显示车辆信息
6. 显示乘客信息
0. 退出程序
6
乘客信息如下:
姓名 性别 电话 车辆牌号
张三 男 13812345678 沪A12345
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言数组实现公交车管理系统 - Python技术站