数据结构课程设计停车场问题Word文档格式.doc
- 文档编号:13024777
- 上传时间:2022-10-02
- 格式:DOC
- 页数:17
- 大小:1.89MB
数据结构课程设计停车场问题Word文档格式.doc
《数据结构课程设计停车场问题Word文档格式.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计停车场问题Word文档格式.doc(17页珍藏版)》请在冰豆网上搜索。
计算计08-4
设计题目
停车场问题
设
计
技
术
参
数
系统平台:
WindowsXP
开发工具:
MicrosoftVisualC++6.0
要
求
(1)利用栈和队列实现车的停放,等候以及结算;
(2)每一组输入数据包括三个数据项:
汽车“到达”或“离去”的信息,汽车牌照号码以及到达或离去的时刻;
(3)对每一组输入数据进行操作后的输出信息为:
若是车辆到达,则输出汽车在停车场或便道上的停车位置;
若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费);
工
作
量
课程设计报告要求不少于3000字。
源程序要求不少于300行
划
2009年12月17日-2009年12月20日查找相关资料
2009年12月2日-2009年12月31日代码编写
2010年2月19日-2010年2月23日查错及调整程序
2010年2月24日-2010年2月27日撰写实验报告
考
资
料
[1]秦锋.数据结构(C语言版).合肥:
中国科大出版社,2007
[2]温秀梅,丁学均.VisualC++面向对象程序设计.北京:
清华大学出版社,2005
[3]何钦铭,颜晖.C语言程序设计.北京:
高等教育出版社,2008
指导教师签字
教研室主任签字
2009年12月29日
学生姓名:
高芹学号:
2008302886专业班级:
计08-4
课程设计题目:
停车场问题
指导教师评语:
成绩:
年月日
安徽理工大学课程设计(论文)成绩评定表
目 录
1问题描述 1
2需求分析 1
3总体设计 2
3.1栈和队列在使用前的数据类型定义及各自的结点类型
2
4总结 12
参考文献 12
1问题描述
利用栈和队列实现车的停放,等候以及结算;
在执行时使用菜单方式实现,选择需要的停车服务,执行后可以显示打印结果。
设停车场内只有一个可停放N辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满N辆汽车,则后的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入的数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达”或“离去”的信息,汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:
若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
2需求分析
根据问题要求,我认为,虽然本程序对于现实生活中的用处不是很现实,但是可以丰富我们对栈和队列的理解,也可以让我们学会用栈和队列来模拟现实中的问题,本程序要实现的功能有:
(1)用顺序结构栈和链表结构队列来模拟停车场和过道:
为了能用栈模拟停车场和用队列队列模拟过道,首先得为栈和链式队列定义结点,然后为栈和队列中各函数的实现包括初始化栈和队列还有栈的判断栈空判断栈满来提示不能出车和什么时候过道上的车进入停车场,以入栈出栈来模拟车辆的出入停车场,以判断队列是否为空来提示过道是否有车来进入停车场和入队来模拟车等候在过道上出队来让过道上的车进入停车场,还有取队列首个元素来模拟排在队首的车进入停车场。
(2)停车函数:
当选择是停放车辆时,则先检查停车场有没有满,如果没满就会调用停车函数,把车的信息输入到栈内,表示该车已进入停车场,并输出本车在停车场内的具体位置。
(3)等候函数:
在选择停放车辆时,但停车场已满,则只能调用等候函数。
将车辆的输入信息存入队列中,表示该车需要在过道内等候,并输出本车在过道内的具体位置。
(4)车辆出站函数:
当选择车辆出站时,则要输出汽车在停车场内停留的时间和应交纳的费用,其中不包括车在过道内等候所用的时间。
3总体设计
3.1栈和队列在使用前的数据类型定义及各自的结点类型
在设计程序时,为了能更简单地得到用户输入的准确的时间,我定义了一个时间数据类型,其中包括小时信息和分钟信息。
typedefstruct{//定义时间类型用来存储车辆进出站时间
inthour;
intminute;
}time;
typedefstruct//定义汽车数据类型用来存储栈和队列中元素值
{
charname[8];
charCarnum[6];
timeti;
}Car;
typedefstruct//定义栈结点类型模拟停车场
Cardata[MAXSIZE];
inttop;
}SeqStack,*pSeqStack;
typedefstructnode{//定义结点
Cardata;
structnode*next;
}Qnode,*PQnode;
typedefstruct{//定义链式队列结点类型模拟通道
PQnodefront,rear;
}LinkQueue,*PLinkQueue;
程序在执行时,用到的主要函数有:
pSeqStackInitStack()//初始化栈
intStackEmpty(pSeqStackS)//判栈空
intStackFull(pSeqStackS)//判栈满
intPush(pSeqStackS,charname[],charnum[],timearriveti)//入栈
{//Carx;
if(S->
top==MAXSIZE-1)
{
//cout<
<
"
栈已满!
endl;
return0;
}
else
{
S->
top++;
strcpy(S->
data[S->
top].name,name);
top].Carnum,num);
top].ti.hour=arriveti.hour;
top].ti.minute=arriveti.minute;
return1;
}
intPop(pSeqStackS)//出栈
{
if(StackEmpty(S))
top--;
//**此出栈只是将top指针下移了位置,而原本的top所指结点不考虑了
PLinkQueueInitQueue()//初始化队列
intQueueEmpty(PLinkQueueQ)//判队空
intInQueue(PLinkQueueQ,charnum[],charname[])//入队列
PQnodep;
p=(PQnode)malloc(sizeof(Qnode));
if(!
p)
cout<
内存溢出!
//**“溢出”即已经没有空间可分配给此结点了
strcpy(p->
data.Carnum,num);
data.name,name);
p->
next=NULL;
if(QueueEmpty(Q))
Q->
front=Q->
rear=p;
else{
Q->
rear->
next=p;
return1;
intOutQueue(PLinkQueueQ)//出队
if(!
内存溢出!
p=Q->
front;
Q->
front=Q->
front->
next;
free(p);
Q->
front)
rear=NULL;
intCountQueue(PLinkQueueQ)//计算队列中车辆个数,显示通道中车辆停放位置
intcount=0;
while(p!
=NULL)
count++;
p=p->
returncount;
intDeleteQueue(PLinkQueueQ,charnum[],charname[])//取队头元素,为后来的进栈找元素
intInsertCar(pSeqStackS,charname[],charnum[],timearriveti)//单个车辆入站
Push(S,name,num,arriv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 停车场 问题