功能:1 车辆进出登记 2 出入记录 3 候车场 4 查看 停车场及候车场车辆信息及总数 5  查看停留时间最长的车辆 。。。

代码如下

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>#define SIZE   5
#define SUCCESS   10001
#define FAILURE   10002
#define TURE      10003
#define FAISE     10004
#define price       100//出入记录
struct record
{int num;long int time1;long int time2;float time;struct record *next;};typedef struct record srd;struct stack  //停车场
{//记录车牌号码//记录进场时间//记录出场时间int *num;long int *time1;long int *time2;int top;};typedef struct stack ssk;struct wait   //候车场
{//顺序队列int *num;long int *time1;int front;int rear;
};typedef struct wait ssw;struct exchange //换车场
{//换车用的int *num;long int *time1;long int *time2;int top;
};typedef struct exchange sse;int ret;
ssk *car;
ssw *wait;
ssk *exchange;
srd *record;
int x = 0;int initrecord(srd **r)
{(*r) = (srd *)malloc(sizeof(srd) * 1);if(NULL == (*r)){return FAILURE;}(*r)->next = NULL;return SUCCESS;}//给候车场进行初始化
int initwait(ssw ** w)
{//分配空间(*w) = (ssw *)malloc(sizeof(ssw));if(NULL == (*w)){return FAILURE;}(*w)->num = (int *)malloc(sizeof(int)*100);if(NULL == (*w)->num){return FAILURE;}(*w)->time1 = (long int *)malloc(sizeof(long int)*100);if(NULL == (*w)->time1){return FAILURE;}(*w)->front = (*w)->rear = 0;return SUCCESS;}//主界面
void welcome()
{printf("**************欢迎来到德莱联盟****************\n");printf("**********************************************\n");printf("*****************请选择功能*******************\n");printf("**********************************************\n");printf("*************1 录入进入停车场*****************\n");printf("**********************************************\n");printf("*************2 登记出车***********************\n");printf("**********************************************\n");printf("*************3 查看停车场信息*****************\n");printf("**********************************************\n");printf("*************4 查看候车场信息*****************\n");printf("**********************************************\n");printf("*************5 查看候车场一共有多少辆车*******\n");printf("**********************************************\n");printf("*************6 查看停留时间最长的车辆*********\n");printf("**********************************************\n");printf("*************7 查看出入记录*******************\n");printf("**********************************************\n");    printf("*************8 退出系统**********************\n");
}int initpark(ssk **s)//初始化
{//给s分配空间(*s) = (ssk *)malloc(sizeof(ssk) * 1);if(NULL == (*s)){return FAILURE;}(*s)->top = -1;//给num分配空间(*s)->num = (int *)malloc(sizeof(int) * SIZE);if((*s)->num == NULL){return FAILURE;}//给time1分配空间(*s)->time1 = (long int *)malloc(sizeof(long int) * SIZE);if((*s)->time1 == NULL){return FAILURE;}//给time2分配空间(*s)->time2 = (long int *)malloc(sizeof(long int) * SIZE);if(NULL == (*s)->time2){return FAILURE;}return SUCCESS;}//停车场遍历
int cartraver(ssk *s)
{//入参判断if(s == NULL){return FAILURE;}//判断停车场是否有车if(s->top == -1){printf("停车场里没有车!\n");}int i;for(i = 0;i <s->top + 1;i++){printf("车牌号码%d  进场时间%s\n",s->num[i],ctime(&(s->time1[i])));}return SUCCESS;}//候车场遍历
int waittraver(ssw *w)
{//判断候车场是否有车if(w->rear == w->front){printf("候车场没有车\n");}// 入参判断if( w == NULL){return FAILURE;}int a;a = (w->rear - w->front + 100) % 100;int i;for(i =w->front;i < w->rear;i++){printf("候车场的车辆信息为:\n");printf("车牌号码:%d 进场时间:%s\n",w->num[i],ctime(&(w->time1[i])));}return SUCCESS;}//往候车场里停车
int waiting(ssw *w,ssk *s)
{while(s->top >= SIZE - 1){//入参判断if(NULL == w){return FAILURE;}printf("请输入进入候车区车牌号码:\n");scanf("%d",&w->num[w->rear]);time_t t1;time (&t1);long int t = t1;            // 标记进入候车场的时间char* t2;t2 = ctime (&t1);      // 获取当前时间w->time1[w->rear] = t;printf("车牌号为%d进入候车区,时间为%s\n",w->num[w->rear],t2);w->rear ++;int a;printf("是否结束输入? 1 是 2 否\n");scanf("%d",&a);if( a == 1){break;}else if(a == 2){continue;}else{printf("输入错误!请重新输入:\n");}return SUCCESS;}
}//往停车场里 停车
int push(ssk *s)
{while(s->top < SIZE){//入参判断if(NULL == s){return FAILURE;}else if(s->top == SIZE - 1){int h;printf("停车场已满,请等候!\n");printf("是否要登记车辆进入候车场?1 是 2 否\n");scanf("%d",&h);if(h == 1){waiting(wait,car);}else {break;}}else{printf("请输入进入停车场的车牌号码:\n");scanf("%d",&s->num[s->top + 1]);time_t t1;time (&t1);            // 标记进入停车场的时间char* t2;t2 = ctime (&t1);       // 获取当前时间s->time1[s->top + 1] = t1;printf("牌照为%d的车进入,当前时间为%s\n",s->num[s->top + 1],t2);s->top++;int a;printf("是否继续输入进入停车场的车辆信息?\n");printf("   1 继续输入       2 返回主界面\n");scanf("%d",&a);if(a == 1){continue;}else if (a == 2){break;}else{printf("输入错误!\n");}}}//返会成功return SUCCESS;
}int pop(ssk *s,ssk *e,ssw *w,srd *r)
{//出车int a;int p = 0;// 用来判断是否找到查找的车辆//将要离开停车场的车牌号printf("请输入出停车场的车牌号:\n");scanf("%d",&a);int k = 0;//当停车场内有车时进行循环while(s->top > -1){// 入参判断if(NULL == s){return FAILURE;}//入参判断if(e == NULL){printf("候车场出现错误!");}// 找到要出去的车if(a == s->num[s->top]){if(s->top == -1){return FAILURE;}time_t t1;      time (&t1); // 标记离开停车场的时间s->time2[0] = t1;             char* t2;// 获取当前时间t2 = ctime (&t1);   srd *pp = r;srd *qq = (srd *)malloc(sizeof(srd)*1);if(qq == NULL){return FAILURE;break;}qq->num = s->num[s->top];qq->time1 = s->time1[s->top];qq->time2 = s->time2[0];qq->time = (difftime(s->time2[0],s->time1[s->top]))/60;qq->next = pp->next;pp->next = qq;//计费int money;money = ((difftime(s->time2[0],s->time1[s->top]))/60 - 0.5) * price;//如果时间超过了30秒if ((difftime(s->time2[0],s->time1[s->top]))/60 > 0.5){printf("车牌号:%d于 %s出场停留时间%.1f分钟\n",s->num[s->top],t2,(difftime(s->time2[0],s->time1[s->top]))/60);printf("时间超过了30秒;应收$%d\n",money);}//如果时间没有超过30秒else {printf("车牌号:%d于 %s出场停留时间%.1f分钟\n",s->num[s->top],t2,(difftime(s->time2[0],s->time1[s->top]))/60);printf("时间没有超过30秒 不收费!!\n");}//top减1s->top --;p++;    //找到车辆 p值发生改变break;} //把其余的车停到交换车场e->num[e->top + 1] = s->num[s->top];e->time1[e->top + 1] = s->time1[s->top];e->time2[e->top + 1] = s->time2[s->top];s->top --;e->top ++;k++;}if(p == 0){printf("没有这辆车的信息!\n");}// 把交换车场里的车换回去while(e->top > -1) {if(e == NULL){return FAILURE;}s->num[s->top + 1] = e->num[e->top];s->time1[s->top + 1] = e->time1[e->top];s->time2[s->top + 1] = e->time2[e->top];e->top --;s->top ++;}//当停车场内未满时 从候车场停入车辆while(s->top <= 3){//当停车场车辆已满if(s->top > 3){return FAILURE;break;}//如果候车场没有车辆if(w->front == w->rear){break;}//入参判断if(NULL == w){return FAILURE;}//停车场进车int aa;printf("是否有车辆进入停车场? 1 是 2 否\n");scanf("%d",&aa);if( aa == 1){//如果输入1 则开始录入进入停车场的车辆信息push(car);}else {//如果没有车辆进入停车场,则继续进行循环,继续向下执行continue;}int c;//候车场车辆数量减 1c = w->num[w->front];w->front = (w->front + 1) % 100;x++;return SUCCESS;}
}int waitlength(ssw *w)
{//入参判断if(NULL == w){return FAILURE;}//如果候车场没有车辆if(w->front == w->rear){printf("候车场没有车辆!\n");}int a;//查看候车场有多少车辆a = (w->rear - w->front + 100) % 100;printf("候车场一共有%d辆车!\n",a);return SUCCESS;}//出入记录 没有数量限制
int traverrecord(srd *r)
{if(r == NULL){return FAILURE;}srd *qq = r;while(qq->next){qq =qq->next;printf("车牌号码:%d\n",qq->num);printf("进场时间:%s\n",ctime(&(qq->time1)));printf("出场时间: %s\n",ctime(&(qq->time2)));printf("停留时间:%.2f分钟\n",qq->time);printf("**********************************\n");}return SUCCESS;
}int longestcar(ssk *s)
{if(NULL == s){return FAILURE;}if(s->top == -1){return FAILURE;}time_t t1;      time (&t1); // 标记离开停车场的时间s->time2[0] = t1;             char* t2;// 获取当前时间t2 = ctime (&t1);int i, j,k;float temp = 0;int flag = 0;float a[] = {0};if(s->top == 0){temp = (difftime(s->time2[0],s->time1[s->top]))/60;printf("目前停留时间最长的是%d,停留时间为%.2f\n",s->num[s->top],temp);return SUCCESS;}if(s->top == 1){float aa= (difftime(s->time2[0],s->time1[0]))/60;float bb= (difftime(s->time2[0],s->time1[1]))/60;if( aa > bb){printf("目前停留时间最长的是%d,停留时间为%.2f\n",s->num[0],aa);}else{printf("目前停留时间最长的是%d,停留时间为%.2f\n",s->num[1],bb);}return SUCCESS;}if(s->top >= 2){int c = s->top;for(i = 0;i <= c;i++){a[i] = (difftime(s->time2[0],s->time1[i]))/60;}temp = a[0];for (j = 1; j <= c; j++)//从第二个开始依次进行比较,{                     //选出最小值得下标//把较小值的if (a[j] > temp){temp = a[j];  //把较da值的值放到temp里flag = j;  //把较da值的下标放到flag里}}printf("目前停留时间最长的是%d,停留时间为%.2f\n",s->num[flag],temp);return SUCCESS;}
}int main()
{//主函数//初始化是否成功ret = initpark(&car);if(ret == FAILURE){printf("初始化停车场失败\n");}//初始化是否成功ret = initpark(&exchange);if(ret == FAILURE){printf("初始化换车场失败\n");}//初始化执行是否成功ret = initwait(&wait);if(ret == FAILURE){printf("初始化候车区失败\n");}ret = initrecord(&record);if(ret == FAILURE){printf("初始化记录失败!\n");}else{printf("初始化记录成功!\n");}int a;// 清屏system("clear");//进行循环while(1){welcome();printf("请选择功能:\n");scanf("%d",&a);switch(a){//进车是否成功case 1:system("clear");ret = push(car);if(ret == FAILURE){printf("录入信息失败!\n");}else{printf("录入信息成功!\n\n\n");}break;//出车是否成功case 2:system("clear");ret = pop(car,exchange,wait,record);if(ret == FAILURE){printf("出车失败!\n");}else{printf("出车成功!\n\n\n");}break;//查看停车场车辆信息case 3:system("clear");ret = cartraver(car);if(ret == FAILURE){printf("查看停车场信息失败!\n");}else{printf("查看停车场信息成功!\n\n\n");}break;//查看候车场车辆信息case 4:system("clear");ret = waittraver(wait);if(ret == FAILURE){printf("查看候车场信息失败\n");}else{printf("查看候车场信息成功\n\n\n");}break;//退出系统case 5:system("clear");ret = waitlength(wait);if(ret == FAILURE){printf("查看失败!\n");}else{printf("查看成功\n\n\n");}break;case 6:system("clear");ret = longestcar(car);if(ret == FAILURE){printf("获取时间最长的车辆失败!\n");}else{printf("获取时间最长的车辆成功!\n");}break;case 7:ret = traverrecord(record);if(ret == SUCCESS){printf("查看记录成功\n");}else{printf("查看记录失败\n");}break;case 8:system("clear");printf("退出系统成功!\n");sleep(1);exit(0);break;}}return 0;}int initwait (ssw **w);
void welcome();
int initpark (ssk **s);
int waittraver (ssw *w);
int waiting (ssw *w,ssk *s);
int push (ssk *s);
int pop (ssk *s,ssk *e,ssw *w,srd *r);
int waitlength(ssw *w);
int initrecord(srd **r);
int traverrecord(srd *r);

Linux c 停车场管理系统相关推荐

  1. 停车场管理系统linux实现,基于Linux的停车场管理系统的设计与实现

    摘要: 随着机动车数量的不断攀升,我国居民对停车场以及场内停车位的需求也随之增加,这种趋势大大增加了停车场管理系统的负荷.与此同时,在停车场内,驾驶员寻找空位泊车以及返回时寻找停车位置和出口遇到困难的 ...

  2. Linux项目设计:基于ARM平台的停车场管理系统制作教程

    文章目录 一.功能要求 二.项目笔记 (一)网络问题:Ubuntu同时与开发板.WiFi连接 (二)图片文字识别 (三)文字转语音 (四)摄像头拍摄 化作尘其它开源项目: 单片机项目: Linux项目 ...

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

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

  4. [附源码]计算机毕业设计springboot停车场管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. Jsp实现停车场管理系统

    系统采用了B/S架构,Tomcat8.0作为运行服务器,基于J2EE标准.Eclipse4.6开发环境,数据库采用Mysql-5.5.37.开发过程利用MVC开发模式,层次分明.成功实现了该系统.试运 ...

  6. 海康威视智能机器人泊车_干货|海康威视智能停车场管理系统(含技术指导手册+施工图)...

    随着汽车消费的持续增长,城市停车设施.规划.管理等方面不够完善,导致机动车停车供需矛盾.伴随着停车难问题的日益凸显,面对停车位有限资源与无限需求之间的矛盾,物联网时代就要充分利用物联网技术的力量解决有 ...

  7. linux云管理,教程|云帮手部署Linux公有云管理系统

    以下为大家详细演示下怎样利用云帮手部署Linux公有云管理系统: 1.安装云帮手 进入云帮手(官网)下载安装,安装过程就不详细介绍操作流程了,其实也很简单的. 2.环境部署 点击前往环境套件,选择相关 ...

  8. 停车管理系统汽车到达汽车离去c语言,停车场管理系统 C语言实现

    用堆栈模拟实际的停车场管理系统 一.问题描述 1.实验题目: 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最 ...

  9. linux文件管理系统开发毕业,定稿毕业论文基于Linux的远程管理系统服务器端的实现word文档(范文1)...

    <[毕业论文]基于Linux的远程管理系统服务器端的实现.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于Linux的远程管理系统服务器端的实现(word文档)& ...

最新文章

  1. python文件和目录
  2. 阿里老P8,被大学天天打游戏的室友吊打了!
  3. java 枚举使用简书_Java枚举
  4. Cacti 插件中setup.php 文件的编写
  5. android键盘ui,android – 在自定义键盘中重新调整候选视图的UI
  6. Rhel7 设置目录权限,acl权限
  7. LeetCode 468. 验证IP地址
  8. php数组实例,php常用数组函数实例小结
  9. Python爬虫时中文乱码的处理
  10. SqlServe中使用EXEC @sql 来传递table变量
  11. 小米高层调整;B 站回应腾讯成第一大股东;PHP 7.4.3 发布 | 极客头条
  12. 简述Java内存模型的happen before原则
  13. 社区智能健康手环方案/APP/小程序/项目
  14. 程序开发里面的profile 是什么意思? (用户配置文件)
  15. [RDLC]一步一步教你使用RDLC(一)
  16. Docker的安装及加速器配置
  17. 多张照片怎么添加时间水印
  18. mysql连接查询和in的效率取舍
  19. java代码制作activiti会签_activiti设计器会签人员配置
  20. LegendShop教您,电商系统选型要注意什么!

热门文章

  1. SPICE电路仿真(1)--ngspice
  2. 音频剪辑文件 audition3.0(英文破解)与audition(中文直接安装板)
  3. 为什么你不回我微信了?
  4. 开源Tizen系统视频泄露 酷似MeeGo及Bada
  5. 自然语言处理(NLP)相关资料汇总
  6. BIOS 中英文对照表
  7. 第七章文件与数据维度
  8. plantuml样式_PlantUml
  9. iOS开发集成第三方微信支付和分享问题
  10. Android手机的by-name文件夹