停车场管理系统(五)

4.3.3 信息总览算法

1、信息总览算法的实现十分简单,包含两个部分:停车场车辆信息总览和便道车辆信息总览。由于停车场和便道的车辆信息的处理和保存采用的是不同的数据结构,所以对信息的总览需要根据需要将车辆信息进行分隔,实现信息的正确输出,避免访问出错或者数据混乱。

2、停车场信息总览:对顺序存储的栈进行遍历,采用自增的标记将数据进行区分,将不同的数据加上相应的修饰输出(例如:

车牌号:10086

停车位:1

到达:是

到达时间:Tue Mar 12 20:57:20 2013

离开:否

离开时间:空

停车费用:0元

停车位是否为空:否)。

备注:停车费用会在车辆离开停车场后进行清算。

3、便道车辆信息总览:对链式存储的队列进行遍历,同样采用的自增编辑对数据进行区分,将不同的数据加上对应的修饰输出(例如:

车牌号:10087

便道车位:1

到达:是

到达时间:Tue Mar 12 20:59:41 2013

离开:否

离开时间:空

在便道停留时间:0秒

停车位是否为空:否)。

备注:便道停留时间会在车辆离开便道后进行清算。


信息总览主要设计源码:
//便道车辆信息总览
int QueueTraverse(dat *Q)
{
	int j = 0;
	if((*Q).front == (*Q).rear && (*Q).front != NULL){printf("\n--便道没有车辆停靠--\n");return(FALSE);}
	if((*Q).front == NULL){printf("\n--队列不存在--\n");return(FALSE);}

	DAT *p = (*Q).front -> next;
	printf("\n-----------------------------------------------------------\n");
	while(p != NULL)
	{
	    j++;
		//printf("\n--j = %d--\n",j);
		//printf("\n--p = %d--\n",p -> data);
		if(j == 4)
		{
			if(p -> data != NULL)
			{
				rawtime = p -> data;
				timeinfo = localtime (&rawtime);
			    printf("到达时间: %s",asctime(timeinfo));
			}
		    else
                printf("到达时间: 空\n");
		}
		else if(j == 6)
		{	
		    if(p -> data != NULL)
			{
			    rawtime = p -> data;
				timeinfo = localtime (&rawtime);
			    printf("离开时间: %s",asctime(timeinfo));
			}
		    else
				printf("离开时间: 空\n");
		}
		else if(j == 7)
		{
			printf("在便道停留时间:%d秒\n",p -> data);
		}
		else if(j == 8)
		{
			if(p -> data == FALSE)
			    printf("停车位是否为空: 否\n");
			else
                printf("停车位是否为空: 是\n");
			j = 0;
		}
		else if(j == 1 || j == 2 || j == 3 || j == 5)
		{
			if(j == 1){if(p -> data != NULL)printf("\n车牌号: %d\n",p -> data);else printf("\n车牌号: 空\n");}
			if(j == 2)printf("便道车位: %d\n",p -> data);
			if(j == 3)
			{
			    if(p -> data == FALSE)
				    printf("到达: 否\n");
				else
					printf("到达: 是\n");
			}
			if(j == 5)
			{
				if(p -> data == FALSE)
					printf("离开: 否\n");
				else
					printf("离开: 是\n");
			}
		}
		p = p -> next;	
	} 
	return OK;
}
//停车场车辆信息总览
int StackTraverse(SqStack *S)
{
	//printf("\n*****遍历输出*****\n\n");
    int *p = NULL;
    //int length = 0;
	int j = 0;
	if((*S).top == (*S).base && (*S).base != NULL)
	{
		printf("\n--停车场没有车辆--\n");
	}
	if((*S).base == NULL)
	{
		printf("\n--栈不存在,无法遍历输出--\n");
		return ERROR;
	}
    printf("\n-----------------------------------------------------------\n");
    if((*S).top != (*S).base) //栈不为空时
    {
	    for(p= (*S).base;p <= (*S).top-1;p++)
		{
		    j++;
		    if(j == 4)
			{
			    if(*p != NULL)
				{
				    rawtime = *p;
				    timeinfo = localtime (&rawtime);
			        printf("到达时间: %s",asctime(timeinfo));
				}
				else
                    printf("到达时间: 空\n");
			}
		    else if(j == 6)
			{	
				if(*p != NULL)
				{
					rawtime = *p;
				    timeinfo = localtime (&rawtime);
			        printf("离开时间: %s",asctime(timeinfo));
				}
				else
					printf("离开时间: 空\n");
			}
			else if(j == 7)
			{
				printf("停车费用:%d元\n",*p);
			}
			else if(j == 8)
			{
				if(*p == FALSE)
				    printf("停车位是否为空: 否\n");
				else
                    printf("停车位是否为空: 是\n");
				j = 0;
			}
		    else if(j == 1 || j == 2 || j == 3 || j == 5)
			{
				 if(j == 1){if(*p != NULL)printf("\n车牌号: %d\n",*p);else printf("\n车牌号: 空\n");}
				 if(j == 2)printf("停车位: %d\n",*p);
			     if(j == 3)
				 {
					 if(*p == FALSE)
						 printf("到达: 否\n");
					 else
						 printf("到达: 是\n");
				 }
				 if(j == 5)
				 {
					 if(*p == FALSE)
						 printf("离开: 否\n");
					 else
						 printf("离开: 是\n");
				 }

			}
		}
    }
    return OK;
}


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值