void Car_Leave(){ printf("请输入即将离开的车牌号:"); scanf("%s", &C); int i, j, flag = 1, flag2 = 1; if(s.top >= 0){ for(i = s.top; i >=0; i-- ){ flag = flag * strcmp(s.Stop[i].Lincense, C); i--; } } if(0 == flag){ Stop_To_Buff(); } if(flag !=0 /*&& flag2 != 0*/) printf("停车场内没有该汽车的信息!\n"); }
时间: 2024-03-29 17:38:01 浏览: 20
这段代码是用于实现汽车离开停车场的功能。程序要求用户输入即将离开的车牌号,并在停车场中查找该车辆信息。如果找到了该车辆信息,程序将调用一个 Stop_To_Buff() 函数将该车辆信息从停车场中移除并存入缓冲区。如果找不到该车辆信息,则程序输出“停车场内没有该汽车的信息!”的提示信息。需要注意的是,该函数中存在一个 flag2 变量,但该变量没有被使用,因此可以将其删除。
相关问题
停车场管理系统c语言数组
停车场管理系统可以使用C语言数组来实现。以下是一个简单的停车场管理系统的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CAR_NUM 100 // 停车场最大车位数
struct Car {
char plate[10]; // 车牌号
int time; // 进入停车场的时间
};
struct Car cars[MAX_CAR_NUM]; // 停车场车辆数组
int car_num = 0; // 当前停车场车辆数
// 进入停车场
void enter_park(char *plate, int time) {
if (car_num >= MAX_CAR_NUM) {
printf("停车场已满,无法停车\n");
return;
}
strcpy(cars[car_num].plate, plate);
cars[car_num].time = time;
car_num++;
printf("车辆 %s 进入停车场,停车位编号为 %d\n", plate, car_num);
}
// 离开停车场
void leave_park(char *plate, int time) {
int i;
for (i = 0; i < car_num; i++) {
if (strcmp(cars[i].plate, plate) == 0) {
int park_time = time - cars[i].time;
int fee = park_time * 2; // 停车费用为每小时2元
printf("车辆 %s 离开停车场,停车时间为 %d 小时,停车费用为 %d 元\n", plate, park_time, fee);
// 将最后一辆车移到当前位置,覆盖离开的车辆
car_num--;
if (i != car_num) {
cars[i] = cars[car_num];
}
return;
}
}
printf("未找到车牌号为 %s 的车辆\n", plate);
}
// 显示停车场车辆信息
void show_park() {
printf("当前停车场共有 %d 辆车:\n", car_num);
int i;
for (i = 0; i < car_num; i++) {
printf("停车位编号:%d,车牌号:%s,进入时间:%d\n", i + 1, cars[i].plate, cars[i].time);
}
}
int main() {
int choice;
char plate[10];
int time;
while (1) {
printf("请选择操作:\n");
printf("1. 进入停车场\n");
printf("2. 离开停车场\n");
printf("3. 显示停车场车辆信息\n");
printf("4. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入车牌号和进入时间:\n");
scanf("%s %d", plate, &time);
enter_park(plate, time);
break;
case 2:
printf("请输入车牌号和离开时间:\n");
scanf("%s %d", plate, &time);
leave_park(plate, time);
break;
case 3:
show_park();
break;
case 4:
return 0;
default:
printf("无效的操作,请重新输入\n");
break;
}
}
return 0;
}
```
用c语言 写停车场管理系统 利用栈和队列 栈是车库 队列是便道 同时加一个让路栈当栈底的车出库 其他不需要出库的车放入让路栈 需要自动记录车的进出时间,自动收费,车辆进入,车辆离开,查看停车场内车辆信息,便道内车辆信息等 停车场内有五个车位
好的,这是一个比较复杂的问题,需要涉及到栈、队列、时间、收费等多方面的内容。以下是一个简单的停车场管理系统设计:
1. 定义车辆结构体,包含车牌号、进入时间和离开时间等信息。
```c
typedef struct {
char plate_number[20]; // 车牌号
time_t enter_time; // 进入时间
time_t leave_time; // 离开时间
int charge; // 收费
} Car;
```
2. 定义栈和队列结构体,分别表示停车场和便道。
```c
#define MAX_SIZE 5
typedef struct {
Car cars[MAX_SIZE]; // 车库数组
int top; // 栈顶指针
} Stack;
typedef struct {
Car cars[MAX_SIZE]; // 便道数组
int front; // 队首指针
int rear; // 队尾指针
} Queue;
```
3. 定义让路栈结构体,表示需要出库的车辆所在的栈。
```c
typedef struct {
Car cars[MAX_SIZE]; // 让路栈数组
int top; // 栈顶指针
} LetWayStack;
```
4. 定义函数实现车辆进入停车场、车辆从停车场离开、车辆进入便道、车辆从便道进入停车场等功能。
```c
void enter_parking_lot(Stack *parking_lot, Queue *waiting_queue, Car car) {
if (parking_lot->top < MAX_SIZE) {
parking_lot->top++;
parking_lot->cars[parking_lot->top] = car;
} else {
if (waiting_queue->rear - waiting_queue->front < MAX_SIZE) {
waiting_queue->rear++;
waiting_queue->cars[waiting_queue->rear] = car;
} else {
printf("停车场已满,无法进入!\n");
}
}
}
void leave_parking_lot(Stack *parking_lot, LetWayStack *let_way_stack, char *plate_number) {
int i;
Car temp_car;
for (i = parking_lot->top; i >= 1; i--) {
if (strcmp(parking_lot->cars[i].plate_number, plate_number) == 0) {
temp_car = parking_lot->cars[i];
parking_lot->top--;
break;
} else {
let_way_stack->top++;
let_way_stack->cars[let_way_stack->top] = parking_lot->cars[i];
parking_lot->top--;
}
}
while (let_way_stack->top > 0) {
parking_lot->top++;
parking_lot->cars[parking_lot->top] = let_way_stack->cars[let_way_stack->top];
let_way_stack->top--;
}
printf("车辆%s已离开停车场!\n", temp_car.plate_number);
}
void enter_waiting_queue(Queue *waiting_queue, Car car) {
if (waiting_queue->rear - waiting_queue->front < MAX_SIZE) {
waiting_queue->rear++;
waiting_queue->cars[waiting_queue->rear] = car;
printf("车辆%s已进入便道!\n", car.plate_number);
} else {
printf("便道已满,无法进入!\n");
}
}
void enter_parking_lot_from_waiting_queue(Queue *waiting_queue, Stack *parking_lot) {
if (parking_lot->top < MAX_SIZE) {
parking_lot->top++;
parking_lot->cars[parking_lot->top] = waiting_queue->cars[waiting_queue->front + 1];
waiting_queue->front++;
printf("车辆%s已进入停车场!\n", parking_lot->cars[parking_lot->top].plate_number);
} else {
printf("停车场已满,无法进入!\n");
}
}
```
5. 定义函数实现收费。
```c
int calculate_charge(Car car) {
int duration = (int)difftime(car.leave_time, car.enter_time) / 60;
return duration * 2;
}
```
6. 定义函数实现查看停车场内车辆信息和便道内车辆信息。
```c
void print_parking_lot(Stack parking_lot) {
int i;
printf("停车场内车辆信息:\n");
for (i = parking_lot.top; i >= 1; i--) {
printf("车牌号:%s 进入时间:%s\n", parking_lot.cars[i].plate_number, ctime(&parking_lot.cars[i].enter_time));
}
}
void print_waiting_queue(Queue waiting_queue) {
int i;
printf("便道内车辆信息:\n");
for (i = waiting_queue.front + 1; i <= waiting_queue.rear; i++) {
printf("车牌号:%s 进入时间:%s\n", waiting_queue.cars[i].plate_number, ctime(&waiting_queue.cars[i].enter_time));
}
}
```
7. 主函数中实现具体逻辑,包括输入车辆信息、调用相应函数实现各种操作等。
```c
int main() {
Stack parking_lot;
parking_lot.top = 0;
Queue waiting_queue;
waiting_queue.front = 0;
waiting_queue.rear = 0;
LetWayStack let_way_stack;
let_way_stack.top = 0;
while (1) {
int option;
printf("请选择操作:\n1. 车辆进入停车场\n2. 车辆离开停车场\n3. 车辆进入便道\n4. 车辆从便道进入停车场\n5. 查看停车场内车辆信息\n6. 查看便道内车辆信息\n7. 退出程序\n");
scanf("%d", &option);
switch (option) {
case 1: {
Car car;
printf("请输入车牌号:\n");
scanf("%s", car.plate_number);
car.enter_time = time(NULL);
car.leave_time = 0;
car.charge = 0;
enter_parking_lot(&parking_lot, &waiting_queue, car);
break;
}
case 2: {
char plate_number[20];
printf("请输入车牌号:\n");
scanf("%s", plate_number);
int i;
for (i = parking_lot.top; i >= 1; i--) {
if (strcmp(parking_lot.cars[i].plate_number, plate_number) == 0) {
parking_lot.cars[i].leave_time = time(NULL);
parking_lot.cars[i].charge = calculate_charge(parking_lot.cars[i]);
leave_parking_lot(&parking_lot, &let_way_stack, plate_number);
break;
}
}
if (i == 0) {
printf("停车场内无此车辆!\n");
}
break;
}
case 3: {
Car car;
printf("请输入车牌号:\n");
scanf("%s", car.plate_number);
car.enter_time = time(NULL);
car.leave_time = 0;
car.charge = 0;
enter_waiting_queue(&waiting_queue, car);
break;
}
case 4: {
enter_parking_lot_from_waiting_queue(&waiting_queue, &parking_lot);
break;
}
case 5: {
print_parking_lot(parking_lot);
break;
}
case 6: {
print_waiting_queue(waiting_queue);
break;
}
case 7: {
return 0;
}
default: {
printf("输入错误,请重新输入!\n");
break;
}
}
}
}
```
这个停车场管理系统还可以进一步完善,比如增加管理员登录、多级收费、车位监控等功能。以上代码仅供参考,可能存在不足之处,欢迎指正和补充。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)