ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:27.71KB ,
资源ID:4106447      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4106447.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构应用设计报告停车场系统模拟.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构应用设计报告停车场系统模拟.docx

1、数据结构应用设计报告停车场系统模拟数据结构应用设计设计报告题目名称:停车场系统模拟设计环境:指导教师:专业班级:姓 名:学 号:联系电话:电子邮件:设计日期:2009年12月12日至2009年12 月 28 日设计报告日期:2009年12 月29日停车场系统模拟摘要:一个比较好的停车场管理系统可以给管理方带来极大便利,系统可以提供的一些关于停车场信息查询服务包括:车辆进出信息,显示车场内停车信息,退出系统服务等。主要设计一个栈模拟停车场,一个队列模拟便道,以实现停车场系统的功能。关键词:栈;队列;链式结构1 题目 2 需求分析 2.1 输入数据及判错2.2 输出的形式2.3 程序功能2.4 测

2、试数据3 详细设计 3.1 数据类型3.2 基本操作3.3其他模块伪码算法4 调试分析 5 测试结果和分析 5.1输入车场,便道基本息5.2选择服务功能5.3车入场信息5.4车出场5.5车辆显示信息5.6退出6案例总结 181 题目 模拟校园导游系统。以图中顶点表示校内各景点,存放景点名称、代号、间介等信息;以边表示路径,存放路径长度等相关信息,通过这种方法实现为来访的客人提供各种信息查询服务。2 需求分析 本演示程序用 C+ 编写,完成一个停车场程序编码2.1 输入的形式和输入值的范围:将要提供的服务,停车场及便道车辆信息查询,车辆进出操作及收费,退出系统服务。输入数据类型是字符串,用于输入

3、车辆牌号;输入数据类型是整型;用于输入停车场及便道容量;输入数据类型是单精度,用于输入收费单价及车辆到达和离去时间。2.2 输出的形式:在所有操作中都显示操作是否正确以及操作后显示用户想得到的内容,输入不正确时,进行报错并提醒继续正确输入操作提示。选择服务操作后,进入相应的更进一步的操作;当输入车辆牌号及到达时间,得到相应的车辆在车场或便道的停放位置;当输入车牌号及离开时间,如果存在相应的车,输出此车的停车费用;当选择显示停车场状况,会输出所有停放车辆信息 2.3 程序所能达到的功能:完成进入四种服务功能:车辆入场,车辆出场,车辆显示,退出系统服务。2.4 测试数据:A 测试输入停车场,便道容

4、量及相应的收费单价信息。B测试车辆入场信息输入。输入Num,即字符串类型,车牌号.输入Cometime单精度型,到达时间。显示车辆在车场或便道停放信息。C测试车出场信息输入。输入Num,即字符串类型,车牌号.输入Leavetime单精度型,到达时间。如果存在相应车辆,显示车辆应付费信息。D测试车辆显示信息输入。直接输入相应的主菜单选择项相对应的M,就会显示车辆停放信息E测试输入非法数据时提示正确的输入操作。 对于程序中任意数据的错误输入,都要相应的处理,并且提示用户请输入正确数据。F测试退出系统功能。输入 4 ,退出系统3 详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。

5、对主程序和其他模块写出伪码算法。 3.1 数据类型/用类LinStack设计链式栈class LinStackprivate: StackNode *top; /指向栈顶的指针 int size; /数据元素个数 public: LinStack(void); /01堆栈类的构造函数 LinStack(void); /02堆栈类的析构函数 int StackSize(void) const; /03取元素个数 int StackEmpty(void) const; /04判断堆栈是否为空 void Push(const T& item); /05入栈*(重点) T Pop(void); /06

6、出栈*(重点) T Peek(void); /07取栈顶元素 void ClearStack(void); /08清空堆栈 用类LinQueue e设计链式栈 private: QueueNode *front; /指向队头结点 QueueNode *rear; /指向队尾结点 int size; /元素个数 public: LinQueue(void); /01队列类的构造函数 LinQueue(void); /02析构函数 void Qinsert(const T& item);/03入队列*(重点) T QDelete(void); /04出队列*(重点) T QFront(void)c

7、onst; /05取队头元素 int QueueEmpty(void)const /06判断队列是否为空 return size=0; ;/注意这个有分号 void ClearQueue(void); /07清空队列*(重点) int GetSize(void)const /08取队列元素个数 return size; ;用结构体Car实现车辆信息struct Car string Num; float Cometime; float Leavetime; float Cometime1;3.2 基本操作 /车辆入场函数void parking(LinStack &s, LinQueue &q

8、, Car b, int n, int j,float &max); char Num = 1; char M100; if(q.GetSize() = j) coutendl; cout 车场车位已满!请等待!endl; else / while(Num = 1 & q.GetSize() j) / cout 请输入车牌号和到达时间endl; coutb.Num; while(1) cinb.Cometime; if(!cin.good() cout 输入错误!输入数据不符合要求!请重新输入入场时间! ; cin.clear(); fflush(stdin); continue; break

9、; if(b.Num != #)/ if(s.StackSize() b.Cometime) cout车到达时间输入有误!(时间要小于之前车辆到达的时间)endl;/ else b.Cometime1 = b.Cometime; max = b.Cometime; s.Push(b); cout 车牌为; coutsetw(5)b.Num 的车停在停车场 ; coutsetw(5)s.StackSize() 号停车位 b.Cometime) | b.Cometime s.Peek().Cometime) cout车到达时间输入有误!(时间要小于之前车辆到达的时间)endl; else if(q

10、.GetSize() j) max = b.Cometime; b.Cometime1 = b.Cometime; q.Qinsert(b); cout 车牌为; coutsetw(5)b.Num 的车停在便道 ; coutsetw(6)q.GetSize() 号停车位endl; else cout 停车场所有车位已满!请稍候!endl; cout *是否继续入场?endl; cout 1.继续入场 2.返回主菜单endl; cout 请输入你的操作编号:M; if(strcmp(M,1) = 0) Num = 1; / else if(strcmp(M,2) = 0) Num = 2; el

11、se Num = 0; if(Num = 0) cout 没有此选项!退出此操作!; coutendl; / / /车辆出场函数void Leaveing(LinStack &s1, LinQueue &q, Car b, Car &a, float &k, float &k1, float &max) Car T,c; char Num = 1; char M100; LinStack s2; while(Num = 1 & b.Leavetime = -1) / float y = 0; if(b.Leavetime 0) a.Leavetime = b.Leavetime; cout 请

12、输入车牌号和离开时间endl; coutb.Num; while(1) cinb.Leavetime; if(!cin.good() cout 输入错误!输入数据不符合要求!请重新输入出场时间! ; cin.clear(); fflush(stdin); continue; break; if(s1.StackEmpty() = 1 | b.Leavetime -1) cout 输入有误!停车场无此车!= -1) b.Leavetime = a.Leavetime;/(1) else if(!q.QueueEmpty() & b.Leavetime max) |(q.QueueEmpty()

13、= 1 & s1.StackEmpty() = 0 & b.Leavetime max) / cout 车离开时间输入有误!不能小于所有已经入场和在便道车的到达时间!= -1) b.Leavetime = a.Leavetime; else if(a.Leavetime != -1 & b.Leavetime a.Leavetime) cout 车离开时间输入有误!不能小于所有已经离开的车的离开时间!= -1) b.Leavetime = a.Leavetime; else while(s1.StackEmpty() = 0 & b.Num != s1.Peek().Num) / T = s1

14、.Pop(); /查找车 s2.Push(T); if(s1.StackEmpty() = 1) cout 输入有误!停车场无此车!4= -1) b.Leavetime = a.Leavetime; else T = s1.Pop(); y = (b.Leavetime-T.Cometime)*k + (T.Cometime-T.Cometime1)*k1; cout 车牌为; coutsetw(5)b.Num停车费为 ; coutsetw(3)yendl; while(s2.StackEmpty() = 0) s1.Push(s2.Pop(); if(!q.QueueEmpty() )/ C

15、ar T1; T1 = q.QDelete(); T1.Cometime = b.Leavetime; max = b.Leavetime;/ s1.Push(T1); cout *是否继续出场?endl; cout 1.继续出场 2.返回主菜单endl; cout 请输入你的操作编号:M; if(strcmp(M,1) = 0) Num = 1; / else if(strcmp(M,2) = 0) Num = 2; else Num = 0; if(Num = 0) cout 没有此选项!退出此操作!; coutendl; / /车辆显示函数void Displaying(LinStack

16、 &s1, LinQueue &q1) int k = q1.GetSize(); LinQueue q2; LinStack s2; if(s1.StackEmpty() = 1) cout 停车场没有车辆!endl; else while(s1.StackEmpty() = 0) s2.Push(s1.Pop(); while(s2.StackEmpty() = 0) s1.Push(s2.Pop(); cout 车牌为; coutsetw(5)s1.Peek().Num 的车停在停车场 ; coutsetw(5)s1.StackSize() 号停车位endl; while(!q1.Que

17、ueEmpty() cout 车牌为; coutsetw(5)q1.QFront().Num 的车停在便道 ; coutsetw(6)k - q1.GetSize()+1 号停车位endl; q2.Qinsert(q1.QDelete(); while(!q2.QueueEmpty() q1.Qinsert(q2.QDelete(); 3.3 其他模块伪码算法 1.主函数中,使界面友好伪代码:while(m != 4) coutendl; cout *endl; cout 1 车辆进场操作endl; cout 2 车辆出场操作endl; cout 3 显示停车情况操作endl; cout 4

18、退出操作endl; cout *endl; cout 请输入选择.MM; if(strcmp(M,1) = 0) m = 1; / else if(strcmp(M,2) = 0) m = 2; else if(strcmp(M,3) = 0) m = 3; else if(strcmp(M,4) = 0) m = 4; else m = 0; switch(m) case 1: cout 车入场项:endl; parking(mystack1,myqueue1,a,n,j,max);break; case 2: cout 车出场项:endl; Leaveing(mystack1,myqueu

19、e1,b,a,k,k1,max); break; case 3: cout 显示停车情况:endl; Displaying(mystack1,myqueue1); break; case 4: break; default: cout 没有此选项!k; if(!cin.good() cout 输入错误!输入数据不符合要求! ; cin.clear(); fflush(stdin); continue; break; 4 调试分析 开始调试时,比如整形单精度型,能用各种数据类型输入,而不会使程序崩溃,同时给出错误提醒。其他数据输入时也有相同的判别。但在输入整形数据 n,j时,设计中所使用的错误判

20、别代码并不能判别把单精度当作整型输入判错,所以想到这时在错误判别代码后,加上强制类型转换代码,这样就巧妙解决了那个问题。5 测试结果和分析5.1 输入车场,便道容量信息及各自收费单价信息:输入四个数据并被输入数据判别代码通过后,进入主菜单选择操作5.2 选择服务功能: 输入1时,在switch中比较匹配后,进入车辆进场操作输入2时,在switch中比较匹配后,进入车辆出场操作输入3时,在switch中比较匹配后,进入车辆显示操作输入4时,在switch中比较匹配后,进入退出系统操作输入其他数据时,提示没有此操作5.3 车辆入场及信息显示: 输入正确的数据类型后,输出相应的车在车场或便道停放的基

21、本信息,并返回到选择是否继续入场提示服务操作;如果输入的选择非法或没有此选项,会推出此操作项,返回主菜单5.4 车辆出场及信息显示: 输入正确的数据类型后,如果找到相应的车,会输出相应的车需要的费用信息,否则输出没有此车;并返回到选择是否继续出场提示服务操作;如果输入的选择非法或没有此选项,会推出此操作项,返回主菜单5.5 显示车辆停放情况在主菜单选择时,如果输入3,会输出所有车辆在车场或便道的停放信息5.6退出程序在主菜单选择服务时,输入4,在switch中比较匹配后,退出该系统。6案例总结主要通过设计一个栈模拟停车场,一个队列模拟便道,以实现停车场系统的基本功能。通过栈的先进后出特点模拟停车场,通过队列的先进先出模拟便道,巧妙实现的车的入场,出场及显示功能。此停车场模拟系统把停车场主要功能基本实现了,可以实现四种服务功能:车入场选择,车出场选择,显示选择,退出系统服务,基本可以满足必要的的需求,但是还有很多方面可以改进,增加更多的功能。比如车辆的型号不同单价费用不同,车场可以有捷径问题,最重要的是由于以前做的案例不太重视考虑界面友好问题,所以在这块可以增加更多的一些改变界面的功能,使界面变得比较友好。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1