C语言智能停车场系统

合集下载

停车场管理系统——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语言作为一种广泛应用于嵌入式系统开发的编程语言,可以为智能停车系统提供稳定和高效的控制。

本文将探讨C语言在智能停车系统控制和优化停车场管理中的应用。

一、智能停车系统的需求分析智能停车系统的目标是提高停车场的利用率和运行效率,为车主和管理者提供更加便捷的停车体验。

在进行系统设计和编程之前,我们需要对智能停车系统的需求进行详细的分析和理解。

1.1 车位管理智能停车系统需要能够准确地判断车位的空闲和占用情况,同时具备对车位进行分配和释放的能力。

这需要通过传感器和控制器实现硬件和软件的有效配合。

1.2 车辆识别为了确保车主的正常使用,智能停车系统需要能够准确地识别车辆的相关信息,例如车牌号码、车型和颜色等。

这可以通过图像识别和车载设备配合实现。

1.3 支付结算智能停车系统可以通过与车主的手机或信用卡绑定,实现电子支付和自动结算。

这要求系统具备安全可靠的数据传输和存储机制。

二、C语言智能停车系统控制原理在进行智能停车系统编程前,我们首先要理解系统的工作原理和流程。

下面将介绍一种基于C语言的智能停车系统控制框架。

2.1 硬件连接与初始化使用C语言开发智能停车系统时,首先要初始化所使用的硬件设备,例如传感器、摄像头和控制器等。

这需要编写相关的驱动程序和初始化函数。

2.2 车位管理通过编程实现对每个车位状态的监测和控制,以确定车位的空闲和占用情况。

当有车辆进入或离开停车场时,系统应能及时进行更新和响应。

2.3 车辆识别与信息存储对于每辆车辆的识别信息,可以采用数据库或文件的形式进行存储。

通过编程实现车牌等信息的提取和比对,以确保车主信息的准确和安全。

2.4 支付结算与报表生成智能停车系统应具备支付和结算功能。

编程通过与第三方支付平台或信用卡系统进行接口对接,实现车主账号扣费和生成支付报表等。

三、C语言优化停车场管理除了实现智能停车系统的基本功能外,我们还可以通过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语言:停车场管理系统

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
停车场管理系统是一个常见的项目,可以使用C语言来实现。

这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。

在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。

可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。

2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。

3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。

可以设置不同的收费标准,并编写函数来进行费
用计算。

4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。

5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。

在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。

同时,还需要编写测试用例来验证程序
的正确性和稳定性。

总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。

这样的项目可
以帮助学生加深对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语言实现停车场管理系统

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语⾔版停车位管理系统本⽂实例为⼤家分享了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"); //以写的⽅式打开⽂件,若⽂件不存在,则建⽴新的⽂件。

C语言停车场管理系统源代码.doc

C语言停车场管理系统源代码.doc

#include<stdio.h>#include<stdlib.h>#define stacksize 2 //车站//容量///////////////////////////////////////////////////////typedef struct Snode{int number;float int_time[2];float bian_time[2];}record;typedef struct {record *base;record *top;int size;}Stack;/////////////////////////////////////////////////////typedef struct Qnode{int number;float int_time[2];struct Qnode *next;}Qnode,*Queue;typedef struct {Queue front;Queue rear;}Linkqueue;void xunhuan(Stack L,Linkqueue Q);void jixu(Stack L,Linkqueue Q);//////////////////////////////////////////////////////////////////////////////////////////////////////////void InitStack(Stack &L) //堆栈操作{L.base=(record*)malloc(sizeof(Snode)*stacksize);if(!L.base)exit(0);L.top=L.base;L.size=stacksize;}/////////////////////////////////////////////////////void input(Stack &L,record h){*L.top++=h;}///////////////////////////////////////////////////Snode output(Stack &L,record &e){e=*--L.top;return e;}int Stackman(Stack L){if(L.top-L.base==L.size)return 0;elsereturn 1;}int StackEmpty(Stack L){if(L.base==L.top)return 0;elsereturn 1;}////////////////////////////////////////////////////////////////////////////////////////////////////void Initque(Linkqueue &Q) //队列操作{Q.front=Q.rear=(Queue)malloc(sizeof(Qnode));if(!Q.front)exit(0);Q.front->next=NULL;}//////////////////////////////////////////////////void enqueue(Linkqueue &Q,int number,float time[]){Queue q;printf("停车场已满,请将车辆停入便道!\n");q=(Queue)malloc(sizeof(Qnode));q->int_time[0]=time[0];q->int_time[1]=time[1];q->number=number;q->next=NULL;Q.rear->next=q;Q.rear=q;}///////////////////////////////////////////////////void outqueue(Linkqueue &Q,Queue &e) //此处有点问题??????????????{// Qnode *q;// q=(Queue)malloc(sizeof(Qnode));e=Q.front->next;// Q.front->next=q->next;//delete q;Q.front->next=Q.front->next->next;if(Q.rear==e){Q.front=Q.rear;// Q.front=NULL;}}int QEmpty(Linkqueue Q){if(Q.rear==Q.front)return 0;elsereturn 1;}//////////////////////////////////////////////////// //停车场管理操作////////////////////////////////////////////////////void jixu(Stack L,Linkqueue Q){int n;fflush(stdin);scanf("%d",&n);switch(n){case 1:printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");xunhuan(L,Q);break;case 2:printf("****************************退出管理系统*****************************\n");default:printf("\n输入错误,请重新输入: ");jixu(L,Q);break;}}void jiaofei(float time[],float time1[],float time2[]) //缴费操作{float data1,data2;double money;if(time2[0]!=0&&time2[1]!=0)data2=(time1[0]-time2[0]-1)*60+60-time2[1]+time1[1];elsedata2=0;data1=(time[0]-time1[0]-1)*60+60-time1[1]+time[1];// printf("进入车场时间%f,退出车场时间%f\n",time1[1],time[1]);printf("你的停车时间为%lf小时,在便道停留时间%f小时\n",data1/60,data2/60);money=data1/60*5.0+data2/60*2.0;printf("请交纳%lf元\n",money);/* if(data1<=60.0)printf("请交纳5元。

C语言课程设计停车场管理

C语言课程设计停车场管理
数据加密:确保用户数据安全 权限管理:限制不同用户访问权限 备份与恢复:定期备份数据,确保数据安全 监控与报警:实时监控系统运行情况,及时发现并处理异常情况
感谢您的观看
汇报人:
校等。
停车场管理系统的功能
车辆识别:自动识别车牌号码,记录车辆信息 车位管理:实时更新车位使用情况,显示剩余车位数量 收费管理:自动计算停车费用,支持多种支付方式 车辆引导:提供车辆引导服务,帮助车主快速找到空闲车位 安全监控:实时监控停车场内车辆和人员活动,保障停车场安全 数据分析:统计停车场使用情况,为停车场管理提供决策支持
错误处理:使用if、else、switch等语句进行错误处理,如处理输场管理系统中的优势
易于理解和学习:C语言语法简单,易于理解和学习,适合初学者使用。
强大的功能:C语言具有强大的功能,可以处理复杂的数据结构和算法,适合停车场管理系统 的需求。
高效的运行速度:C语言编译后的程序运行速度快,适合停车场管理系统对实时性的要求。
和性能。
停车场管理系统优化与改进
优化算法:提高系统运行效率,降低资源消耗 增加功能:如车位预约、停车引导、停车支付等 提高安全性:加强数据加密,防止数据泄露 优化用户体验:简化操作流程,提高用户满意度
06
停车场管理系统应用与 维护
停车场管理系统的部署与安装
硬件需求:服务器、网络设备、监控设备等 软件需求:停车场管理系统软件、数据库管理系统等 安装步骤:硬件安装、软件安装、系统调试等 维护与更新:定期检查硬件设备、软件更新、数据备份等
可移植性:C语言具有良好的可移植性,可以在不同的操作系统和硬件平台上运行,适合停车 场管理系统在不同环境下的运行需求。
04 停车场管理系统设计
停车场管理系统需求分析

C语言实现简易停车场管理系统

C语言实现简易停车场管理系统

C 语⾔实现简易停车场管理系统本⽂实例为⼤家分享了C 语⾔实现停车场管理系统的具体代码,供⼤家参考,具体内容如下问题描述:设停车场内只有⼀个可停放n 辆汽车的狭长通道,且只有⼀个⼤门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(⼤门在最南端,最先到达的第⼀辆车停放在车场的最北端),若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,⼀旦有车开⾛,则排在便道上的第⼀辆车即可开⼊;当停车场内某辆车要离开时,在它之后开⼊的车辆必须先退出车场为它让路,待该辆车开出⼤门外,其它车辆再按原次序进⼊车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费⽤。

由题得,此系统要实现的功能为:(1)设计停车场内的结构。

(由题分析为⼀个栈,因为只有⼀个门所以其就像数据结构中学到的栈,但是因为既要出栈⼜要⼊栈,此处我就将这个栈简化为了⼀个链表)(2)当车库满时,在车库外等待的结构。

(就像排队⼀样,先来先进后来后进,只能从⼀端进,另⼀端出)。

(3)车辆的结构,⼀辆车要有什么信息?⾸先要有这辆车的车牌号,可以⽤⼀个字符数组来存储(因为车牌不⼀定全是数字,还可能有汉字,英⽂字母等),题中要求要⽤要计算收费,就要知道驶⼊时间和驶出时间(怎样获取在下⾯会说到)。

算法描述:1、刚开始定义结构类型,如车的类型,车库⾥的类型,车库外等待的类型。

2、声明所要⽤到的函数:1234567891011121314void menu(Stack *cheku,SequenQueue* paidui);//开始菜单 //就是展⽰出菜单的函数//队列的相关操作SequenQueue* InitQueue();//申请⼀个空队int EmptyQueue(SequenQueue* Q);//判断队空int FullQueue(SequenQueue* Q);//判断队满int EnQueue(SequenQueue* Q, ElemType *e);//⼊队int DeQueue(SequenQueue* Q, ElemType *e); //出队Stack* build();//建链表int fullstack(Stack *cheku);//判断链表满void tingche(Stack *cheku,SequenQueue* paidui);//停车的函数void likai(Stack *cheku,SequenQueue* paidui);//离开的函数void chakan(Stack *cheku,SequenQueue* paidui);//查看车库停车情况的函数3、⼀些可能不理解的说明的说明。

C语言源码实现停车场管理系统

C语言源码实现停车场管理系统

C语⾔源码实现停车场管理系统本⽂实例为⼤家分享了C语⾔停车场管理系统的具体代码,供⼤家参考,具体内容如下题⽬要求:刚开始在Codeblocks下⽤C语⾔写的,但是⽤指针传递参数的时候总是出问题。

后来就⽤C++,但是调⽤了C的输⼊输出和⽂件操作的头⽂件,所以代码都是C的main.cpp#include <iostream>#include <cstdio>#include <cstdlib>#include <windows.h>#include <ctime>#include <cstring>#include <conio.h>#define N 100using namespace std;typedef struct{char num[8];//车牌号long int time_in;int pos;//车辆的状态,0表⽰停在便道中,1表⽰停在停车场} vehicle; //定义车辆类型typedef struct{vehicle veh[N];int top;} SqStack; //⽤栈表⽰停车场typedef struct LNode{vehicle veh;struct LNode *next;} LinkList; //⽤单链表表⽰便道void Load(FILE *,SqStack *,LinkList *);void ShowMenu(int );int MakeChoice(int ,int );void Parking(SqStack *,LinkList *);void Back(SqStack *);void EnterPkl(SqStack *,LinkList *);void LeavePath(LinkList *);void View(SqStack *,LinkList *);void Write_and_Quit(FILE *,SqStack *,LinkList *);int main(){SqStack *pkl;LinkList *path;FILE *fp;pkl=(SqStack *)malloc(sizeof(SqStack));path=(LinkList *)malloc(sizeof(LinkList));fp=fopen("Parking_lot.txt","r+");if(fp==NULL){printf("数据加载失败!按任意键退出程序");getch();return 0;}Load(fp,pkl,path);while(1){system("cls");ShowMenu(pkl->top);switch(MakeChoice(1,6)){case 1:system("cls");Parking(pkl,path);break;case 2:system("cls");Back(pkl);break;case 3:system("cls");EnterPkl(pkl,path);break;case 4:system("cls");LeavePath(path);break;case 5:system("cls");View(pkl,path);break;default:system("cls");Write_and_Quit(fp,pkl,path);return 0;}}return 0;}function.cpp#include <iostream>#include <cstdio>#include <cstdlib>#include <windows.h>#include <ctime>#include <cstring>#include <conio.h>#define N 100using namespace std;typedef struct{char num[8];//车牌号long int time_in;int pos;//车辆的状态,0表⽰停在便道中,1表⽰停在停车场} vehicle; //定义车辆类型typedef struct{vehicle veh[N];int top;} SqStack; //⽤栈表⽰停车场typedef struct LNode{vehicle veh;struct LNode *next;} LinkList; //⽤单链表表⽰便道void Load(FILE * fp,SqStack * pkl,LinkList * path){pkl->top=-1;path->next=NULL;LinkList *p;char num[8];long int time_in;int pos;while(fscanf(fp,"%s %ld %d\n",num,&time_in,&pos)!=EOF){if(pos==0)//该车辆在便道中{//尾插法建⽴单链表p=(LinkList *)malloc(sizeof(LinkList));strcpy(p->veh.num,num);p->veh.time_in=time_in;p->veh.pos=pos;path->next=p;path=p;}else//该车辆在停车场中{++pkl->top;strcpy(pkl->veh[pkl->top].num,num);pkl->veh[pkl->top].time_in=time_in;pkl->veh[pkl->top].pos=pos;}}path->next=NULL;}void ShowMenu(int n){printf("********⼀个简单的停车场管理系统********\n");if(n+1==N)printf("***************停车场已满***************\n");elseprintf("**********当前停车场共有%03d辆车**********\n",n+1);printf("********说明:停车场每⼩时收费5元********\n");printf("****************1.停车******************\n");printf("****************2.取车******************\n");printf("*********3.便道车辆进⼊停车场***********\n");printf("**************4.离开便道****************\n");printf("**************5.查看车辆****************\n");printf("****************6.退出******************\n");}int MakeChoice(int m,int n){int judge;printf("请输⼊%d~%d\n",m,n);scanf("%d",&judge);while(judge<m||judge>n)//确保输⼊的是1~n{printf("输⼊不合法,请输⼊%d~%d\n",m,n);fflush(stdin);//如果不加这句,输⼊⼀些字母会导致函数⽆限循环 scanf("%d",&judge);}return judge;}void Parking(SqStack *pkl,LinkList *path){LinkList *r;printf("请输⼊车牌号:");if(pkl->top<N-1){fflush(stdin);scanf("%8s",pkl->veh[++pkl->top].num);time(&(pkl->veh[pkl->top].time_in));pkl->veh[pkl->top].pos=1;printf("您的车辆已停⾄%2d号车位\n",pkl->top);}else{fflush(stdin);r=(LinkList *)malloc(sizeof(LinkList));scanf("%8s",r->veh.num);printf("停车场已满,您要暂时停放在便道中吗?\n");printf("1.确定 2.取消\n");if(MakeChoice(1,2)==1){while(path->next!=NULL)path=path->next;r->veh.time_in=0;r->veh.pos=0;path->next=r;r->next=NULL;printf("您的车辆已停放到便道中\n");}elsefree(r);}printf("按任意键返回主菜单");getch();return;}void Back(SqStack *pkl){int n,i=0;long int time_out;double hours;vehicle t_pkl[N];printf("请输⼊您的车辆所在的车位(⽬前还有个⼩问题,前⾯的车⾛了之后当前车位会-1):"); n=MakeChoice(0,pkl->top);printf("%2d上的车辆车牌号为%s,您确定要取⾛该车辆吗?\n",n,pkl->veh[n].num);printf("1.确定 2.取消\n");if(MakeChoice(1,2)==1){time(&time_out);hours=(time_out-pkl->veh[n].time_in)/3600.0;printf("本次停车共计%lf⼩时,收费%lf元,请按任意键确认⽀付\n",hours,hours*5);getch();for(i=0; pkl->top>=n; --pkl->top,++i) //把第n辆到第pkl->top辆车移到t_pklt_pkl[i]=pkl->veh[pkl->top];//此时pkl->top指向第n-1辆车for(i-=2; i>=0; --i) //把第n+1辆到第pkl->top辆车移回pklpkl->veh[++pkl->top]=t_pkl[i];printf("⽀付成功!\n");printf("取车成功,按任意键返回主菜单");getch();return;}else{printf("按任意键返回主菜单");getch();return;}}void EnterPkl(SqStack *pkl,LinkList *path){if(pkl->top==N-1)printf("停车场已满!");else{printf("您确定将便道中第⼀辆车(车牌号:%8s)停⼊停车场吗?\n",path->next->veh.num); printf("1.确定 2.取消\n");if(MakeChoice(1,2)==1){pkl->veh[++pkl->top]=path->next->veh;time(&pkl->veh[pkl->top].time_in);path->next=path->next->next;printf("已停⼊停车场\n");}}printf("按任意键返回主菜单");getch();return;}void LeavePath(LinkList *path){int i=0,n;LinkList *q;printf("请输⼊要离开便道的车辆的位序:");scanf("%d",&n);while(i<n&&path!=NULL){++i;q=path;//保存当前节点的前⼀个节点,如果找到的位置在链表最后,需要将前⼀个节点的指针域置为NULL path=path->next;}if(path!=NULL){printf("您确定便道中第%03d辆车(车牌号:%8s)离开便道吗?\n",n,path->veh.num);printf("1.确定 2.取消\n");if(MakeChoice(1,2)==1){if(path->next!=NULL)//确定离开并且不是便道中最后⼀辆车{q=path->next;path->next=q->next;free(q);printf("第%03d辆车已离开便道\n",n);}else//确定离开并且是便道中最后⼀辆车{printf("第%03d辆车已离开便道\n",n);q->next=NULL;free(path);}}}elseprintf("没有找到第%03d辆车\n",n);printf("按任意键返回主菜单");getch();return;}void View(SqStack *pkl,LinkList *path){int i;long int time_out;double hours;time(&time_out);printf("停车场共有%03d辆车:\n",pkl->top+1);for(i=0; i<=pkl->top; ++i){hours=(time_out-pkl->veh[i].time_in)/3600.0;printf("车位:%2d 车牌号:%8s 停车时长:%lf 应缴费⽤:%lf\n",i,pkl->veh[i].num,hours,hours*5);}printf("便道车辆:\n");if(path->next==NULL)printf("⽆\n");while(path->next!=NULL){path=path->next;printf("车牌号:%s\n",path->veh.num);}printf("按任意键返回主菜单");getch();return;}void Write_and_Quit(FILE *fp,SqStack *pkl,LinkList *path){rewind(fp);LinkList *pre=path,*p=path->next;for(; pkl->top>-1; --pkl->top)fprintf(fp,"%s %ld %d\n",pkl->veh[pkl->top].num,pkl->veh[pkl->top].time_in,pkl->veh[pkl->top].pos);while(p!=NULL){free(pre);fprintf(fp,"%s %ld %d\n",p->veh.num,p->veh.time_in,p->veh.pos);pre=p;p=pre->next;}free(pre);free(pkl);fclose(fp);}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

C语言停车场管理器程序_数据结构课程设计

C语言停车场管理器程序_数据结构课程设计

做完了课程设计,用C语言写的。

不过挑了个容易点的,停车场管理系统。

不过写得好繁琐啊,好耐无用C语言了。

请大家指教,也帮帮急需的朋友们。

呵呵···终于可以放假啦,嘿嘿·····/*******************************停车场管理器*************************************/#include<stdio.h>#include<stdlib.h>#include<string.h>#include <conio.h>/********************************************************************************/#define MAXSTACKSIZE 2 /*车库容量*/#define price 0.1 /*每车每分钟费用*/typedef struct time{int hour;int min;}Time; /*时间结点*/typedef struct {char num[10];Time reach;Time leave;}CarNode; /*车辆信息结点*/typedef struct {CarNode *base;CarNode *top;int stacksize;}SqStackCar; /*模拟车站*/typedef struct car{CarNode *data;struct car *next;}QueueNode;typedef struct {QueueNode *front;QueueNode *rear;}LinkQueueCar; /*模拟通道*/int QueueEmpty(LinkQueueCar Q) /*便道判空函数*/{if(Q.front==Q.rear) return 1;else return 0;}/********************************************************************************/ void InitStack(SqStackCar *s) /*初始化栈*/{s->base=(CarNode *)malloc(MAXSTACKSIZE*sizeof(CarNode));if(!s->base) exit(0);/*分配失败*/s->top=s->base;s->stacksize=MAXSTACKSIZE;}int Push(SqStackCar *s,CarNode *e) /*进站函数*/{if(s->top-s->base>=s->stacksize) return 0;else *s->top++=*e;return 1;}int Pop(SqStackCar *s,CarNode *e) /*出站函数*/{if(s->top==s->base) return 0;*e=*--s->top;return 1;}int StackEmpty(SqStackCar s) /*判空函数*/{if(s.base==s.top) return 1;else return 0;}int InitQueue(LinkQueueCar *Q) /*初始化便道*/{Q->front=Q->rear=(QueueNode *)malloc(sizeof(QueueNode));if(!Q->front) exit(0);Q->front->next=NULL;return 1;}/**************************************************************/ int EnQueue(LinkQueueCar *Q,CarNode *e) /*便道插入函数*/{QueueNode *p;p=(QueueNode *)malloc(sizeof(QueueNode));if(!p) exit(0);p->data=e;p->next=NULL;Q->rear->next=p;Q->rear=p;return 1;}int DeQueue(LinkQueueCar *Q,CarNode *e) /*便道删除函数*/{QueueNode *p;if(Q->front==Q->rear) return 0;p=Q->front->next;e=p->data;Q->front->next=p->next;if(Q->rear==p) Q->rear=Q->front;free(p);return 1;}/********************************************************************************/ int Arrive(SqStackCar *In,LinkQueueCar *Wait) /*车辆到达函数*/{CarNode *i;QueueNode *w;i=(CarNode *)malloc(sizeof(CarNode));flushall();printf("Input the car number:");gets(i->num);if(In->top-In->base<MAXSTACKSIZE) /*车场未满,车辆进栈*/{printf("\nThe time the car arrive(00:00): ");scanf("%d:%d",&i->reach.hour,&i->reach.min);Push(In,i);printf("\nCar in success!!");sleep(1);return 1;}else /*停车场已满,车进便道*/{w=(QueueNode *)malloc(sizeof(QueueNode));w->data=i;w->next=NULL;Wait->rear->next=w;printf("The PART is full,car must wait in the road!");sleep(1);return 1;}return 0;}/********************************************************************************/ int Departure(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait) /*车辆离开函数*/{int flag=0,a1,a2,b1,b2, money;CarNode *p,*t;QueueNode *q;p=(CarNode *)malloc(sizeof(CarNode));flushall();printf("Input the out car number: ");gets(p->num);while(!StackEmpty(*In)){t=(CarNode *)malloc(sizeof(CarNode));Pop(In,t);if(strcmp(p->num,t->num)==0) /*比较车场中有无这辆车,有即出站*/{printf("Input the time the car out(00:00):");scanf("%d:%d",&p->leave.hour,&p->leave.min);printf("The ");printf("%s",p->num);printf(" Car out the part!");a1= p->leave.hour;a2= t->reach.hour;b2= t->reach.min;money = ((a1-a2+24)%24*60+(b1-b2+60)%60)*price; /*计算车辆需要的费用*/printf("\nThe time the car arrive: %d:%d",t->reach.hour,t->reach.min);printf("\nThe time the car leave: %d:%d",p->leave.hour,p->leave.min);printf("\nNeed: %d yuan",money);flag=1;getch();free(t);break;}elsePush(temp,t);} /*while*/if(!flag){printf("No this car!!");getch();}while(!StackEmpty(*temp)){Pop(temp,p);Push(In,p);}free(p);if(flag&&Wait->front!=Wait->rear) /*车站中有空位,便道有车,车入站*/ {q=(QueueNode *)malloc(sizeof(QueueNode));q=Wait->front->next;t=q->data;if(q!=NULL){Push(In,t);printf("\nThe ");printf("%s",t->num);printf(" car in part!");printf("\nInput the time the car arrive(00:00): ");scanf("%d:%d",&t->reach.hour,&t->leave.min);}Wait->front->next=q->next;if(q==Wait->rear) Wait->rear=Wait->front;free(q);}return 1;}/****************************************************************************** **/void Print(SqStackCar *In,SqStackCar *Temp,LinkQueueCar *Wait) /*打印函数*/{int c=0;int count=1;CarNode *p,*t;QueueNode *q;q=(QueueNode *)malloc(sizeof(QueueNode));p=(CarNode *)malloc(sizeof(CarNode));t=(CarNode *)malloc(sizeof(CarNode));while(1&&c!='3'){clrscr();gotoxy(1,10);printf("1. Print the road!");gotoxy(1,11);printf("2. Print the part!");gotoxy(1,12);printf("3. return.");do{printf("\nInput your choice:");c = getche();printf("\n");}while(c!='1'&&c!='2'&&c!='3');if(c=='2') /*打印停车场*/{printf("The car in the part!\n");count=1;while(!StackEmpty(*In)){Pop(In,t);}while(!StackEmpty(*Temp)){Pop(Temp,t);printf("The ");printf("%d",count);printf(" car number is: ");count++;puts(t->num);Push(In,t);}printf("Press any key to continue...");getch();}if(c=='1') /*打印便道*/{printf("The car in the road!\n");count=1;q=Wait->front->next;if(Wait->front!=Wait->rear) /**/{while(q!=NULL){p=q->data;printf("The ");printf("%d",count);printf(" Car number is: ");puts(p->num);count++;}}else printf("\nNo car in the road.");printf("Press any key to continue...");getch();}}}/***************************主程序***********************************************/ int Arrive(SqStackCar *In,LinkQueueCar *Wait);int Departure(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait);void Print(SqStackCar *In,SqStackCar *temp,LinkQueueCar *Wait);void initialization();char readcommand();void interpret(char cmd);main(){char cmd;SqStackCar part,temp;LinkQueueCar road;InitStack(&part);InitStack(&temp);InitQueue(&road);printf("Press any key to continue......");getch();while(1){initialization(); /*初始化界面*/cmd = readcommand(); /*读取停车场状况*/clrscr();switch(cmd){case 'a': Arrive(&part,&road); break;case 'A': Arrive(&part,&road); break;case 'd': Departure(&part,&temp,&road); break;case 'D': Departure(&part,&temp,&road); break;case 'p': Print(&part,&temp,&road); break;case 'P': Print(&part,&temp,&road); break;case 'e': printf("Press any to continue...");getch();exit(0); break;case 'E': printf("Press any to continue...");getch();exit(0); break;default : printf("ERROR!"); break;}}}/********************************************************************************/ void initialization() /*初始函数*/{int i;clrscr();gotoxy(0,0);for(i=1;i<=240;i++)printf("\1");gotoxy(15,8);printf("THIS IS A CAR PART MANAGE SYSYTEM!");gotoxy(15,12);printf("NAME: LIYONGJUN.");gotoxy(15,13);printf("NUM: 3104006893.");;.. gotoxy(15,14);printf("GRADE: 2004.");gotoxy(15,15);printf("CLASS: COMPUTER SCIENCE AND TECHNOLOGY 10"); gotoxy(1,20);printf("\n********************************************************************************");printf("1. Car Arrive--A 2. Car Departure--D 3. Print Car--P 4.Exit--E");printf("\n********************************************************************************");printf("Input C,D,P,E choose!!\n");}char readcommand() /*选择函数*/{char cmd;do{printf("Input your choice:");cmd = getche();printf("\n");}while((cmd!='a')&&(cmd!='A')&&(cmd!='d')&&(cmd!='D')&&(cmd!='p')&&(cmd!='P')&&(cmd!='E')&&( cmd!='e'));return cmd;}。

c语言停车场管理系统

c语言停车场管理系统
}cteam; //队列的结构定义
cteam* initTeam(){
cteam *Q;
Q=(cteam *)malloc(sizeof(teamNode));
Q->front=(teamPtr)malloc(sizeof(teamNode));
Q->front->next=NULL;
// 仅供参考
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50 //停车场最多停车数
typedef struct{
char cnum[8];
float date;
}pnode; //栈中结点数据类型
printf(" >>\n");
printf(" 3.退出系统\n\n\n");
printf("***>>>>>>>>>>>>>>>>>>>> Made by Lemon'x <<<<<<<<<<<<<<<<<<<<<***\n\n");
Q->front->number=50;
Q->rear=Q->front;
return Q;
} //初始化队列
int inTeam(cteam *Q,char cnum[]){ //接收队列的地址,来车的车牌号码

C编写的智能停车场管理系统开发与实施

C编写的智能停车场管理系统开发与实施

C编写的智能停车场管理系统开发与实施智能停车场管理系统是利用现代信息技术对停车场进行智能化管理的一种系统。

随着城市化进程的加快和汽车保有量的增加,停车难题成为了人们生活中的一个普遍问题。

传统的停车场管理方式已经无法满足日益增长的停车需求,因此智能停车场管理系统应运而生。

本文将介绍如何使用C语言编写智能停车场管理系统,并探讨其开发与实施过程。

1. 系统需求分析在开发智能停车场管理系统之前,首先需要进行系统需求分析。

根据停车场的规模和具体需求,确定系统的功能模块和性能指标。

一般来说,智能停车场管理系统应包括以下功能:车辆进入和离开的自动识别停车位信息实时监测支持多种支付方式数据统计和报表生成远程监控和管理2. 系统设计与架构在进行系统设计时,需要考虑系统的可扩展性、稳定性和安全性。

通常可以采用模块化设计,将系统划分为多个模块,每个模块负责一个特定的功能。

在C语言中,可以使用结构体、指针等数据结构来实现模块之间的数据传递和交互。

3. 数据结构与算法选择在实现智能停车场管理系统时,需要选择合适的数据结构和算法来提高系统的效率和性能。

例如,可以使用队列来管理车辆的进出顺序,使用哈希表来快速查找停车位信息等。

4. 界面设计与用户交互为了方便用户操作和管理,智能停车场管理系统需要一个友好的界面设计。

可以使用C语言中的图形库或者控制台输出来实现系统界面,提供用户输入和反馈功能。

5. 系统实施与测试在完成系统开发后,需要进行系统实施和测试工作。

首先要对系统进行全面测试,包括功能测试、性能测试、安全测试等。

然后根据实际情况进行部署和调试工作,确保系统正常运行。

6. 系统优化与改进随着使用量的增加和需求的变化,智能停车场管理系统可能需要不断优化和改进。

可以根据用户反馈和数据分析结果,对系统进行调整和升级,提高系统的稳定性和用户体验。

通过以上步骤,我们可以成功地使用C语言编写并实施智能停车场管理系统。

这将极大地提高停车场的管理效率,减少人力成本,并为城市交通管理带来新的解决方案。

数据结构c语言版课程设计停车场管理系统

数据结构c语言版课程设计停车场管理系统

课程设计:停车场c语言版本的数据结构课程设计,规定用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include <stdio.h>//#include <stdlib.h> //malloc#include <time.h> //获取系统时间所用函数#include <conio.h> //getch()#include <windows.h> //设立光标信息mallco#define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0.05 /*每车每分钟收费值*/#define BASEPRICE 0.5 //基础停车费#define Esc 27 //退出系统#define Exit 3 //结束对话#define Stop 1 //停车#define Drive 2 //取车int jx=0,jy=32; //全局变量日记打印位置typedef struct{int hour;int minute;}Time,*PTime; /*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点*/ {int num ; /*车牌号*/Time arrtime; /*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];int top;}SqStackCar;typedef struct node /*定义队列结点的类型*/{int num; /*车牌号*/struct node *next;}QueueNode;typedef struct /*定义队列,模拟便道*/{QueueNode *front,*rear;}LinkQueueCar;/*函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f);void printstop(int a,int num,int x0,int y0);void printleave(int a,int po,int num);/*初始化栈*/void InitSeqStack(SqStackCar *s){s->top=-1;}/* push入站函数*/int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{if(s->top==MaxSize-1)return(0); //假如栈满,返回0 else{s->stack[++s->top]=x; //栈不满,到达车辆入栈return(1);}}/*栈顶元素出栈*/CarNode pop(SqStackCar *s){CarNode x;if(s->top<0){x.num=0;x.arrtime.hour=0;x.arrtime.minute=0;return(x); //假如栈空,返回空值}else{s->top--;return(s->stack[s->top+1]); //栈不空,返回栈顶元素}}/*初始化队列*/void InitLinkQueue(LinkQueueCar *q){q->front=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点,作头结点if(q->front!=NULL){q->rear=q->front;q->front->next=NULL;q->front->num=0; //头结点的num保存队列中数据元素的个数}}/*数据入队列*/void EnLinkQueue(LinkQueueCar *q,int x){QueueNode *p;p=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点p->num=x;p->next=NULL;q->rear->next=p; //新结点入队列q->rear=p;q->front->num++; //队列元素个数加1}/*数据出队列*/int DeLinkQueue(LinkQueueCar *q){QueueNode *p;int n;if(q->front==q->rear) //队空返回0return(0);else{p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;n=p->num;free(p);q->front->num--;return(n); //返回出队的数据信息}}/********************* 车辆到达***************************/ //参数:停车栈停车队列车辆信息//返回值:空//功能:对传入的车辆进行入栈栈满则入队列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x){int f;f=push(stop,x); //入栈if (f==0) //栈满{EnLinkQueue(lq,x.num); //入队printstop(1,lq->front->num,0,23);printlog(x.arrtime,x.num,1,'B',lq->front->num,0);qingping(0); printf("您的车停在便道%d号车位上\n",lq->front->num); //更新对话}else{printstop(0,stop->top+1,0,23);printlog(x.arrtime,x.num,1,'P',stop->top+1,0);qingping(0); printf("您的车停在停车场%d号车位上\n",stop->top+1); //更新对话}qingping(1); printf("按任意键继续");getch();}/************************** 车辆离开*************************************///参数:停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x//返回值:空//功能:查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x){double fee=0;int position=s1->top+1; //车辆所在车位int n,f=0;CarNode y;QueueNode *q;while((s1->top > -1)&&(f!=1)) //当栈不空且未找到x{y=pop(s1);if(y.num!=x.num){n=push(s2,y);position--;}elsef=1;}if(y.num==x.num) //找到x{gotoxy(33,17);printf("%d:%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute) );fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEP RICE;gotoxy(48,17); printf("%2.1f元\n",fee);qingping(0); printf("确认您的车辆信息");qingping(1); printf("按任意键继续");getch();while(s2->top>-1){ y=pop(s2);f=push(s1,y);}n=DeLinkQueue(p);if(n!=0){y.num=n;y.arrtime=x.arrtime;f=push(s1,y);printleave(p->front->num+1,position,s1->top+1); //出栈动画ji队列成员入栈printlog(x.arrtime,x.num,0,'P',position,fee);printlog(y.arrtime,y.num,1,'P',s1->top+1,0);}else{printleave(0,position,s1->top+2);printlog(x.arrtime,x.num,0,'P',position,fee);}}else //若栈中无x{while(s2->top > -1) //还原栈{y=pop(s2);f=push(s1,y);}q=p->front;f=0;position=1;while(f==0&&q->next!=NULL) //当队不空且未找到xif(q->next->num!=x.num){q=q->next;position++;}else //找到x{q->next=q->next->next;p->front->num--;if(q->next==NULL)p->rear=p->front;gotoxy(33,17); printf("0:0");gotoxy(48,17); printf("0元");qingping(0); printf("您的车将离便道");qingping(1); printf("按任意键继续");getch();printleave(-1,position,p->front->num+1); //出队动画printlog(x.arrtime,x.num,0,'B',position,0);f=1;}if(f==0) //未找到x{qingping(0); printf("停车场和便道上均无您的车");qingping(1); printf("按任意键继续");getch();}}}/*获取系统时间*///返回PTime类型PTime get_time(){Time *t;t=new Time;time_t timer;struct tm *tblock;timer=time(NULL);tblock=localtime(&timer);t->minute=tblock->tm_min;t->hour=tblock->tm_hour;return t;}/*移动光标*///蒋光标移动到(x,y)点void gotoxy(int x,int y){COORD coord;coord.X=x;coord.Y=y+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); }/*画图*///画出系统界面void panitPL(){gotoxy(20,4);printf("****************对话框****************");int x=18,y=6; //起始点int a[2][4]={2,0,0,1,-2,0,0,-1}; //方向for(int i=0;i<2 ;i++){for(int j=0; j<20; j++){x+=a[i][0]; y+=a[i][1];gotoxy(x,y);printf("═");}x+=a[i][0]; y+=a[i][1];gotoxy(x,y);if(i==0)printf("╗");elseprintf("╚");for(j=0; j<12; j++){x+=a[i][2]; y+=a[i][3];gotoxy(x,y);printf("║");}x+=a[i][2]; y+=a[i][3];gotoxy(x,y);if(i==0)printf("╝");elseprintf("╔");}gotoxy(22,8);printf("小王:");gotoxy(22,11);printf("顾客:");gotoxy(22,14); printf("*********** 停车信息***********");gotoxy(23,15); printf("车牌号:");gotoxy(42,15); printf("时间:");gotoxy(23,17); printf("停车时长:");gotoxy(42,17); printf("收费:");}/*清屏函数*///更新对话框前将原对话晴空void qingping(int a){if(a==0) //清空小王的对话{gotoxy(28,8); printf(" ");gotoxy(28,9); printf(" ");gotoxy(28,8);}else if(a==1) //清空顾客的对话{gotoxy(28,11); printf(" ");gotoxy(28,12); printf(" ");gotoxy(28,13); printf(" ");gotoxy(28,11);}else //清空车辆信息{gotoxy(31,15); printf(" ");gotoxy(48,15); printf(" ");gotoxy(33,17); printf(" ");gotoxy(48,17); printf(" ");gotoxy(31,15);}}//用上下键移动选择int getkey(){char c;int x=28,y=11;while(1){gotoxy(x,11); printf(" ");gotoxy(x,12); printf(" ");gotoxy(x,13); printf(" ");gotoxy(x,y); printf(">>");c=getch();if(c==13) return y-10; //enter键返回当前选项if(c!=-32)continue; //不是方向键进行下次循环c=getch();if(c==72) if(y>11) y--; //上if(c==80) if(y<13) y++; //下}}//输入车辆信息CarNode getcarInfo(){PTime T;CarNode x;qingping(0); printf("请输入您的车牌号\n");qingping(1); printf("在下面输入车辆信息");qingping(2);scanf("%d",&(x.num));T=get_time();x.arrtime=*T;gotoxy(48,15); printf("%d:%d",x.arrtime.hour,x.arrtime.minute);getch();return x;}//打印停车场void printcar(){gotoxy(0,20); //╔ ╗╝╚═║printf("═══════════════════════════════════════╗");printf(" 出场暂放区║ 1 2 3 4 5 ║");printf("---------------------------------------------------------------------- ║");printf(" 主车道║");printf("---------------------------------------------------------------------- ║");printf(" 12 11 10 9 8 7 6 5 4 3 2 1 ║");printf("═══════════════════════════════════╗ ║");printf(" ↑ ╔══════════════╝ ║");printf(" 便道停车区→ ║ 1 2 3 4 5 ║");printf(" ╚══════════════════╝");printf(" 停车场管理日记\n\n");printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) "); }//打印日记记录void printlog(Time t,int n,int io,char ab,int po,double f){jy++;gotoxy(jx,jy);// printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) ");if(io==0)printf("/ %2.1f",f);gotoxy(jx,jy);printf(" / %d / %c:%d",io,ab,po);gotoxy(jx,jy);printf(" %d:%d / %d",t.hour,t.minute,n);}void printstop(int a,int num,int x0,int y0){static char *car="【█】";// int x0=0,y0=23;int x=0,y=28;if(a==0){x=(num+6)*6;for(;x0<72;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}for(;y0<y;y0++){gotoxy(x0,y0); printf("%s",car); Sleep(100);gotoxy(x0,y0); printf(" ");}for(;x0>x;x0--){gotoxy(x0,y0); printf("%s",car); Sleep(50);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}else{x=(12-num)*6;y=y-3;for(;x0<x;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}}void printleave(int a,int po,int num){static char *car="【█】";int x0=0,y0=23;int x=0,y=28;int i;if(a==-1){x=(12-po)*6;y=y-3;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car);Sleep(100);if(12>num){gotoxy((12-num)*6,y);printf(" ");}gotoxy(x,y); printf("%s",car);for(;x>x0;x--){gotoxy(x,y-2); printf("%s",car); Sleep(30);gotoxy(x,y-2); printf(" ");}}else{i=num+1;for(;num>po;num--){x=(num+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>21;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(i-num+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}x=(po+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>23;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>0;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}num++;for(;i-num>0;num++){x=(i-num+6)*6; y=21;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y<28;y++){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(num-1+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}if(a>0){x=66;y=25;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car); Sleep(100);if(12>a){gotoxy((12-a)*6,y);printf(" ");}if(a>1){gotoxy(x,y); printf("%s",car);}printstop(0,i-1,x,y-2);}}}/************************************************************ main ********************************************************/int main(void){SqStackCar s1,s2; //停车栈和暂存栈LinkQueueCar p; //队列InitSeqStack(&s1);InitSeqStack(&s2);InitLinkQueue(&p);printf(" 停车场管理系统\n\n");printf("************************* 欢(=^_^=)迎***************************\n");printf(" 收费标准:基础费0.5元,每分钟收取0.05元,收费精确到0.1元\n");printf(" PS:车牌号由阿拉伯数字组成");panitPL();printcar(); gotoxy(0,-3);char c=0; //接受按键while(1) //按ESC退出系统{for(int i=2;i>-1 ;i--) //初始化对话框qingping(i);printf("按ESC退出系统,其它键开始对话");c=getch();if(c==Esc){qingping(0);break;}while(1){qingping(2);gotoxy(28,8); printf("欢迎来到停车场!我是管理员小王。

C语言课设之停车场管理系统

C语言课设之停车场管理系统

C语言课程设计实习报告目录一. 题目要求二. 需求分析三.总体设计四. 具体程序五. 上机操作及使用说明六. 存在问题与不足七. 学习心得停车场管理一. 题目要求1.设计一个停车场用长度为N的堆栈来模拟。

由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。

2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。

二. 需求分析根据题目要求首先设计一个堆栈,以堆栈来模拟停车场,又每辆汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素设计成汽车的车牌号。

当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。

这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。

当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。

另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。

由于时间不像汽车一样需要让道,可设计了一个顺序表来存放时间。

又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。

三. 总体设计四. 具体程序#include <stdio.h>#include <malloc.h> #define SIZE 3#define NULL 0 typedef struct{ int hour;int min;} time;typedef struct{ int num;int position;time t;float money;} Car;typedef struct{ Car elem[SIZE+1]; int top;} Stack;typedef struct Node { Car data;struct Node *next; }CQueueNode;typedef struct{ CQueueNode *front;CQueueNode *rear;}LinkQueue;void InitStack(Stack *S){ S->top=0; }void Push(Stack *S,Car *r){ S->top++;S->elem[S->top].num=r->num;r->position=S->elem[S->top].position=S->top;S->elem[S->top].t.hour=r->t.hour;S->elem[S->top].t.min=r->t.min;}int IsEmpty(Stack* S){ return(S->top==0?1:0); }int IsFull(Stack *S){ return(S->top==SIZE?1:0); }int GetTop(Stack *S,Car *n){ n->num=S->elem[S->top].num;n->position=S->elem[S->top].position;n->t.hour=S->elem[S->top].t.hour;n->t.min=S->elem[S->top].t.min;return 1;}void InitQueue(LinkQueue *Q){ Q->front=(CQueueNode*)malloc(sizeof(CQueueNode)); if(Q->front!=NULL){ Q->rear=Q->front;Q->front->next=NULL; }}int EnterQueue(LinkQueue *Q,Car *t){ CQueueNode *NewNode;NewNode=(CQueueNode*)malloc(sizeof(CQueueNode)); if(NewNode!=NULL){NewNode->data.num=t->num;NewNode->data.t.hour=t->t.hour;NewNode->data.t.min=t->t.min;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return 1;}else return 0;}{ CQueueNode *p;if(Q->front==Q->rear)return 0;p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;x->num=p->data.num;x->t.hour=p->data.t.hour;x->t.min=p->data.t.min;free(p);return 1;}void print1(Stack *S){int tag;Car x;printf("停车场停车情况:\n");if(IsEmpty(S))printf("无车!");for(tag=S->top;S->top>0;S->top--)if(GetTop(S,&x))printf("车牌号%d,所在位置%d,到达/离开时间 %d:%d\n",x.num,x.position,x.t.hour,x.t.min);S->top=tag;}void print2(LinkQueue *Q){ CQueueNode *p;p=Q->front->next;for(;p!=NULL;p=p->next)printf("等待车牌号%d, 到达/离开时间 %d:%d",p->data.num,p->data.t.hour,p->data.t.min);}void TaM(Car *r,int h,int m){ if(m>r->t.min){r->t.min+=60;r->t.hour-=1;}h=r->t.hour-h;m=r->t.min-m;printf("\n停车 %d小时 %d 分钟\n",h,m);printf("每小时收费30元\n");h=h*60;m=h+m;r->money=0.5*m;printf("请支付金额%.2f元\n",r->money);}{if(IsFull(S)){ printf("车库已满,请等待!");EnterQueue(Q,r);}else{Push(S,r);printf("\n您现在所在位置 %d",r->position);}}void Out(Stack *S,Stack *S0,Car *r,LinkQueue *Q){ int tag=S->top;Car x;if(IsEmpty(S)) printf("没有此车!");else{ for(;r->num!=S->elem[tag].num&&tag>0;tag--){ Push(S0,&S->elem[tag]);S->top--;}if(r->num==S->elem[tag].num){ TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min);S->top--;for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);if(S->top<SIZE && Q->front!=Q->rear){ DeleteQueue(Q,&x);Push(S,&x);}}else if(tag==0){ printf("未进入停车场应支付金额 0元!");for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);}}}void print(){printf("\n***********************************欢迎光临*************************************\n");printf("\n 请选择:\n");printf("\n 1 :到达");printf("\n 2 :离开");printf("\n 3 :搜索");printf("\n 4 :退出\n");printf("\n");}int main(){ int n,m,i=1,j,flag=0;Car c[10];Car x;Stack S,S0;LinkQueue Q;InitStack(&S);InitStack(&S0);InitQueue(&Q);while(1){ print();scanf("%d",&m);switch(m){case 1:printf("\n请输入车牌号:");scanf("%d",&c[i].num);printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[i].t.hour,&c[i].t.min); In(&S,&Q,&c[i]);i++;break;case 2:printf("\n请输入车牌号:");scanf("%d",&n);for(j=0;j<10;j++)if(n==c[j].num) break;printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[j].t.hour,&c[j].t.min); Out(&S,&S0,&c[j],&Q); break;case 3: print1(&S);print2(&Q);break;case 4: flag=1; break;default:printf("\n输入错误,请输入 1,2,3 或4"); }if(flag)break;} return 0;}五. 上机操作及使用说明运行Microsoft Visual C++,进入运行状态:1.主菜单:根据页面提示,输入相应数字。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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和数据库有了更深刻的认识,积累了使用软件工程的思想来开发软件的经验,同时最重要的是摸索出了一套分析问题和解决问题的方法,这对于我将来走上工作岗位受益匪浅七、体会通过这次课程设计,让我对程序设计过程有了更加深入的理解,程序设计就有如解决一实际问题,从解决实际问题的角度,我们要明白我们想要程序做什么,怎么做,需要什么,完成什么效果,最低要求,最高要求,然后再一一实现他的目标。

相关文档
最新文档