问题描述:

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

由题得,此系统要实现的功能为:

(1)设计停车场内的结构。(由题分析为一个栈,因为只有一个门所以其就像数据结构中学到的栈,但是因为既要出栈又要入栈,此处我就将这个栈简化为了一个链表)

(2)当车库满时,在车库外等待的结构。(就像排队一样,先来先进后来后进,只能从一端进,另一端出)。

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

算法描述:

1 刚开始定义结构类型,如车的类型,车库里的类型,车库外等待的类型。

2声明所要用到的函数:

     void 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   一些可能不理解的说明的说明。

(1). 获取时间的函数,写头文件 #include <time.h>,定义一个 time_t类型的变量starttime,starttime=time(NULL);就是获取1970年1月1日到当前的秒数,定义一个字符数组 tmp2[100],strftime(tmp2,sizeof(tmp2),"%Y-%m-%d  %H:%M:%S",localtime(&q->a.starttime));用这一句就能把当前时间的年月日时分秒存进字符数组中,puts(tmp2),就得到了当前的时间。

(2). 代码中用到了Sleep函数,这个函数的功能为延时,要用到一个头文件,#include <time.h>,此函数是与(3)中的配合使用。

(3).(2)中提到的就是system("cls"),他的作用就是清屏,(2)的作用就是把结果让用户看到。故两者配合,就能得到奇效。

程序代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define MAXSIZE 1024
static int maxsize;
typedef char ElemType;
typedef struct
{char  num[10];//车牌time_t starttime,endtime;//进入推出时间
}car;   //车
typedef struct Stack
{int top;car a;struct Stack *next;}Stack;
typedef struct
{char a[10];
}dat;
typedef struct
{//队列结构定义dat      data[MAXSIZE];int      front;int      rear;}SequenQueue;
void 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();//建链表
void tingche(Stack *cheku,SequenQueue* paidui);
int fullstack(Stack *cheku);
void likai(Stack *cheku,SequenQueue* paidui);
void chakan(Stack *cheku,SequenQueue* paidui);int main()
{Stack *cheku=build();SequenQueue* paidui=InitQueue();printf("请输入车库最大容量:");scanf("%d",&maxsize); system("cls");menu(cheku,paidui);return 0;
}
void menu(Stack *cheku,SequenQueue* paidui)
{printf("**********        欢迎来停车 !        **********\n");printf("**********        请选择一项          **********\n");printf("**********         1 : park.          **********\n");printf("**********         2 : leave.         **********\n");printf("**********         3 : view.          **********\n");printf("**********         4 : exit.          **********\n");int option;scanf("%d",&option);system("cls");switch(option){case 1:{tingche(cheku,paidui);menu(cheku,paidui);break;}case 2:{likai(cheku,paidui);menu(cheku,paidui);break;}case 3:{chakan(cheku, paidui);menu(cheku,paidui);break;}case 4:{printf("**********     欢迎再次使用,谢谢!   **********\n");break;}default:{printf("**********      请输入正确的指令!    **********\n");Sleep(1000);menu(cheku,paidui);system("cls");break;}}
}
int fullstack(Stack *cheku)
{if(cheku->top<maxsize-1)return 1;elsereturn 0;
}
SequenQueue* InitQueue()
{SequenQueue* Q = NULL;Q = (SequenQueue*)malloc(sizeof(SequenQueue));Q->front = Q->rear = 0;return Q;
}
int DeQueue(SequenQueue* Q, ElemType *e)
{if(EmptyQueue(Q))return FALSE;else{strcpy(e,Q->data[Q->front].a);Q->front=(Q->front+1)%MAXSIZE;return TRUE;}
}
int EnQueue(SequenQueue* Q, ElemType *e)
{if(FullQueue(Q)){printf("等待的车辆太多,请下次再来");return FALSE;}strcpy(Q->data[Q->front].a,e);Q->rear = (Q->rear+1)%MAXSIZE;return TRUE;
}
int FullQueue(SequenQueue* Q)
{if((Q->rear+1)%MAXSIZE==Q->front){return TRUE;}else{return FALSE;}
}
int EmptyQueue(SequenQueue* Q)
{if(Q->front == Q->rear)return TRUE;elsereturn FALSE;
}
Stack* build(Stack *cheku,SequenQueue* paidui)
{Stack* a;a=(Stack*)malloc(sizeof(Stack));a->top=-1;return a;
}
void tingche(Stack *cheku,SequenQueue* paidui)
{Stack *p;p=(Stack *)malloc(sizeof(Stack));printf("请输入车牌号\n");fflush(stdin);gets(p->a.num);if(fullstack(cheku)){p->next=cheku->next;cheku->next=p;p->a.starttime=time(NULL);cheku->top++;printf("停车成功\n");Sleep(1000);system("cls");}else{printf("车库已满请在门口等待\n");EnQueue(paidui,p->a.num);Sleep(1000);system("cls");}
}
void likai(Stack *cheku,SequenQueue* paidui)
{char m[10];Stack *p,*q;char e[10];int n=0;p=cheku;if(cheku->top==-1){printf("车库为空\n");Sleep(1000);system("cls"); }else{printf("请输入离开的车牌:\n");fflush(stdin);gets(m);while(p->next!='\0'){ double money; if(strcmp(p->next->a.num,m)==0){q=p->next;p->next=q->next;q->a.endtime=time(NULL);money=(q->a.endtime-q->a.starttime)*0.00139;char tmp1[100],tmp2[100];strftime(tmp1,sizeof(tmp1),"%Y-%m-%d  %H:%M:%S",localtime(&q->a.endtime));strftime(tmp2,sizeof(tmp2),"%Y-%m-%d  %H:%M:%S",localtime(&q->a.starttime));printf("停车时间:%s\n",tmp2);printf("离开时间:%s\n",tmp1);printf("共停%ds\n",q->a.endtime-q->a.starttime); printf("收费%.5lf元(一小时五元)\n",money); Sleep(3000);free(q);system("cls");cheku->top--;n++;if(EmptyQueue(paidui)==0){DeQueue(paidui,e);Stack *d=(Stack *)malloc(sizeof(Stack));strcpy(d->a.num,e);d->a.starttime=time(NULL);d->next=cheku->next;cheku->next=d;cheku->top++;printf("已将等待的第一辆车进入停车场");Sleep(1000);system("cls"); } break;}p=p->next;}if(n==0){printf("未找到该车辆信息请重试");Sleep(1000);system("cls");}
}
}
void chakan(Stack *cheku,SequenQueue* paidui)
{if(cheku->top==maxsize-1){printf("车库已满,共有%d的车辆在等候",(paidui->rear-paidui->front+MAXSIZE)%MAXSIZE);Sleep(1000);system("cls");}else{printf("车库还有%d个空位",maxsize-cheku->top-1);Sleep(1000);system("cls");}
}

代码可能不是最佳,如有错误,敬请指正。

c语言实现的停车场管理系统相关推荐

  1. 停车场管理系统程序设计c语言,C语言综合程序设计停车场管理系统

    C语言综合程序设计停车场管理系统 综合性程序设计报告设计题目:____停车场管理系统___________指导教师: _______________班 级: _____________学 号: ___ ...

  2. 停车场系统管理c语言程序代码,停车场管理系统程序源代码

    一个简单的停车场管理系统c语言代码 #include #include #define N 30 /*停车场类最多的停车数*/ #define M 20 /*便道内最多的停车数*/ #define p ...

  3. C语言数据结构练习——停车场管理系统(使用栈和队列)(草稿的草稿)

    (代码很乱,也没什么注释,调试信息也没删,真心不是给别人看的东西,等标题上的草稿两字没了再看也不迟.)(注:标题带有"草稿"两字的,质量普遍很低,亲们,就不要浪费时间在上面吧) 题 ...

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

    一. 题目要求 1.设计一个停车场用长度为N的堆栈(顺序随意,先进后出)来模拟.由于停车场内如有某辆车要开走 ,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入. 2. ...

  5. 用C语言写一个停车场管理系统代码

    #define _CRT_SECURE_NO_WARNINGS//visual stduio添加对scanf的信任 #include<stdio.h> #include <stdli ...

  6. c语言停车场管理系统源代码,C语言课程设计 停车场管理系统 源代码 原创 不得随意转载...

    大学生C语言课程设计的成果源代码 # include # include # include # include int k=0; /*牌照信息结构体*/ struct l { char pro[20 ...

  7. c语言课程设计报告停车系统,C语言课程设计 停车场管理系统

    #define NUL 0 #include #include #include #include struct time {int year; int mon; int day; int hour; ...

  8. C语言停车场管理系统

    C语言停车场管理系统 [问题描述] 某停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端最先到达的第一辆车停放在车 ...

  9. c语言课程设计报告停车系统,停车场管理系统C语言课程设计

    <停车场管理系统C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统C语言课程设计(27页珍藏版)>请在人人文库网上搜索. 1.计算机科学与技术系课程设计报告20 ...

最新文章

  1. 为什么 Linux 系统调用会消耗较多资源
  2. 【Android 高性能音频】Oboe 播放器开发 ( 为 OpenSL ES 配置参数以获得最佳延迟 | Oboe 音频流 | Oboe 音频设备 )
  3. 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试
  4. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析
  5. python房子代码_基于python的链家小区房价爬取——仅需60行代码!
  6. css3中的动画学习分享
  7. .Net操作Excel后彻底释放资源
  8. 课程管理系统 Moodle 初体验
  9. 0/0型极限等于多少_高数求极限的一些总结
  10. 《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——第2章 生产模式和计划策略 2.1 计划策略与需求类型总览...
  11. 支付宝支付接口的使用
  12. 如何升级php到最新版本_如何将PHP升级到最新版本
  13. 第七章 本源时空(补充)
  14. 关于icon的tabs-icons使用自定义png jpg图片
  15. oracle面试题答案,Oracle面试题笔试题及参考答案
  16. GBase数据库——常用命令
  17. python识图找图_【python 图像识别】图像识别从菜鸟
  18. codeforces 1177B
  19. 黑客精神 与 清心寡欲
  20. 【ART-PI】使用STM32H750的隐藏2MB ROM

热门文章

  1. 每天一个Linux命令(22):文件属性详解
  2. [Beego]三、Filter 过滤器
  3. Facebook、中国BAT均落选,高盛全球“漂亮50”有哪些潜力股?
  4. 人脸识别智能门禁革新社区安防新体验
  5. idea启动卡死的问题
  6. python中+=是什么意思,python中+=是什么意思
  7. 基于python面向对象多人聊天室
  8. [JSOI2013]快乐的 JYY
  9. 数列的定义如下: 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和
  10. PBR-Diffuse-Lighting-for-GGX