停车场管理课程设计报告--停车场管理模拟程序的设计.doc_第1页
停车场管理课程设计报告--停车场管理模拟程序的设计.doc_第2页
停车场管理课程设计报告--停车场管理模拟程序的设计.doc_第3页
停车场管理课程设计报告--停车场管理模拟程序的设计.doc_第4页
停车场管理课程设计报告--停车场管理模拟程序的设计.doc_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计报告 学 院:_电气与信息工程学院_ 专业班级: 计科2011-01 设计地点(单位)_ _ 计算机基础自主学习中心 _ _ _设计题目:_ _ _ _ 指导教师评语: _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 课程设计任务书设计题目:停车场管理模拟程序的设计学生姓名 课程名称数据结构课程设计专业班级计科2011-01,02,03,04地 点计算机基础自主学习中心起止时间2012.6.25-2012.7.6设计内容及要求假设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开时必须按它停留的时间长短交纳费用(在便道上停车不收费)。试为停车场编制按上述要求进行管理的模拟程序。要求:以栈模拟停车场,以队列模拟便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置(停车位从北向南依次编号);若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。程序退出时,应将停车场的当前情况保存在磁盘上,以便下次运行程序时能恢复到上次退出时的状态。设计参数 测试数据要求:停车费用单价为每小时3元,不足一小时部分四舍五入,例如4.6小时按5小时收费。程序运行时,n由键盘输入(6n20)。进度要求2012.6.25 完成任务的讲解、并接受课程设计任务,选定课程设计的题目2012.6.26 了解任务的算法、并画出算法的程序流程图,对任务的关键技术进行验证、并确定解决办法2012.6.27-2012.6.29 程序设计及编码,上机调试2012.7.02 对程序进行调试,设计测试用例进行测试2012.7.03 整理课程设计的过程、并进行总结,完善程序功能2012.7.04 编写课程设计报告初稿2012.7.05 完善课程设计报告、并准备答辨2012.7.06 提交课程设计报告和程序,进行答辨参考资料1严蔚敏 吴伟民, 数据结构,清华大学出版社,2007.32程杰 ,大话数据结构,清华大学出版社,2011.63(美)Stephen Prata, C Primer Plus中文版(第五版),人民邮电出版社,2005.2其它说明1.本表应在每次实施前一周由负责教师填写二份,学院审批后交学院教务办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。 摘 要在这个信息发达的当前社会,计算机已成为每一个人的必修课,计算机所带来的方便使得每一个人的生活都变的更加方便快捷,数据结构这门学科提供了对数据的各种操作。这个程序应用了栈和对列(以栈模拟停车场,以队列模拟便道),包含了到达、离去、依次显示停车场内停放车辆、依次显示便道上停放车辆、读取、保存6大功能。通过栈模拟停车场,以队列模拟便道达到了本程序的目的。这个程序有一个主函数包含几个复函数的结构形式,使得整个程序看来井井有条,不论对于编程,还是错误修改都能带来方便,这个程序的优点在于。关键词:栈 队列 模拟 主函数 目 录摘 要31设计内容与要求51.1设计主要要求51.2基本设计要求52 算法思路62.1两个栈和一个队列62.2操作: 栈62.3队列:进队:车辆进入63 主要功能及运行流程73.1功能介绍73.2 具体流程74 代码实现94.1 主函数94.2核心代码104.2.1停车场栈的定义104.2.2定义便道104.2.3查找某牌照的车在停车场中的位置104.2.5进栈,出栈114.2.6依次显示停车场内停放的所有车辆114.2.7依次显示便道上停放的所有车辆124.2.8入队操作125 操作测试135.1 具体操作135.1.1 开始13总 结20参考文献21致 谢22191设计内容与要求利用栈和队列分别模拟停车场位置和便道,主函数与复函数组合构成整个程序,通过对复函数的各种的调用以达到目的。1.1设计主要要求假设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开时必须按它停留的时间长短交纳费用(在便道上停车不收费)。试为停车场编制按上述要求进行管理的模拟程序。1.2基本设计要求以栈模拟停车场,以队列模拟便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置(停车位从北向南依次编号);若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。程序退出时,应将停车场的当前情况保存在磁盘上,以便下次运行程序时能恢复到上次退出时的状态。2 算法思路2.1两个栈和一个队列根据题目要求,停车场只有一个大门,因此可用一个栈来模拟:当栈满后,继续来到的车辆只能停在便道上,根据便道停车的特点,可知这可以用一个队列来模拟,先排队的车辆先离开便道,进入停车场。由于排在停车场中间的车辆可以提出离开停车场,并且要求在离开车辆到停车场大门之间的车辆都必须先离开停车场,让此车离开,然后让这些车辆依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要用一个栈来保存为了让路离开停车场的车辆。所以本题要用两个栈和一个队列。2.2操作: 栈进栈:车辆进入出栈:车辆离开查找:允许排中间的车辆先离开停车场,因此需要在栈中进行查找。2.3队列:进队:车辆进入出队:车辆离开查找:允许排中间的车辆先离开停车场,因此需要在队中进行查找。3 主要功能及运行流程3.1功能介绍本程序一共有6大功能,分别为到达、离去、依次显示停车场内停放车辆、依次显示便道上停放车辆、读取、保存。各种功能以满足使用者的需求。通过以上功能可以记录车辆的到达时间、离去时间用以计算车辆的停车费用,还可以查看停车场的停车状况。3.2 具体流程打开程序后,首先要输入每小时的停车费用,然后选择需要进行的命令,然后按提示输入即可。当要推出程序时应将停车场的当前情况保存在磁盘上,以便下次运行程序时能恢复到上次退出时的状态,当要推出时选择退出指令即可。主 函 数Find(*t,x) 查找某牌照的车在停车场中的位置ShowSeqstack(*t) 依次显示停车场内停放的所有车辆Showbiandao(*Q) 依次显示便道上停放的所有车辆IsSeqstackEmpty(*t) 判断停车场内是否已没有车辆Pop(t,y,&hh,&mm,&ss) 出栈Push(t,x,hh,mm,ss) 进栈开 始这个程序是主函数包含副函数构成的,所以在程序中可以看到许多的单独定义的副函数图3.1 主要函数结构图输入每小时的停车费用4依次显示便道上停放车辆3依次显示停车场内停放车辆7结束5读取6保存1到达2离开结 束开始图3.2 程序流程图车辆进入停车场停车场停车位置共5便 道 A1 A2 A3 A4 A5.图3.3停车场模拟图4 代码实现为了实现程序的目的,需要定义很多函数和创建结构体,在模拟停车场和便道的时候都需要创建结构体。4.1 主函数实现程序目的void main()double time,cost;int ch;int x,*y,z;int i,flag=1,h,m,s,unit_price,hh,mm,ss;y=new int;Seqstack *t; /定义停车场栈t=new Seqstack;InitSeqstack(t);biandao *Q; /定义便道队列Q=new biandao;Initbiandao(Q);Seqstack *r; /定义让路栈r=new Seqstack;InitSeqstack(r);printf(请设置停车费用单价:(_元/小时)n);scanf(%d,&unit_price);while(flag)printf(*n);printf(请选择命令n);printf(1:到达n);printf(2:离开n);printf(3:依次显示停车场内停放车辆n);printf(4:依次显示便道上停放车辆 n);printf(5:读取n);printf(6:保存n);printf(7:结束n);printf(*n);scanf(%d,&ch);switch(ch)case 1:case 2:case 3:case 4: case 5: case 6: case 7:4.2核心代码核心代码里是使程序完成各种功能的不同代码。4.2.1停车场栈的定义typedef structDatatype bianhaoM; /定义停车场的大小int top; /定义栈顶 int hM; /天 int mM; /时 int sM; /分Seqstack; 4.2.2定义便道typedef structnode *front;node *rear;int count;biandao; /结构体定义队列typedef struct Node /便道结点,表示一辆汽车Datatype bianhao; struct Node *next;node;4.2.3查找某牌照的车在停车场中的位置int Find(Seqstack t,int x)int i; for(i=0;it.top)return(-1); /当i栈顶时,错误else return(i); /输出位置i4.2.4依次显示便道上停放的所有车辆void Showbiandao(biandao Q)node *p; /定义节点Pp=Q.front-next; /头结点指向下一个节点if(p=NULL)printf(便道上没有停放车辆!n);else while(p!=NULL) printf(牌照:%d ,p-bianhaon); p=p-next; /指向下一个节点4.2.5进栈,出栈int Push(Seqstack *t,int x,int h,int m,int s)if(t-top=M-1)return 0; /确定停车场栈已满t-top+;t-bianhaot-top=x;/将新插入的元素赋值给栈顶空间t-ht-top=h;t-mt-top=m;t-st-top=s;return 1;int Pop(Seqstack *t,int *x,int *h,int *m,int *s)if(t-top=-1) /return 0;else*x=t-bianhaot-top; /将要删除的栈顶元素赋值给x*h=t-ht-top;*m=t-mt-top;*s=t-st-top;t-top-; /栈顶指针减一return 1;4.2.6依次显示停车场内停放的所有车辆void ShowSeqstack(Seqstack t)int i;if(t.top=-1) /确定停车场是否停放了车辆printf(停车场内没有停放车辆n); else for(i=0;inext; /头结点指向下一个节点if(p=NULL)printf(便道上没有停放车辆!n);else while(p!=NULL)/条件循环显示便道上的停放的车辆 printf(牌照:%d n,p-bianhao); p=p-next; /指向下一个节点4.2.8入队操作当停车场满了的时候,再到达的车辆进去便道队列int Enterbiandao(biandao *Q,int x)node *NewNode; /定义节点NewNode=new node; if(NewNode!=NULL) NewNode-bianhao=x; /将节点赋值为XNewNode-next=NULL; /将下一个节点定义为空Q-rear-next=NewNode;/把拥有元素x新节点NewNode赋值给原队尾结点的后继Q-rear=NewNode; / 把当前的NewNode设置为对尾节点,rear指向NewNode Q-count+; return(true);else return(false);5 操作测试通过实际操作,进一步确定程序是否有错,是否符合设计要求。5.1 具体操作为了使程序更加完整,也为了进一步检测程序是否还有漏洞这需要对程序进行全方位的测试,所以一次完整的测试时必须的。5.1.1 开始打开程序首先会提示输入停车费用。具体测试如图所示:图5.1当输入具体数字后会出现程序提示指令具体测试如图所示:图5.2如果有车辆进入选择1会提示输入车牌号与进入停车场时间具体测试如图所示:图5.3如果要查看停车场内的停车情况可以选择3会显示停车状况具体测试如图所示:图5.4当有车要离开时可以输入指令2,输入指令后会提示输入离开时间用以计算停车费用。具体测试如图所示:图5.5由于车辆离开停车场为空,所以当我们再次输入指令3时,会出现提示停车场内没有车辆。具体测试如图所示:图5.6当进入车辆大于5时,所停车辆会在便道等候。具体测试如图所示:图5.7当需要查看停车场和便道的具体情况的时候可以输入34指令。具体测试如图所示:图5.8图5.9使用完后可以使用保存功能保存当前数据以便可以下次继续使用。具体测试如图所示:图5.10图5.11最后当要结束本软件的时候可以输入指令7。具体测试如图所示:图5.12总 结本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论