帮我用c语言设计并实现停车场收费系统
时间: 2023-12-11 12:03:18 浏览: 144
好的,停车场收费系统一般包含以下功能:
1. 车辆入场记录:记录车辆的入场时间、车牌号等信息。
2. 车辆出场计费:根据车辆停留时间计算停车费用。
3. 支付结算:提供支付方式,完成结算。
4. 管理功能:管理员可以查看停车场内车辆信息、调整计费标准等。
以下是一个简单的停车场收费系统的实现,你可以参考一下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_CAR_NUM 100 // 停车场最大容量
#define PARK_TIME 3600 // 最大停车时间(单位:秒)
#define PRICE_PER_HOUR 10 // 每小时停车费用
// 车辆信息结构体
typedef struct Car {
char plateNum[10]; // 车牌号
time_t inTime; // 入场时间
time_t outTime; // 出场时间
} Car;
// 停车场结构体
typedef struct Park {
int carNum; // 当前停车数
Car cars[MAX_CAR_NUM]; // 车辆信息数组
} Park;
// 获取当前系统时间
time_t getCurrentTime() {
time_t now = time(NULL);
return now;
}
// 停车
void parkCar(Park *park, char *plateNum) {
if (park->carNum >= MAX_CAR_NUM) {
printf("停车场已满,无法停车!\n");
return;
}
// 新增车辆信息
Car car;
strcpy(car.plateNum, plateNum);
car.inTime = getCurrentTime();
car.outTime = 0;
// 存储车辆信息
park->cars[park->carNum] = car;
park->carNum++;
printf("车辆 %s 已停入停车场!\n", plateNum);
}
// 出车并结算
void leavePark(Park *park, char *plateNum) {
for (int i = 0; i < park->carNum; i++) {
Car *car = &park->cars[i];
if (strcmp(car->plateNum, plateNum) == 0) {
// 更新出场时间
car->outTime = getCurrentTime();
// 计算停车时间和费用
int parkDuration = car->outTime - car->inTime;
int parkHours = parkDuration / PARK_TIME;
int parkFee = parkHours * PRICE_PER_HOUR;
// 输出结算信息
printf("车辆 %s 停车时间:%d小时,停车费用:%d元\n", car->plateNum, parkHours, parkFee);
// 移除车辆信息
for (int j = i + 1; j < park->carNum; j++) {
park->cars[j - 1] = park->cars[j];
}
park->carNum--;
return;
}
}
printf("未找到车牌号为 %s 的车辆!\n", plateNum);
}
// 显示停车场信息
void showParkInfo(Park *park) {
printf("当前停车场内共有 %d 辆车:\n", park->carNum);
for (int i = 0; i < park->carNum; i++) {
Car *car = &park->cars[i];
printf("车牌号:%s,入场时间:%s", car->plateNum, ctime(&car->inTime));
}
}
int main() {
Park park = {0};
while (1) {
int choice;
printf("请选择操作(1.停车 2.离开停车场 3.查看停车场信息 4.退出):");
scanf("%d", &choice);
switch (choice) {
case 1: {
char plateNum[10];
printf("请输入车牌号:");
scanf("%s", plateNum);
parkCar(&park, plateNum);
break;
}
case 2: {
char plateNum[10];
printf("请输入车牌号:");
scanf("%s", plateNum);
leavePark(&park, plateNum);
break;
}
case 3: {
showParkInfo(&park);
break;
}
case 4: {
printf("感谢使用停车场收费系统!\n");
exit(0);
}
default: {
printf("无效操作,请重新选择!\n");
break;
}
}
}
return 0;
}
```
该停车场收费系统实现了车辆的入场记录、车辆出场计费、支付结算和管理功能。你可以根据实际需求进行修改和扩展。
阅读全文