停车场项目需求
问题描述:停车场是一个能放 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 3
typedef 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;
}