数据结构停车场模拟管理程序的设计与实现.docx
《数据结构停车场模拟管理程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《数据结构停车场模拟管理程序的设计与实现.docx(10页珍藏版)》请在冰豆网上搜索。
数据结构停车场模拟管理程序的设计与实现
停车场模拟管理程序的设计与实现
一、简介
设计停车场模拟管理程序,要求实现4个大的功能模块
1.程序功能介绍和操作提示
2.汽车进入停车位的管理模块
3.汽车离开停车位的管理模块
查看停车厂停车状态的的查询模块
二、数据结构的设计:
(1)停车场停放收费是按照时间来计算,首先要定义一个时间的结构体,并定义出一个最短时间。
typedefstructtime
{
inthour;
intmin;
}Time;
(2)为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码,停放地址和到达时间。
typedefstructcar
{
intnum;
intposition;
Timet;
doublemoney;
}Car;
(3)创建栈来构建停车场。
typedefstruct
{
Carelem[N+1];
inttop;
}Stack;
(4)创建队列来构建便道,方便汽车出入。
typedefstructNode
{
Cardata;
structNode*next;
}QueueNode;
(5)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上。
当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位。
typedefstruct
{
QueueNode*front;
QueueNode*rear;
}LinkQueue;
三、功能(函数)设计:
本程序从总体上分为四个功能模块,分别为:
(1)程序功能介绍,和操作提示模块
(2)汽车进入停车位的管理模块
(3)汽车离开停车位的管理模块
(4)查看停车场状态的查询模块
函数功能:
(1)进入停车位函数:
输入1后进入“进入停车场”函数,然后输入车牌号、到达时间。
然后程序自动提示停放位置,若车位已满,程序将提示“车库已满,请稍等!
”。
(2)进入离开停车场函数:
输入2后进入“离开停车场”函数,然后车牌号、离开时间。
若有此车牌号的车,程序自动显示要收取的费用,如果停车时间没超过最小时间,将提示“未使用车位,不收费”。
若没有此车牌号的车,程序将显示“没有这车”。
序将显示整个停车场情况,有车显示车的数据,无车显示“无车”。
四、界面设计:
(1)用“*”和“\n”(回车)来构出上下界。
(2)在界内显示出程序功能介绍,和操作提示,用1234的序号区分。
(3)用“\t”(空格)对齐。
五、程序设计:
(1)voidInitQueue函数:
便道初始化程序,使malloc返回的指针转化为指向QueueNode类型数据的指针。
(2)intEnterQueu函数:
给便道申请空间。
(3)voidInitStack函数:
确保堆栈为空。
(4)voidPush函数:
便道中的车入库。
(5)intIsEmpty函数:
判断车库是否为空。
(6)intIsFull函数:
判断车库是否为满。
(7)intGetTop函数:
车离开车库。
(8)intDeleteQueue函数:
将便道中的车放入车库。
(9)voidIn函数:
汽车进入停车位的管理模块。
(10)voidMoney函数:
计算停车花费。
(11)voidOut函数:
汽车离开停车位的管理模块。
(12)voidprint1函数:
查看停车场状态的查询模块。
(13)voidprint2函数:
查看通道状况。
(14)voidprint函数:
界面输出。
函数的调用关系图
主函数流程图
“到达函数”流程图
“离开函数”程序图
“显示函数”流程图
描述编写代码期间遇到的问题及其解决办法。
(1)Declarationmissing经常漏“;”号,和打出中文标点符号。
在编译后发现错误,一一改正。
(2)访问结构体时,拼错结构体中的定义。
(3)Callofnon-function调用未定义函数。
由于不正确的函数声明或函数名拼错造成的。
更改函数名正常。
(4)Compoundstatementmissing复合语句漏掉了大括号“}”。
补上后正常。
(5)还有各种小错误。
六、运行与测试:
1、测试的数据及其结果:
1)连续有7辆汽车到来,牌照号分别为001、002、003、004、005、006、007,前5辆车应该进入停车位1-5车位,第6、7辆车应停入便道的1、2位置上。
(2)上面
(1)中的情况发生后,让牌照003的汽车从停车场开走,应显示005、004的让路动作和006从便道到停车位的动作。
(3)随时检查停车位和便道的状态,不应该出现有空位而便道上还有车的情况。
(4)其它正常操作的一般情况。
2、运行与测试期间遇到的问题及其解决办法。
(1).问题1:
输入一样的牌照号,程序不提示错误。
解决:
增加个输出错误的程序。
(2).问题2:
车辆离开后,便道中的车不入车位。
解决:
队列的指针指向栈。
(3).问题3:
程序陷入死循环。
解决:
while
(1)的使用出错,更改位置。
……………………………………………
七、设计后的思考:
通过本次课程设计,谈谈对数据结构课程设计的体会。
初次进行数据结构课程设计,我深刻感受到了程序在实际生活中的应用,各种函数分工明确,在主函数的调用下,有条不紊的运行着,就像人在社会中,每个人的有自己的职业一样。
函数也是这样的。
不得不说,课程设计是一项工作量大,繁琐枯燥,并且要求思维要高度集中的事,在最初的时候,我也是特别厌倦,不想打代码,看见代码就烦,但是经过这一星期的程序设计在这次程序设计课中,我突然发现写程序还挺有意思的。
每当程序完美运行的时候,就感觉干成了一件大事,并且受益匪浅。
讲道理,其实上学期的C语言加上本学期的数据结构,我其实都算不上真正的懂,还是处于懵懂的状态,老师讲的知识点也是听的马马虎虎,对程序的理解也是只言片语。
但是经过这一星期的程序设计,我发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,其实想要在程序上有所突破,就是要多写代码,多多练习,在练习中才会发现自己的弱点和对知识点的不了解之处。
真正坐下来,用心去处理程序,就会发现其实这些字母、符号并不是死的,他们是有生命力的,一个程序设计就像造物主在创造生命,每一个函数就像一个器官,每一个字符就像一个细胞。
归根结底,还是一个练字,熟能生巧,我准备在接下来的暑假里,多做几次类似的程序设计,增强自己的能力。