C语言建立一个简单的车辆调度管理系统
时间: 2023-06-24 08:06:36 浏览: 99
一个简单的车辆调度管理系统需要考虑以下几个方面:
1. 基本信息的录入:需要录入车辆的基本信息,如车牌号、车型、载重等等。
2. 调度任务的制定:需要制定调度任务,包括车辆的出发时间、目的地、货物种类和数量等等。
3. 调度任务的分配:需要将制定的任务分配给符合条件的车辆,考虑到各个车辆的载重、行驶距离等因素。
4. 调度任务的执行:需要记录每个车辆的运输情况,如实际出发时间、到达时间、运输量等等。
5. 运输数据的统计和分析:需要对每个车辆进行数据统计和分析,如行驶里程、平均速度、运输效率等等。
下面是一个简单的车辆调度管理系统的 C 语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEHICLE_NUM 1000 // 最大车辆数量
#define MAX_TASK_NUM 1000 // 最大任务数量
// 车辆结构体
typedef struct {
char plate_number[20]; // 车牌号
char model[20]; // 车型
float load; // 载重
} Vehicle;
// 任务结构体
typedef struct {
char destination[50]; // 目的地
char goods_type[50]; // 货物种类
float goods_quantity; // 货物数量
float distance; // 行驶距离
int vehicle_index; // 分配的车辆下标
} Task;
Vehicle vehicles[MAX_VEHICLE_NUM]; // 所有车辆信息
Task tasks[MAX_TASK_NUM]; // 所有任务信息
int vehicle_count = 0; // 当前车辆数量
int task_count = 0; // 当前任务数量
// 添加车辆
void add_vehicle() {
if (vehicle_count >= MAX_VEHICLE_NUM) {
printf("车辆数量已达到上限,无法添加!\n");
return;
}
Vehicle vehicle;
printf("请输入车牌号:");
scanf("%s", vehicle.plate_number);
printf("请输入车型:");
scanf("%s", vehicle.model);
printf("请输入载重:");
scanf("%f", &vehicle.load);
vehicles[vehicle_count++] = vehicle;
printf("车辆添加成功!\n");
}
// 添加任务
void add_task() {
if (task_count >= MAX_TASK_NUM) {
printf("任务数量已达到上限,无法添加!\n");
return;
}
Task task;
printf("请输入目的地:");
scanf("%s", task.destination);
printf("请输入货物种类:");
scanf("%s", task.goods_type);
printf("请输入货物数量:");
scanf("%f", &task.goods_quantity);
printf("请输入行驶距离:");
scanf("%f", &task.distance);
// 分配车辆
int vehicle_index = -1;
for (int i = 0; i < vehicle_count; i++) {
if (vehicles[i].load >= task.goods_quantity && vehicles[i].load - task.goods_quantity <= 1) {
vehicle_index = i;
break;
}
}
if (vehicle_index == -1) {
printf("没有符合条件的车辆可以执行该任务!\n");
return;
}
task.vehicle_index = vehicle_index;
tasks[task_count++] = task;
printf("任务添加成功!\n");
}
// 执行任务
void execute_task() {
for (int i = 0; i < task_count; i++) {
Task task = tasks[i];
Vehicle vehicle = vehicles[task.vehicle_index];
printf("任务%d:\n", i + 1);
printf("目的地:%s\n", task.destination);
printf("货物种类:%s\n", task.goods_type);
printf("货物数量:%.2f\n", task.goods_quantity);
printf("行驶距离:%.2f\n", task.distance);
printf("分配的车辆:车牌号:%s,车型:%s,载重:%.2f\n", vehicle.plate_number, vehicle.model, vehicle.load);
// 模拟运输
float speed = 60;
float time = task.distance / speed;
printf("预计到达时间:%.2f小时后\n", time);
printf("开始执行任务...\n");
printf("任务完成!\n");
}
}
// 统计数据
void statistics() {
float total_distance = 0;
float total_time = 0;
float total_goods_quantity = 0;
float total_load = 0;
for (int i = 0; i < task_count; i++) {
Task task = tasks[i];
Vehicle vehicle = vehicles[task.vehicle_index];
total_distance += task.distance;
float speed = 60;
float time = task.distance / speed;
total_time += time;
total_goods_quantity += task.goods_quantity;
total_load += vehicle.load;
}
printf("运输总里程:%.2f\n", total_distance);
printf("总运输时间:%.2f小时\n", total_time);
printf("总货物数量:%.2f\n", total_goods_quantity);
printf("总载重量:%.2f\n", total_load);
printf("平均速度:%.2f\n", total_distance / total_time);
}
int main() {
int choice;
while (1) {
printf("\n车辆调度管理系统\n");
printf("1. 添加车辆\n");
printf("2. 添加任务\n");
printf("3. 执行任务\n");
printf("4. 统计数据\n");
printf("5. 退出系统\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_vehicle();
break;
case 2:
add_task();
break;
case 3:
execute_task();
break;
case 4:
statistics();
break;
case 5:
exit(0);
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
该程序通过菜单方式提供了添加车辆、添加任务、执行任务和统计数据等功能。其中添加车辆和添加任务会将输入的信息存储到车辆数组和任务数组中,执行任务会模拟运输并输出相关信息,统计数据会计算所有任务的数据并输出。
阅读全文