课程设计报告文档格式.docx
- 文档编号:7647288
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:43.44KB
课程设计报告文档格式.docx
《课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
Q)//从队列中删除一个元素
voidClearQueue(LinkQueue&
Q)//清除队列中的所有元素,使之变成空队
boolEmptyQueue(LinkQueue&
HQ)//检查队列是否为空
2.渡轮输出相关模块:
voidPrint(inta[],intn)//输出本次轮渡所载汽车编号
voidOutputQueue(constLinkQueue&
q1,constLinkQueue&
q2)
//输出汽车排队等待的情况
五、数据结构:
建立两个链接队列,一个为客车队列,另一个为货车队列,到渡口需过江的汽车分别进入到相应队列中。
链接队列的定义为:
structLinkQueue
{
LNode*front;
//队首指针
LNode*rear;
//队尾指针
};
主函数中使用switch()函数,将功能表中的六种选择分别表示为case1~case6。
具体表示:
swtch(flag)//falg为输入的功能序号
case1:
//车到渡口进行登记
…
case2:
//轮渡到渡口进行登记
…
case3:
//汽车上轮渡
…
case4:
//命令轮渡起航
case5:
//输出当前汽车排队情况
case6:
//结束程序运行
…
六、源程序:
链式队列.cpp
voidInitQueue(LinkQueue&
Q.front=Q.rear=NULL;
}
voidEnQueue(LinkQueue&
LNode*newptr=newLNode();
newptr->
data=item;
next=NULL;
if(Q.rear==NULL)//若队列为空,则新结点既是队首又是队尾
Q.front=Q.rear=newptr;
Q.rear->
next=newptr;
//若队列非空,则新结点被链接到队尾
Q.rear=newptr;
ElemTypeOutQueue(LinkQueue&
if(Q.front==NULL)//若队列为空则终止运行
{
cout<
<
"
Empty!
endl;
exit
(1);
}
LNode*p;
//暂存队首元素以便返回
p=Q.front;
//暂存队首指针以便回收队首结点
ElemTypea=p->
data;
//使队首指针指向下一个结点
Q.front=p->
next;
//若删除后队列为空,则使队尾指针为空
if(Q.front==NULL)
Q.rear=NULL;
deletep;
returna;
//返回删除的队首元素
voidClearQueue(LinkQueue&
LNode*b;
//对首时针赋给p
b=Q.front;
while(Q.front!
=NULL)//依次删除队列中的每个元素
Q.front=b->
deleteb;
b=Q.front;
Q.rear=NULL;
//置队尾指针为空
boolEmptyQueue(LinkQueue&
returnHQ.front==NULL;
轮渡.cpp
#include<
iostream.h>
stdlib.h>
time.h>
//此头文件包含有上time函数和ctime函数的
typedefintElemType;
structLNode{
ElemTypedata;
//值域
LNode*next;
//链接指针域
#include"
链接队列.cpp"
//输出本次轮渡所载汽车编号
voidPrint(inta[],intn)
longt;
t=time(0);
//当前机器系统时间被保存到t中,单位为秒
cout<
轮渡开始起航->
本次过江的时间:
ctime(&
t)<
//ctime(&
t)函数的值为根据参数t转换得到的日期和时间的字符串
本次轮渡所载汽车:
;
for(inti=0;
i<
n;
i++)cout<
a[i]<
'
'
//输出汽车排队等待的情况
voidOutputQueue(constLinkQueue&
客车等候的情况:
LNode*p=q1.front;
if(p==NULL)cout<
暂时无客车等候."
while(p!
=NULL)
p->
data<
p=p->
货车排队的情况:
p=q2.front;
暂时无货车等候."
voidmain()
//q1和q2队列用来分别存储待渡江的客车和货车
LinkQueueq1,q2;
//对q1和q2进行初始化
InitQueue(q1);
InitQueue(q2);
//用flag保存用户选择,用mark登记轮渡到渡口
intflag,mark=0;
//用数组a记录轮渡上的每个汽车号,用n记录汽车的个数
inta[10],n=0;
//用t1和t2登记时间
longt1,t2;
//程序处理结果
do
//显示功能表并接受用户选择
L1:
cout<
功能表:
1---车到渡口进行登记"
2---轮渡到渡口进行登记"
3---汽车上轮渡"
4---命令轮渡起航"
5---输出当前汽车排队情况"
6---结束程序运行"
endl<
请输入你的选择(1-6):
do
{
cin>
>
flag;
if(flag<
1||flag>
6)cout<
输入功能号错,重输:
}while(flag<
6);
intx,i;
//根据不同选择进行相应处理
switch(flag){
case1:
cout<
输入车辆号,假定小于100为客车,否则为货车,"
可以输入多辆车,用空格分开,直到输入-1为止。
while
(1){
cin>
x;
if(x==-1)break;
if(x<
100)EnQueue(q1,x);
//客车进q1队
elseEnQueue(q2,x);
//货车进q2队
}
break;
//结束switch语句
case2:
if(mark==1){
cout<
渡轮已在渡口等待,不要重复登记!
break;
//结束switch语句
mark=1;
//渡轮到口岸登记
渡轮已到渡口,可以上船!
n=0;
//装载车辆数初始为0;
t1=time(0);
//登记渡轮到渡口时间,单位为秒
case3:
if(EmptyQueue(q1)&
&
EmptyQueue(q2)){
暂无汽车过江!
if(mark==1&
n!
=0){
t2=time(0)-t1;
//计算到目前为止渡轮等待时间的秒数
cout<
轮渡未满,有车"
n<
辆,已等待"
t2/60<
分"
t2%60<
秒,等候其他汽车上渡轮!
}
//结束switch语句
if(mark!
=1){
渡轮未到,请汽车稍后上渡轮!
do{
i=0;
//首先上4辆客车
while(!
EmptyQueue(q1)&
n<
10&
i<
4){
a[n++]=OutQueue(q1);
i++;
//满10辆开船,打印车辆号,重新对mark和n清0,转功能号表
if(n==10){Print(a,n);
mark=0;
n=0;
gotoL1;
//进4辆客车则接着进一辆货车,不满4辆则由货车补
if(i==4){
if(!
EmptyQueue(q2))a[n++]=OutQueue(q2);
else{
while(!
EmptyQueue(q2)&
5){
a[n++]=OutQueue(q2);
i++;
}
//满10辆则开船
}while(!
EmptyQueue(q1)||!
EmptyQueue(q2));
//只要客车或货车队列不全为空,则继续执行do循环
t2=time(0)-t1;
//登记渡轮已经等待时间的秒数
渡轮上有车"
t2%60;
case4:
if(n==0||mark==0)
轮渡上无车过江或根本无渡轮!
不需要起航!
else{
Print(a,n);
case5:
OutputQueue(q1,q2);
case6:
if(!
EmptyQueue(q2)){
还有汽车未渡江,暂不能结束!
if(n!
渡轮上有车,不能结束,需命令开渡轮!
程序运行结束!
return;
//执行结束返回
}//switch语句终端位置
}while
(1);
//外层do循环终端位置
ClearQueue(q1);
ClearQueue(q2);
//主函数结束位置
七、测试数据:
C:
\“*.\**\轮渡.exe”
1---车到渡口进行登记
2---轮渡到渡口进行登记
3---汽车上轮渡
4---命令轮渡起航
5---输出当前汽车排队情况
6---结束程序运行
1
输入车辆号,假定小于100为客车,否则为货车,
45786723832109321235874919391894562031425388-1
5---输出当前汽车排队情况3
2
3
WedJul0418:
23:
372007
4578673223832123587109
渡轮上有车9辆,已等待0分10秒,等候其他汽车上渡轮!
4
27:
352007
4919395318988456203142
5
暂时无客车等候.
暂时无货车等候.
6
Pressanykeytocontinue
八、结果分析:
选择“1”时,输入车辆号:
45786723832109321235874919391894562031425388
选择“2”时,说明轮渡已经到了渡口,汽车可以进入轮渡。
显示“渡轮已到渡口,可以上船!
”,说明轮渡已到渡口。
选择“3”时,让汽车按照要求进入轮渡,如果装载满了(10辆),就立刻发船,不满则等待。
显示“轮渡开始起航->
4578673223832123587109”,
说明已经装满10辆车,立刻启航。
再次选择“2”时,另一艘渡轮到渡口,汽车可以进入渡轮了。
再次选择“3”时,让汽车进入轮渡。
显示“渡轮上有车9辆,已等待0分10秒,等候其他汽车上渡轮!
”,渡轮没有装满,要等待其他车辆。
选择“4”时,认为让轮渡启航。
4919395318988456203142”。
选择“5”时,输出当前车辆排队情况。
因为由于上面两次,车辆已经全部上了渡轮,所以显示“客车等候的情况:
暂时无客车等候.货车排队的情况:
暂时无货车等候.”。
选择“6”时,退出运行。
显示“程序运行结束!
”。
九、心得体会:
通过这次课程设计,使我对《数据结构》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们计算机专业的学习中占据着十分重要的地位。
同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)