使用c语言 写一个停车场管理系统 要求有车辆进出时间 车位信息 查找车辆 车辆到达 车辆离开 便道停车 停车收费并解释代码

时间: 2024-03-13 16:45:26 浏览: 15
好的,以下是一个基本的停车场管理系统的 C 语言代码示例。它包括车辆进出时间记录、车位信息、查找车辆、车辆到达和离开、便道停车、停车收费等功能。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_NUM_SPACES 100 // 最大停车位数量 #define PARKING_FEE 5 // 停车费用 // 停车位结构体 typedef struct { int id; // 停车位编号 int is_occupied; // 是否被占用 time_t entry_time; // 进入时间 time_t exit_time; // 离开时间 } parking_space; // 车辆结构体 typedef struct { char license_plate[10]; // 车牌号 int parked_space_id; // 停车位编号 time_t arrival_time; // 到达时间 time_t departure_time; // 离开时间 } vehicle; // 停车场结构体 typedef struct { parking_space spaces[MAX_NUM_SPACES]; // 停车位数组 vehicle *vehicles; // 车辆数组 int num_spaces; // 停车位数量 int num_vehicles; // 车辆数量 } parking_lot; // 初始化停车场 void init_parking_lot(parking_lot *lot, int num_spaces) { lot->num_spaces = num_spaces; lot->num_vehicles = 0; lot->vehicles = malloc(sizeof(vehicle) * num_spaces); for (int i = 0; i < num_spaces; i++) { lot->spaces[i].id = i + 1; lot->spaces[i].is_occupied = 0; lot->spaces[i].entry_time = 0; lot->spaces[i].exit_time = 0; } } // 查找空闲停车位的编号 int find_free_space(parking_lot *lot) { for (int i = 0; i < lot->num_spaces; i++) { if (lot->spaces[i].is_occupied == 0) { return i; } } return -1; // 没有空闲停车位 } // 车辆进入停车场 void vehicle_entry(parking_lot *lot, char *license_plate) { int free_space_id = find_free_space(lot); if (free_space_id == -1) { printf("停车场已满,无法进入!\n"); return; } lot->spaces[free_space_id].is_occupied = 1; lot->spaces[free_space_id].entry_time = time(NULL); vehicle new_vehicle = { .parked_space_id = free_space_id + 1, .arrival_time = lot->spaces[free_space_id].entry_time }; strcpy(new_vehicle.license_plate, license_plate); lot->vehicles[lot->num_vehicles++] = new_vehicle; printf("车辆 %s 进入停车场,停放在 %d 号停车位,到达时间为 %s", license_plate, new_vehicle.parked_space_id, ctime(&new_vehicle.arrival_time)); } // 查找车辆的停车位编号 int find_parked_space_id(parking_lot *lot, char *license_plate) { for (int i = 0; i < lot->num_vehicles; i++) { if (strcmp(lot->vehicles[i].license_plate, license_plate) == 0) { return lot->vehicles[i].parked_space_id; } } return -1; // 找不到车辆 } // 车辆离开停车场 void vehicle_exit(parking_lot *lot, char *license_plate) { int parked_space_id = find_parked_space_id(lot, license_plate); if (parked_space_id == -1) { printf("没有找到车辆 %s!\n", license_plate); return; } int space_index = parked_space_id - 1; lot->spaces[space_index].is_occupied = 0; lot->spaces[space_index].exit_time = time(NULL); for (int i = 0; i < lot->num_vehicles; i++) { if (strcmp(lot->vehicles[i].license_plate, license_plate) == 0) { lot->vehicles[i].departure_time = lot->spaces[space_index].exit_time; break; } } printf("车辆 %s 离开停车场,离开时间为 %s", license_plate, ctime(&lot->spaces[space_index].exit_time)); } // 计算停车时间(分钟) int calculate_parking_time(time_t entry_time, time_t exit_time) { return (int)difftime(exit_time, entry_time) / 60; } // 计算停车费用 int calculate_parking_fee(int parking_time) { return parking_time * PARKING_FEE; } // 车辆收费 void collect_fee(parking_lot *lot, char *license_plate) { int parked_space_id = find_parked_space_id(lot, license_plate); if (parked_space_id == -1) { printf("没有找到车辆 %s!\n", license_plate); return; } int space_index = parked_space_id - 1; time_t entry_time = lot->spaces[space_index].entry_time; time_t exit_time = lot->spaces[space_index].exit_time; int parking_time = calculate_parking_time(entry_time, exit_time); int parking_fee = calculate_parking_fee(parking_time); printf("车辆 %s 停放了 %d 分钟,停车费用为 %d 元。\n", license_plate, parking_time, parking_fee); } // 主函数 int main() { parking_lot lot; init_parking_lot(&lot, 10); vehicle_entry(&lot, "京A12345"); vehicle_entry(&lot, "京B67890"); collect_fee(&lot, "京A12345"); vehicle_exit(&lot, "京A12345"); vehicle_exit(&lot, "京C24680"); collect_fee(&lot, "京A12345"); return 0; } ``` 这段代码中,我们使用了三个结构体:`parking_space`、`vehicle` 和 `parking_lot`,分别表示停车位、车辆和整个停车场。 在 `init_parking_lot` 函数中,我们初始化了停车场的停车位数组。在 `find_free_space` 函数中,我们查找空闲的停车位编号。在 `vehicle_entry` 函数中,我们将车辆信息记录在停车场的车辆数组中,并更新停车位的占用状态和进入时间。在 `find_parked_space_id` 函数中,我们查找车辆的停车位编号。在 `vehicle_exit` 函数中,我们更新停车位的占用状态和离开时间,并更新车辆数组中对应车辆的离开时间。在 `calculate_parking_time` 和 `calculate_parking_fee` 函数中,我们分别计算停车时间和停车费用。在 `collect_fee` 函数中,我们根据车辆的停车时间计算停车费用,并输出提示信息。 在主函数中,我们首先调用 `init_parking_lot` 函数初始化停车场。然后,我们使用 `vehicle_entry` 函数将两辆车辆停放在停车场中,其中一个车辆的车牌号为"京A12345",另一个车辆的车牌号为"京B67890"。接下来,我们使用 `collect_fee` 函数计算第一辆车的停车费用。然后,我们使用 `vehicle_exit` 函数将第一辆车从停车场中取出,同时尝试将一辆不存在的车辆从停车场中取出。最后,我们再次使用 `collect_fee` 函数计算第一辆车的停车费用。 以上就是一个基本的停车场管理系统的 C 语言代码示例。

相关推荐

最新推荐

recommend-type

C语言源码实现停车场管理系统

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

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

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

C语言数组实现学生信息管理系统设计

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

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

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

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

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

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

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

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

info-center source defatult

这是一个 Cisco IOS 命令,用于配置 Info Center 默认源。Info Center 是 Cisco 设备的日志记录和报告工具,可以用于收集和查看设备的事件、警报和错误信息。该命令用于配置 Info Center 默认源,即设备的默认日志记录和报告服务器。在命令行界面中输入该命令后,可以使用其他命令来配置默认源的 IP 地址、端口号和协议等参数。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。