C语言建立一个简单的车辆调度管理系统

时间: 2023-06-24 12:06:36 浏览: 40
一个简单的车辆调度管理系统需要考虑以下几个方面: 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; } ``` 该程序通过菜单方式提供了添加车辆、添加任务、执行任务和统计数据等功能。其中添加车辆和添加任务会将输入的信息存储到车辆数组和任务数组中,执行任务会模拟运输并输出相关信息,统计数据会计算所有任务的数据并输出。

相关推荐

最新推荐

recommend-type

C语言实现车辆出租管理系统

主要为大家详细介绍了C语言实现车辆出租管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现简单航班管理系统

主要为大家详细介绍了C语言实现简单航班管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现餐饮结账管理系统

主要为大家详细介绍了C语言实现餐饮结账管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现电话簿管理系统

主要为大家详细介绍了C语言实现电话簿管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现银行管理系统

主要为大家详细介绍了C语言实现银行管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。