版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南财经政法大学
集
中
实
践
报
生
1=1
院系:
班级:
指导老师:
小组:
小组组员:
目录
(-)设计目的........................................3
(二)问题描述........................................3
(三)概要设计........................................4
(四)详细设计........................................8
(五)调试分析.....・••••
(六)测试分析........................................10
(七)心得体会........................................11
(八)附录(源代码)12
(-)设计目的
I.通过课程设计,理解并掌握数据构造日勺设计措施,具有初步的独
立分析和设计能力;
2.通过课程设计,初步掌握软件开发过程H勺向题分析、系统设计、
程序编码、测试等基本措施和技能;
3.通过课程设计,提高综合运用所学口勺理论知识和措施独立分析和
处理问题H勺能力;
4.通过课程设计,训练用系统的观点和软件开发一般规范进行软件
开发,培养软件工作者所应具有的科学的工作措施和作风。
(二)问题描述及规定
基本规定
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的
输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车
“抵达”或“拜别”信息、汽车牌照号码以及抵达或拜别的时刻。对
每一组输入数据进行操作后的输出信息为:若是车辆抵达,则输出汽
车在停车场内或便道上日勺停车位置;若是车辆拜别,则输出汽车在停
车场内停留U勺时间和应交纳的费用(在便道上停留U勺时间不收费)。
栈以次序构造实现,队列以链表构造实现。
(三)概要设计
1、设计思想
此停车场管理系统是在一种狭长的通道上u勺,并且只有一种
大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在
它之后进入停车场的J车都必须先退出停车场为它让路,待其开出
停车场后,这些辆再依本来的次序进场的功能,就可以设计两个
栈,其中一种栈用来模拟停车场,另一种栈用来模拟临时停车场,
该临时停车场用来寄存当有车辆离开时,本来停车场内为其让路
日勺车辆。至于当停车场已满时,需要停放车辆日勺通道可以用一种
链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进
入停车场,此时只需要变化通道上车辆结点的连接方式就可以了,
使通道上第一辆车进入停车场这个栈,并且使通道上本来口勺第二
辆车成为通道上的第一辆车,此时只需将模拟通道日勺链队列的头
结点连到本来的第二辆车上就可以了。
2、实现措施
对于此停车场管理系统的实现,就是用两个堆栈来分别模拟
停车场以及停车场内车辆为其他车辆让路时退出停车日勺临时停放
地点。至于通道上车辆的停放则用一种链队列来实现,此时,通
道上车辆的离开或者进入停车场只需变化此链队列上的结点而
已。对于要对停车场内的车辆根据其停放时间收取对应的停车费
用,可以记录下车辆进入以及离开停车场口勺时间,再用时间差乘
以对应的单价并且打印出最终日勺费用就可以实现了。
3、流程图分析
流程图按块来分析,共提成整体系统,汽车抵达系统,汽车拜
别系统,汽车显示系统。如图lo
(1)汽车整体系统
图1
(2)以模块为单位分析算法
I、“抵达”模块:抵达时有两种状况,即车场与否满,未满则直接进入停车场;满时,到
便道等待。如图2。
车辆到达
停车场是否满是
图2
2.“离开”模块:离开时,当车库为空时,提醒没有车,结束;否则车辆离开。如图3。
车辆离•开〉
障T•场是否空:是
图3
3.“显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。
图4
(四)详细设计
1.此函数分为不一样日勺函数,其中包括主函数,用此来调用其
他子函数,其子函数包括车辆进车站、便道函数;车辆离开
函数;车辆显示函数等。
2.函数的定义:
typedefstruct{
intnum;/*车牌号*/
intarrtimc;/*抵达/离开时间*/
charcar;/*车区I类型*/
}ELEMTP;/*次序栈的数据元素类型*/
typedefstruct{
ELEMTPelem[N];
inttop;
}SqStack;/*次序栈类型*/
typedefstructnode{
intnum;/*车牌号/便道上的车辆数量*/
structnode*next;
}QNodc;/东链队列的数据元素类型*/
typedefstruct{
QNode*front,*rear;
}LQueue;/*链队列类型*/
3.主函数为voidmain(),在此函数中用switch()函数来调用
子函数。其中车辆进入车站、便道的I函数为voidArrive
(SqStack*sl,LQueue*q,ELEMTPx);车辆离开函数为void
Delive(SqStack*sl,SqStack*s2,LQueue*q,ELEMTPx);
车辆显示函数为voidDisplay(SqStack*sl,LQueue*q)。
(五)调试分析
由于此停车场管理系统是分模块设计口勺,并且在程序口勺实现过
程中又使用了清屏函数,因此,运行时顾客选择任务并且执行完任务
构造清晰,使用以便。本程序的调试运行,总体上状况良好,但中间
也出现了某些小问题。如当删除第3个元素时,出现了错误。
:亭车场状况:
车道车号
13
24
便道状况:
车道车号
酸辘翻鼻翻幽鬃辟表僮车‘瞰表客车’玳表卡车〉以“
明明有4号车,却出现了提醒错误,后通过调试,发现了问题,本来
if(y.num==x.num&&y.car==x.car),这个鉴定限制了太多,当把其改
为if(y.num==x.num),便不会再次出现此问题。
营车场状况:
车道车号
13
24
便道状况:
车道车号
D
簸入雌车牌号」离开时间,车辆类型"代表〃苗车,B代表客车,C代表卡车):4,40.A
第耀僵寒鞍第2号车位上
%车场状况:
车道车号
13
25
便道状况:
便道没有车辆
(六)测试分析
1.主界面
逑里埋人住至物管理[2
请输入您的选择
S----------显示停车场状况
A----------车辆到达
D——车辆离开
E----------程序结束
2.车辆抵达
嬴麴展主舱到烟间车辆类型<A代表小汽车,B代表客车,C代表卡车):3,20.C
第3号车警在停车场第2车位工
,入龌至牌号,到达时间,车辆类型“代表小汽车,B代表客车,C代表卡车):4,25,A
耒4萼隼停左便道第1轮上
3.车辆离开
।蒯入鹦篝推车浦牌号襄,房开2号时车间位,上车辆类型“代表小汽车,B代表客车,C代表卡车〉:2,3S.B
4.显示车辆信息
5.程序结束
程序正常结束
Pressanqkeytocontinue
(七)心得体会
(1)该试验波及到次序栈的建立、插入、删除等操作,波及到
了链队列H勺建立、插入、删除等操作。做这个试验,加深了我对以
上知识点的认识和理解。
(2)在这一周中,我们提高了C语言编程时能力。在程序设
计过程中,需要通过反复地编写,调试,运行,发现问题并处理问题,
在这次试验的设计中,我加深对程序□勺理解,提高自己口勺实际动手能
力和独立思索H勺能力同步我也学会了综合此前学到的基本知识来处
理较大问题的措施。
(3)在这一周中,我们通过小组中口勺团结合作,处理了程序
中一种又一种问题。在这个过程中,我们愈加理解彼此,愈加明白合
作的重要性。
这次集中实践,不仅学会了知识,还明白了团结H勺重要性,可
谓收获良多。
(A)附录(源代码)
ttinclude"stdio.h"
ftinclude"stdlib.h"
#defineN2/*停车场容量*/
#defineM10
ttdefineTrue1
^defineFalse0
typedefstruct{
intnum;/*车牌号*/
intarrtime;/*抵达/离开时间*/
charcar;/*车的类型*/
}ELEMTP;/*次序栈的数据元素类型*/
typedefstruct{
ELEMTPelem[N];
inttop;
}SqStack;/*次序栈类型*/
typedefstructnode{
intnum;/*车牌号/便道上的车辆数量*/
structnode*next;
}QNode;/*链队列的数据元素类型*/
typedefstruct{
QNode*front,*rear;
}LQueue;/*链队列类型*/
voidInitStack_Sq(SqStack*s);/*初始化栈*/
intPush_Sq(SqStack*s,ELEMTPx);/*入栈*/
ELEMTPPop_Sq(SqStack*s);/*出栈*/
voidInitQueue_L(LQueue*q);/*初始化队列*/
voidEnQueue_L(LQueue*q,intnuml);/*入队列*/
intDelQueue_L(LQueue*q);/*出队列*/
voidArrive(SqStack*sl,LQueue*q,ELEMTPx){
/*车辆x进入停车场*/
intf;
f=Push_Sq(sl,x);
if(f==False){/*停车场栈si已满入便道q*/
EnQueue_L(q,x.num);
printfC第Kd号车停在便道第%(1车位上
\n”,x.num,q->front->num);
)
elseprintf("第%d号车停在停车场第%(1车位上
\n”,x.num,sl->top);
}/*Arrive*/
voidDelive(SqStack*sl,SqStack*s2,LQueue*q,ELEMTPx){
/*车辆x离开停车场*/
intn,f=False;
ELEMTPy;QNode*p;
while((sl->top>0)&&(f!=True)){/*在栈si中寻找车辆
x*/
y=Pop_Sq(sl);
if(y.num!=x.num)
n=Push_Sq(s2,y);
elsef=True;
)
if(y.num==x.num){/*寻找到车辆x*/
if('A'==x.car)
printfC第%d号车应收费%d元
\n”,y.num,(x.arrtime-y.arrtime)*M);
else
if('B'==x.car)
printfC第%(1号车应收费%d元
\n”,y.num,(x.arrtime-y.arrtime)*M*2);
else
printf("第%d号车应收费%d元
\n”,y.num,(x.arrtime-y.arrtime)*M*3);
while(s2->top>0){/*将栈s2中的车辆倒回到栈si中
*/
y=Pop_Sq(s2);
f=Push_Sq(sl,y);
}
n=DelQueue_L(q);
if(n!=NULL){/*便道q上的第一辆车入栈si*/
y.num=n;
y.arrtime=x.arrtime;
f=Push_Sq(sl,y);
printf(〃第%d号车停在停车场第%d号车位上
\n〃,y.num,sl->top);
}
else{/*栈si中未找到车辆x*/
while(s2->top>0){/*将栈s2中的J车辆倒回到栈si中
*/
y=Pop_Sq(s2);
f=Push_Sq(sl,y);
)
p=q->front;/*在便道q上找到车辆x*/
f=False;
while(f=False&&p->next!=NULL)
if(p->next->num!=x.num)
p=p->next;
else{
p->next=p->next->next;
q->front->num-;
if(p->next==NULL)
q->rear=q->front;
printf("第%d号车离开便道\n”,x.num);
f=True;
)
if(f==False)
printf(〃输入数据错误,停车场和便道上均无%d号车
\n”,x.num);
)
}/*Delive*/
voidDisplay(SqStack*sl,LQueue*q){
/*显示停车场的状况*/
intk;QNode*p;
printf(〃停车场状况:\n〃);
if(sl->top!=0){
printf("车道车号\n〃);
for(k=0;k<sl->top;k++)
printf("%d%d\n”,k+1,sl->elem[k].num);
)
elseprintf("停车场没有车辆\n");
printf(〃便道状况:\n");
if(q->front->num){
printf("车道车号\n");
for(k=l,p=q->front->next;p;p=p->next)
printf("%d%d\n”,k++,p->num);
)
elseprintf("便道没有车辆\n");
}/*Display*/
voidmainO
charchi,ch2;
SqStack*sl,*s2;
LQueue*q;
ELEMTPx;
intflag;
sl=(SqStack*)malloc(sizeof(SqStack));
s2=(SqStack*)malloc(sizeof(SqStack));
q=(LQueue*)malloc(sizeof(LQueue));
InitStack_Sq(sl);
InitStack_Sq(s2);
InitQueue_L(q);
flag=True;
while(flag){
printf("\n
printfC**秫欢迎进入停车场管
理系统****\n");
printfC
printf('\n");
printf("\n请输入您的选择
\n");
printf("\n");
printfS-----显示停车
场状况\n〃);
printfr\n^);
printf("A-----车辆抵达
\n〃);
printf("\n");
printf("D-----车辆离开
\n");
printf('\n");
printf("E-----程序结束
\n");
printf('\n");
chl=getchar();
switch(chi){
case'S':Display(si,q);break;
case'A':
printf(〃输入数据:车牌号,抵达时间,车辆类型(A
代表小汽车,B代表客车,C代表卡车):〃);
scanf("%d,%d,%c”,&x.num,&x,arrtime,&x.car);
Arrive(si,q,x);break;
case'D':printf("输入数据:车牌号,离开时间,车辆类
型(A代表小汽车,B代表客车,C代表卡车):”);
scanf("%d,%d,%c,,&x.num,&x,arrtime,&x.car);
Delive(si,s2,q,x);break;
case'E':flag=False;
printf("程序正常结束、n");break;
default:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作移交表模板
- 电力施工安全管理技术人员考试试题
- 电梯维修技能竞赛试题库(答案)
- 非煤矿山安全培训试题及答案
- 钢结构安全考试题库及答案
- 病原微生物实验室应急预案
- 传染病诊断标准培训试题(含答案)
- 常见标本的采集与存放
- 2026煤矿瓦斯检查考试题库及答案
- 2026医院文员年终工作总结
- 2026年新版预防未成年人犯罪法知识竞赛题库及参考答案
- 2026年水务集团招聘考试笔试试题及答案
- 2026年甘肃省酒泉市金塔县招聘社区工作者考试参考题库及答案解析
- 2026年云南云上云大数据产业发展有限公司及下属子公司第一次社会招聘(32人)笔试模拟试题及答案详解
- 冠状动脉粥样硬化性心脏病患者药物治疗管理路径专家共识
- 纺织厂安全生产管理制度
- 2026中国新能源电池技术研发行业市场现状趋势分析投资策略规划报告
- 2026秋沪教牛津版五年级上英语单词默写(默写)
- 苏教版六年级上册数学《比的意义》教学设计
- 医疗器械质量保证控制程序
- JJF(吉)106-2022 水分接收器校准规范
评论
0/150
提交评论