版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验二停车场管理班级:A0712学号:12姓名:冷清淼成绩: 指导教师签名:一、问题描述设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。 在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端) 若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时, 便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆 必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车 场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不 收费)。设计要求:1 模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。
2、2 从终端读入汽车到达或离去的数据,每组数据包括三项:(1) 是“到达”还是“离开”;(2) 汽车牌照号码;(3) “到达”或“离开”的时刻。3 与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停 车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和 应交的费用。二、算法说明1 数据结构说明(1) 用到两个堆栈:一个为车场栈;另一个为临时栈temptypedef struct NODECarNode *stackMAX+1;int top;SeqStackCar; /* 模拟车场 */(2) 一个队列结构,存储便道车辆信息:typedef struct NodeQ
3、ueueNode *head;QueueNode *rear;LinkQueueCar; /* 模拟便道 */2算法说明(1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示/ 停车场系统32车辆到达车辆离开列表显示图1(2 )以模块为单位分析算法1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图图2如图3。2“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。图33.“显示”图44。三、测试结果(一)测试用例(说明:测试用例要合理并且足够, 既要有正确用例,也要有错误用例, 同时检验程序的正确性和强壮性)1
4、第一组测试用例(1) 测试输入:停车场的车辆离开,如下表:服务选择车牌号/车位到达/离开时间1QH05815: 251AB12318: 451EA64223: 15220: 30210: 65 (错误)(2) 测试目的:测试离开方法时间格式控制以及费用计算是否正确。(3) 正确输出:第一次离开的是AB123,应交费3.45元。第二次时,当在输入 65时,应该提示输入错误,重输。(4) 实际输出:门5注课稈学习集l程存设计实习停年场问黑其辆时间用没 车3达 幵12到 离IABIM;藍应唇间为为0 S3 0: 0 3为-:二MIL /cD八课程学习集程序设计实习停车场何开書CC 达52 f 5:5
5、兀 16 4 65* 间为为 时间規制。(5)错误原因:第个错误是在计算时,一个数字错了;第二个是没有对时间格式控(6)当前状态:已改正2 第二组测试用例(1)测试输入:连续 6辆车到达,如下表:服务选择车牌号到达时间1A88287: 561S22968: 251WW6668: 451HK45615: 501GH99912: 301DD55513: 40(2) 测试目的:测试到达方法与列表显示方法能否正确完成。(3) 正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。(4) 实际输出:到达庄7:56S:25345 15:50 12 = 30A8828S2276HK456GH999
6、“深程学习集I程序设计实习停车场问題I代码夹I单代码夹De-_-4请选择您賢显示信息;:1-4M2 -便道滋-3 - J1H您选择的是侵道传车情况T 等特车辆的聿牌耳码为:(5)错误原因:没有作出时间先后的判断,而是先输入先进入。请选择您要显示信息 =(6)当前状态:待修改3第三组测试用例(1)测试输入:接上一步输入离开信息,下表:服务选择离开车位离开时间便道车进入时间2313: 3013: 40(2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。(3) 正确输出:输出 3号车位的车辆离开信息清单,便道1号车进入停车场。(4) 实际输出:“ F八滦程学习集、程序谟计实习停车场何題
7、、代码夹、单代码夹Debug. . . |Fj&r-*1 B fap:UW,% 快 “:*y抡f丄:* d戈.打:/ 3*# - :“ 丁加?舄:一:?涤-1.4.车荊到达 车無离芳 列裹显示 退出系统很-”探一 探-*一孤熾攀严入郴,在输入“时”后,按皿”或者“空格” 请选暮所鬻要的般务? .示探 显一二 您车鲁 择2.3- 选一一一 请探您迤样的是车场停车情呪辛 位晝到达时间车鶴1 7:56A88262 8:25S22963 15:56HK4564 12:3(iGH9995 13:40DD555请选择您要显示信思,“-3”(5) 错误原因:没有错误。(6) 当前状态:通过(二)测试结果分析
8、此停车管理系统基本可能实现一个小的停车场的管理,其“到达”与“离开”方法都相对比较完整,以及结算清单明了。 尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出现死去或崩溃。若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等, 而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。会慢慢完善。附录:源代码/系统说明:本系统适应于小型停车场,且停车时间在一天之内的短期停放停车场。在此系统中,车库容量设置为5,便于测试。在实际使用中可以对容量大小按实际情况设置。#in clude#in clude#in c
9、lude#in clude#define MAX 5 /*车库容量,可以根据实际情况改变*/#define price 0.01 /* 一辆车每分钟费用,可变 */typedef struct timeint hour;int min;Time; /*时间结点*/typedef struct nodechar num10;Time reach;Time leave;CarNode; /*车辆信息结点*/typedef struct NODECarNode *stackMAX+1;int top;SeqStackCar; /* 模拟停车场 */typedef struct carCarNode
10、*data;struct car *n ext;QueueNode;typedef struct NodeQueueNode *head;QueueNode *rear;LinkQueueCar; /* 模拟便道 */*方法声明*/void InitStack(SeqStackCar *); /* 初始化栈 */int InitQueue(LinkQueueCar *); /* 初始化便道 */int Arrival(SeqStackCar *,LinkQueueCar *); /* 车辆到达 */void Leave(SeqStackCar *,SeqStackCar *,LinkQueue
11、Car *); /* 车辆离开 */void List(SeqStackCar,LinkQueueCar); /* 显示信息 */void PRINT(CarNode *p,int room); /* 输出离开车辆的信息清单 */void mai n()system(color F2);/*设置系统颜色,本系统为白底绿字f2*/SeqStackCar En ter,Temp;Lin kQueueCar Wait;int ch;InitStack(&Enter); /* 初始化车站 */InitStack(&Temp); /*初始化让路的临时栈 */InitQueue(&Wait); /* 初始
12、化通道 */while(1)cout探欢迎使用本停车管理系统探e ndl;cout探-探1.车辆到达探-探e ndl;cout-探 2.车辆离开探-探e ndl;cout探-探 3.列表显示探-探e ndl;cout探-探 4.退出系统探-探e ndl;cout*e ndl;cout*e ndl;cout!说明:请注意正确输入时间,在输入时”后,按“ ENTER或者空格”再输入分”不要为非数字!endl;cout请选择所需要的服务!(1-4). ch;if(ch=1 &ch=4)break;else cout输入错误!请选择:(1-4).top=0;for(i=0;istacks-top=NU
13、LL;int InitQueue(LinkQueueCar *Q)/* 初始化便道 */ Q-head=(QueueNode *)malloc(sizeof(QueueNode); if(Q-head!=NULL)Q-head- next=NULL;Q-rear=Q-head;return(1);else return(-1);int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达 */CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode);flushall();cout请输入
14、车牌号(例:A1234):nu m);if(E nter-toptop+;cout车辆在车场第top 位置!endl; cout请输入到达时间:(小时:分钟) p-reach.hour; while(p-reach.hourreach.hour23) / 控制时间格式正确 cout输入错误!endl;cout请重输入到达时间的时 (0-23)! p-reach.hour;cin p-reach. min;while(p-reach.mi*O|p-reach.min59) / 控制分钟输入正确 cout输入错误!endl;cout请重输入到达时间的分 (0-59)! p-reach. min;E
15、n ter-stackE nter-top=p;return(1);车辆离开*/*/else /*车场已满,车进便道*/cout车场已满,请在便道等待!data=p;t- next=NULL;W-rear- n ext=t;W-rear=t;return(1);void Leave(SeqStackCar *En ter,SeqStackCar *Temp,Li nkQueueCar *W) /*int room;CarNode *p;QueueNode *q;/*判断车场内是否有车*/if(Enter-top0) /* 有车 */while(1) /*输入离开车辆的信息*/cout请输入车在
16、车场的位置1-top=1 &roo mtop) break;while(Enter-toproom) /* 车辆离开 */Temp-top+;/*临时通道栈顶指针*/Temp-stackTemp-top=E nter-stackE nter-top;En ter-stackE nter-top=NULL;En ter-top-;p=E nter-stackE nter-top;En ter-stackE nter-top=NULL;En ter-top-;while(Temp-top=1)/*判断临时通道上是否有车*/En ter-top+;En ter-stackE nter-top=Tem
17、p-stackTemp-top;Temp-stackTemp-top=NULL;Temp_top_;PRINT(p,room);if(W-head!=W-rear)&En ter-tophead-n ext;p=q-data; /*p指向链队头*/En ter-top+;cout便道的num号车进入车场第top位 置!e ndl;cout请输入现在的时间如 (小时:分钟): p-reach.hour;if(p-reach.hourreach.hour23)cout输入错误!endl;cout请重输入到达时间的时(0-23)! p-reach.hour;cin p-reach. min;if(p
18、-reach. minreach. min 59)cout输入错误!endl;cout请重输入到达时间的分(0-59)! p-reach. min;En ter-stackE nter-top=p;W-head-n ext=q-n ext;if(q=W-rear) W-rear=W-head;free(q); /* 释放 q 地址 */else cout便道里没有车!endl;/*便道没车*/else cout车场里没有车!endl; /*车场没车*/void PRINT(CarNode *p,i nt room) /*输出离开车辆的信息清单*/int A1,A2,B1,B2;cout请输入离
19、开的时间:(小时:分钟) p-leave.hour;while(p-leave.hourleave.hour23)cout输入错误!endl;cout请重输入离开的时间的时(0-23) p-leave.hour;B1=p-leave.hour;cin p-leave .min;if(p-leave .minleave. min 59)cout输入错误!endl;cout请重输入到达时间的分 (0-59)! p-leave .min;coutendl离开车辆的车牌号为 :nu m);cout其至U达时间为:reach.hour:reach.minendl;cout离开时间为:leave.hour:leave.minreach.hour;A2=p-reach. min;B1=p-leave.hour;B2=p-leave .min;cout应交费用为:(B1-A1)*60+(B2-A2)+1440)%1440*price元!endl;free(p);void List1(SeqStackCar *S) /* 列表显示车场信息 */cout您选择的是车场停车情况!top0) /*判断车站内是否有车 */cout位置到达时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 梳理热风非织造布制作工安全生产知识测试考核试卷含答案
- 己二腈装置操作工岗前复试考核试卷含答案
- 河南省洛阳市2024-2025学年八年级上学期期末地理试题
- 教育质量与成果探讨
- 特训03 一元二次方程应用题分类通关专练-2025-2026学年九年级数学上学期期中期末挑战满分冲刺卷(人教版)(解析版)
- 2025西安工业投资集团招聘(2人)笔试历年参考题库附带答案详解
- 2025安徽蚌埠自贸区城发人力资源有限公司第六期招聘拟录用人员笔试历年参考题库附带答案详解
- 2025中国国新资产管理有限公司相关岗位招聘4人笔试历年参考题库附带答案详解
- 安徽省七年级地理下学期期末分类专练:西半球的国家和极地地区(5大考点+百题过关)原卷版
- 2025年潍坊市财鑫智慧能源科技集团有限公司招聘笔试历年参考题库附带答案详解
- 中国老年高血压管理指南(2023版)解读
- 《民法典》合同编实务培训课件
- 道德与法治初一上全册知识点(含思维导图)
- 微项目3《计算生成新的数据》教学设计-2024-2025学年泰山版(2019)初中信息技术第三册(八年级上)
- 2025年时事政治考试44题及参考答案
- 冬季猪舍保温与通风
- 八条硬措施培训课件
- 【大学课件】风险导向的内部审计案例分析
- 2025年中移铁通广西分公司招聘笔试参考题库含答案解析
- 2025年山东滨州市博兴县千乘文旅体育产业集团有限公司招聘笔试参考题库附带答案详解
- 信息化项目风险应对措施
评论
0/150
提交评论