C语言实现停车管理系统
简介
本文介绍如何使用C语言实现一个简单的停车管理系统。停车管理系统可以用来记录车位状态、车辆信息、收费等等相关内容。在本文中,我们将使用文件来存储数据,使用控制台界面进行输入和输出。
1. 设计数据结构
在停车管理系统中,最重要的数据结构是车辆信息。我们可以使用struct来定义一个车辆信息的数据结构:
struct car_info {
char num[10]; // 车牌号码
char name[20]; // 车主姓名
char time[30]; // 进入停车场时间
float fee; // 停车费用
};
2. 设计文件格式
为了保存车辆信息,我们需要设计一个文件格式。我们可以使用CSV(逗号分隔值)格式。每一行代表一个车辆信息,每个数据项使用逗号分隔:
车牌号码,车主姓名,进入停车场时间,停车费用
例如:
京A12345,张三,2021-07-01 10:00:00,10.00
3. 实现文件读写
在C语言中,可以使用标准库中的fopen、fread、fwrite、fclose等函数来进行文件读写操作。我们可以使用以下代码来打开一个文件并进行读写:
FILE *fp; // 定义文件指针
fp = fopen("filename.csv", "r+"); // 打开文件
其中,第一个参数是文件路径和文件名,第二个参数是打开文件的方式。r+表示读写模式。
实现文件读取的代码示例如下:
FILE *fp; // 定义文件指针
struct car_info car;
fp = fopen("filename.csv", "r+");
if (fp == NULL) {
printf("Open file error");
return;
}
while (!feof(fp)) {
fscanf(fp, "%[^,],%[^,],%[^,],%f\n",
car.num, car.name, car.time, &car.fee);
// 处理车辆信息
}
fclose(fp); // 关闭文件
实现文件写入的代码示例如下:
FILE *fp; // 定义文件指针
struct car_info car;
fp = fopen("filename.csv", "a+");
if (fp == NULL) {
printf("Open file error");
return;
}
// 添加一条车辆信息
fprintf(fp, "%s,%s,%s,%.2f\n",
car.num, car.name, car.time, car.fee);
fclose(fp); // 关闭文件
4. 实现用户界面
用户界面是停车管理系统的核心。我们可以使用控制台界面实现一个简单的操作系统。
在操作系统中,我们可以实现以下功能:
- 添加车辆:输入车牌号码、车主姓名和进入停车场时间,程序自动计算停车费用并保存到文件中。
- 删除车辆:输入车牌号码,程序查找该车并从文件中删除车辆信息。
- 查找车辆:输入车牌号码,程序查找该车并显示车辆信息。
- 显示所有车辆信息:程序读取文件中的所有车辆信息并输出。
- 退出程序。
代码示例如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct car_info {
char num[10];
char name[20];
char time[30];
float fee;
};
// 添加车辆
void add_car() {
struct car_info car;
time_t now;
float seconds;
printf("请输入车牌号码:");
scanf("%s", car.num);
printf("请输入车主姓名:");
scanf("%s", car.name);
time(&now);
strftime(car.time, sizeof(car.time),
"%Y-%m-%d %H:%M:%S", localtime(&now));
seconds = difftime(now, mktime(localtime(&now)));
car.fee = seconds / 3600 * 5; // 停车费用为每小时5元
FILE *fp;
fp = fopen("filename.csv", "a+");
fprintf(fp, "%s,%s,%s,%.2f\n",
car.num, car.name, car.time, car.fee);
fclose(fp);
printf("添加成功!\n");
}
// 删除车辆
void del_car() {
char num[10];
FILE *fp;
struct car_info car;
int flag = 0;
printf("请输入车牌号码:");
scanf("%s", num);
fp = fopen("filename.csv", "r+");
while (!feof(fp)) {
fscanf(fp, "%[^,],%[^,],%[^,],%f\n",
car.num, car.name, car.time, &car.fee);
if (strcmp(car.num, num) == 0) {
flag = 1;
break;
}
}
fclose(fp);
if (flag) {
fp = fopen("filename.csv", "r");
FILE *temp = fopen("temp.csv", "w");
while (!feof(fp)) {
fscanf(fp, "%[^,],%[^,],%[^,],%f\n",
car.num, car.name, car.time, &car.fee);
if (strcmp(car.num, num) != 0) {
fprintf(temp, "%s,%s,%s,%.2f\n",
car.num, car.name, car.time, car.fee);
}
}
fclose(fp);
fclose(temp);
remove("filename.csv");
rename("temp.csv", "filename.csv");
printf("删除成功!\n");
} else {
printf("找不到该车!\n");
}
}
// 查找车辆
void find_car() {
char num[10];
FILE *fp;
struct car_info car;
int flag = 0;
printf("请输入车牌号码:");
scanf("%s", num);
fp = fopen("filename.csv", "r");
while (!feof(fp)) {
fscanf(fp, "%[^,],%[^,],%[^,],%f\n",
car.num, car.name, car.time, &car.fee);
if (strcmp(car.num, num) == 0) {
flag = 1;
printf("车牌号码:%s\n", car.num);
printf("车主姓名:%s\n", car.name);
printf("进入停车场时间:%s\n", car.time);
printf("停车费用:%.2f\n", car.fee);
break;
}
}
fclose(fp);
if (!flag) {
printf("找不到该车!\n");
}
}
// 显示所有车辆信息
void show_car() {
FILE *fp;
struct car_info car;
fp = fopen("filename.csv", "r");
while (!feof(fp)) {
fscanf(fp, "%[^,],%[^,],%[^,],%f\n",
car.num, car.name, car.time, &car.fee);
printf("车牌号码:%s\n", car.num);
printf("车主姓名:%s\n", car.name);
printf("进入停车场时间:%s\n", car.time);
printf("停车费用:%.2f\n\n", car.fee);
}
fclose(fp);
}
// 主程序
int main() {
int choice;
while (1) {
printf("===============================\n");
printf("请选择要进行的操作:\n");
printf("[1] 添加车辆\n");
printf("[2] 删除车辆\n");
printf("[3] 查找车辆\n");
printf("[4] 显示所有车辆信息\n");
printf("[5] 退出程序\n");
printf("===============================\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_car();
break;
case 2:
del_car();
break;
case 3:
find_car();
break;
case 4:
show_car();
break;
case 5:
exit(0);
default:
printf("无效选项!\n");
break;
}
}
return 0;
}
示例
示例一:添加车辆
选择“添加车辆”操作,输入车牌号码和车主姓名。系统自动获取当前时间,并计算停车费用。
请选择要进行的操作:
[1] 添加车辆
[2] 删除车辆
[3] 查找车辆
[4] 显示所有车辆信息
[5] 退出程序
请输入选项:1
请输入车牌号码:京A12345
请输入车主姓名:张三
添加成功!
请选择要进行的操作:
[1] 添加车辆
[2] 删除车辆
[3] 查找车辆
[4] 显示所有车辆信息
[5] 退出程序
请输入选项:
示例二:查找车辆
选择“查找车辆”操作,输入车牌号码。系统查找并显示车辆信息。
请选择要进行的操作:
[1] 添加车辆
[2] 删除车辆
[3] 查找车辆
[4] 显示所有车辆信息
[5] 退出程序
请输入选项:3
请输入车牌号码:京A12345
车牌号码:京A12345
车主姓名:张三
进入停车场时间:2021-07-01 15:10:30
停车费用:25.17
请选择要进行的操作:
[1] 添加车辆
[2] 删除车辆
[3] 查找车辆
[4] 显示所有车辆信息
[5] 退出程序
请输入选项:
总结
本文介绍了使用C语言实现停车管理系统的完整过程,包括设计数据结构、设计文件格式、实现文件读写、实现用户界面等。同时,文中提供了示例代码和示例操作,方便读者在学习过程中进行实践。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现停车管理系统 - Python技术站