停车场管理系统代码

合集下载

大学 C语言 停车场管理系统 设计c语言课程设计 (含调试图)

大学 C语言 停车场管理系统 设计c语言课程设计 (含调试图)

Xxxxx大学xxxxxxxxxxx系20xx-20xx学年第一学期《C程序设计》课程设计题目名称:停车场管理系统设计姓名:学号:班级:指导教师:编写日期: 20 年1月5日—20 年1月31日成绩:目录(一)需求分析 (3)1-1停车 (3)1-2取车 (3)1-3功能的选择 (3)(二)总体设计(程序设计组成框图) (3)2-1停车模块 (3)2-2取车模块 (3)2-3车辆信息浏览模块 (4)2-4程序设计组成框图 (4)(三)详细设计 (4)3-1停车场分析 (4)3-2停车操作 (4)3-3收费管理(取车) (5)3-4车辆信息 (5)3-5退出系统 (5)(四)程序运行结果测试与分析 (5)(五)结论与心得 (7)(六)参考文献 (7)(七)致谢 (8)附录: (8)(一)需求分析1-1停车车辆信息要用文件存储,因而要提供文件的输入输出操作。

1-2取车当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作。

1-3功能的选择提供现实操作和用键盘式菜单实现功能选择。

(二)总体设计(程序设计组成框图)2-1停车模块对车辆信息赋值,分配前检查车位使用情况(按行查找park 数组,元素为0 表示车位为空,则允许分配)。

把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。

2-2取车模块计算费用(停车费用=停车时间*0.2 元),从文件中删除该车信息。

并将该车位对应的二位数组变量设为0,表示该车位可用。

输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。

2-3车辆信息浏览模块输出车辆信息文件中的记录。

另外,用户按Esc 键退出系统。

2-4程序设计组成框图(三)详细设计3-1停车场分析有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层。

( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.dat”中。

停车场管理系统源代码

停车场管理系统源代码

//停车场管理系统#include〈stdio.h〉#include<stdlib。

h〉#define OVERFLOW 0#define ERROR 0#define OK 1#define STACKSIZE 2 //车库容量//时间节点typedef struct time{int hour;int min;}Time;//车辆信息typedef struct{char CarNum;float time;int pos_a; //车在停车场中的位置int pos_b;//车在便道上的位置int flag;}Car,Car2;//车库信息(顺序栈)typedef struct{Car *top;Car *base;int stacksize;}SqStack;//初始化int InitStack(SqStack &S){S。

base=new Car[STACKSIZE];if(!S.base)exit(OVERFLOW);S。

top=S.base;S.stacksize=STACKSIZE;return OK;}//判空int StackEmpty(SqStack S){if(S。

top==S.base)return OK;elsereturn ERROR;}//判满int StackFull(SqStack S){if(S。

top—S.base〉=S。

stacksize)return OK; elsereturn ERROR;}//入栈int Push(SqStack &S,Car e){if(S.top-S.base==S.stacksize) return ERROR;*S.top++=e;return OK;}//出栈int Pop(SqStack &S,Car &e){if(S。

top==S.base)return ERROR;e=*--S.top;return OK;}//遍历栈int StackTraverse(SqStack S){Car *p=S.top;Car *q=S.base;int l=1;if(StackEmpty(S)){for(int j=1;j<=STACKSIZE;j++){printf(”\t车牌:");printf("\t\t到达时间:");printf("\t位置%d:空空”,j);printf(”\n");}return OK;}while(p!=q){Car car=*(q);printf(”\t车牌:%d”,car。

数据库(MySQL)停车场管理系统

数据库(MySQL)停车场管理系统

数据库(MySQL)停车场管理系统数据库(MySQL)停车场管理系统1、引言1.1 编写目的1.2 范围1.3 定义、缩略词和缩写2、系统概述2.1 项目背景2.2 目标2.3 功能3、用户需求3.1 功能性需求3.2 非功能性需求3.3 用户故事3.4 系统界面4、数据库设计4.1 实体关系模型(ERM)4.2 数据库范式4.3 数据库表设计4.4 数据库表关系5、系统架构5.1 客户端-服务器架构5.2 组件和模块6、系统流程6.1 登录流程6.2 停车流程6.3 缴费流程6.4 出车流程7、数据库操作7.1 数据库初始化7.2 数据库连接与关闭7.3 数据插入、查询、更新和删除 7.4 事务处理8、系统安全性8.1 用户认证和授权8.2 数据库安全8.3 防止SQL注入和跨站脚本攻击9、性能优化9.1 数据库索引9.2 查询优化9.3 数据库缓存10、系统测试10.1 单元测试10.2 集成测试10.3 系统测试10.4 性能测试11、部署和维护11.1 系统部署11.2 系统更新和修复11.3 数据备份和恢复12、附件12.1 数据库表结构文件12.2 示例数据13、法律名词及注释- 数据保护法:指个人信息保护相关法律法规,包括但不限于《中华人民共和国个人信息保护法》;- 计算机软件著作权:指对计算机软件根据《中华人民共和国著作权法》所享有的权利,包括但不限于复制权、发行权、改编权等;- 数据库:指一个有组织的、可共享的、对存储数据进行高效访问的系统;- 用户:指停车场管理系统的使用者,包括但不限于管理员和普通用户。

停车场管理系统程序源代码

停车场管理系统程序源代码

#include<stdio.h>#include<malloc.h>#define N 30 /*停车场类最多的停车数*/ #define M 20 /*便道内最多的停车数*/ #define price 2 /*每单位时间的停车费用*/ typedef struct{int carNo[N]; /*车牌号*/int carTime[N]; /*进场时间*/int top; /*栈指针*/}seqstack; /*定义顺栈占类型*/ typedef struct Node{int carNo[M]; /*车牌号*/struct Node *next;}linkQueue Node;typedef struct{LinkQueue Node *front; /*队首指针*/LinkQueue Node *rear; /*队尾指针*/}LinkQueue; /*定义链队类型*//*以下是顺序栈的基本运算算法*/void Initstack(seqstack *s){s=(seqstack*)malloc(sizeof(seqstack));s->top=-1;}int IsEmpt(seqstack *s){return(s->top==-1);}int IsFull(seqstack *s){return(s->top==N-1);}int Push(seqstack *s,int e1,int e2){if(s->top==N-1) return 0;s->top++;s->carNo[s->top]=e1;s->carTime[s->top]=e2;return 1;}int Pop(seqstack *s,int &e1,int &e2)if(s->top==-1)return 0;e1=s->carNo[s->top];e2=s->carTime[s->top];s->top--;return 1;}void Disqstack(seqstack *s){int i;for(i=s->top;i>=0;i--)printf("%d",s->carNo[i]);printf("\n");}/*以下是链队的基本运算算法*/int InitQueue(LinkQueue *q){q->front=(LinkQueue Node *)malloc(sizeof(LinkQueue Node)); if(q->front!=NULL){q->rear=q->front;q->front->next=NULL;return(true);}else return(false);}int Empt(LinkQueue *q) /*判队满*/{return(q->front==q->rear);}int Lull(LinkQueue *q){return((q-a.rear+1)%M==q->front);}int EnterQueue(LinkQueue *&q,int e) /*进队*/{if((q->rear+1)%M==q->front) /*队满*/return 0;q->rear=(q->rear+1)%M;q->carNo[q->rear]=e;return 1;}int DeleteQueue(LinkQueue *&q,int &e) /*出队*/if(q->front==q->rear) /*对空情况*/return 0;q->front=(q->front+1)%M;e=q->carNo[q->front];return 1;}void DispQueue(LinkQueue *q) /*输出队中元素*/{int i;i=(q->front+1)%M;printf("%d",q->carNo[i];while((q->rear-i+M)%M>0){i=(i+1)%M;printf("%d",q->carNo[i]);}printf("\n");}void main(){int comm;int No,e1,Time,e2;int i,j;seqstack *st1,*st2;LinkQueue *qu;Initstack(st)Initstack(st1);InitQueue(Qu);do{printf("input a number(1:到达2:离开3:停车场4:便道0退出):"); scanf("%d%d%d",&comm,&no,&time);switch(comm){case 1; /*汽车到达*/if(!stackFull(st)) /*便道不满*/{Push(st,no,time);printf(">>停车场位置:%d\n",st->top+1);}else /*停车场满*/{if(!QueueFull(Qu)) /*便道不满*/{EnterQueue(Qu,no);printf(">>候车场位置:%d\n",qu->rear);}elseprintf(">>候车场已满,不能停车\n");}break;case 2: /*汽车离开*/for(i=0;i<=st->top&&st->carNo[i]!=no;i++);if(i>st->top)printf(">>未找到该编号汽车\n";else{ for(j=i;i<=st->top;j++){Pop(st,e1,e2);Push(st1,e1,e2); /*倒车到临时栈st1中*/}Pop(st,e1,e2); /*该汽车离开*/printf(">>%d汽车停车费用:%d\n",no,(time-e2)*price); while(!stackEmpty(st1)) /*将临时栈St1重新回到St中*/ { Pop(st1,e1,e2);Push(st,e1,e2);}if(!QueueEmpty(Qu)) /*队不空时,将队头进栈St*/{DeleteQueue(Qu,e1);Push(st,e1,time); /*以当前时间开始记费*/}}break;case 3: /*显示停车场情况*/if(!stackEmpty(Qu)){ printf(">>停车场中车辆:"); /*输出停车场中的车辆*/ Dispstack(st);}elseprintf(">>停车场中无车辆:");break;case 4: /*显示便道情况*/if(!QueueEmpty(Qu)){printf(">>便道中的车辆:"); /*输出便道中的车辆*/ DispQueue(Qu);}elseprintf(">>便道中无车辆\n");break;case 0: /*结束*/if(!stackEmpty(st)){printf(">>停车场中的车辆:"); /*输出停车场中的车辆*/ Dispstack(st);}if(!QueueEmpty(Qu)){printf(">>便道中车辆:"); /*输出便道中的车辆*/DispQueue(Qu);}break;defaut: /*其他情况*/printf("error\n");break;}}while(comm!=0);}。

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

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

停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。

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

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

编制一程序模拟该停车场的管理。

【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。

2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。

车辆离开要计时计费。

另外,每天开始时,停车场要初始化。

3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。

4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。

即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。

停车场管理系统的代码

停车场管理系统的代码

设停车场是一个可停放n 辆车的狭长通道,且只有一个大门可供汽车进出。

在停 车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。

若 车场内已停满n 辆车,则后来的汽车要在门外的便道上等候, 当有车开走时,便 道上的第一辆车即可开入。

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

每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收 费)。

试编写程序,模拟上述管理过程。

要求以顺序栈模拟停车场,以链队列模 拟便道。

从终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达” 还是“离去” (2)汽车牌照号码;(3) “到达”或“离去”的时刻。

与每组输入信 息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置; 如果是离去的车辆,则输出其在停车场中停留的时间和应缴的费用。

(需另设一个栈,临时停放为让路而从车场退出的车。

)#include<iostream> #define M 5using namespace std;typedef int Datatype;typedef struct {Datatype bianhao[M];int top;int h[M]; // int m[M]; //int s[M]; // }Seqstack; // typedef struct Node // { Datatype bianhao; struct Node *next; }node;typedef struct{node *front;node *rear;int count;}biandao; // 便道//停车场顺序栈初始化void lnitSeqstack(Seqstack *t)时分秒停车场栈的定义{t->top=-1;}//进栈,即进入停车场int Push(Seqstack *t,int x,int h,int m,int s){if(t->top==M-1)return 0; // 停车场栈已满t->top++;t->bianhao[t->top]=x;t->h[t->top]=h;t->m[t->top]=m;t->s[t->top]=s;return 1;}//出栈,即离开停车场int Pop(Seqstack *t,int *x,int *h,int *m,int *s) {if(t->top==-1)return 0;else{*x=t->bianhao[t->top]; *h=t->h[t->top]; *m=t->m[t->top];*s=t->s[t->top]; t->top--;return 1;}}//查找某牌照的车在停车场中的位置,若找到则返回其位置,否则返回-1int Find(Seqstack t,int x){int i;for(i=0;iv=t.top;i++){ if(t.bianhao[i]!=x) continue;elsebreak;}if(i>t.top)return(-1);elsereturn(i);}//判断停车场内是否已满int lsSeqstackFull(Seqstack t){if(t.top==M-1)return 1;elsereturn 0;}//判断停车场内是否已没有车辆int lsSeqstackEmpty(Seqstack t) {if(t.top==-1)return 1;elsereturn 0;}//依次显示停车场内停放的所有车辆void ShowSeqstack(Seqstack t) {int i;if(t.top==-1)coutvv"停车场内没有停放车辆"vvendl;elsefor(i=0;i<=t.top;i++)coutvv"牌照:"vvt.bianhao[i]vvendl;}//队列初始化int Initbiandao(biandao *Q){Q->front=new node;if(Q-> front!=NULL){Q->rear=Q->fr ont;Q->front->next=NULL;Q->count=0;return(true);}else return(false);}//入队操作,即当停车场满了的时候,再到达的车辆进去便道队列int Enterbiandao(biandao *Q,int x) {node *NewNode; NewNode=new node; if(NewNode!=NULL) {NewNode->bianhao=x; NewNode->next=NULL;Q->rear->next=NewNode; Q->rear=NewNode;Q->co un t++;return(true);}else return(false);}//出队操作,即便道上的车辆从便道开出来int Deletebiandao(biandao *Q,int *x){node *p;if(Q->fro nt==Q->rear)return(false);p=Q->front->next;Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->fr ont;*x=p->bianhao;free(p);Q->count--;return(true);}//判断便道队列是否为空int lsbiandaoEmpty(biandao Q){if(Q.front==Q.rear) return(true);elsereturn(false);// 当count=0时,就空了}//依次显示便道上停放的所有车辆void Showbiandao(biandao Q)node *p;p=Q.front->next;if(p==NULL)coutvv"便道上没有停放车辆!"vvendl;elsewhile(p!=NULL){coutvv" 牌照:"vvp->bianhaovvendl; p=p->n ext;}}36//计算停留时间差double Time(int h1,int m1,int s1,int h2,int m2,int s2) {double p,q;p=h1*3600+m1*60+s1 -(h2*3600+m2*60+s2); q=(double)p/3600;return(q);}//计算停车费用double Cost(double t,int u){return(t*u);}//主函数void main(){double time,cost;int ch;int x,*y, z;int i,flag=1,h,m,s,unit_price,hh,mm,ss;y=new int; Seqstack *t;// 定义停车栈t=new Seqstack;InitSeqstack(t);biandao *Q;// 定义便道队列Q=new biandao;Initbiandao(Q); Seqstack *r; //定义让路 栈r=new Seqstack;InitSeqstack(r);coutvv"请设置停车费用单价:(_元/小时)"vvendl; cin>>unit_price;while(flag){ 束"vvendl;cin>>ch;switch(ch) {case 1:coutvv" 请输入到达的汽车牌照号码:"vvendl; cin>>x;if(lsSeqstackFull(*t)){coutvv" 停车场已满,请在便道等候 !"vvendl; "vvendlvv"2: 离开"vvendlvv"3:依次显示停车场内停放车H***************************" coutvv" 请选 择命令:"vvendlvv"1:辆"vvendlvv"4:依次显示便道上停放车辆 "<<endlvv"5: 结 coutvv vvendl;coutvv H***************************" vvendl;Enterbiandao(Q,x);coutvv" 将此车停放在便道的"vvQ->countvv" 号位置!"vvendl;}else{while(1){coutvv" 请输入到达的时间(例如,21 08 23) : "vvendl;cin>>h>>m>>s;if (hv0 || h>23) continue; //输入数据不合法,回去重新输入if (mv0 || m>59) continue;if (s>-1 && sv61)break;//输入时间全部合法,退出循环}Push(t,x,h,m,s);coutvv" 将此车停放在停车场的"vvt->top+1vv" 号停车位置"vvendl;}break;case 2:if(lsSeqstackEmpty(*t))coutvv" 停车场内已没有车辆"vvendl;else{coutvv" 请输入要离开的汽车的车牌照号码:"vvendl;cin>>x;if(Find(*t,x)==-1)coutvv" 停车场内没有该汽车!"vvendl;else//有该号码的汽车{while⑴{coutvv" 请输入离开的时间(例如,2358 03) : "vvendl;cin>>h>>m>>s;if (h<0 || h>23) continue;//输入数据不合法,回去重新输入if (m<0 || m>59) continue;if (s>-1 && s<61)break; // 输入时间全部合法,退出循环}if(Find(*t,x)==t->top){Pop(t,y,&hh,&mm,& ss);//要离开的车辆正好是最后一辆进入停车场的车time=Time(h,m,s,hh,mm,ss);coutvv" 停留时间为:"vvtimevv"小时"vvendl; // 结账cost=Cost(time,unit_price);coutvv"应缴费用为:"vvcostvv" 元"vvendl;}else{for(i=(Find(*t,x)+1);iv=t->top;)〃该车不是最后一辆进入停车场的车,其它车要让路{Pop(t,y,&hh,&mm,& ss);Push(r,*y,hh,mm,ss); //进入让路栈rPop(t,y,&hh,&mm, &ss);//要离开的车辆离开了time=Time(h,m,s,hh,mm,ss);coutvv" 停留时间为:时"vvendl; // 结账cost=Cost(time,unit_price);coutvv"应缴费用为: "vvendl;for(i=0;iv=r->top;) // 让路的车辆重新回到停车场{Pop(r,y,&hh,&mm, &ss); Push(t,*y,hh,mm,ss); }}if(!lsbiandaoEmpty(*Q)){Deletebiandao(Q, &z);//便道上的第一辆车出队Push(t, z, h,m,s);//进入停车场,默认进入的时刻就是刚才的车离开的时刻}elsecoutvv"便道上没有车辆等候!"vvendl;}}break;"vvtimevv"小 "vvcostvv"元case 3:ShowSeqstack(*t); break;case 4:Showbiandao(*Q); break;case 5:flag=O;break;default:cout<<"错误命令!"vvendl;}}}。

停车场管理系统代码

停车场管理系统代码

// 1、停车场管理.cpp : Defines the entry point for the console application. //^include stdafx.h*'^include vcon 1o.h>^include <malloc・h>^include <stdio.h>^include <stdlib.h>^include <windows. h>//清空当前屏幕#define ClearScreen() system( 'cls M )〃设置背景前景颜色//#define setcolor() system(u color 2f )//显不字符串szPrompt并等待用户按下任意键#define Pause( szPrompt) printf( %s: szPrompt ),getch()typedef struct carinformation // 车辆信息{char szRegistrationMark[64]; // 车牌号char szArrivalTime[16]; // 到达时间char szEntranceT1me[16]; //进入停车场(开始计费)时间char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORAAATION;typedef struct carstack{LPTCARINFORMATION IpCarlnformation; // 车辆信息int nTop; //栈顶元素下标int nStackSize; // 栈容量} TCARSTACK, *LPTCARSTACK;//初始化栈IpCarStack,将其容量设置为nSizevoid ln1tStack( LPTCARSTACK ftlpCarStack, int nSize ){IpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ));lpCarStack->lpCarlnformation = ( LPTCARINFORMATION ) malloc( nSize * sizeof ( TCARINFORAAATION ));lpCarStack->nTop = -1;lpCarStack->nStackSize = n Size;}// 车辆信息carinfo 入栈IpCarStackvoid Push( LPTCARSTACK ftlpCarStack, TCARINFORAAATION carinfo ){IpCarStack-Top++;lpCarStack->lpCarl nformation [lpCarStack->nTop] = carinfo;}//车辆信息从栈IpCarStack中弹出并存入carinfovoid Pop( LPTCARSTACK ftlpCarStack, TCARINFORMATION &carinfo ) {carinfo = lpCarStack->lpCarlnformation[lpCarStack-> nTop];IpCarStack->nTop・・;}//若栈IpCarstack空,返回TRUE;否贝!J,返回FALSEBOOL IsStackEmptyf LPTCARSTACK IpCarStack ){return IpCarStackjnTop == -1;}//若栈IpStackFull满,返回TRUE;否则,返回FALSEBOOL IsStackFulK LPTCARSTACK IpCarStack ) return lpCarStack->nTop == ( lpCarStack->nStackSize • 1 );}// 销毁栈IpCarStack,将指针IpCarStack 置为NULLvoid DestroyStack( LPTCARSTACK &IpCarStack ){free( lpCarStack->lpCarlnformation );free( IpCarStack );IpCarStack = NULL;}typedef struct carnode // 链队结点信息{TCARINFORMATION carinfo; // 车辆信息struct carnode *lpNext; //指向下一个元素的指针} TCARNODE, *LPTCARNODE;typedef struct carqueue // ¥连队{LPTCARNODE IpHead; // 头结点LPTCARNODE IpRear; //指向当前队尾的指针int nEffectivesize; //当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;//初始化链队IpCarQueuevoid lnitQueue( LPTCARQUEUE ftlpCarQueue ){IpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE )); lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ));lpCarQueue->lpHead->lpNext = NULL;lpCarQueue->lpRear = lpCarQueue->lpHead;IpCarQueue-EffectiveSize = 0;}// 车辆信息carinfo 入队IpCarQueuevoid EnQueue( LPTCARQUEUE ftlpCarQueue, TCARINFORMATION carinfo ) {LPTCARNODE IpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode )); lpCarNode->car1nfo = cari nfo;lpCarNode->lpNext = NULL;lpCarQueue->lpRear->lpNext = IpCarNode;lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext;IpCarQueue->n EffectiveSize++;}//队头元素从链队IpCarQueue中出队并存入carinfovoid DeQueue( LPTCARQUEUE ftlpCarQueue, TCARINFORMATION ftcarinfo ) { LPTCARNODE IpTemp = lpCarQueue->lpHead->lpNext;carinfo = IpTemp ・>cari nfo;lpCarQueue->lpHead->lpNext = IpTemp ・> IpNext;free( IpTemp );IpCarQueue->n EffectiveSize-;}//若链队IpCarQueue为空,返回TRUE;否则,返回FALSEBOOL lsQueueEmpty( LPTCARQUEUE IpCarQueue ){return LpCarQueue->nEffect1veSize == 0;}//销毁链队IpCarQueuevoid DestroyQueue( LPTCARQUEUE EtlpCarQueue )LPTCARNODE IpNextCarNode = NULL;for ( LPTCARNODE IpCarNode = lpCarQueue->lpHead; IpCarNode != NULL; IpCarNode = IpNextCarNode ){IpNextCarNode = lpCarNode->lpNext;free( IpCarNode );}free( IpCarQueue );IpCarQueue = NULL;}//将字符串时间格式转换为数字(分钟)格式,例如12:36将被转换为756 (12 * 60 + 36)int ConvertTimeFormat( char *lpTime ){Int nHour = 0;int nMinute = 0;sscanf( IpTime, “%d:%d; 8tnHour, SnMinute );return nHour * 60 + nMinute;}//根据在停车场内的停留时间nContinuanceMinutes (分钟)计算费用double CalculateExpense( int nContinuanceMinutes ){return nContinuanceMinutes * ( 5.0 / 60 );}int main( void ){// setcolor();Int nParkCapability = 0; // 停车场容量putchar( \n*);PHns)jscanf(・•衣d jppnparkcapabujry「LPTCARSTACK -pear-stack"NULL"二®世曲生需更蹦-njrsrack 二pcarsrack 》nparkcmpmbsrty)八LPTCARQUEUE 【Pear-Queue =NULL"、二冊®曲爲兰赫更-njrQueue(-pcarQueue)jcharcCommandTypeHNULLj二劭3淋起 charSzuser-npuru28jH宀NULLY二a l}^> do宀Qearscreenoj二 seccoor(rpurchar(An ・rI .... );I -n -)j1 ->・-W 養区);purs(d ・W S B J F)jI H ・)」1-0・)」pucchar( -\n ・)一purs(=0辽)j P U £・A S§A 3926N 3W 3・・rPUS ・・9SPA3926二 444・・);puts(ni・);puts( © );putchar( \rf );printf(“请输入命令:“);seanf( “%s", szllserlnput);puts(H ................. “);char szCarlnformation[128] = { NULL};sscanff szllserlnput, //将命令类型与车辆信息分开存放”%c,%s“,&cCommandType, //用户输入的前半部分,即命令类型szCarlnformation //用户输入的后半部分,即车辆信息);char *LpCommaLocation = NULL; //车辆信息字符串中的逗号位置for ( IpCommaLocation = szCarlnformation; *lpCommaLocation != *\0'; lpCommaLocation++ ){if (*lpCommaLocation ==){break;}}*lpCommaLocati on = \0';TCARINFORMATION carinfo = { NULL }; //存储本次用户输入的车辆信息strcpy( carinfo.szRegistrationMark, szCarlnformation );if ( cCommandType == A )strcpy( carinfo.szArrivalTime, IpCommaLocation + 1 );if ( FALSE == lsStackFull( IpCarStack )){strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime ); Push( IpCarStack, carinfo );printf(“已进入停车场第%d个车位\n“,lpCarStack->nTop + 1);printf("车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf("进入时间:\t%s\n", carinfo.szEntranceTime ); puts(“是否收费:\t是“);}else{EnQueue( IpCarQueue, carinfo );printf(“停车场已满,已停放在便道的第%d个车位\n“,lpCarQueue->nEffectiveS1ze);printf("车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf("停放时间:\t%s\n", carinfo.szArrivalTime );puts( ••是否收费:\t否”);}}else if ( cCommandType == 'D')strcpy( carinfo.szDepartureTime, IpCommaLocation + 1 );LPTCARSTACK IpTempCarStack = NULL;lnitStack( IpTempCarStack, nParkCapability );TCARINFORMATION carinfoOut = { NULL };BOOL blsCarFound = FALSE;while ( FALSE == lsStackEmpty( IpCarStack )){Pop( IpCarStack, carinfoOut);if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark )) {Push( IpTempCarStack, carinfoOut);}else{blsCarFound = TRUE;break;}}while ( FALSE == IsStackEmptyf IpTempCarStack )){TCARINFORAAATION tempcarinfo = { NULL };Pop( IpTempCarStack, tempcarinfo );Push( IpCarStack, tempcarinfo );} if ( FALSE == blsCarFound ) printf(1车牌号为%s 的车未进入停车场・\n;carinfo.szRegistrationMark );Pause(M.................... \n按任意键输入下 V信息…\n“);continue;strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime );int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime ); Int nDepartureTIme = ConvertTimeFormat( carinfoOut.szDepartureTime ); int nContinuanceMinutes = nDepartureTime • nEntranceTime;printf("计费时段:\t%s - %s (共%d 分钟)\n",carinfoOut.szE ntran ceTime,carinfoOut.szDepartureTime, nContinu anceMinutes);double rExpense = CalculateExpense( nContinuanceMinutes );printf("应交纳的费用:\t%.1 If 7E\n", rExpense );if ( FALSE == lsQueueEmpty( IpCarQueue )){TCARINFORAAATION tempcarinfo = { NULL };DeQueue( IpCarQueue, tempcarinfo );strcpy( tempcarinfo.szEntranceTim® carinfoOut.szDepartureTime ); Push( IpCarStack, tempcarinfo );puts(" .................... ”);printf(“停放在便道的第1个车位,车牌号为%s的车已进入停车场\n“,tempcarinfo. szRegistrati on Markelse if ( cCommandType == E )puts( "********************"puts(H :吴远彦\n M);puts「学号:\n u);Uts( M********************" )•break;else if ( cCommandType == 0*){ClearScree n();//setcolor();putchar( *\n );puts( “[停车场使用情况]\n“);puts( •[车位]\t[车牌号]\t倒达时间]\t[进入(开始计费)时间]\n“); for (in t i = 0; i <= IpCarStack-Top; i++ ){printf( M%d\t%s\t\t%s\t\t%s\n\i + 1,IpCarStack- > IpCar I nformati on [i]・ szRegistratio nAAark, lpCarStack->lpCarlnformat1 on [i].szArrivalTime,lpCarStack->lpCarlnformation[i].szE ntranceTime);}putchar( \n );putchar( \n );putchar( \n );puts( •■[便道使用情况]\n“);puts( •[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n“); int nNum = 0;for ( LPTCARNODE IpCarNode = lpCarQueue->lpHead->lpNext; IpCarNode != NULL; IpCarNode = lpCarNode->lpNext ){n Num++;printf( ,,%d\t%s\t\t%s\t\t%s\n\n Num,lpCarNode->carinfo.szRegistratio nMark,lpCarNode->carinfo.szArrivalTime,lpCarNode->carinfo.szEntra nceTime);}putchar( \n );}else{puts(“输入信息有误.第f 字符只能为'A'或D或E或0'(区分大宵) }Pause(”.................... \n按任意键输入下一息.\n“);} while ( TRUE );DestroyStack( IpCarStack );DestroyQueue( IpCarQueue );Pause( “\n按任意键退出程序...\n“);return 0;。

停车场管理系统代码(C )

停车场管理系统代码(C  )
strcpy(parking.STOP[parking.top].license_plate, license_plate); cout<<" 牌 照 为 "<<license_plate<<" 的 车 暂 时 退 出 停 车 场 "<<parking.top+1<<"号位"<<endl; StackPush(tmpparking,license_plate); //停车场中的车暂时退出进入临时停 车场
char license_plate[MAX_PLATE];//汽车牌照号码,定义为一个字符指针类型 char state; //汽车当前状态,字符 p 表示停放在停车位上,字符 s 表示停放在便道上, 每辆车的初始状态用字符 i 来进行表示 }CAR;
//定义模拟停车场的栈结构 typedef struct {
StackTop(tmpparking, license_plate);
StackPush(parking, license_plate); cout<<"牌照为"<<license_plate<<"的车进入停车场"<<parking.top+1<<"号 位"<<endl; license_plate[0]='\0'; StackPop(tmpparking); if(parking.top+1==MAX_STOP-1)//判断车离开前停车场是否停满
InitList(sidewalk);
//运行界面及功能选择
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 1、停车场管理.cpp : Defines the entry point for the console application. //^include stdafx.h*'^include vcon 1o.h>^include <malloc・h>^include <stdio.h>^include <stdlib.h>^include <windows. h>//清空当前屏幕#define ClearScreen() system( 'cls M )〃设置背景前景颜色//#define setcolor() system(u color 2f )//显不字符串szPrompt并等待用户按下任意键#define Pause( szPrompt) printf( %s: szPrompt ),getch()typedef struct carinformation // 车辆信息{char szRegistrationMark[64]; // 车牌号char szArrivalTime[16]; // 到达时间char szEntranceT1me[16]; //进入停车场(开始计费)时间char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORAAATION;typedef struct carstack{LPTCARINFORMATION IpCarlnformation; // 车辆信息int nTop; //栈顶元素下标int nStackSize; // 栈容量} TCARSTACK, *LPTCARSTACK;//初始化栈IpCarStack,将其容量设置为nSizevoid ln1tStack( LPTCARSTACK ftlpCarStack, int nSize ){IpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ));lpCarStack->lpCarlnformation = ( LPTCARINFORMATION ) malloc( nSize * sizeof ( TCARINFORAAATION ));lpCarStack->nTop = -1;lpCarStack->nStackSize = n Size;}// 车辆信息carinfo 入栈IpCarStackvoid Push( LPTCARSTACK ftlpCarStack, TCARINFORAAATION carinfo ){IpCarStack-Top++;lpCarStack->lpCarl nformation [lpCarStack->nTop] = carinfo;}//车辆信息从栈IpCarStack中弹出并存入carinfovoid Pop( LPTCARSTACK ftlpCarStack, TCARINFORMATION &carinfo ) {carinfo = lpCarStack->lpCarlnformation[lpCarStack-> nTop];IpCarStack->nTop・・;}//若栈IpCarstack空,返回TRUE;否贝!J,返回FALSEBOOL IsStackEmptyf LPTCARSTACK IpCarStack ){return IpCarStackjnTop == -1;}//若栈IpStackFull满,返回TRUE;否则,返回FALSEBOOL IsStackFulK LPTCARSTACK IpCarStack ) return lpCarStack->nTop == ( lpCarStack->nStackSize • 1 );}// 销毁栈IpCarStack,将指针IpCarStack 置为NULLvoid DestroyStack( LPTCARSTACK &IpCarStack ){free( lpCarStack->lpCarlnformation );free( IpCarStack );IpCarStack = NULL;}typedef struct carnode // 链队结点信息{TCARINFORMATION carinfo; // 车辆信息struct carnode *lpNext; //指向下一个元素的指针} TCARNODE, *LPTCARNODE;typedef struct carqueue // ¥连队{LPTCARNODE IpHead; // 头结点LPTCARNODE IpRear; //指向当前队尾的指针int nEffectivesize; //当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;//初始化链队IpCarQueuevoid lnitQueue( LPTCARQUEUE ftlpCarQueue ){IpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE )); lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ));lpCarQueue->lpHead->lpNext = NULL;lpCarQueue->lpRear = lpCarQueue->lpHead;IpCarQueue-EffectiveSize = 0;}// 车辆信息carinfo 入队IpCarQueuevoid EnQueue( LPTCARQUEUE ftlpCarQueue, TCARINFORMATION carinfo ) {LPTCARNODE IpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode )); lpCarNode->car1nfo = cari nfo;lpCarNode->lpNext = NULL;lpCarQueue->lpRear->lpNext = IpCarNode;lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext;IpCarQueue->n EffectiveSize++;}//队头元素从链队IpCarQueue中出队并存入carinfovoid DeQueue( LPTCARQUEUE ftlpCarQueue, TCARINFORMATION ftcarinfo ) { LPTCARNODE IpTemp = lpCarQueue->lpHead->lpNext;carinfo = IpTemp ・>cari nfo;lpCarQueue->lpHead->lpNext = IpTemp ・> IpNext;free( IpTemp );IpCarQueue->n EffectiveSize-;}//若链队IpCarQueue为空,返回TRUE;否则,返回FALSEBOOL lsQueueEmpty( LPTCARQUEUE IpCarQueue ){return LpCarQueue->nEffect1veSize == 0;}//销毁链队IpCarQueuevoid DestroyQueue( LPTCARQUEUE EtlpCarQueue )LPTCARNODE IpNextCarNode = NULL;for ( LPTCARNODE IpCarNode = lpCarQueue->lpHead; IpCarNode != NULL; IpCarNode = IpNextCarNode ){IpNextCarNode = lpCarNode->lpNext;free( IpCarNode );}free( IpCarQueue );IpCarQueue = NULL;}//将字符串时间格式转换为数字(分钟)格式,例如12:36将被转换为756 (12 * 60 + 36)int ConvertTimeFormat( char *lpTime ){Int nHour = 0;int nMinute = 0;sscanf( IpTime, “%d:%d; 8tnHour, SnMinute );return nHour * 60 + nMinute;}//根据在停车场内的停留时间nContinuanceMinutes (分钟)计算费用double CalculateExpense( int nContinuanceMinutes ){return nContinuanceMinutes * ( 5.0 / 60 );}int main( void ){// setcolor();Int nParkCapability = 0; // 停车场容量putchar( \n*);PHns)jscanf(・•衣d jppnparkcapabujry「LPTCARSTACK -pear-stack"NULL"二®世曲生需更蹦-njrsrack 二pcarsrack 》nparkcmpmbsrty)八LPTCARQUEUE 【Pear-Queue =NULL"、二冊®曲爲兰赫更-njrQueue(-pcarQueue)jcharcCommandTypeHNULLj二劭3淋起 charSzuser-npuru28jH宀NULLY二a l}^> do宀Qearscreenoj二 seccoor(rpurchar(An ・rI .... );I -n -)j1 ->・-W 養区);purs(d ・W S B J F)jI H ・)」1-0・)」pucchar( -\n ・)一purs(=0辽)j P U £・A S§A 3926N 3W 3・・rPUS ・・9SPA3926二 444・・);puts(ni・);puts( © );putchar( \rf );printf(“请输入命令:“);seanf( “%s", szllserlnput);puts(H ................. “);char szCarlnformation[128] = { NULL};sscanff szllserlnput, //将命令类型与车辆信息分开存放”%c,%s“,&cCommandType, //用户输入的前半部分,即命令类型szCarlnformation //用户输入的后半部分,即车辆信息);char *LpCommaLocation = NULL; //车辆信息字符串中的逗号位置for ( IpCommaLocation = szCarlnformation; *lpCommaLocation != *\0'; lpCommaLocation++ ){if (*lpCommaLocation ==){break;}}*lpCommaLocati on = \0';TCARINFORMATION carinfo = { NULL }; //存储本次用户输入的车辆信息strcpy( carinfo.szRegistrationMark, szCarlnformation );if ( cCommandType == A )strcpy( carinfo.szArrivalTime, IpCommaLocation + 1 );if ( FALSE == lsStackFull( IpCarStack )){strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime ); Push( IpCarStack, carinfo );printf(“已进入停车场第%d个车位\n“,lpCarStack->nTop + 1);printf("车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf("进入时间:\t%s\n", carinfo.szEntranceTime ); puts(“是否收费:\t是“);}else{EnQueue( IpCarQueue, carinfo );printf(“停车场已满,已停放在便道的第%d个车位\n“,lpCarQueue->nEffectiveS1ze);printf("车牌号:\t\t%s\n", carinfo.szRegistrationMark ); printf("停放时间:\t%s\n", carinfo.szArrivalTime );puts( ••是否收费:\t否”);}}else if ( cCommandType == 'D')strcpy( carinfo.szDepartureTime, IpCommaLocation + 1 );LPTCARSTACK IpTempCarStack = NULL;lnitStack( IpTempCarStack, nParkCapability );TCARINFORMATION carinfoOut = { NULL };BOOL blsCarFound = FALSE;while ( FALSE == lsStackEmpty( IpCarStack )){Pop( IpCarStack, carinfoOut);if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark )) {Push( IpTempCarStack, carinfoOut);}else{blsCarFound = TRUE;break;}}while ( FALSE == IsStackEmptyf IpTempCarStack )){TCARINFORAAATION tempcarinfo = { NULL };Pop( IpTempCarStack, tempcarinfo );Push( IpCarStack, tempcarinfo );} if ( FALSE == blsCarFound ) printf(1车牌号为%s 的车未进入停车场・\n;carinfo.szRegistrationMark );Pause(M.................... \n按任意键输入下 V信息…\n“);continue;strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime );int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime ); Int nDepartureTIme = ConvertTimeFormat( carinfoOut.szDepartureTime ); int nContinuanceMinutes = nDepartureTime • nEntranceTime;printf("计费时段:\t%s - %s (共%d 分钟)\n",carinfoOut.szE ntran ceTime,carinfoOut.szDepartureTime, nContinu anceMinutes);double rExpense = CalculateExpense( nContinuanceMinutes );printf("应交纳的费用:\t%.1 If 7E\n", rExpense );if ( FALSE == lsQueueEmpty( IpCarQueue )){TCARINFORAAATION tempcarinfo = { NULL };DeQueue( IpCarQueue, tempcarinfo );strcpy( tempcarinfo.szEntranceTim® carinfoOut.szDepartureTime ); Push( IpCarStack, tempcarinfo );puts(" .................... ”);printf(“停放在便道的第1个车位,车牌号为%s的车已进入停车场\n“,tempcarinfo. szRegistrati on Markelse if ( cCommandType == E )puts( "********************"puts(H :吴远彦\n M);puts「学号:\n u);Uts( M********************" )•break;else if ( cCommandType == 0*){ClearScree n();//setcolor();putchar( *\n );puts( “[停车场使用情况]\n“);puts( •[车位]\t[车牌号]\t倒达时间]\t[进入(开始计费)时间]\n“); for (in t i = 0; i <= IpCarStack-Top; i++ ){printf( M%d\t%s\t\t%s\t\t%s\n\i + 1,IpCarStack- > IpCar I nformati on [i]・ szRegistratio nAAark, lpCarStack->lpCarlnformat1 on [i].szArrivalTime,lpCarStack->lpCarlnformation[i].szE ntranceTime);}putchar( \n );putchar( \n );putchar( \n );puts( •■[便道使用情况]\n“);puts( •[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n“); int nNum = 0;for ( LPTCARNODE IpCarNode = lpCarQueue->lpHead->lpNext; IpCarNode != NULL; IpCarNode = lpCarNode->lpNext ){n Num++;printf( ,,%d\t%s\t\t%s\t\t%s\n\n Num,lpCarNode->carinfo.szRegistratio nMark,lpCarNode->carinfo.szArrivalTime,lpCarNode->carinfo.szEntra nceTime);}putchar( \n );}else{puts(“输入信息有误.第f 字符只能为'A'或D或E或0'(区分大宵) }Pause(”.................... \n按任意键输入下一息.\n“);} while ( TRUE );DestroyStack( IpCarStack );DestroyQueue( IpCarQueue );Pause( “\n按任意键退出程序...\n“);return 0;。

相关文档
最新文档