#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define MAX 2//车库容量
#define price 0.05//每车每分钟费用 typedef struct time//时间结点
{
int hour;
int min;
}Time;
typedef struct node
{
char num[];
Time reach;
Time leave;
}CarNode;
typedef struct NODE//模拟车站
{
CarNode *stack[MAX+];
int top;
}SeqStackCar;
typedef struct car
{
CarNode *data;
struct car *next;
}QueueNode;
typedef struct Node//模拟通道
{
QueueNode *head;
QueueNode *rear;
}LinkQueueCar; void InitStack(SeqStackCar *);
int InitQueue(LinkQueueCar *);
int arrival(SeqStackCar *,LinkQueueCar *);
void leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);
void list(SeqStackCar,LinkQueueCar); int main(void)
{
SeqStackCar Enter,Temp;
LinkQueueCar Wait;
int ch;
InitStack(&Enter);
InitStack(&Temp);
InitQueue(&Wait); while()
{
printf("|-----------------------------------------------|\n");
printf("| 1.The car arrive |\n");
printf("| 2.The car leave |\n");
printf("| 3.The schedule |\n");
printf("| 4.Exit |\n");
printf("|-----------------------------------------------|\n");
while()
{
scanf("%d",&ch);
if(ch >= &&ch <= )
break;
else
printf("\nPlease choose: 1|2|3|4.");
}
switch(ch)
{
case :
arrival(&Enter,&Wait);
break;
case :
leave(&Enter,&Temp,&Wait);
break;
case :
list(Enter,Wait);
break;
case :
exit();
default:
break;
}
}
} void InitStack(SeqStackCar *s)
{
int i;
s->top = ;
for(i = ; i <= MAX; ++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 ;
}
else
{
return -;
}
}
void print(CarNode *p,int room)
{
int A1,A2,B1,B2;
printf("\nPlease input the depart time:/**:**/");
scanf("%d:%d",&(p->leave.hour),&(p->leave.min));
printf("\nThe number of the car:");
puts(p->num);
printf("\nThe time The car arrive:%d:%d",p->reach.hour,p->reach.min);
printf("\nThe depart time:%d:%d",p->leave.hour,p->leave.min);
A1 = p->reach.hour;
A2 = p->reach.min;
B1 = p->leave.hour;
B2 = p->leave.min;
printf("\nThe fee: %2.1f元",((B1-A1)*+(B2-A2)*price));
free(p);
} int arrival(SeqStackCar *Enter,LinkQueueCar *W)
{
CarNode *p;
QueueNode *t;
p = (CarNode *)malloc(sizeof(CarNode));
flushall();
printf("\nInput the number of the car(例:陜A1234):");
gets(p->num);
if(Enter->top < MAX)
{
Enter->top ++;
printf("\nThe place of the car.",Enter->top);
printf("\nThe time the car arrive:/**:**/");
scanf("%d:%d",&(p->reach.hour),&(p->reach.min));
Enter->stack[Enter->top] = p;
return ;
}
else
{
printf("\n该车须在便道等待!");
t = (QueueNode *)malloc(sizeof(QueueNode));
t->data = p;
t->next = NULL;
W->rear->next = t;
W->rear = t;
return ;
}
}
void leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)
{
int i,room;
CarNode *p,*t;
QueueNode *q;
if(Enter->top > )
{
while()
{
printf("\n请输入车在车场的位置/1--%d/",Enter->top);
scanf("%d",&room);
if(room >= && 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 >= )
{
Enter->top ++;
Enter->stack[Enter->top] = Temp->stack[Temp->top];
Temp->stack[Temp->top] = NULL;
Temp->top --;
}
print(p,room);
if((W->head != W->rear) && Enter->top < MAX)
{
q = W->head->next;
t = q->next;
Enter->top ++;
printf("\n便道的%s号车进入车场的第%d位置。",t->num,Enter->top);
printf("\n请输入现在的时间/**:**/:");
scanf("%d:%d",&(t->reach.hour),&(t->reach.min));
W->head->next = q->next;
if(q == W->rear)
W->rear = W->head;
Enter->stack[Enter->top] = t;
free(q);
}
else
{
printf("\n便道没有车");
}
}
else
{
printf("\n车场里没有车。");
}
}
void list1(SeqStackCar *S)
{
int i;
if(S->top > )
{
printf("\n车场:");
printf("\n位置 到达时间 车牌号\n");
for(i = ; i <= S->top; ++i)
{
printf(" %d ",i);
printf("%d:%d ",S->stack[i]->reach.hour,S->stack[i]->reach.min);
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;
}
}
else
{
printf("\n便道里没有车。");
}
}
void list(SeqStackCar S,LinkQueueCar W)
{
int flag,tag;
flag = ;
while(flag)
{
printf("\n请选择 1|2|3:");
printf("\n1.车场\n2.便道\n3.返回\n");
while()
{
scanf("%d",&tag);
if(tag >= || tag <= )
{
break;
}
else
{
printf("\n请选择 1|2|3:");
}
}
switch(tag)
{
case :
list1(&S);
break;
case :
list2(&W);
break;
case :
flag = ;
break;
default:
break;
}
}
}

停车场信息管理系统(C语言)的更多相关文章

  1. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  2. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  3. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  4. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  5. C语言实现天气信息管理系统

    这篇文章主要介绍了C语言实现天气信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C语言实现天气信息管理系统的具体代码,供大家参考,具体内 ...

  6. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  7. 用C语言制作小型商品信息管理系统过程中的问题

    大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...

  8. 借书证信息管理系统,C语言实现

    自己实现的如有缺漏欢迎提出 /* 原创文章 转载请附上原链接: https://www.cnblogs.com/jiujue/p/10325628.html   */ 设计内容: 设计一个排序和查找系 ...

  9. 学生信息管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student ...

随机推荐

  1. Vue 使用swiper4导致ie或手机浏览器打开空白的问题

    from:https://segmentfault.com/a/1190000015831092 在ie下发现就是swiper的不兼容,一加上去ie就不显示了.结果是swiper版本的问题,最新的sw ...

  2. 字典排序 sorted

    a = {6:2,8:0,1:4,-5:6,99:11,4:22} print( sorted(a.items()) ) #默认安照key排序的print( sorted(a.items(),key= ...

  3. 创建servlet程序知识点详解---servlet-day01

    方法调用完后,其中的所有局部变量都会消失 ###网络架构 -CS:Client Server  客户端服务器 特点:每种平台都需要开发相对应的app, 开发成本高  功能升级需要下载最新的客户端,用户 ...

  4. web前端开发常用组件

    web前端开发常用组件 1. 对话框(dialog):jbox(适合对话框等其它功能).colorbox(也很强大,可以弥补jbox图片轮播的落点),      这二者基本能搞定所有对话框的情况 2. ...

  5. php 去除变态空格字符方法,空格trim不掉问题解决思路

    前言:今天过滤一段文本,后面有2个空格,用trim去不掉,用preg_match也去不掉,去网上翻阅了无数的方法,终于找到了非常好的一个解决方法.该文章来源于https://my.oschina.ne ...

  6. Spring错误——Spring 注解——factory-bean reference points back to the same bean definition

    背景:学习Spring,在使用注解@Bean的name属性配置<bean>实例时,不能注册实例成功 报错 WARNING: Exception encountered during con ...

  7. ArchLinux 无密码Samba 配置

    安装上迅雷后就必须把硬盘挂上去开个Samba,然后边下电影边看,这就是一个Nas了. 开搞! pacman -S samba 安装samba,然后进入/etc/samba/目录 vim smb.con ...

  8. 如何设置openwrt在编译linux内核时不优化内核?

    答:修改openwrwt源码目录下rule.mk文件中的HOST_CFLAGS即可 将HOST_CFLAGS:=-O2 $(HOST_CPPFLAGS)改成: HOST_CFLAGS:=-O1 $(H ...

  9. git如何撤销git add操作?

    答: 使用git reset <file name>即可撤销

  10. Springboot静态文件不更新的解决办法,以及Springboot实现热部署

    Springboot静态文件不更新的解决办法,以及Springboot实现热部署 原文链接:https://www.cnblogs.com/blog5277/p/9271882.html 原文作者:博 ...