C语言智能停车场系统
停车场管理系统——C语言

停车场管理系统【要求】(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。
(2)假设停车场初始状态为第一层已经有4辆车,其车位号依次为1~4,停车时间依次为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。
(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添入文件car。
dat中,并将在此之前的所有停车时间加5。
(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car。
dat 中删除该车的信息,并将该车对应的车位设置为可用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。
(5)输出停车场中全部车辆的信息.(6)退出系统。
【提示】(1)需求分析:车辆信息要用文件储存,提供文件的输入输出操作;当车要离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计:整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二、总体设计根据上面的需求分析,可以将这个系统的设计分为四大模块(如图2—1):停车、取车、车辆信息浏览、退出。
其中主要功能是停车、取车、车辆信息浏览三个模块。
图2—1系统功能模块图根据模块图可画出总的流程图(图2—2)图2—2 总流程图三、详细设计1、车辆信息车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。
【程序】struct car{int carnumber;int floor;int position;int time;}car[12];2、车位信息由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。
C语言智能停车系统控制和优化停车场管理

C语言智能停车系统控制和优化停车场管理智能停车系统是当前停车场管理的关键课题之一,而C语言作为一种广泛应用于嵌入式系统开发的编程语言,可以为智能停车系统提供稳定和高效的控制。
本文将探讨C语言在智能停车系统控制和优化停车场管理中的应用。
一、智能停车系统的需求分析智能停车系统的目标是提高停车场的利用率和运行效率,为车主和管理者提供更加便捷的停车体验。
在进行系统设计和编程之前,我们需要对智能停车系统的需求进行详细的分析和理解。
1.1 车位管理智能停车系统需要能够准确地判断车位的空闲和占用情况,同时具备对车位进行分配和释放的能力。
这需要通过传感器和控制器实现硬件和软件的有效配合。
1.2 车辆识别为了确保车主的正常使用,智能停车系统需要能够准确地识别车辆的相关信息,例如车牌号码、车型和颜色等。
这可以通过图像识别和车载设备配合实现。
1.3 支付结算智能停车系统可以通过与车主的手机或信用卡绑定,实现电子支付和自动结算。
这要求系统具备安全可靠的数据传输和存储机制。
二、C语言智能停车系统控制原理在进行智能停车系统编程前,我们首先要理解系统的工作原理和流程。
下面将介绍一种基于C语言的智能停车系统控制框架。
2.1 硬件连接与初始化使用C语言开发智能停车系统时,首先要初始化所使用的硬件设备,例如传感器、摄像头和控制器等。
这需要编写相关的驱动程序和初始化函数。
2.2 车位管理通过编程实现对每个车位状态的监测和控制,以确定车位的空闲和占用情况。
当有车辆进入或离开停车场时,系统应能及时进行更新和响应。
2.3 车辆识别与信息存储对于每辆车辆的识别信息,可以采用数据库或文件的形式进行存储。
通过编程实现车牌等信息的提取和比对,以确保车主信息的准确和安全。
2.4 支付结算与报表生成智能停车系统应具备支付和结算功能。
编程通过与第三方支付平台或信用卡系统进行接口对接,实现车主账号扣费和生成支付报表等。
三、C语言优化停车场管理除了实现智能停车系统的基本功能外,我们还可以通过C语言编程优化停车场管理,提高系统的效率和用户体验。
c语言停车场菜单的编程

c语言停车场菜单的编程如何通过C语言编程实现停车场菜单系统。
在本文中,我们将会详细讨论停车场菜单系统的实现过程,包括创建菜单、显示菜单、接收用户输入、执行用户选择的菜单功能等。
1. 引言停车场菜单系统是一个常见的应用程序,它可以帮助用户管理停车场的车辆。
通过这个系统,用户可以添加新的车辆、删除已经停放的车辆、显示停放的车辆列表等。
这篇文章将会详细讨论如何通过C语言编程实现这个功能。
2. 菜单系统的设计在开始之前,我们需要先考虑菜单系统的设计。
一个典型的停车场菜单系统可能包括以下功能:- 添加车辆:允许用户输入车辆的信息,并将其添加到停车场的列表中。
- 删除车辆:允许用户输入要删除的车辆的标识符,并从停车场列表中删除该车辆。
- 显示车辆列表:将当前停放在停车场的车辆列表显示给用户。
3. 创建菜单首先,我们需要创建一个函数来显示停车场菜单选项,并接收用户的选择。
以下是一个简单的示例:void displayMenu() {printf("1. 添加车辆\n");printf("2. 删除车辆\n");printf("3. 显示车辆列表\n");printf("4. 退出\n");}int getUserChoice() {int choice;printf("请输入选项:");scanf("d", &choice);return choice;}在这个例子中,`displayMenu`函数用于显示菜单选项,`getUserChoice`函数用于接收用户的选择。
4. 执行用户选择的菜单功能接下来,我们需要为每个菜单选项创建相应的功能函数。
例如,对于添加车辆功能,我们可以创建以下函数:void addCar() {代码实现}类似地,我们还可以创建其他功能函数,如`deleteCar`和`displayCarList`。
C语言:停车场管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#include<time.h>//获取系统时间#include<conio.h>//包含屏幕操作函数#define NULL 0#define LEN sizeof(struct car)//用于存放时间typedef struct time{int intimeyear;int intimemounth;int intimeday;int intimehour;int intimeminute;int intimesecond;//驶入时间,驶入时系统获取int outtimehour;int outtimeminute;int outtimesecond;//驶出时间}TIME;//用于存放车辆信息typedef struct car{int number;//在头指针中代表空车位,在其它指针中代表其车位号,从1-15按顺序char license[10];//每辆车自己的型号TIME time;//时间struct car *next;}CAR;//用于存放每日费用,并写入文件,便于计算一个月收入struct oneday{int tyear;int tmounth;int tday;int onedayfee;}one;CAR *creat();void inbigcar();//驶入一辆大型客车或货车void inmiddlecar();//驶入一辆中型客车或货车void insmallcar();//驶入一辆轿车int outbigcar();//输出一辆大型客车或货车int outmiddlecar();//开出一辆中型客车或货车int outsmallcar();//开出一辆轿车void lookup1();//分别输出A区,B区,C区当前所停放的汽车的信息void lookup2();//分别输出A区,B区,C区当前空闲的车位号void lookup3();//输入车牌号,输出该车所停放的车位号void lookup4();//输出A区,B区,C区当前所停放的汽车的数量void lookup5();//输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息void lookup6();//输入一个日期(年.月),统计该月停车场的收费金额int onemoufee(int year,int mounth);//计算一个月的收入CAR *Ahead,*Bhead,*Chead;void main(){printf("\n\n\n\n================================================================== ==============\n\n\n\n");printf("\t\t********欢迎使用Light停车场管理系统!********\n\n\n\n\n");printf("========================================================================= =======\n\n\n\n");printf("\t\t\t 请按任意键进入\n");getchar();FILE *fp,*fp1;int year,mounth,day,hour,m,n=1,i=0;int Amoney=0,Bmoney=0,Cmoney=0,summoney=0;if((fp=fopen("table.txt","a"))==NULL){printf("Cannot open file!\n");exit(0);}//end if创立一个文件,以便记录Ahead=creat();Bhead=creat();Chead=creat();time_t nowtime;struct tm *timeinfo;time( &nowtime );timeinfo = localtime( &nowtime );one.tyear =year= timeinfo->tm_year + 1900;one.tmounth =mounth=timeinfo->tm_mon + 1;one.tday =day= timeinfo->tm_mday;hour = timeinfo->tm_hour;printf("%d\n",hour);if(hour<6||hour>=22){system("cls");printf("\n\n\n=================================================================== =============\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统close *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 营业时间:6:00-22:00 *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 请您营业时间再来!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n");printf("\n\t\t\t\t请按任意键结束\n");getchar();exit(0);}//end iffprintf(fp,"%d年%d月%d日",year,mounth,day);while(n==1){system("cls");printf("\n");printf("========================================================================= =======\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 欢迎使用!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n\n");printf("\t 1. 停车 3. 查询\n");printf("\t 2. 取车0. 退出\n\n");printf("\t 请选择: ");scanf("%d",&m);switch(m){case 1:while(n==1){system("cls");printf("\t\t欢迎您停车!\n\n\t\t请选择您的停车区域\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. A区停放轿车 3. C区停放大型客车或货车\n");printf("\t 2. B区停放中型客车或货车0. 退出\n\n");printf("\t 请选择您需要的服务(0-3):");printf("\n\t 请选择: ");scanf("%d", &m);getchar();//驶入状况下选择车型switch(m){case 1:insmallcar();break;case 2:inmiddlecar();break;case 3:inbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}//end switchprintf("\n\t如果您想继续停车,请输入1;如果想进入主菜单或退出,请输入任意数字:");printf("\n\t 请选择: ");scanf("%d",&n);}break;case 2: while(n==1){system("cls");printf("\t\t欢迎您取车!\n\n\t\t请选择您的取车的区域!\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. 从A区取轿车 3. 从C区取大型客车或货车\n");printf("\t 2. 从B区取中型客车或货车0. 退出\n\n");printf("--------------------------------------------------------------------------------\n");printf("\t 请选择您需要的服务(0-3):");scanf("%d", &m);getchar();//驶出状况下选择车型switch(m){case 1:Amoney=outsmallcar();break;case 2:Bmoney=outmiddlecar();break;case 3:Cmoney=outbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}printf("\n\t如果您想继续开车,请输入1;如果想进入主菜单或退出,请输入0:");printf("\n\t 请选择: ");scanf("%d",&n);}one.onedayfee =summoney=Amoney+Bmoney+Cmoney;break;case 3: while(n==1){system("cls");printf("--------------------------------------------------------------------------------\n");printf("\t欢迎进入管理系统\t\n");printf("--------------------------------------------------------------------------------\n");printf("What do you want to look up?\n");printf("1、分别输出A区,B区,C区当前所停放的汽车的信息;\n");printf("2、分别输出A区,B区,C区当前空闲的车位号;\n");printf("3、输入车牌号,输出该车所停放的车位号;\n");printf("4、输出A区,B区,C区当前所停放的汽车的数量;\n");printf("5、输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息;\n");printf("6、输入一个日期(年.月),统计该月停车场的收费金额。
停车场管理c语言pta

停车场管理c语言pta
停车场管理系统是一个常见的项目,可以使用C语言来实现。
这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。
在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。
可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。
2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。
3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。
可以设置不同的收费标准,并编写函数来进行费
用计算。
4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。
5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。
在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。
同时,还需要编写测试用例来验证程序
的正确性和稳定性。
总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。
这样的项目可
以帮助学生加深对C语言的理解,并锻炼编程能力。
C语言课程设计智能停车管理系统

目录摘要 (I)第一章绪论 (1)第二章系统分析 (3)2.1 停车场发展趋势分析 (3)2.2 智能停车管理系统功能需求 (4)2.3 系统菜单的主要功能 (6)第三章总体设计与详细设计 (7)3.1 算法分析 (7)3.2 系统流程图 (7)第四章编码实现 (10)4.1 判断便道是否拥挤 (10)4.2 判断该车是否在泊 (10)4.3 取车 (10)4.4 主函数 (11)第五章调试与测试 (12)5.1 存车 (12)5.2 取车 (13)总结与心得 (14)附录 (16)1 源代码 (16)2 参考资料 (22)摘要智能停车管理系统作为智能交通系统的一部分,其主要功能是从静态交通方面改善和缓解城市交通拥堵。
随着停车难和停车场泊位利用效率相对较低的矛盾日益突出,本文在分析现代智能停车管理系统功能需求、停车特性及有效泊位变化规律的基础上,提出了高效泊位诱导系统和停车场有效泊位短时预测方法,以充分发挥静态交通系统在改善城市动态交通方面的作用。
了解国内外停车管理系统发展趋势,结合国内停车管理需求和停车特性,提出完善的系统设计方案,在此基础上对泊车系统做出深入研究。
利用C语言和数据库开发技术实现泊位仿真演示系统。
分析研究停车场历史数据,此次停车时间以及费用。
关键词:智能停车管理;C语言;数据库第一章绪论随着经济发展和城市化进程的加快,我国城市机动车保有量得到了迅速增长,导致停车泊位和机动车数量增长的矛盾日益突出,但停车问题未受到应有的重视,随着城市交通和停车需求的不断增长,其势必将成为解决城市交通拥挤的瓶颈。
为满足日益增长的交通需求,改善交通设施现状和提高交通设施利用率迫在眉睫,具有诱人前景的“停车经济”必将蓬勃发展。
而随着大型停车场的不断兴建,旨在提高停车场运营效率的智能停车管理系统也将随之发展。
针对当前停车管理技术水平较低的现状,规划实施智能停车管理系统有利于对城市停车实现信息化、智能化、网络化的科学管理,通过合理配置、科学诱导,使驾驶员能够快速、准确、安全地停车,减少车辆因寻找泊位而产生对道路的占用,降低车辆尾气排放和噪声,缓解城市交通拥堵状况,同时最大程度地提高停车设施的利用率,减少违章停车现象,确保交通畅通、安全,具有很高的社会和经济效益。
c语言实现停车场管理系统

c语言实现停车场管理系统#include#include #include#define Size 2#define price 5typedef struct { char num[20]; int reachtime; int leavetime; }carinfo;typedef struct stack{ carinfo car[5]; int top;}Stack;typedef struct Node{ carinfo data; struct Node*next; }QueueNode;typedef struct { QueueNode *front; QueueNode *rear;}Queue,*linkQueue;int EnterQ(Queue *Q,carinfo x); int inistack(Stack *S) //初始化栈{S->top=-1; return 1;}void Push(Stack *S,carinfo x) //进栈操作{S->top++; S->car[S->top]=x;printf(" 进站成功!"); }void Pop(Stack *S,carinfo x) //出栈操作{ if(S->top=-1) printf(" 空栈,无法出栈!");x=S->car[S->top];S->top--;printf(" 出栈成功!");}IsEmpty(Stack *S) // 判断栈空{ if(S->top==-1) return 1;elsereturn 0;}int iniQueue(Queue *Q) //初始化便道{Q->front=(QueueNode *)malloc(sizeof(QueueNode)); //申请节点if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;return 1;}else return 0;}int EnterQ(Queue *Q,carinfo x) //进便道{QueueNode *newNode;newNode=(QueueNode *)malloc(sizeof(QueueNode)); if(newNode!=NULL){ newNode->data=x; newNode->next=NULL;Q->rear->next=newNode; Q->rear=newNode; return 1;}else return 0;}int DeleteQ(Queue *Q,carinfo x) // 出便道{QueueNode *p; p=Q->front->next;if(Q->front==Q->rear) //判断便道是否有车return 0;x=p->data;if(p->next==Q->rear)Q->rear=Q->front;Q->front->next=NULL;}Q->front->next=p->next; free(p); return 1;}void Lpush(Stack *S,carinfo x){ Push(S,x); //进临时栈}void LPop(Stack *S,carinfo x){Pop(S,x);}int Arrive(Stack *S,Queue *Q) // 车辆到达{carinfo x;int a;printf(" 输入车牌号:"); scanf("%s",x.num); printf(" 请输入进车场的时间:");scanf("%d",&x.reachtime);if(S->top==Size-1){printf(" 车场已满,不能进入,进便道");//递归调用进便道操作a=EnterQ(Q, x);if(a==1){ printf("OK\n");} else printf("No!\n");}else{ Push(S,x);} return 1;}int Departure(Stack *S) // 车辆离开操作{int money;。
C语言版停车位管理系统

C语⾔版停车位管理系统本⽂实例为⼤家分享了C语⾔实现停车位管理系统的具体代码,供⼤家参考,具体内容如下简单功能介绍1、录⼊车辆信息2、查找车辆信息3、删除车辆信息4、修改车辆信息5、查找区域车辆信息6、排序(按照车主姓名排序)7、展⽰所有车辆信息8、将录⼊的数据保存在⽂件中9、将⽂件中的数据读出算法构造链表的增删改查结构体的定义typedef struct Parking{char name[20]; //车主姓名char carname[10]; //车牌号long information; //车主联系⽅式char region; //车位区域编号int num; //车位编号struct Parking *next; //指针}Parking;录⼊车辆信息利⽤尾插法插⼊新添加的数据Parking *Addcar(Parking *head) //录⼊车辆信息{int x;system("cls"); //清屏操作system("color B"); //改变字体颜⾊Parking *p = head;while(p->next!=NULL) //利⽤尾插法插⼊新⽤户信息{p = p->next;}printf("输⼊需要添加的车辆个数:");scanf("%d", &x);while(x--) //输⼊⽤户信息{system("cls");Parking *Node = (Parking *)malloc(sizeof(Parking));printf("\n输⼊⽤户姓名:");scanf("%s",Node->name);printf("\n输⼊车牌号:");scanf("%s",Node->carname);printf("\n输⼊车主联系⽅式:");scanf("%ld",&Node->information);printf("\n输⼊车位区域编号:");getchar();scanf("%c",&Node->region);printf("\n输⼊车位编号:");scanf("%d",&Node->num);Node->next=NULL;p->next = Node;p = p->next;}printf("\n输⼊完成!");F(head); //打印添加后的⽤户信息printf("\n按任意键返回主页\n");getch(); //⽤来显⽰结果return head;}删除⽤户信息根据⽤户名匹配查找⽤户信息进⾏删除Parking *Delete(Parking *head) //删除⽤户信息{char name[20];system("cls");system("color B");printf("\n\t\t输⼊你要删除的⽤户姓名:");scanf("%s", name);Parking *p = head;Parking *q = p->next;while(q) //找到需要删除数据的前结点{if(strcmp(q->name,name)==0) //判断字符串是否相等函数{p->next = q->next;free(q); //释放内存空间break;}p = q;q = p->next;}if(p->next==NULL){printf("\n\t\t未找到该⽤户信息!");}else{printf("\n\t\t删除成功!!");F(head);}printf("\n\t\t按任意键返回主菜单");getch();return head;}查找⽤户信息根据字符串匹配查找⽤户信息void Find(Parking *head) //查找⽤户信息{system("cls");system("color B");char name[20];printf("\n\t\t输⼊你要查找的⽤户姓名:");scanf("%s", name);Parking *p = head;while(p->next){if(strcmp(p->next->name,name)==0){printf("找到了!\n");printf("该⽤户的信息如下:");printf("\n\t\t---⽤户姓名 %s",p->next->name);printf("\n\t\t---车牌号 %s",p->next->carname);printf("\n\t\t---车主联系⽅式 %ld",p->next->information); printf("\n\t\t---车位区域编号 %c",p->next->region);printf("\n\t\t---车位编号 %d",p->next->num);break;}p = p->next;}if(p->next==NULL)printf("\n\t\t没有找到该⽤户信息");printf("\n\t\t按任意键返回主菜单");getch();}修改⽤户信息查找⽤户找到后显⽰该⽤户的信息,根据⽤户选择修改信息Parking *Change(Parking *head) //修改⽤户信息{char name[20];system("cls");system("color B");printf("输⼊需要修改的⽤户姓名:");scanf("%s", name);Parking *p = head->next;while(p){if(strcmp(p->name,name)==0){system("cls");system("color B");int x;printf("\n\t\t --该⽤户信息-- \n\n");printf("\t---------------------------------------------------------------------\n");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num); printf("\n输⼊你要修改的信息编号:\n");printf(" 1-车主姓名 \n");printf(" 2-车牌号 \n");printf(" 3-车主联系⽅式 \n");printf(" 4-车位区域编号 \n");printf(" 5-车位编号 \n");scanf("%d", &x);switch(x){case 1:printf("\n\t输⼊修改后的信息");scanf("%s", p->name);break;case 2:printf("\n\t输⼊修改后的信息");scanf("%s", p->carname);break;case 3:printf("\n\t输⼊修改后的信息");scanf("%ld", &p->information);break;case 4:printf("\n\t输⼊修改后的信息");scanf("%c", &p->region);break;case 5:printf("\n\t输⼊修改后的信息");scanf("%d", &p->num);break;}printf("\n\t\t修改后的⽤户信息为");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num); break;}p = p->next;}if(p==NULL){printf("\n未找到相应⽤户");printf("\n按任意键返回主页\n");getch();return head;}printf("\n修改完成!");F(head); //显⽰修改后的全部信息printf("\n按任意键返回主页\n");getch();return head;}其他链表操作排序(根据⽤户姓名排序)void *Sort(Parking *head) //排序{Parking *p=head;Parking *q,*p1=NULL,*p2=NULL;while(p->next != NULL){q = p->next;while(q->next != NULL){if(strcmp(p->next->name,q->next->name)>0) //字符串⽐较{p1 = p->next; //记录p与q的下⼀结点p2 = q->next;q->next = q->next->next;p->next = p2;p2->next = p1;}elseq = q->next;}p = p->next;}F(head);printf("\n\t\t按任意键返回主菜单");getch();}查找区域车辆信息void RegionalVehicles(Parking *head) //寻找指定区域内车辆信息{system("cls");system("color B");char c;printf("\n\t\t输⼊你想要查看的区域");getchar();scanf("%c", &c);Parking *p = head->next;printf("\n\t\t --%c区域内车辆⽤户信息-- \n\n",c);printf("\t---------------------------------------------------------------------\n");printf("\t车主姓名--------车牌号-------车主联系⽅式---车位区域编号-----车位编号----\n");while(p){if(p->region==c) //判断区域字符与输⼊字符是否相等,相等则输出{printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);}p = p->next;}printf("\n\t\t按任意键返回主菜单");getch();}⽂件的读取与输⼊将数据保存在⽂件中之所以⽤w形式打开⽂件是因为我在程序运⾏前已将⽂件内数据读出,最后进⾏保存数据时覆盖原数据不会导致原数据丢失void Preservation(Parking *head) //保存数据在⽂件中{const char* filename1 = "C:/Users/judicious/Desktop/car.text"; //⽂件路径FILE *fp = fopen(filename1, "w"); //以写的⽅式打开⽂件,若⽂件不存在,则建⽴新的⽂件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能停车场管理系统一、摘要停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。
本次方向设计主要是利用C语言平台下的VC++6.0编译器,设计一个方便且效率的智能停车场管理系统。
利用模块化程序设计编写各个功能子函数,方便调用和系统维护;利用堆栈的方法实现停车场的车辆驶入和离开。
该系统能自动录入停放车辆的各种信息(车牌,时间等)并自动分配车位以及智能计算费用,同时也能查询停车场内任意车辆的录入信息,省事,方便。
测试表明该智能停车场系统运行良好,能投入实际使用。
二、设计目的和意义本次设计的目的是设计一个智能的停车场管理系统,用户可以在客户端上自主的申请预约车位和撤销申请;同时,停车场自带自动停放和出站,自动计算停车费用;用户也可以通过系统查询特定车辆的停放信息。
智能停车场的意义在于:随着社会的进步和发展,车辆也在迅速增加,城市交通的瓶颈不仅体现在道路交通的拥挤上,也体现在传统停车场管理效率和安全性大大滞后于社会发展需要,给人们的生活带来了极大的不便。
随着智能大厦和智能小区等智能建筑的不断发展,与之配套的停车场管理系统应运而生。
智能停车场的产生不但规范了城市交通管理和车辆管理水平,还扩大了城市的容量,在安全防范方面也有了巨大的保障,同时还能方便的和其他智能系统接口,组成更完善的物流及设备管理系统。
三、设计原理1、模块化系统设计(1)模块化设计的概念模块化设计,简单地说就是程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系。
逐步求精的结果是得到一系列以功能块为单位的算法描述。
以功能块为单位进行程序设计,实现其求解算法的方法称为模块化。
模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化。
(2)本次设计的功能模块建立车辆进入函数:记录驶入车辆的车牌号及驶入时间。
车辆离开函数:计算车辆停车费用并删除数据。
车费计算函数:划定停车场的收费制度。
车辆查询函数:查询指定的车辆入场记录。
车辆显示函数:显示所有停放车辆。
(3)系统框图图1.0 智能停车场系统框图2、堆栈的原理(1)栈(Stack)的概念:是限制在表的一端进行插入和删除运算的线性表。
(2)栈顶(top)和栈底(bottom) :允许插入、删除的这一端称为栈顶,另一端称为栈底。
图1.1 栈的示意图(3)栈的插入和删除遵循后入先出,栈成为后进先出表。
(4)栈的基本运算:①栈初始化:Init_Stack(&S)操作结果:构造一个空栈S。
判栈空:StackEmpty (S)初始条件:栈S已存在。
操作结果:若栈S为空栈,则返回1,否则返回0。
②入栈: Push(&S,e)初始条件:栈S已存在。
操作结果:插入元素e为新的栈顶元素,栈发生变化。
③出栈:Pop(&S,&e)初始条件:栈S已存在且非空。
操作结果:删除S的栈顶元素并用e返回其值,栈发生变化。
④读取栈顶元素: GetTop(S , &e)初始条件:栈S已存在且非空。
操作结果:用e返回栈顶元素,栈不变化。
(5)顺序栈的类型定义如下:const STACK_INIT_SIZE=100; //顺序栈的最大空间typedef char SElemtype;typedef struct{SElemtype * elem;int top;int stacksize;} SqStack;(6)顺序栈的操作方式设有定义:SqStack S ;栈顶、栈底的位置:设栈底位置在数组的0端,则入栈时s.top加1,出栈时s.top 减 1。
栈空和栈满的状态:空栈用栈顶指针top为-1表示,即s.top==-1;栈满用s.top==stacksize-1表示。
(7)置空栈void InitStack_Sq(SqStack &S, int maxsize=STACK_INIT_SIZE){ //构造一个空栈S,初始分配的最大空间为maxsizeS.elem=new SElemType[maxsize];S.top=-1; //栈中当前元素个数为0,即空栈S.stacksize=maxsize; //栈最多可以容纳maxsize个元素}(8)入栈void Push_Sq(SqStack &S,SElemType e){ if (S.top==S.stacksize-1)error(“栈满”);else{ S.top++; /*栈顶上移*/S.elem[S.top]=e; /*元素入栈*/}}(9)出栈int Pop_Sq(SqStack &s, SElemType &e){if (s.top==-1){ printf(“stack underflow”);return 0;}else { e=s.elem[s.top]; /*获得栈顶元素的值*/s.top--; /*栈顶下移*/return 1;}}四、详细设计步骤(1)车辆驶入函数:图1.2 停车函数流程图主要程序代码:stacknode *into(stacknode *top1,LQueue *Q){stacknode *p,*q;time_t rawtime; //调用系统时间函数struct tm *timeinfo; //时间结点time(&rawtime);timeinfo=localtime(&rawtime);p=(stacknode *)malloc(sizeof(stacknode));printf("请输入进入停车场车辆的车牌号:");scanf("%s",p->data.num);q=top1;p->data.time.day=timeinfo->tm_mday;p->data.time.hour=timeinfo->tm_hour;p->data.time.min=timeinfo->tm_min;p->data.n=b;}(2)车辆离开函数:图1.3 车辆离开函数流程stacknode *leave(stacknode *top1,char str[],LQueue *Q){int i,day,hour,min;time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);day=timeinfo->tm_mday;hour=timeinfo->tm_hour;min=timeinfo->tm_min;}(3)车辆显示函数:主要程序代码:while(top1!=NULL){printf("%s%号%d点%d分第%d位\n",top1->data.num,top1->data.time.day,top1->data.time.hour,top1->data.tim e.min,top1->data.n);top1=top1->next;}(4)车辆查询函数图1.4 车辆查询函数流程图void seq_search(stacknode *top1,char str[]){int i=0;int flag=max;stacknode *p;p=top1;while(flag--){if(strcmp(p->data.num,str)!=0){i++;p=p->next;}else break;}if(i<max){printf("车牌号进入时间位置\n");printf(" %s %d号%d点%d分第%d位\n",p->data.num,p->data.time.day,p->data.time.hour,p->data.time.min,p- >dat a.n);}else{printf("该车辆未在停车场中");}}(5)调用机器时间函数:需先声明#include<time.h>主要程序代码:int timef(){int x,y;time_t rawtime;struct tm *timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);x=timeinfo->tm_mday,y=timeinfo->tm_hour;}把timeinfo指向的tm结构体中储存的时间转换为字符串字符串格式返回,格式为:Www Mmm dd hh:mm:ss yyyy。
其中Www为星期;Mmm为月份;dd为日;hh为时;mm为分;ss为秒;yyyy为年份五、设计结果及分析1.车辆驶入功能:输入车牌号之后,系统先判断停车场是否有空余车位,如果没有,发出提示“停车场已满,请在外等候”;如果有,系统再判断该车是否已经进入停车场,并给出相应的提示,同时调用机器时间作为车辆停入时间,并且为车辆分配内存作为存放时间和停车位置的空间。
图1.5 停车功能截图2.车辆离开功能:用户输入车牌号,之后,系统先判断停车场内是否有该车辆,如果没有,给出相应提示;有的话,系统调用当前机器时间,并且和该车存放的过去的机器时间做减法运算,四舍五入,然后乘上相应单价,最后打印输出用户的离开时间和所需要支付的停车费用。
图1.6 车辆离开截图3.显示功能:系统采用遍历的算法,将栈里面的所有元素按照“车牌号”“进入时间”“位置”的方式,依次打印显示出来;如果没有数据则显示“停车场内无车”。
图1.7 车辆显示截图4.查询功能:用户输入车牌号之后,系统采用遍历的方式,将该车牌号和栈内的所有车牌号一一比较,如果查询失败,显示“无此车辆”;若查询成功,则打印输出该车牌号车辆的进入时间和停靠位置。
图1.8 查询功能截图六、总结设计过程中,由于自己的只是水平有限要实现某些功能,还需借助强大的互联网。
在完成本设计的过程中,我既感受到了面对自己无法解决的问题时的苦恼,也体会到问题最终得以解决时的快乐。
同时,我深刻体会到要做好一件事情,需要有系统的思维方式和方法,对待一个新的问题,要耐心、要善于运用已有的资源来充实自己。
在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样对于系统而言才能更加有效。
通过此次毕业设计,我不但对Eclipse和数据库有了更深刻的认识,积累了使用软件工程的思想来开发软件的经验,同时最重要的是摸索出了一套分析问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅七、体会通过这次课程设计,让我对程序设计过程有了更加深入的理解,程序设计就有如解决一实际问题,从解决实际问题的角度,我们要明白我们想要程序做什么,怎么做,需要什么,完成什么效果,最低要求,最高要求,然后再一一实现他的目标。