您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页停车场管理系统

停车场管理系统

来源:好走旅游网


/*停车场管理系统*/ #include #include #include #include #include

/*------------------------------------------------------------------------------*/ #define Max 10 int getn() {

int n;

printf(\"请输入停车场可容纳的车(最多10辆):\"); scanf(\"%d\ fflush(stdin); do{

if(n<1 || n>10) {

printf(\"输入的车辆数不在要求范围内,请重新输入!\"); scanf(\"%d\ fflush(stdin); }

else break; }

while(n<1 || n>10); return n; }

typedef struct time {

int hour; int min;

}Time; /*时间结点*/ typedef struct node {

char num[10]; Time reach; Time leave;

}CarNode; /*车辆信息结点*/ typedef struct NODE {

CarNode *stack[Max+1]; int top;

}SeqStackCar; /*模拟车站*/

typedef struct car {

CarNode *data; struct car *next; }QueueNode;

typedef struct Node {

QueueNode *head; QueueNode *rear;

}LinkQueueCar; /*模拟通道*/

void InitStack(SeqStackCar *,int n); /*声明栈*/ int InitQueue(LinkQueueCar *); /*声明便道*/

int Arrival(SeqStackCar *,LinkQueueCar *,int n); /*车辆进站*/

void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *,int n); /*车辆出站*/

void List(SeqStackCar,LinkQueueCar); /*显示存车信息*/ void InitStack(SeqStackCar *s,int n) /*初始化栈*/ {

int i; s->top=0;

for(i=0;i<=n;i++)

s->stack[s->top]=NULL; }

int InitQueue(LinkQueueCar *Q) /*初始化便道*/ {

Q->head=(QueueNode *)malloc(sizeof(QueueNode)); if(Q->head!=NULL) {

Q->head->next=NULL; Q->rear=Q->head; return(1); }

else return(-1); }

void PRINT(CarNode *p) /*打印出站车的信息*/ {

int A1,A2,B1,B2; int a,b,c;

printf(\"\\n请输入离开的时间(**:**):\");

scanf(\"%d:%d\ fflush(stdin); do{

if(p->leave.hourreach.hour || (p->leave.hour==p->reach.hour && p->leave.minreach.min))

{

printf(\"输入离开时间比进站时间早,请重新输入!\\n\"); scanf(\"%d:%d\ fflush(stdin); }

if(p->leave.hour<0 || p->leave.hour>=24 || p->leave.min<0 || p->leave.min>=60) {

printf(\"输入的时间格式有错,请重新输入!\");

scanf(\"%d:%d\ fflush(stdin); }

else break; }

while(p->leave.hourreach.hour || (p->leave.hour==p->reach.hour && p->leave.minreach.min) || p->leave.hour<0 || p->leave.hour>=24 || p->leave.min<0 || p->leave.min>=60);

printf(\"车场现在有一辆车离开,请便道里的第一辆车进入车场!\\n\"); printf(\"出站的车的车牌号为:\"); puts(p->num); printf(\"\\n\");

A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; a=(B1-A1)*60+B2-A2; if(a>=60) {

b=a/60; c=a-60*b; } else {

b=0; c=a; }

printf(\" 祝您一路顺风,欢迎您下次光临.\"); printf(\"\\n 收 据\\n\");

printf(\"==================================车牌号: \"); puts(p->num); printf(\"\\n\");

printf(\"====================================================\\n\"); printf(\"|进车场时刻 | 出车场时刻 | 停留时间 | 应付(元)|\\n\"); printf(\"====================================================\\n\");

printf(\"| %d:%d\ printf(\" | %d:%d\ printf(\" | %d:%d\ printf(\" | %2.1f\ printf(\" |\\n\");

printf(\"----------------------------------------------------\\n\"); free(p); }

int Arrival(SeqStackCar *Enter,LinkQueueCar *W,int n) /*车辆到达*/ {

CarNode *p; QueueNode *t; int a,b;

p=(CarNode *)malloc(sizeof(CarNode)); flushall();

printf(\"******************************车辆到达登记界面*******************************\\n\");

printf(\"\\n请输入车牌号(七位,例:皖A1234):\\n\");

printf(\"请严格按照要求输入车牌号,否则系统会出错!\\n\"); do{

a=strlen(\"陕A1234\"); b=strlen(gets(p->num)); fflush(stdin); if(a!=b) {

printf(\"输入车牌号格式错误,请重新输入(七位)!\\n\"); gets(p->num); fflush(stdin); }

else break; if(a!=b)

printf(\"输入车牌号格式错误,请重新输入(七位)!\\n\"); }

while(a!=b);

if(Enter->topEnter->top++;

printf(\"\\n车辆在车场第%d位置.\ fflush(stdin);

printf(\"\\n请输入到达时间(**:**):\");

scanf(\"%d:%d\ fflush(stdin); do{

if(p->reach.hour<0 || p->reach.hour>=24 || p->reach.min<0 ||

p->reach.min>=60) {

printf(\"输入的时间格式有错,请重新输入!\\n\"); scanf(\"%d:%d\ fflush(stdin); } else

break; }

while(p->reach.hour<0 || p->reach.hour>=24 || p->reach.min<0 || p->reach.min>=60);

Enter->stack[Enter->top]=p; return(1); }

else /*车场已满,车进便道*/ {

printf(\"\\n请该车在便道稍作等待!\");

t=(QueueNode *)malloc(sizeof(QueueNode)); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1); } }

void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W,int n) { /*车辆离开*/ int i, room; CarNode *p,*t; QueueNode *q;

/*判断车场内是否有车*/

if(Enter->top>0) /*有车*/ {

while(1) /*输入离开车辆的信息*/ {

printf(\"******************************车辆离开登记界面*******************************\\n\");

printf(\"\\n请输入要离开的车在车场的位置(1--%d):\

scanf(\"%d\ fflush(stdin);

if(room>=1&&room<=Enter->top) break; }

while(Enter->top>room) /*车辆离开*/

{

Temp->top++;

Temp->stack[Temp->top]=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; }

p=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--;

while(Temp->top>=1) {

Enter->top++;

Enter->stack[Enter->top]=Temp->stack[Temp->top]; Temp->stack[Temp->top]=NULL; Temp->top--; }

PRINT(p);

/*判断通道上是否有车及车站是否已满*/

if((W->head!=W->rear)&&Enter->topq=W->head->next; t=q->data; Enter->top++;

printf(\"\\n现在请便道上的车进入车场.该车的车牌号为:\"); puts(t->num);

printf(\"\\n该车进入车场第%d位置.\

printf(\"\\n请输入现在的时间(即该车进站的时间)(**:**):\"); scanf(\"%d:%d\ fflush(stdin); do{

if(t->reach.hour<0 || t->reach.hour>=24 || t->reach.min<0 || t->reach.min>=60) {

printf(\"输入的时间格式有错,请重新输入!\\n\");

scanf(\"%d:%d\ fflush(stdin); } else

break; }

while(t->reach.hour<0 || t->reach.hour>=24 || t->reach.min<0 || t->reach.min>=60);

W->head->next=q->next;

if(q==W->rear) W->rear=W->head;

Enter->stack[Enter->top]=t; free(q); }

else printf(\"\\n目前便道里没有车.\\n\"); } else printf(\"\\n目前车场里没有车,来车请直接进入车场!\\n\"); /*没车*/ }

void List1(SeqStackCar *S) /*列表显示车场存车信息*/ {

int i;

if(S->top>0) /*判断车站内是否有车*/ {

printf(\"\\n车场:\");

printf(\"\\n 位置 到达时间 车牌号\\n\"); for(i=1;i<=S->top;i++) {

printf(\" %d \ printf(\"%d:%d

\ puts(S->stack[i]->num); } }

else printf(\"\\n目前车场里没有车\"); }

void List2(LinkQueueCar *W) /*列表显示便道信息*/ {

QueueNode *p; p=W->head->next;

if(W->head!=W->rear) /*判断通道上是否有车*/ {

printf(\"\\n目前正在等待车辆的号码为:\"); while(p!=NULL) {

puts(p->data->num); p=p->next; printf(\"\\n\"); } }

else printf(\"\\n目前便道里没有车.\"); }

void List(SeqStackCar S,LinkQueueCar W) {

int flag,tag; flag=1;

while(flag) {

printf(\"\\n1.车场\\n2.便道\\n3.返回\\n\"); printf(\"\\n\"); while(1) {

printf(\"\\n请选择 1|2|3:\"); scanf(\"%d\ fflush(stdin); do{

if(tag<1||tag>3) {

printf(\"输入有误,请按要求重新输入!\\n\"); scanf(\"%d\ fflush(stdin); } else

break;

}while(tag>3 && tag<1); break; }

switch(tag) {

case 1:List1(&S);break; /*列表显示车场信息*/ case 2:List2(&W);break; /*列表显示便道信息*/ case 3:flag=0;break;/*返回*/ default: break; } } }

void time() {

time_t timep; time (&timep);

printf(\" 现在时刻:%s\}

void main() {

SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; int n;

printf(\"\\n\");

printf(\"******************************欢迎光临安大停车场

*******************************\\n\"); printf(\"\\n \\n\"); printf(\"\\n \\n\");

printf(\" 说明:\");

printf(\"本停车场管理实行24小时制,停车每分钟0.1元.\\n\"); printf(\"----------------------------------------\"); printf(\"---------------------------------------\\n\"); time();

printf(\"\\n\"); n=getn();

system(\"cls\");

InitStack(&Enter,n); /*初始化车场*/

InitStack(&Temp,n); /*初始化让路的临时栈*/ InitQueue(&Wait); /*初始化便道*/ while(1) {

printf(\"******************************欢迎光临安大停车场*******************************\\n\");

printf(\"\\n \\n\"); printf(\" 1. 车辆到达登记\\n\"); printf(\" 2. 车辆离开登记\\n\"); printf(\" 3. 车辆列表信息\\n\"); printf(\" 4. 退出系统登记\\n\"); printf(\"\\n\"); time();

printf(\"\\n 提示:请按回车键进行下一步操作\\n\");

printf(\"\\n \\n\");

printf(\"******************************欢迎光临安大停车场*******************************\\n\"); while(1) {

printf(\"请选择: 1|2|3|4.\\n\"); printf(\"请输入:\"); scanf(\"%d\ fflush(stdin); do{

if( ch<1 ||ch>4){

printf(\"输入有误,请重新输入!\\n\"); scanf(\"%d\ fflush(stdin); } else

break;

}while(ch<1 ||ch>4); break; }

system(\"cls\"); switch(ch) {

case 1: {

Arrival(&Enter,&Wait,n);system(\"cls\");break; }/*车辆进站*/ case 2: {

Leave(&Enter,&Temp,&Wait,n);break; }/*车辆出站*/ case 3: {

printf(\"******************************车辆列表信息界面*******************************\\n\");

List(Enter,Wait);system(\"cls\");break; } /*存车信息*/

case 4:exit(0); /*退出系统*/ default:break; } } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务