C语言数据结构+IO实现简单停车场管理系统(附完整源码)

        简单实现了停车时记录车牌号,记录停车时间,利用IO将车辆信息以二进制流的形式追加保存到.bat文件里(自动创建.bat文件),取车时计算费用并将车辆信息从文件里删除,管理员可以查看所有车辆信息。

 头文件:stop.h

#ifndef _STOP_H
#define _STOP_H

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>
#define price 6  //1小时收费
#define wait 20  //数据加载
typedef struct 
{
	int day;
	int hour;
	int min;
}TIME;

struct car
{
	char car_num[10];
	int floor;
	int position_num;
	TIME time;
};

void Write(struct car CAR[]);
 void Read(struct car CAR[]);
void park(struct car CAR[]);
float expense(struct car CAR[],int x1,int x2,int x3,int i);
void leave(struct car CAR[]);
void information(struct car CAR[]);


#endif

子函数:stop.c

#include"../include/stop.h"
/* 数据写入文件 */




void Write(struct car CAR[])
{
  // 定义一个文件指针
  FILE *fp ;


  // 打开文件,没有文件自动创建
  fp = fopen("../1.dat","wb"); // b:表示以二进制写入
  // 写入数据
  fwrite( (char*)CAR,sizeof(CAR),(sizeof(CAR)*24),fp); //2:表示将数组中两个元素写入文件
  // 关闭文件
  fclose(fp);

}

// 文件数据读取
void Read(struct car CAR[]){
  // 定义一个文件指针:
  FILE *fp ;
  // 定义一个buf结构体,用于得到文件内容
  // 定义一个文件行数记录变量


  // 打开文件
  fp = fopen("../1.dat","rb");
  // 读取数据到数组中
  fread((char *)CAR,sizeof(CAR),(sizeof(CAR)*24),fp);
  // 关闭文件
  fclose(fp);
int i=0;
 printf("车牌号    \t层号\t位号\t时间\n");
  // 遍历数组,打印数据信息
  for( i=0;i<12;i++)
    printf("%-10s\t%d\t%d\t%d日%d:%d\n", CAR[i].car_num, CAR[i].floor, CAR[i].position_num, CAR[i].time.day,CAR[i].time.hour,CAR[i].time.min);


}


/*//加载
void watting()
{
	int i=0;
	for(i=0;i<20;i++)
	{
		printf(". ");
		sleep(1);
	}
}*/

void watting()
{
 int i = 0;
    char* chs[4] = {"|","/","—","\\"};
 
    // 模拟加载效果
    while(i<5){
        
        int index = i%4;
        printf("  loading, please wait...   %s\r",chs[index]);
        fflush(stdout);
        usleep(200000);//200毫秒
 
        i++;
    }
    printf("loading, please wait...    %s\n","ok");
    fflush(stdout);
 
    //clrscr();
    system("clear");
    sleep(1);
}

//停车
void park(struct car CAR[])
{
	int i, j,k;
	int flag = 0;
	char carn[10];
	time_t t;
 	struct tm *timeinfo;
    time(&t);
	 timeinfo = localtime(&t);

	printf("\n请输入车牌号\n");
	scanf("%s", carn);
	for (k = 0; k < 12; k++)
	{
		if (strcmp(CAR[k].car_num, carn) == 0)
		{
			printf("该车已在停车场内\n");
			flag = 2;
			break;
		}
	}
	for (i = 0; i < 12; i++)
	{
		if (strcmp(CAR[i].car_num,"0") == 0&&flag==0)
		{
			strcpy(CAR[i].car_num, carn);
			printf("该车可停在%d层%d号\n", CAR[i].floor, CAR[i].position_num);
			     CAR[i].time.day = timeinfo->tm_mday;
			    CAR[i].time.hour = timeinfo->tm_hour;
				        CAR[i].time.min = timeinfo->tm_min;
			printf("车辆%s停入时间为%d日%d:%d\n",carn,CAR[i].time.day,CAR[i].time.hour,CAR[i].time.min);
			flag = 1;
			break;
		}
	}
	if (flag == 0)
	{
		printf("\n停车场已满\n");
	}

}
float expense(struct car CAR[],int x1,int x2,int x3,int i)
{
float w;
 if((x1*1440+x2*60+x3-(CAR[i].time.day*1440+CAR[i].time.hour*60+CAR[i].time.min))!=0)
	   w = (x1*1440+x2*60+x3-(CAR[i].time.day*1440+CAR[i].time.hour*60+CAR[i].time.min))*price*(1.0/60);
 else if((x1*1440+x2*60+x3-(CAR[i].time.day*1440+CAR[i].time.hour*60+CAR[i].time.min))==0)
	   w=price*(1.0/60);
 return w;

}
void leave(struct car CAR[])
{
	int i, j;
	int day=0,hour=0,min=0;
	int flag = 0;
	char carn[10];
	time_t t;
	float money;
	struct tm *timeinfo;
	time(&t);
	timeinfo = localtime(&t);
	printf("请输入车牌号:\n");
	scanf("%s",carn);
	for (i = 0; i < 12; i++)
	{
		if (strcmp(CAR[i].car_num,carn)==0)
		{
			strcpy(CAR[i].car_num,"0");
				
			day = timeinfo->tm_mday;
			hour = timeinfo->tm_hour;
			min = timeinfo->tm_min;
			
			money = expense(CAR,day,hour,min,i);
			printf("车辆%s停入时间为%d日%d:%d\n",carn,CAR[i].time.day,CAR[i].time.hour,CAR[i].time.min);
			printf("车辆%s驶出时间为%d日%d:%d\n",carn,day,hour,min);
			printf("\n停车费:%f\n", money);
			CAR[i].time.day = 0;
			CAR[i].time.hour = 0;
			CAR[i].time.min = 0;
			flag = 1;
		}
	}
	if (flag == 0)
	{
		printf("\n停车场内无此车\n");
	}
	
}
void information(struct car CAR[])
{
	int i=0;
	printf("车牌号    \t层号\t位号\t时间\n");
	for (i = 0; i < 12; i++)
	{
		printf("%-10s\t%d\t%d\t%d日%d:%d\n", CAR[i].car_num, CAR[i].floor, CAR[i].position_num, CAR[i].time.day,CAR[i].time.hour,CAR[i].time.min);
	}

}

主函数:main.c

#include"../include/stop.h"
int main(int argc, const char *argv[])
{
 struct car CAR[12] = { {"0",1,1,0},{"0",1,2,0},{"0",1,3,0},{"0",1,4,0},{"0",1,5,0},{"0",1,6,0},{"0",2,1,0},{"0",2,2,0},{"0",2,3,0},{"0",2,4,0},{ "0",2,5,0 }, {"0",2,6,0} };
	watting();
	Read(CAR);
	printf("读取成功!\n");
	while(1)
	{
		printf("\t\t\t#####################################\n");
		printf("\t\t\t       停车场管理系统\n");
		printf("\t\t\t||    1. 车辆进入停车场            ||\n");
		printf("\t\t\t||    2. 车辆离开停车场            ||\n");
		printf("\t\t\t||    3. 显示停车场内所有车辆信息  ||\n");
		printf("\t\t\t||    4. 退出                      ||\n");
		printf("\t\t\t#####################################\n");
		int op=0;
		printf("\t请输入选项1-4:");
		scanf("%d",&op);
		if(4==op)
		{
			break;
		}
		switch (op)
		{
		case 1:
			park(CAR);
			Write(CAR);
			break;
		case 2:
			leave(CAR);
			Write(CAR);
			break;
		case 3:
			information(CAR);
			break;
		default:
			printf("\t输入的选项错误,请重新输入!\n");
			break;
		}
	}
	return 0;
}

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
      掌握基于腾讯人工智能(AI)的车牌识别技术,使用车牌识别技术实现一个完整停车场管理系统,项目包括网页调用摄像头拍照,车牌拍照识别,上传车牌图片识别,用户管理,车辆管理(临时车与包月车),车辆出场,入场管理,停车费收费管理,按照临时车或包月车自动计算停车费,系统参数设置,修改用户密码及安全退出等功能,该系统采用Jsp技术,使用SSM框架,Mysql数据库,ajax技术及人工智能等相关技术实现。重要通知:本课程根据腾讯AI车牌识别新接口,更新了新接口代码,发布程序,购买了课程的同学可以下载新程序,包括(运行程序及代码),更新时间:2021-2-17项目开发技术:java,jsp,mysql,MyBatis,SpringMVC,jquery,ajax,json项目运行环境:jdk1.7及以上版本,tomcat6.0及以上版本,mysql5.5及以上版本项目开发工具: 本项目开发工具是Eclipse,也支持myEclipse,Intellij Idea等其他版本开发工具相关课程学习顺序本校课程是培养JAVA软件工程师及JSP WEB网络应用程序开发,android工程师的全套课程,课程学习顺序如下:JAVA初级工程师:    1、计算机基础    2、HTML语言基础    3、C语言从入门到精通+贪吃蛇游戏    4、贪吃蛇游戏    5、SQL SERVER数据库基础    6、JAVA从入门到精通+推箱子游戏+QQ即时通讯软件    7、推箱子游戏;    8、仿QQ即时通讯软件;JAVA中级工程师:    9、SQLSERVER数据库高级    10、SQLSERVER从入门到精通(基础+高级)              11、JavaScript从入门到精通,    12、JSP从入门到精通+点餐系统,    13、JSP从入门到精通+在线视频学习教育平台,    14、JSP从入门到精通+大型电商平台;    15、XML从入门到精通,    16、数据结构(JAVA版),JAVA高级工程师:    17、Oracle数据库从入门到精通,    18、ajax+jquery从入门到精通,    19、EasyUI从入门到精通,SSH框架:    20、Struts2从入门到精通课程,    21、Hibernate从入门到精通课程,    22、Spring从入门到精通课程;    23、Echarts从入门到精通,    24、Excel基于POI的导入导出工作流框架:    25、Activiti流程框架从入门到精通    26、JBPM流程框架从入门到精通SSM框架:    27、MyBatis从入门到精通    28、Spring MVC从入门到精通面试题:    29、职业生涯规划及面试题集锦商业项目:    30、微信公众号在线支付系统    31、微信生活缴费在线支付系统    32、支付宝生活缴费在线支付系统    33、在线考试系统    34、手机订餐管理系统,    35、CRM客户关系管理系统    36、大型房地产CRM销售管理系统    37、CMPP2,CMPP3移动网关系统人工智能:    38、人脸识别在线考试系统    39、人脸识别系统项目实战    40、车牌识别系统项目实战    41、身份证识别系统项目实战    42、营业执照识别系统项目实战          43、名片识别管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值