停车场项目

来源:互联网 发布:装修设计师软件 编辑:程序博客网 时间:2024/04/27 05:43

停车场项目需求

问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后在依次进入。汽车离开时按停放时间收费。

基本功能要求
(1)建立三个数据结构分别是:停放栈、让路栈、等候队列。
(2)输入数据模拟管理过程,数据(入或出,车号)

功能描述:进车登记、出车登记、按车牌号查询停车车辆信息、查询出入车记录、 查询场内车辆信息、查询等候车辆信息、退出系统。
(1)linux系统编写(链表、栈、队列);
(2)进车登记:登记车牌号以及入场时间;
(3)出车登记:计算出停车时间,记录车辆车牌;
(4)按车牌号查询车辆信息:停车时间,是否来过停车场,是否还在停车场;
(5)查询出入记录:所有车辆,包括已经离开的;
(6)查询场内车辆信息:列出所有场内车辆信息;
(7)查询等候车辆信息:显示等候车辆数量以及所有车牌号;
(8)退出系统。

头文件

#ifndef _HEADER_H_#define _HEADER_H_#define color_none      "\033[0m"#define color_red       "\033[1;5;31m"#define color_purple    "\033[1;5;35m"#define success         100001#define failure         100000#define MAXSIZE         3typedef int elem_type;struct node{    elem_type data;    int tm_sec;    int tm_min;    int tm_hour;    int sec;    int min;    int hour;    struct node *next;};typedef struct node Node;typedef Node *link_node;struct queue{    link_node front;    link_node rear;};typedef struct queue queue;typedef  struct sqStack{    int data[MAXSIZE];    int tm_sec[MAXSIZE];    int tm_min[MAXSIZE];    int tm_hour[MAXSIZE];    int top; }stack; void show(); void PrintInfo(); int init_queue(queue *q); int init_stack(stack *s); int list_init(link_node *list); int push_stack(stack *s); int traversal_stack(stack s); int search_stack(stack s); int search_node(link_node n, elem_type e); int enter_queue(queue *q, elem_type e); int delete_queue(stack *s, queue *q); int traversal_queue(queue q); int pop_top(stack *s, link_node *list); int pop_stack(stack *s, link_node *list); int transfer_stack_1(stack *s1, stack *s2, elem_type e); int transfer_stack_2(stack *s1, stack *s2); int all_in_out(stack s, link_node n);#endif

主函数

#include <stdio.h>#include "header.h"#include <stdlib.h>int main(){    char num[10];    char enter[10];    int ret ;    queue wa_queue;    stack s1, s2;    link_node n;    ret = init_queue(&wa_queue);    if(failure == ret)    {        printf("init_queue failure!!!\n");    }    ret = init_stack(&s1);    if(failure == ret)    {        printf("init s1 failure!!!\n");    }    ret = init_stack(&s2);    if(ret == failure)    {        printf("init s2 failure!!!\n");    }    ret = list_init(&n);    if(ret == failure)    {        printf("init n failure!!!\n");    }    show();    while(1)    {        PrintInfo();        fgets(num, 2, stdin);        switch(num[0])        {            case '1':            {                ret = push_stack(&s1);                if(ret == success)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t停车成功!!!\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t停车场已满!!!\n"color_none);                    ret = enter_queue(&wa_queue, ret);                    if(failure == ret)                    {                        printf("\t\t\t\t\t车辆进入等待队列失败!!!\n");                        fgets(enter, 2, stdin);                        if (enter[0] == 10)                        {                            system("clear");                        }                    }                    else                    {                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t############################################\n");                        printf("\t\t\t\t\t                                            \n");                        printf(color_purple"\t\t\t\t\t车辆进入等待队列!!!\n"color_none);                        fgets(enter, 2, stdin);                        if (enter[0] == 10)                        {                            system("clear");                        }                    }                }                break;            }            case '2':            {                getchar();                ret = traversal_stack(s1);                if(failure == ret)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t**没有车辆信息!!!\n"color_none);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                break;            }            case '3':            {                ret = search_stack(s1);                if(success == ret)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    ret = search_node(n, ret);                    if(failure == ret)                    {                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t############################################\n");                        printf("\t\t\t\t\t                                            \n");                        printf(color_red"\t\t\t\t\t**没有这个车辆!!!\n"color_none);                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t############################################\n");                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                        fgets(enter, 2, stdin);                        if (enter[0] == 10)                        {                        system("clear");                        }                    }                    else                    {                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                        fgets(enter, 2, stdin);                        if (enter[0] == 10)                        {                            system("clear");                        }                    }                }                    break;            }            case '4':            {                ret = pop_top(&s1, &n);                if(failure == ret)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t**没有这个车辆!!!\n"color_none);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else if(success == ret)                {                    delete_queue(&s1, &wa_queue);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t**出车成功!!!\n"color_none);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    transfer_stack_1(&s1, &s2, ret);                    ret = pop_stack(&s1, &n);                    transfer_stack_2(&s1, &s2);                    if(success == ret)                    {                           delete_queue(&s1, &wa_queue);                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t############################################\n");                        printf("\t\t\t\t\t                                            \n");                        printf(color_red"\t\t\t\t\t**出车成功!!!\n"color_none);                        printf("\t\t\t\t\t                                            \n");                        printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                        fgets(enter, 2, stdin);                        if (enter[0] == 10)                        {                            system("clear");                        }                    }                }                break;            }            case '5':            {                getchar();                ret = all_in_out(s1, n);                if(failure == ret)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t**没有车辆信息!!!\n"color_none);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                break;            }            case '6':            {                getchar();                ret = traversal_queue(wa_queue);                if(failure == ret)                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf(color_red"\t\t\t\t\t**没有等待车辆!!!\n"color_none);                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t############################################\n");                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                else                {                    printf("\t\t\t\t\t                                            \n");                    printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                    fgets(enter, 2, stdin);                    if (enter[0] == 10)                    {                        system("clear");                    }                }                break;            }            case '7':            {                exit(1);            }            case 10:  //回车键            {                system("clear");                break;            }            default:            {                printf(color_red"\t\t\t\t\t**Unkown Input!\n"color_none);                printf("\t\t\t\t\t                                            \n");                printf("\t\t\t\t\t*************请按回车键进入界面*************\n");                fgets(enter, 2, stdin);                if (enter[0] == 10)                {                    system("clear");                }                break;            }           }    }    return 0;}

接口

#include <stdio.h>#include <stdlib.h>#include "header.h"#include <time.h>void show(){    char enter[10];    system("clear");    printf("\t\t\t\t\t                                              \n");    printf("\t\t\t\t\t                                              \n");    printf("\t\t\t\t\t                                              \n");    printf("\t\t\t\t\t##############################################\n");    printf("\t\t\t\t\t#********************************************#\n");    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#********************************************#\n");    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#***************");      printf(color_red"欢迎进入停车场"color_none);    printf("***************#\n");    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#********************************************#\n");    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#********************************************#\n");    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#*************");    printf(color_purple"请按回车键进入界面"color_none);                       printf("*************#\n")  ;    printf("\t\t\t\t\t#                                            #\n");    printf("\t\t\t\t\t#********************************************#\n");    printf("\t\t\t\t\t##############################################\n");    fgets(enter, 2, stdin);    if (enter[0] == 10)    {        system("clear");    }}void PrintInfo(){    printf("\t\t\t\t\t###############################################\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#  1.进车登记             2.显示场内车辆信息  #\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#  3.查询停车车辆信息     4.出车登记          #\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#  5.查询出入车记录       6.查询等候车辆信息  #\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#  7.退出系统                                 #\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#*********************************************#\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#****************");      printf(color_red"按回车键清屏"color_none);    printf("*****************#\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#*********************************************#\n");    printf("\t\t\t\t\t#                                             #\n");    printf("\t\t\t\t\t#请输入选项:");}int init_queue(queue *q){    q->front = (link_node)malloc(sizeof(Node));    if(NULL == q->front)    {        return failure;    }    q->front->next = NULL;    q->rear = q->front;    return success;}int init_stack(stack *s){    int i;    for(i = 0; i < MAXSIZE; i++)    {        s->data[i] = 0;    }    s->top = -1;    return success;}int list_init(link_node *list){    (*list) = (link_node)malloc(sizeof(Node));    if(NULL == (*list))    {        return failure;    }    (*list)->next = NULL;    return success;}int push_stack(stack *s){    system("clear");    int i = 0;    elem_type e;    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t请输入车牌号:");    scanf("%d", &e);    getchar();    if(s->top == MAXSIZE -1)    {        return e;    }    while(i <= s->top)    {        if(e == s->data[i])        {            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t############################################\n");            printf(color_red"\t\t\t\t\t车牌号重复,请重新输入:"color_none);            scanf("%d", &e);            getchar();            i = 0;            continue;        }        i++;    }    s->top++;    s->data[s->top] = e;    time_t now;    struct tm *tm_now;    now = time(NULL);    tm_now = localtime(&now);    s->tm_sec[s->top] = tm_now->tm_sec;    s->tm_min[s->top] = tm_now->tm_min;    s->tm_hour[s->top] = tm_now->tm_hour;    return success; }int traversal_stack(stack s){    system("clear");    if(s.top == -1)    {        return failure;    }    int i;    time_t now;    struct tm *tm_now;    int sec, min, hour;    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t车牌号");    printf("\t入场时间");    printf("  \t停车时间\n" );    for(i = s.top; i >= 0; i--)    {        now = time(NULL);        tm_now = localtime(&now);        hour = tm_now->tm_hour - s.tm_hour[i];        min = tm_now->tm_min - s.tm_min[i];        sec = tm_now->tm_sec - s.tm_sec[i];        if(min < 0)        {            hour = hour - 1;            min = min + 60;        }        if(sec < 0)        {            min = min - 1;            sec = sec + 60;        }        printf("\t\t\t\t\t%d", s.data[i]);        printf("\t%d:%d:%d", s.tm_hour[i], s.tm_min[i], s.tm_sec[i]);        printf("  \t%d时%d分%d秒\n", hour, min, sec);    }    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t场内车辆:%d 辆\n", s.top + 1);    return success;}int search_stack(stack s){    system("clear");    elem_type e;    int i;    time_t now;    struct tm *tm_now;    int sec, min, hour;    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t请输入车牌号:");    scanf("%d", &e);    getchar();    for(i = s.top; i >= 0; i--)    {        if(s.data[i] == e)        {            now = time(NULL);            tm_now = localtime(&now);            hour = tm_now->tm_hour - s.tm_hour[i];            min = tm_now->tm_min - s.tm_min[i];            sec = tm_now->tm_sec - s.tm_sec[i];            if(min < 0)            {                hour = hour - 1;                min = min + 60;            }            if(sec < 0)            {                min = min - 1;                sec = sec + 60;            }            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t############################################\n");            printf(color_red"\t\t\t\t\t还在停车场内!\n"color_none);            printf("\t\t\t\t\t车牌号");            printf("\t入场时间");            printf("  \t停车时间\n" );            printf("\t\t\t\t\t%d", s.data[i]);            printf("\t%d:%d:%d", s.tm_hour[i], s.tm_min[i], s.tm_sec[i]);            printf("  \t%d时%d分%d秒\n", hour, min, sec);            return success;        }    }    return e;   }int search_node(link_node n, elem_type e){    system("clear");    link_node p = n->next;    int sec, min, hour;    while(p != NULL)    {        if(p->data == e)        {            hour = p->hour - p->tm_hour;            min = p->min - p->tm_min;            sec = p->sec - p->tm_sec;            if(min < 0)            {                hour = hour - 1;                min = min + 60;            }            if(sec < 0)            {                min = min - 1;                sec = sec + 60;            }            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t############################################\n");            printf(color_red"\t\t\t\t\t来过停车场\n"color_none);            printf("\t\t\t\t\t                                            \n");            printf("\t\t\t\t\t############################################\n");            printf("\t\t\t\t\t车牌号");            printf("\t进场时间");            printf("\t离开时间:");            printf("  \t停车时间\n" );            printf("\t\t\t\t\t%d", p->data);            printf("\t%d:%d:%d", p->tm_hour, p->tm_min, p->tm_sec);            printf("\t%d:%d:%d", p->hour, p->min, p->sec);            printf("  \t%d时%d分%d秒", hour, min, sec);            return success;        }        p = p->next;    }    return failure;}int enter_queue(queue *q, elem_type e){    time_t now;    struct tm *tm_now;    link_node p = (link_node)malloc(sizeof(Node));    if(NULL == p)    {        return failure;    }    now = time(NULL);    tm_now = localtime(&now);    p->data = e;    p->tm_hour = tm_now->tm_hour;    p->tm_min = tm_now->tm_min;    p->tm_sec = tm_now->tm_sec;    p->next = NULL;    q->rear->next = p;    q->rear = p;    return success;}int delete_queue(stack *s, queue *q){    time_t now;    struct tm *tm_now;    now = time(NULL);    tm_now = localtime(&now);    link_node p = q->front->next;    if(p == NULL)    {        return failure;    }    if(q->front->next == q->rear)    {        s->top++;        s->data[s->top] = p->data;        s->tm_sec[s->top] = tm_now->tm_sec;        s->tm_min[s->top] = tm_now->tm_min;        s->tm_hour[s->top] = tm_now->tm_hour;        q->rear = q->front;        q->front->next = NULL;        free(p);        return success;    }    else    {        s->top++;        s->data[s->top] = p->data;        s->tm_sec[s->top] = tm_now->tm_sec;        s->tm_min[s->top] = tm_now->tm_min;        s->tm_hour[s->top] = tm_now->tm_hour;        q->front->next = p->next;        free(p);        return success;    }}int traversal_queue(queue q){    system("clear");    link_node p = q.front->next;    time_t now;    struct tm *tm_now;    int hour, min, sec;    int count = 0;    if(p == NULL)    {        return failure;    }    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t车牌号");    printf("\t进入等待时间");    printf("  \t已等待时间\n");    while(p != NULL)    {        now = time(NULL);        tm_now = localtime(&now);        hour = tm_now->tm_hour - p->tm_hour;        min = tm_now->tm_min - p->tm_min;        sec = tm_now->tm_sec - p->tm_sec;        if(min < 0)        {            hour = hour - 1;            min = min + 60;        }        if(sec < 0)        {            min = min - 1;            sec = sec + 60;        }        count++;        printf("\t\t\t\t\t%d", p->data);        printf("\t%d:%d:%d", p->tm_hour, p->tm_min, p->tm_sec);        printf("  \t%d时%d分%d秒\n", hour, min, sec);        p = p->next;    }    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t等待车辆:%d 辆\n", count);    return success;}int pop_top(stack *s, link_node *list){    system("clear");    int i = s->top;    link_node p = *list;    link_node n = (link_node)malloc(sizeof(Node));    time_t now;    struct tm *tm_now;    elem_type e;    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t                                            \n");    printf("\t\t\t\t\t############################################\n");    printf("\t\t\t\t\t请输入车牌号:");    scanf("%d", &e);    getchar();    while(i >= 0)    {        if(s->data[i] == e && i == s->top)        {            now = time(NULL);            tm_now = localtime(&now);            n->data = s->data[s->top];            n->tm_hour = s->tm_hour[s->top];            n->tm_min = s->tm_min[s->top];            n->tm_sec = s->tm_sec[s->top];            n->hour = tm_now->tm_hour;            n->min = tm_now->tm_min;            n->sec = tm_now->tm_sec;            s->top--;            while(p->next != NULL)            {                p = p->next;            }            n->next = p->next;            p->next = n;            return success;        }        else if(s->data[i] == e && i != s->top)        {            return i;        }        i--;    }    return failure;}int pop_stack(stack *s, link_node *list){    int i = s->top;    link_node p = *list;    link_node n = (link_node)malloc(sizeof(Node));    time_t now;    struct tm *tm_now;    now = time(NULL);    tm_now = localtime(&now);    n->data = s->data[s->top];    n->tm_hour = s->tm_hour[s->top];    n->tm_min = s->tm_min[s->top];    n->tm_sec = s->tm_sec[s->top];    n->hour = tm_now->tm_hour;    n->min = tm_now->tm_min;    n->sec = tm_now->tm_sec;    s->top--;    while(p->next != NULL)    {        p = p->next;    }    n->next = p->next;    p->next = n;    return success;}int transfer_stack_1(stack *s1, stack *s2, elem_type e){    while(s1->top != e)    {        s2->top++;        s2->data[s2->top] = s1->data[s1->top];        s2->tm_sec[s2->top] = s1->tm_sec[s1->top];        s2->tm_min[s2->top] = s1->tm_min[s1->top];        s2->tm_hour[s2->top] = s1->tm_hour[s1->top];        s1->top--;    }    return success;}int transfer_stack_2(stack *s1, stack *s2){    while(s2->top != -1)    {        s1->top++;        s1->data[s1->top] = s2->data[s2->top];        s1->tm_sec[s1->top] = s2->tm_sec[s2->top];        s1->tm_min[s1->top] = s2->tm_min[s2->top];        s1->tm_hour[s1->top] = s2->tm_hour[s2->top];        s2->top--;    }    return success;}int all_in_out(stack s, link_node n){    system("clear");    link_node p = n->next;    if(s.top == -1 && p == NULL)    {        return failure;    }    int i;    time_t now;    struct tm *tm_now;    int sec, min, hour;    printf("\t\t\t\t\t############################################\n");    printf(color_red"\t\t\t\t\t场内车辆:\n"color_none);    printf("\t\t\t\t\t********************************************\n");    printf("\t\t\t\t\t车牌号");    printf("\t入场时间");    printf("  \t停车时间\n" );    for(i = s.top; i >= 0; i--)    {        now = time(NULL);        tm_now = localtime(&now);        hour = tm_now->tm_hour - s.tm_hour[i];        min = tm_now->tm_min - s.tm_min[i];        sec = tm_now->tm_sec - s.tm_sec[i];        if(min < 0)        {            hour = hour - 1;            min = min + 60;        }        if(sec < 0)        {            min = min - 1;            sec = sec + 60;        }        printf("\t\t\t\t\t%d", s.data[i]);        printf("\t%d:%d:%d", s.tm_hour[i], s.tm_min[i], s.tm_sec[i]);        printf("  \t%d时%d分%d秒\n", hour, min, sec);    }    printf("\t\t\t\t\t############################################\n");    printf(color_red"\t\t\t\t\t已离开车辆:\n"color_none);    printf("\t\t\t\t\t********************************************\n");    printf("\t\t\t\t\t车牌号");    printf("\t进场时间");    printf("  \t离开时间");    printf("  \t停车时间\n" );    while(p != NULL)    {        hour = p->hour - p->tm_hour;        min = p->min - p->tm_min;        sec = p->sec - p->tm_sec;        if(min < 0)        {            hour = hour - 1;            min = min + 60;        }        if(sec < 0)        {            min = min - 1;            sec = sec + 60;        }        printf("\t\t\t\t\t%d", p->data);        printf("\t%d:%d:%d", p->tm_hour, p->tm_min, p->tm_sec);        printf("  \t%d:%d:%d", p->hour, p->min, p->sec);        printf("  \t%d时%d分%d秒\n", hour, min, sec);        p = p->next;    }    return success;}