zoukankan      html  css  js  c++  java
  • 停车场信息管理系统(C语言)

    #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[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 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(1)
        {
            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(1)
            {
                scanf("%d",&ch);
                if(ch >= 1 &&ch <= 4)
                    break;
                else
                    printf("\nPlease choose: 1|2|3|4.");
            }
            switch(ch)
            {
            case 1:
                arrival(&Enter,&Wait);
                break;
            case 2:
                leave(&Enter,&Temp,&Wait);
                break;
            case 3:
                list(Enter,Wait);
                break;
            case 4:
                exit(0);
            default:
                break;
            }
        }
    }
    
    void InitStack(SeqStackCar *s)
    {
        int i;
        s->top = 0;
        for(i = 0; 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 1;
        }
        else
        {
            return -1;
        }
    }
    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)*60+(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 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 i,room;
        CarNode *p,*t;
        QueueNode *q;
        if(Enter->top > 0)
        {
            while(1)
            {
                printf("\n请输入车在车场的位置/1--%d/",Enter->top);
                scanf("%d",&room);
                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,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 > 0)
        {
            printf("\n车场:");
            printf("\n位置 到达时间 车牌号\n");
            for(i = 1; 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 = 1;
        while(flag)
        {
            printf("\n请选择 1|2|3:");
            printf("\n1.车场\n2.便道\n3.返回\n");
            while(1)
            {
                scanf("%d",&tag);
                if(tag >= 1 || tag <= 3)
                {
                    break;
                }
                else
                {
                    printf("\n请选择 1|2|3:");
                }
            }
            switch(tag)
            {
            case 1:
                list1(&S);
                break;
            case 2:
                list2(&W);
                break;
            case 3:
                flag = 0;
                break;
            default:
                break;
            }
        }
    }
  • 相关阅读:
    存储过程拆分字符窜
    jquery学习
    Sql常用语法
    存储过程分页
    asp.net 定时执行程序
    C# 多线程并发处理数据库数据,发送信号等待处理完统一插入.(转)
    (转)CAS 单点登录安装笔记4
    C# 自动退出当前程序,然后再启动
    给自己的Web文件夹增加一个图片或其它文件认证
    Setting NTFS Permissions with C#
  • 原文地址:https://www.cnblogs.com/tslDream/p/4454397.html
Copyright © 2011-2022 走看看