用c语言写一个停车场管理收费系统的代码
时间: 2023-10-10 07:09:34 浏览: 183
c语言停车场管理收费系统
4星 · 用户满意度95%
好的,以下是一个简单的停车场管理收费系统的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100 // 停车场最大容量
struct Car {
char license_plate[8]; // 车牌号码
int park_time; // 停车时间
};
struct ParkingLot {
struct Car cars[MAX_SIZE]; // 车辆数组
int count; // 当前停车数量
};
// 初始化停车场
void init(struct ParkingLot *parking_lot) {
parking_lot->count = 0;
}
// 停车
void park(struct ParkingLot *parking_lot, char *license_plate, int park_time) {
if (parking_lot->count == MAX_SIZE) {
printf("停车场已满,无法停车!\n");
return;
}
// 查找是否已存在相同车牌
for (int i = 0; i < parking_lot->count; i++) {
if (strcmp(parking_lot->cars[i].license_plate, license_plate) == 0) {
printf("该车已在停车场内!\n");
return;
}
}
// 添加新车辆
struct Car car;
strcpy(car.license_plate, license_plate);
car.park_time = park_time;
parking_lot->cars[parking_lot->count++] = car;
printf("车辆 %s 已停入停车场,停车时间为 %d 分钟。\n", license_plate, park_time);
}
// 取车并计算停车费用
void leave(struct ParkingLot *parking_lot, char *license_plate, int leave_time) {
for (int i = 0; i < parking_lot->count; i++) {
if (strcmp(parking_lot->cars[i].license_plate, license_plate) == 0) {
int park_time = leave_time - parking_lot->cars[i].park_time;
int fee = park_time <= 60 ? 5 : 5 + (park_time - 60) / 30 * 2;
printf("车辆 %s 已驶出停车场,停车时间为 %d 分钟,停车费用为 %d 元。\n", license_plate, park_time, fee);
// 移除车辆
for (int j = i; j < parking_lot->count - 1; j++) {
parking_lot->cars[j] = parking_lot->cars[j + 1];
}
parking_lot->count--;
return;
}
}
printf("停车场内未找到该车辆!\n");
}
int main() {
struct ParkingLot parking_lot;
init(&parking_lot);
int total_fee = 0; // 总收费
while (1) {
printf("\n请输入指令:\n");
printf("1. 停车\n");
printf("2. 取车\n");
printf("3. 显示当前停车场状态\n");
printf("4. 显示总收费\n");
printf("5. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入车牌号码和停车时间(分钟):\n");
char license_plate[8];
int park_time;
scanf("%s %d", license_plate, &park_time);
park(&parking_lot, license_plate, park_time);
break;
case 2:
printf("请输入车牌号码和离开时间(分钟):\n");
char license_plate2[8];
int leave_time;
scanf("%s %d", license_plate2, &leave_time);
leave(&parking_lot, license_plate2, leave_time);
break;
case 3:
printf("当前停车场内共有 %d 辆车:\n", parking_lot.count);
for (int i = 0; i < parking_lot.count; i++) {
printf("车辆 %s,停车时间 %d 分钟。\n", parking_lot.cars[i].license_plate, parking_lot.cars[i].park_time);
}
break;
case 4:
printf("当前总收费为 %d 元。\n", total_fee);
break;
case 5:
printf("程序已退出,感谢使用!\n");
exit(0);
default:
printf("无效的指令!\n");
break;
}
// 更新总收费
for (int i = 0; i < parking_lot.count; i++) {
int park_time = leave_time - parking_lot.cars[i].park_time;
int fee = park_time <= 60 ? 5 : 5 + (park_time - 60) / 30 * 2;
total_fee += fee;
}
}
return 0;
}
```
该代码实现了停车、取车、显示当前停车场状态和显示总收费四个功能,以及一个简单的交互界面。停车费用按照停车时间计算,不足一小时的收费为 5 元,超过一小时的每半小时加收 2 元。总收费在每次停车或取车时更新。
阅读全文