#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. 2018-2019-1 20189203《Linux内核原理与分析》第三周作业

    一.课程学习 计算机的三个法宝:存储程序计算机.函数调用堆栈.中断. 堆栈相关的寄存器:ESP(堆栈指针).EBP(基址指针). 堆栈操作:push:栈顶地址减少4个字节,并将操作数放入栈顶存储单元. ...

  2. python常用函数及模块

    原文来源于博客园和CSDN 1.计算函数 abs()--取绝对值 max()--取序列最大值,包括列表.元组 min()--取序列最小值 len()--取长度 divmod(a,b)---取a//b除 ...

  3. Java 集合类框架

    1 package test; import java.util.ArrayList; import java.util.Collection; import java.util.Date; impo ...

  4. LEFT JOIN、RIGHT JOIN、INNER JOIN、FULL JOIN 使用

    select * from t_class_info as c; id   gradeid  classid  year        createtime                       ...

  5. linux之tree命令

    linux下tree命令的用法解释 2018年03月22日 ⁄ RakSmart教程 ⁄ 共 583字 ⁄ 字号 小 中 大 ⁄ linux下tree命令的用法解释已关闭评论 tree命令,主要功能是 ...

  6. vim 命令学习(高级篇)

    [1]打开文件方式 (1)vim +n filename 作用:打开文件,并定位到第n行 例如:vim +103 2019-02-26-errorrepeat.txt 效果:打开2019-02-26- ...

  7. Why Choose MB SD C5 with Engineer Software

    MB SD C5 with engineer software performed good and now is released. Unlike the old clone C5 which us ...

  8. 新手如何学习python(python学习路线图)

    现在互联网巨头,都已经转投到人工智能领域,而人工智能最好的编程语言就是python,未来前景显而易见.这是小编给大家整理的python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻 ...

  9. 处理centos6或者7依赖关系(Nginx、MySQL、PHP)的方法

     yum -y install make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel  ...

  10. 使用solr进行配置文件

    我现在使用的是一个已经搭建好的solr环境下进行的测试: 第一步,需要配置solrhome中的一个配置文件schema.xml 配置内容如下,上面配置的是IK分词器,下面是配置完成的域. 因为我在这个 ...