停车场收费管理系统c语言顺序表源代码
时间: 2023-08-03 14:05:51 浏览: 163
以下是停车场收费管理系统C语言顺序表的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MAX_SIZE 100 // 停车场最大容量
// 车辆信息结构体
typedef struct {
char plate_number[10]; // 车牌号
time_t enter_time; // 进入时间
time_t leave_time; // 离开时间
int parking_time; // 停车时长(秒)
float cost; // 费用
} CarInfo;
// 顺序表结构体
typedef struct {
CarInfo cars[MAX_SIZE]; // 存储车辆信息的数组
int length; // 顺序表长度
int capacity; // 顺序表容量
} SeqList;
// 初始化顺序表
SeqList* init_seq_list() {
SeqList* seq_list = (SeqList*)malloc(sizeof(SeqList));
seq_list->length = 0;
seq_list->capacity = MAX_SIZE;
return seq_list;
}
// 向顺序表中添加车辆信息
void add_car(SeqList* seq_list, CarInfo car) {
// 如果停车场已满,无法添加车辆信息
if (seq_list->length >= seq_list->capacity) {
printf("停车场已满,无法添加车辆信息!\n");
return;
}
seq_list->cars[seq_list->length] = car;
seq_list->length++;
printf("车辆信息添加成功!\n");
}
// 根据车牌号查找车辆信息
int find_car(SeqList* seq_list, char plate_number[]) {
int i;
for (i = 0; i < seq_list->length; i++) {
if (strcmp(seq_list->cars[i].plate_number, plate_number) == 0) {
return i;
}
}
return -1;
}
// 根据车牌号删除车辆信息
void delete_car(SeqList* seq_list, char plate_number[]) {
int index = find_car(seq_list, plate_number);
if (index == -1) {
printf("车辆信息不存在!\n");
return;
}
// 计算停车费用
CarInfo car = seq_list->cars[index];
car.leave_time = time(NULL);
car.parking_time = (int)difftime(car.leave_time, car.enter_time);
if (car.parking_time < 3600) { // 停车时间小于1小时,收费5元
car.cost = 5.0;
} else { // 停车时间大于等于1小时,每小时收费10元
int hours = car.parking_time / 3600;
car.cost = 5.0 + hours * 10.0;
}
seq_list->cars[index] = car;
// 从顺序表中删除车辆信息
int i;
for (i = index; i < seq_list->length - 1; i++) {
seq_list->cars[i] = seq_list->cars[i + 1];
}
seq_list->length--;
printf("车辆信息删除成功!\n");
printf("停车费用:%.2f元\n", car.cost);
}
// 显示所有车辆信息
void show_cars(SeqList* seq_list) {
int i;
printf("%-10s%-20s%-20s%-10s%-10s\n", "车牌号", "进入时间", "离开时间", "停车时长", "费用");
for (i = 0; i < seq_list->length; i++) {
CarInfo car = seq_list->cars[i];
char enter_time_str[20], leave_time_str[20];
strftime(enter_time_str, sizeof(enter_time_str), "%Y-%m-%d %H:%M:%S", localtime(&car.enter_time));
strftime(leave_time_str, sizeof(leave_time_str), "%Y-%m-%d %H:%M:%S", localtime(&car.leave_time));
printf("%-10s%-20s%-20s%-10d%-10.2f\n", car.plate_number, enter_time_str, leave_time_str, car.parking_time, car.cost);
}
}
int main() {
SeqList* seq_list = init_seq_list();
int choice;
do {
printf("停车场收费管理系统\n");
printf("1. 添加车辆信息\n");
printf("2. 删除车辆信息\n");
printf("3. 显示所有车辆信息\n");
printf("4. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1: {
// 添加车辆信息
CarInfo car;
printf("请输入车牌号:");
scanf("%s", car.plate_number);
car.enter_time = time(NULL);
add_car(seq_list, car);
break;
}
case 2: {
// 删除车辆信息
char plate_number[10];
printf("请输入车牌号:");
scanf("%s", plate_number);
delete_car(seq_list, plate_number);
break;
}
case 3: {
// 显示所有车辆信息
show_cars(seq_list);
break;
}
case 4: {
// 退出程序
printf("谢谢使用!\n");
break;
}
default: {
printf("选项无效,请重新输入!\n");
break;
}
}
} while (choice != 4);
return 0;
}
```
以上是一个简单的停车场收费管理系统的代码示例,您可以根据自己的需求进行相应的修改和完善。
阅读全文