设计停车场管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件学院

综合训练项目报告书

课程名称数据结构

项目名称停车场管理系统

专业班级

组别 4 成员

任课教师

目录

1 设计时间 (3)

2设计目的 (3)

3 设计内容 (3)

3.1问题分析 (3)

3.2数据结构与说明 (3)

3.3程序设计 (3)

3.4测试与分析 (10)

3.4源程序代码 (14)

27

CarNode *stack[Max+1];

int top;

}LinkQueueStation; /*模拟车站*/

typedef struct car

{

CarNode *data;

struct car *next;

}QueueNode;

typedef struct Node

{

QueueNode *front;

QueueNode *rear;

}LinkQueueCar; /*模拟通道*/

4.主函数

void main()

{

LinkQueueStation Enter,Temp;

LinkQueueCar Wait;

int ch;

InitStack(&Enter); /*初始化车站*/

InitStack(&Temp); /*初始化让路的临时链表*/ InitQueue(&Wait); /*初始化便道*/

printf("\n");

printf(" 欢迎进入停车场管理系统!^_^\n");

printf(" 本程序为个人版权\n");

printf("提示! (1).该车库的最大容量为:%d;\n" ,MAX);

printf(" (2).该车库的收费标准为:%4.2f元/(辆*分钟).\n",price);

while(1)

{

printf("********************主菜单********************\n");

printf("1.车辆到达");

printf(" 2.车辆离开");

printf(" 3.列表显示");

printf(" 4.退出系统\n");

printf("**********************************************\n");

printf("请选择(1-4):[ ]\b\b");

while(1)

{

scanf("%d",&ch);

if(ch>=1&&ch<=4)break;

else printf("错误!请重选(1-4):[ ]\b\b");

}

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;

}

}

}

5.车辆到达函数

int Arrival(LinkQueueStation *Enter,LinkQueueCar *W) /*车辆到达*/

{

CarNode *p;

QueueNode *t;

p=(CarNode *)malloc(sizeof(CarNode));

flushall(); /*清除所有缓冲区*/

printf("请输入车牌号(例如:中CUG888):");

gets(p->num);

if(Enter->top

{

Enter->top++;

printf("该车在车库位置%d.\n",Enter->top);

printf("请输入到达时间(**:**):");

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);

}

}

7.车辆离开函数

void Leave(LinkQueueStation *Enter,LinkQueueStation *Temp,LinkQueueCar

*W) /*车辆离开*/

{

int i, room;

CarNode *p,*t;

QueueNode *q;

/*判断车库内是否有车*/

if(Enter->top>0) /*有车*/

{

printf("请输入车在车库的位置(1--%d):",Enter->top);/*输入车辆离开的信息*/

while(1)

{

scanf("%d",&room);

if(room>=1&&room<=Enter->top) break;

else printf("错误!请重选:");

}

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->front!=W->rear)&&Enter->top

{

q=W->front->next;

t=q->data;

Enter->top++;

printf("\n便道的%s号车进入车场第%d位置.",t->num,Enter->top);

printf("\n请输入现在的时间(**:**):");

scanf("%d:%d",&(t->reach.hour),&(t->reach.min));

W->front->next=q->next;

if(q==W->rear) W->rear=W->front;

相关文档
最新文档