版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
—••---------------------数据结构实训报告----------------------••—
目录
一、实训目的...............................................-2-
二、实训内容...............................................-2-
1.实验题目:停车场管理..........................................-2-
2.具体内容........................................................-2-
3.功能.............................................................-2-
三、算法分析...............................................-2-
1.主模块图.........................................................*2-
2.程序要点与说明....................................................-3-
四、程序代码设计...........................................-3-
五、程序运行结果...........................................-7-
六、本次实训的总结与心得................................-11-
数据结构实训报告•
一、实训目的
了解顺序栈的结构特点及有关概念,掌握顺序栈的建立、入栈及出栈的基本操
作算法
二、实训内容
1.实验题目:停车场管理
2.具体内容
设停车场是一个可停放M辆汽车的狭长通道,且惟独一个大门可供汽车进出。汽车
在停车场内按车辆到达时间的先后顺序,挨次由北向南罗歹此大门在最南端,最先到
达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则显示停车场已满;
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该
辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停
车场时必须按它停留的时间长短交纳费用。
3.功能
(1)汽车在停车场内按车辆到达时间的先后顺序,挨次停入停车场,输入车辆
的车牌号及驶入时间;
(2)若车场内已停满M辆汽车,则显示停车场已满;
(3)若车牌号重复,则重新输入车牌号;
(4)车辆离开,输入离开车辆的车牌号,在它之后进入的车辆退出车场进入临
时栈为它让路,待该辆车开出后,其他车辆再按原次序进入车场;
(5)如果无此车牌号,说明库中无此车辆,选择其它指令;
(6)车辆离开,输入车辆离开时间,并按它停留的时间长短交纳费用;
(7)显示停车场内所有车辆的信息。
三、算法分析
1.主模块图
-2-
-----数据结构实训报告•
2.程序要点与说明
⑴结构体:本程序共有两个结构体。Carinfo存储车辆信息,StackSq存储停车
场信息,二者定义如下。
typedefstruct〃车辆信息
(
intCarNo;//车牌号
intlnTime;〃进场时间
JCarlnfo;
structStackSq{
Carinfostack[M];〃存储信息
inttop;〃指向栈顶位置的整型变量
};
(2)函数设计:本程序共有六个函数及一个主函数,具体定义和作用如下
voidInitStack(structStackSq*S)初始化停车场
voidPush(structStackSq*s,Carinfox)往存储停车场的栈内插入车辆信
息x,被函数Reach引用
CarinfoPop(structStackSq*s)删除栈顶元素,被函数Leave引用
voidDisplay(structStackSq*s)显示所有车辆信息
voidReach(structStackSq*s)车辆到达
voidLeave(structStackSq*s)车辆离开
voidmain()
(3)其它设计:定义M=3,规定停车场内最多的停车数;Price=2,规定每小时
停车的价格为2元/小时。其具体应用如下:
if(s->top==M-1)〃停车场已满
停车场已满,无法停车
>>停车费用:却元(%01元/小时
四、程序代码设计
#include<stdio.h>
include<stdlib.h>
#defineM3〃停车场内最多的停车数
#definePrice2//每小时停车的价格(单位:元)
typedefstruct〃车辆信息
(
intCarNo;〃车牌号
intlnTime;〃进场时间
-3-
数据结构实训报告•
JCarlnfo;
〃停车场信息(顺序栈类型)
structStackSq{
Carlnfostack[M];〃存储信息
inttop;//指向栈顶位置的整型变量
);
//初始化停车场
voidlnitStack(structStackSq*S)
(
S->top=-1;
)
〃往存储停车场的栈内插入车辆信息x,被函数Reach引用
voidPush(structStackSq*s,Carlnfox)
(
if(s->top==M-1)〃停车场已满
停车场已满,无法停车
else
(
s->top++;
s->stack[s->top]=x;
)
)
〃删除栈顶元素,被函数Leave引用
CarinfoPop(structStackSq*s)
(
if(s->top<=-1)
(
停车场内无任何车辆
)
s->top
returns->stack[s->top+1];
)
//显示所有车辆信息
voidDisplay(structStackSq*s)
(
inti;〃循环控制变量i
》》车牌号停车时间《《
for(i=0;i<=s->top;i++)〃挨次输出车辆的信息
%4d
-4-
数据结构实训报告•
[i].InTime);
)
〃车辆到达
voidReach(structStackSq*s)
(
Carinfocar;//car用于存储驶入车辆的信息
inti,flag=O;//i为循环控制变量,flag为控制循环
的标记
欢迎进入!请输入车牌号:
do//do-while循环,保证车牌号无重复
(
for(i=0;i<=s->top;i++)
(
if(car.CarNo==s->stack[i].CarNo)
>>车库中已有此车辆,请重新输入车牌号
flag=1;〃如果有重复,则flag=1
)
else
flag=O;//如果无重复,则flag=O
)
}while(flag==1);//如果flag=1,输入车牌号,直到车牌号无重复
请输入进场时间:
Push(s.car);//将车辆car的信息输入到存储停车场信息的栈中
>>停车场已有车辆数
〃车辆离开
voidLeave(structStackSq*s)
{
structStackSqs1;〃暂时栈s1,存储从停车场中导出的信息
Carinfocar,t;//car,存储要离开的车的编号和离开时间;
t作为媒介,实现停车场栈和暂时栈的数据交换
inti=O,j=O;〃i,j同为循环控制变量
intx=0;〃存储停车场内元素个数
lnitStack(&s1);//初始化暂时栈s1
请输入要离开的车牌号
-5-
数据结构实训报告•
〃输入要离开的车牌号
x=s->top;
for(i=0;i<=s->top&&s->stack[i].CarNo!=car.CarNo;i++);
〃循环,当找到车辆时,住手循环
if(i>s->top)//如果没有此车辆,i大于栈顶指针指向的位置
>>未找到该编号的汽车
else
(
>>停车场中位置为
请输入离开时间
//输入车辆离开时间
for(j=i+1;j<=x;j++)
(
t=Pop(s);〃导出车辆信息
Push(&s1,t);//将车辆信息导入暂时栈s1中
)
Display(s);
Display(&s1);
t=Pop(s);〃该汽车离开
>>车牌号为%d的汽车停车时
间
»停车费用:刈元(%€1元/小
时
do//暂时栈s1中的车辆重新回到停车场中
(
t=Pop(&s1);
Push(s,t);
}while(s1.top!=-1);/**/
voidmain()
(
structStackSqCar;〃生成一个停车场
intchoice;
lnitStack(&Car);//初始化停车场
主菜单
-6-
-----•数据结构实训报告
(1)车辆到达
(2)车辆离开
(3)显示停车场中所有车辆的信息
(0)退出系统
请输入指令
if(choice<0&&choice>4)continue;
switch(choice)
(
case1:Reach(&Car);break;//车辆至U达,调用Reach函数
case2:Leave(&Car);break;//车辆离开,调用Leave函数
case3:Display(&Car);break;〃显示车辆信息,调用Display函数
case。:函t(0);〃退出系统
default:break;//如果指令不正确重新循环
)
}while(1);
五、程序运行结果
1.原始界面
-7-
-------数据结构实训报告
2.车辆1001于7:00驶入;车辆1002于8:00驶入
3j,G:\D.bug\停车场管理系统・
主菜单-----------------------
<1〉车辆到达
<2〉车辆离开
<3〉显示停车场中所有车辆的信息
<。〉退出系统
情输入指令:[
鹘瀛醯然牌号'
1001
>>停车场已有车辆数:1
请
输入
父令
号
车
欢
迎
牌
—
关
进
请
输1002
场8
>>停车场己有车辆数:2
请窜人指令:
I’
2.输入错误车牌号码1001,停车场中已有此车,无法驶入;重新输入正确车牌号2001U
<1〉年辆到达
<2>牛辆离开
<3>显示停半场中所有半辆的信息
<。>瓜出系统
褊情输般入雅指入令〃手、牌当一
1001
>>停车场已有车辆数:1
请入
令
输
指
欢
人
入
号
迎
车牌
:1事
关
或1
进
请
输«8
>>停车场己有车辆数:2
「舲好褊入车牌号,
1001
鬲播人进场时间।8>>车库中己有此车辆,请重新输入车牌号:2001
>>停车场己有车辆数:3
㈤
L主
-8-
,数据结构实训报告
3.车辆2022要停车,但停车场已满
,G:\D.bu<\停车场管■系统.e«e*
入
指令
人:1
卦
制
关
加入车牌号,LI
进
।7
》>停车场已有车辆数:[
入阴令”
1002
>>停车场己有车辆数:2
请锚入车牌号,1001
>>主库中己有此车辆,请重新输入车牌号:2001
»8
>>停车场己有车辆数:3
前顿零号'2012
已满,无也停左
>>停车场己有车辆数:3
睛人指令、
4.车辆1002于12点驶出停车场。输出其停车位置,及停车费用
及迎进人!环卷人•车牌号,1002
精瓶关关场阡胤8
>>停年场己华年刷数:2
慎输入小令:1
F迎进入请铺入车牌号,
।1001
I输入进场时间I8>>主库中己有此车辆,调重新输入车牌号:2001
>>停斗场己有斗辆数,3
入
请
H招令
号
入
牌
入
车
欢>1
—
贾it-
进
请
曾2012
9主
,
场ff•t
己
法停
停
>>停车场已有车辆数:3
晴输入指令:2
情输入要离开的主牌号:1•2
a
>〉停车场中位置为2
请抬入高开时间:12
>>主牌号为10空的汽车停主时间:4
>>停车费用।8元(2元/小可>
-(j1-1
-9-
数据结构实训报告,
5.显示停车场所有车辆信息
]G?pG:\Debut\停车场管短不统.e«e"
1001
>>主库B已有此车辆.清南新输入车牌号:2001
>>停车场已有车辆数:3
入
今
—
娄
进您2012
场
己
>>停¥场已有车辆数
入更离开的*牌号,,002
>>停车场中位置为2
入离开时间:12
>>套牌号为,迪汽车停定时间:4
>>停车费用,8元<2兀/小Bf>
入指令:3
》》车牌号停车时间《《
10017
20018
7日廿
6.退出程序
性斗"G:\D6bu<\停车场修,系统.e»e*-I可x|
>>主库口已有此生辆,请篁新输人车牌号:2001Ld
入拼场时间,8
>>停车场己有车辆数:3
入
推令
人
关
—入车牌号,U
进
翼2012
场
已.9
法停车
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年城市道路照明工程承包合同
- 卫浴店员工合同模板
- 安全责任保证合同范例
- 嘉定区软件园厂房合同模板
- 人防车位出租合同范例
- 传媒签约新人合同范例
- 智慧旅游管理系统建设与服务合同
- 智慧KTV管理系统研发及应用服务合同
- 写雇佣者合同范例
- 外墙专合同范例
- 管辖权异议申请书电子版下载
- 论文评审意见范文(通用7篇)
- 《当代教育心理学》(第3版)配套题库考研真题+章节题库
- 2011深圳市公务员录用考试《行测》真题
- 学校校园欺凌师生访谈记录表六篇
- 基因测试题样本
- 2023年度军队文职《教育学》真题库(含答案)
- 电气安全管理程序
- 全国教育期刊杂志社网址投稿邮箱电话地址一览
- GB/T 11836-2023混凝土和钢筋混凝土排水管
- 第三章 继承优良传统 弘扬中国精神
评论
0/150
提交评论