停车场管理系统设计正文.docx
- 文档编号:30252223
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:12
- 大小:153.20KB
停车场管理系统设计正文.docx
《停车场管理系统设计正文.docx》由会员分享,可在线阅读,更多相关《停车场管理系统设计正文.docx(12页珍藏版)》请在冰豆网上搜索。
停车场管理系统设计正文
目录
1需求分析1
1.1停车场容量的实现方法1
1.2停车登记的实现方法1
1.3离开结算得实现方法1
1.4登记记录的实现方法2
1.4.1今天登记情况的实现2
1.4.2离开车辆记录的实现2
1.4.3便道信息查询的实现2
1.4.4返回主页面的实现2
2系统设计3
2.1总体功能图3
2.1总体流程图4
3主要功能设计流程5
3.1今天登记情况实现流程图5
3.2离开车辆记录实现流程图5
3.3登记记录实现流程图6
4代码实现7
4.1离开结算实现代码7
4.2运行效果图8
4.2.1停车场容量效果图8
4.2.2主界面效果图9
4.2.3停车登记效果图9
4.2.4离开结算效果图9
4.2.5离开车辆记录效果图10
总结11
参考文献12
附录源代码(见源程序)
1需求分析
为了达到设计要求,此程序的数据类型为ADT,根据停车场模拟程序的设计内容和要求,对停车场模拟程序需要做出如下的分析:
1.1停车场容量的实现方法
根据设计要求停车场的容量是介于1—20辆车,要到达设计要求我们仅需在主界面运行前对手动输入的容量做出判断即可,当得到的是错误信息便提示,再次输入容量大小直到是正确的信息(即介于1—20),实现函数为face()。
1.2停车登记的实现方法
登记的首要工作是登记车辆的车牌号,同时判断车牌号正确与否,当得到正确的车牌号,就记录车牌号、当前时间,并输出到屏幕上,整个实现方法通过调用arrival()函数,当有车登记通过压栈push()进入停车场。
得到时间是通过使用Time.h头文件来得到系统时间。
当车站满时,只有把车停在便道上,便道上采用队列的形式等候车站有空位,以便停车。
同时把当前信息写入estdout.txt文件。
1.3离开结算得实现方法
离开结算在leave()函数下生成,需要通过输入正确的车牌号,实现函数checknum(),不包括错误车牌号或停车场里面不存在的车牌号。
信息正确时,首先出栈pop()并判断车牌号与需要离开的车牌号是否相同,并把不是要离开的车辆信息push()到二重栈里,当查找到要离开的车牌号时调用Getmoney()函数,此车进入停车场的时间和当前系统时间使用Time.h下的difftime()函数得到时间差,便可计算出当前车需要缴纳的费用。
然后把二重栈的信息重新压回当前栈,如果便道上有等候车辆,即可把队列的首车辆压到当前栈。
同时把离开信息写入leaveout.txt文件。
1.4登记记录的实现方法
1.4.1今天登记情况的实现
调用Inforstack()函数,在判断文件不为空后,读取estdout.txt文件,输出。
1.4.2离开车辆记录的实现
调用Inforleave()函数,在判断文件不为空后,读取leaveout.txt文件,输出。
1.4.3便道信息查询的实现
调用Inforqueue()函数,判断队列的长度即可。
1.4.4返回主页面的实现
调用Book()显示主页面的函数。
2系统设计
根据需求分析,停车场管理要实现的基本功能:
a.手动输入停车场的容量;
b.停车登记;
c.离开结算;
d.登记记录;
e.退出系统;
f.查询“今天登记情况”;
g.查询“离开车辆记录”;
h.查询“便道信息查询”;
i.返回主界面;
2.1总体功能图
根据需求分析,停车场管理模拟程序总体功能图如图1.1:
图2.1总体功能图
2.1总体流程图
根据需求分析,停车场管理模拟程序总体流程图如图1.2:
图2.2总体流程图
3主要功能设计流程
3.1今天登记情况实现流程图
根据对今天登记情况的分析,可以得到它的流程图如图1.3:
图3.1登记情况流程图
3.2离开车辆记录实现流程图
图3.2离开车辆记录流程图
3.3登记记录实现流程图
图3.3登记记录流程图
4代码实现
4.1离开结算实现代码
Functionleave(refStack,refqueue,tm_tInform)
M=Stackcount
if(mblowzero)
printf()
return
else
writtecarnumber
loop
(1)
checkcarnumber
loop(mnotequalzero)
temp=(Infor*)pop(stack)
push(stacktemp,temp)
loop(carnumbernotequalzero)
if(temp->num[k]!
=num[k])
flag=false;
break;
else
flag=true
endif
endloop
if(flagnotequaltrue)
if(mnotequal1)
Getmoney(temp,m,inform)
else
a=(Infor*)pop(stacktemp)
Getmoney(a,m-i,inform)
endif
loop(intj=0;j
a=(Infor*)pop(stacktemp)
push(stack,a)
endloop
if(queue->count>0)
a=(Infor*)Dequeue(queue);
compare(a)
push(stack,a)
endif
break
endif
endif
if(flag==false)
writtecarnumber
checkcarnumber
loop(intn=0;n temp=(Infor*)pop(stacktemp); push(stack,temp); elsebreak endloop endif endloop endif 离开结算在leave()函数下生成,输入正确的车牌号,实现函数checknum(),不包括错误车牌号或停车场里面不存在的车牌号。 信息正确时,首先出栈pop()并判断里面车牌号与需要离开的车牌号是否相同,并把不是要离开得车辆信息push()到二重栈里面,当查找到要离开的车牌号时调用Getmoney()函数,然后把二重栈的信息重新压回当前栈,如果便道上有等候车辆,即可把队列的首车辆压到当前栈。 4.2运行效果图 4.2.1停车场容量效果图 图4.1停车场容量 图4.2输入错误容量 4.2.2主界面效果图 图4.3主界面 4.2.3停车登记效果图 图4.4停车登记 4.2.4离开结算效果图 图4.5离开结算 4.2.5离开车辆记录效果图 图4.6离开车辆记录 总结 通过这次课程设计,然我更加熟悉堆栈和队列的应用,特别是堆栈中的ADT类型的应用,对文件的读取和写入。 为了到达停车场管理模拟程序的功能,需要提出大概的设计思路,从而完善实现的特定功能。 解决停车场管理程序的最主要的关键是运用二重栈来实现对停车管理的可行性,当然在解决这个问题时遇到了一定的困难,和要求对堆栈的灵活运用。 停车场管理模拟程序,有如下的功能: 对需要的车辆进行登记记录,离开时需要交费情况,查询当天的登记情况,查询离开的车辆信息以及便道上的查询。 可以判别输入的车牌号是否为正确的车牌形式,以便提示管理人员。 本次中遇到的另一个困难便是对文件的操作,特别是文件的读取,经过查询资料反复的测试实验,终于达到了对文件的正确处理,也是本次课程设计的重大收获。 参考文献 1.严蔚敏吴伟民,数据结构,清华大学出版社,2007.3 2.李春葆,数据结构教程,清华大学出版社,2005.1 3.(美)StephenPrata,CPrimerPlus中文版(第五版),人民邮电出版社,2005.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 设计 正文