




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . 实验2 停车场管理系统班级: 信B0811 学号: 15号 : 段增锋 指导教师签名: 成绩:_一、问题描述设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。设计要求:1模拟上述管理过程。要求以顺序栈模拟停车场,
2、以链队列模拟便道。2从终端读入汽车到达或离去的数据,每组数据包括三项:(1)是“到达”还是“离去”;(2)汽车牌照;(3)“到达”或“离去”的时刻。二、算法说明typedef struct time int hour; int min;Time;/定义结构体变量Timetypedef struct node char num6; /用字符数组来存放车牌 Time reach; /车辆到达时间 Time leave; /车辆离去时间CarNode;typedef struct NODE CarNode *stackMAX+1;/用来存放栈中元素的一维数组 int top; /栈指针SeqStac
3、kCar;/定义顺序栈typedef struct car CarNode *data; /数据域 struct car *next;/指向下一个结点QueueNode;/链队的结点类型typedef struct Node QueueNode *front;/队首指针 QueueNode *rear; /队尾指针LinkQueueCar;/定义链队列类型2算法说明使用死循环和选择结构实现菜单项,使用栈与队列实现停车场管理的各项功能,如栈的进栈、出栈,队列的入队、出队等操作。三、测试结果第一组测试用例:1测试输入:5或字母回车2测试目的:程序的健壮性3正确输出:输入字母出现死循环,输入数字提示
4、选择(14)4实际输出:输入字母出现死循环,输入数字提示选择(14) 5错误原因:无6当前状态:通过第二组测试用例:1测试输入:1回车2测试目的:能否实现停车场车辆到达登记(数据能够真正进栈)3正确输出:(1 回车请输入车牌号(例:赣 B0689):赣1234回车 )车辆在车场第1位置. (回车 车辆到达时间:3:05) 4实际输出:(1 回车请输入车牌号(例:赣 B0689):赣1234回车) 车辆在车场第1位置. (回车 车辆到达时间:3:05)5错误原因:无 6当前状态:已修改第三组测试用例:1测试输入:1回车2测试目的:能否实现停车场车辆到达登记(数据能够真正进栈)3正确输出:(1 回
5、车请输入车牌号(例:赣 B0689):赣234回车) 车辆在车场第2位置. (回车 车辆到达时间:3:08) 4实际输出:(1 回车请输入车牌号(例:赣 B0689):赣234回车) 车辆在车场第2位置.( 回车 车辆到达时间:3:08)5错误原因:无 6当前状态:已修改第四组测试用例:1测试输入:1回车2测试目的:能否实现停车场车辆到达登记(数据能够真正进栈)3正确输出:(1 回车请输入车牌号(例:赣 B0689):赣34回车) 车辆在车场第3位置. (回车 车辆到达时间:3:10)4实际输出:(1 回车请输入车牌号(例:赣 B0689):赣34回车) 车辆在车场第3位置. (回车 车辆到达
6、时间:3:10)5错误原因:无 6当前状态:已修改第五组测试用例:1测试输入:1回车2测试目的:能否实现停车场车辆到达登记(数据能够真正进栈)3正确输出:该车需在便道等待,有车位是进入车场。4实际输出:该车需在便道等待,有车位是进入车场。5错误原因:无 6当前状态:已修改第六组测试用例:1测试输入:2 回车2测试目的:车辆离开并且登记是否能够通过(车从临时栈中退出) 3正确输出:(输入离开车场位置:2 车辆离开的时间:3:20 离开车辆的车牌号:赣234)其到达时间为:3:8离开时间:3:20应交费用:0.60元 便道的赣56号车进入车场第3位置 4实际输出:(输入离开车场位置:2 车辆离开的
7、时间:3:20 离开车辆的车牌号:赣234)其到达时间为:3:8离开时间:3:20应交费用:0.60元 便道的赣56号车进入车场第3位置5错误原因:无6当前状态:已修改(按车牌离开未能实现)第七组测试用例:1测试输入:3 回车2测试目的:车辆列表的显示功能的实现(队列的输出)3正确输出:请选择(1|2|3) 1.车场列表 2.便道列表 3返回主菜单4实际输出:请选择(1|2|3) 1.车场列表 2.便道列表 3返回主菜单 5错误原因:无6当前状态:修改第八组测试用例:1测试输入:1 回车2测试目的:车场列表的显示功能 3正确输出:车场位置 到达时间 车牌 1 3:5 赣1234 2 3:10
8、赣34 3 (输入的时间)赣564实际输出:车场位置 到达时间 车牌 1 3:5 赣1234 2 3:10 赣34 3 (输入的时间) 赣56 5错误原因:无(第四辆车在便道等候,在上一步输入的时间)6当前状态:修改第九组测试用例:1测试输入:2 回车2测试目的:便道列表的显示功能(队列的输出)3正确输出:(如果便道无车)便道里没有车。(反之)显示车辆的信息 4实际输出:(如果便道无车)便道里没有车。(反之)显示车辆的信息 5错误原因:无6当前状态:修改第十组测试用例:1测试输入:3 回车2测试目的:能否返回主菜单3正确输出:(能返回)主菜单4实际输出:(能返回)主菜单 5错误原因:无6当前状
9、态:通过第十一组测试用例:1测试输入:4 回车2测试目的:程序的退出功能的检测3正确输出:退出系统4实际输出:退出系统 5错误原因:无6当前状态:通过测试结果分析:该系统较完善的实现了停车场管理的各项功能,通过使用栈与队列,能够较快的实现停车场的车辆的进场与车场的进车场、退出等操作。掌握栈的“后进先出”队列的“先进先出”原理。附录:源代码源代码列在附录中,要求程序风格清晰易理解,有充分的注释,有意义的注释行少于代码的30%将不能得分。#include<stdio.h>#include<stdlib.h>#include<string.h>#define MA
10、X 3 /停车场最多的停车数#define price 0.05 /每单位时间停车费用typedef struct time int hour; int min;Time;/定义结构体变量Timetypedef struct node char num6; /用字符数组来存放车牌 Time reach; /车辆到达时间 Time leave; /车辆离去时间CarNode;typedef struct NODE CarNode *stackMAX+1;/用来存放栈中元素的一维数组 int top; /栈指针SeqStackCar;/定义顺序栈typedef struct car CarNode
11、 *data; /数据域 struct car *next;/指向下一个结点QueueNode;/链队的结点类型typedef struct Node QueueNode *front;/队首指针 QueueNode *rear; /队尾指针LinkQueueCar;/定义链队列类型void InitStack(SeqStackCar *); /初始化顺序栈int InitQueue(LinkQueueCar *); /初始化链队列int Arrival(SeqStackCar *,LinkQueueCar *); /车辆到达函数的定义void Leave(SeqStackCar *,SeqS
12、tackCar *,LinkQueueCar *); /车辆离去函数的定义void List(SeqStackCar,LinkQueueCar); /输出栈和队列中的元素/主函数模块void main() SeqStackCar Enter,Temp;/定义车辆进栈变量Enter,和存放临时栈变量Temp LinkQueueCar Wait; /定义车辆在便道等待变量 Wait int ch; InitStack(&Enter); /初始化 InitStack(&Temp); InitQueue(&Wait);/初始化 while(1) /* 菜单1 */printf(
13、"*欢迎进入停车场管理系统*n"); printf("n1. 车辆到达登记"); printf(" 2. 车辆离开登记"); printf(" 3. 车辆列表显示"); printf(" 4. 退出系统n");while(1) scanf("%d",&ch); /从键盘输入你选择的菜单项 if(ch>=1&&ch<=4)break; else printf("n请选择: 14."); switch(ch) case 1:
14、Arrival(&Enter,&Wait);break; case 2:Leave(&Enter,&Temp,&Wait);break; case 3:List(Enter,Wait);break; case 4:exit(0); default: break; void InitStack(SeqStackCar *s)/初始化栈,建造一个空栈 int i; s->top=0; for(i=0;i<=MAX;i+) s->stacks->top=NULL;int InitQueue(LinkQueueCar *Q) /* 初始化
15、队列,建立一个空队列 */ Q->front=(QueueNode *)malloc(sizeof(QueueNode); if(Q->front!=NULL) Q->front->next=NULL; Q->rear=Q->front; return(1); else return(-1);/溢出/车辆到达模块int Arrival(SeqStackCar *Enter,LinkQueueCar *W) CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode);/为p结点分配空间 flush
16、all(); printf("n请输入车牌号(例:赣B0689):"); gets(p->num); /输入车牌号 if(Enter->top<MAX) Enter->top+; printf("n车辆在车场第%d位置.",Enter->top); printf("n车辆到达时间:"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min);/输入到达时间 Enter->stackEnter->top=p;
17、 return(1); else printf("n该车须在便道等待!有车位时进入车场n"); t=(QueueNode *)malloc(sizeof(QueueNode); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1); /车辆离开模块void PRINT(CarNode *p,int room) int A1,A2,B1,B2; printf("n车辆离开的时间:"); scanf("%d:%d",&(p->
18、;leave.hour),&(p->leave.min); printf("n离开车辆的车牌号为:"); puts(p->num);/输出车牌号 printf("n其到达时间为: %d:%d",p->reach.hour,p->reach.min); printf("离开时间为: %d:%d",p->leave.hour,p->leave.min); A1=p->reach.hour; /将p指向的车辆到达时间赋值给A1 A2=p->reach.min; B1=p->lea
19、ve.hour; B2=p->leave.min; printf("n应交费用为: %2.2f元",(B1-A1)*60+(B2-A2)*price);/计费 free(p);void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) int room; CarNode *p,*t; QueueNode *q;if(Enter->top>0) while(1) printf("n请输入车在车场的位置/1-%d/:",Enter->top);/输入车场的位置 sc
20、anf("%d",&room); if(room>=1&&room<=Enter->top) break;while(Enter->top>room) Temp->top+; Temp->stackTemp->top=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; p=Enter->stackEnter->top; Enter->stackEnter->top=NUL
21、L; Enter->top-;while(Temp->top>=1) Enter->top+; Enter->stackEnter->top=Temp->stackTemp->top; Temp->stackTemp->top=NULL; Temp->top-;PRINT(p,room);if(W->front!=W->rear)&&Enter->top<MAX) /车辆在便道的相关操作如下 q=W->front->next; t=q->data; Enter->t
22、op+; printf("n便道的%s号车进入车场第%d位置.",t->num,Enter->top); printf("n请输入%s号车进入车场的时间:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min); W->front->next=q->next; if(q=W->rear) W->rear=W->front; Enter->stackEnter->top=t; free(q);else printf("n便道里没有车.n");else printf("n车场里没有车."); void List1(SeqStackCar *S) int i; if(S->top>0) printf("n 车场位置 到达时间 车牌号n");for(i=1;i<=S->top;i+) printf(" %d ",i); printf(" %d:%d ",S->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 益阳医学高等专科学校《人才素质测评与选拔》2023-2024学年第二学期期末试卷
- 做账实操-机械制造公司的账务处理分录
- 郑州经贸学院《网路原理与技术》2023-2024学年第二学期期末试卷
- 陕西服装工程学院《专业课程综合2(酒店)》2023-2024学年第二学期期末试卷
- 贵阳人文科技学院《环境与食品安全》2023-2024学年第二学期期末试卷
- 2025山西省建筑安全员-C证考试题库
- 广西财经学院《老年社会工作》2023-2024学年第二学期期末试卷
- 大连理工大学城市学院《地理空间数据库》2023-2024学年第二学期期末试卷
- 常德职业技术学院《药剂学A》2023-2024学年第二学期期末试卷
- 山西金融职业学院《公共危机治理》2023-2024学年第二学期期末试卷
- 2024年萍乡卫生职业学院单招职业技能测试题库标准卷
- 2025年重庆三峰环境集团招聘笔试参考题库含答案解析
- 育婴培训课件
- 《管理品牌资产》戴维·阿克著
- 药品网络交易服务三方平台质量管理体系文件-B2B平台(完整版)
- 粤教粤科版三年级下册科学全册课时练(同步练习)
- 电网数字化项目工作量度量规范应用指南(2020版)
- 小学开学第一课禁毒安全
- 2025年砌筑工职业技能(中级)知识考试题库及答案
- 开题报告:适应人口发展趋势的区域教育结构优化与政策调整研究
- 【MOOC】跨文化交际-苏州大学 中国大学慕课MOOC答案
评论
0/150
提交评论