设计停车场管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;