地铁课设报告Word格式.docx
《地铁课设报告Word格式.docx》由会员分享,可在线阅读,更多相关《地铁课设报告Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
![地铁课设报告Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/8/4a505398-e718-4ccf-8622-d14750dbf793/4a505398-e718-4ccf-8622-d14750dbf7931.gif)
1.完成“任务书”中指定的操作功能,运行稳定。
2.课程设计说明书。
五、时间进度安排
顺序
阶段日期
计划完成内容
备注
1
第1天
阅读资料
2
第2—3天
系统分析设计
3
第4—7天
程序编制、调试及运行
4
第8—9天
成绩评定
5
第10天
撰写课程设计说明书
六、主要参考资料(文献)
[1]滕国文.数据结构课程设计.北京:
清华大学出版社.2010.09
[2]MarkAllenWeiss编著.数据结构与算法分析.北京:
人民邮电出版社.2007
[3]李春葆.数据结构(C语言版)习题与解析.北京:
清华大学出版社.2002..04
[4]熊锡义主编C语言程序设计案例教程大连理工大学出版社09年3月版
[5]严蔚敏吴伟民.数据结构(C语言版).北京:
清华大学出版社.2007
[6]谭浩强.C程序设计.北京:
清华大学出版社.1999.12
程序设计基础课程设计成绩评定表
系(部):
计算机科学与技术系班级:
计算机B143学生姓名:
王世杰
指导教师评审意见
评价内容
具体要求
权重
评分
加权分
调研
论证
能独立查阅文献,收集资料;
能制定课程设计方案和日程安排。
0.1
工作能力
态度
工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,
0.2
工作量
按期圆满完成规定的设计任务,工作量饱满,难度适宜。
说明书的质量
说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。
0.5
指导教师评审成绩
(加权分合计乘以8)
分
加权分合计
指导教师签名:
年月日
评阅教师评审意见
查阅
文献
查阅文献有一定广泛性;
有综合归纳资料的能力
工作量饱满,难度适中。
0.3
评阅教师评审成绩
(加权分合计乘以4)
分
评阅教师签名:
答辩小组评审意见
学生汇报
汇报准备充分,思路清晰;
语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;
时间符合要求。
答辩
思路清晰;
回答问题有理论依据,基本概念清楚;
主要问题回答准确,深入,有说服力。
答辩小组评审成绩
答辩小组教师签名:
课程设计总评成绩
张云朗
王丛伍
摘要
地铁建设可以缓解城市交通压力。
城市交通问题,已经成为现代人无法面对的通病。
经济发展,汽车数量增长速度,远远快于城市道路的扩张速度。
地铁这个交通的特点就是到达的快捷性和可靠性,运载能力强,能够在很短的时间运输大量的人群。
运行中不塞车,是城市中最具可靠性的交通工具。
第二、增加地铁交通体系,可以使城市规划更加科学和合理。
可以节约能源。
缓解对石油、天然气消耗的压力。
可以减少污染。
地铁这种交通工具污染少。
可以节省时间。
因为不塞车,速度快,节省上班族上下班的在途时间。
因此我们小组利用数据结构输入各条线路起点、终点和直接距离,建立无向图,邻接矩阵存储输出邻接矩阵中的普利姆算法计算最小生成树输出最有线路。
关键词数据结构最小生成树地铁邻接矩阵
摘要I
第一章问题分析1
1.1引言1
1.2背景1
1.3分析1
1.3.1调试过程中的问题1
第二章原理与运行环境2
2.1数据理论2
2.1.1地铁问题的数据理论2
2.2运行环境2
2.2.1打开方法2
2.2.2打开Microsoftvisualstdio6.0运行环境3
2.2.3源程序的建立与编辑、连接4
第三章系统分析与设计6
3.1地铁建设问题分析与设计6
3.1.1系统的功能6
第四章系统功能实现7
4.1地铁建设问题的系统功能实现7
4.1.1定义主函数7
4.1.2创建结构体数组,存储辖区名8
4.1.3创建无向图,邻接矩阵存储9
4.1.4输出邻接矩阵10
4.1.5普利姆算法求最小生成树,输出最优路线11
结论14
致谢15
参考文献16
第一章问题分析
1.1引言
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。
对数据元素间逻辑关系的描述称为数据的逻辑结构;
数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;
此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。
这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
本次课程设计主要利用数据结构中最小生成树实现地铁最优线路问题。
1.2背景
随着经济的迅速发展,城市交通“外拥内堵”,情况严峻,压力巨大。
我们为了缓解城市交通拥堵,改变过去以地上交通为主的单一格局,构建地上地下立体交通体系,并通过与其他交通方式的有机衔接,将极大地缓解城市交通拥堵状况,解决人民群众出行难的问题,于是我们建立了地铁建设项目。
1.3分析
1.3.1调试过程中的问题
1.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析:
①开始准备将辖区名和相应距离同存储在邻接矩阵中,但因为数据类型不同,这个想法难以实现;
而且就算实现了,在后面的程序中操作也非常麻烦。
所以我创建了一个结构体数组用来存储辖区名,这样辖区名和数组下标一一对应,简明、易懂、清晰。
以后只要看数字所对应的下标存储的是哪个辖区,就可以将其引用。
②运行程序时,我要输出最优路线对应的辖区,所以在输出时要直接引用结构体数组,但怎么都不行,我就分模块来调试,最后发现,原来是没有将结构体数组的地址传过来。
修改后,程序运行正常。
③没有使用指针,避免了指针指向错误存储区而造成的错误。
2.算法的时间复杂度和空间复杂度的分析,改进设想:
本程序的时间复杂度为o(n^2),主要是for循环的作用。
第二章原理与运行环境
2.1数据理论
2.1.1地铁问题的数据理论
1.程序所能达到的功能:
⑴creatve()---创建结构体数组,存储辖区名
⑵CreateGraph()---建立辖区间直接距离的无向图,用邻接矩阵存储
⑶pri()---输出无向图的邻接矩阵
⑷prim()---普利姆算法计算无向图的最小生成树,输出最优路线
2.输入的形式和输入值的范围:
输入数字和字母,字母为辖区名,数字为直接距离,名称个数n,线路个数e,0<
e<
n(n-1),直接距离weigth,0<
weigth<
99999
3.输出的形式:
最佳建设路径为:
(辖区名----辖区名)---直接路径
2.2运行环境
数据结构程序的运行环境为Microsoftvisualc++6.0
2.2.1打开方法
开始→程序→Microsoftvisualstdio6.0→MicrosoftVisualC++6.0,如图2-1所示。
图2-1打开VisualC++的方法
2.2.2打开Microsoftvisualstdio6.0运行环境
其工作环境如图2-2所示。
图2-2VisualC++工作环境
2.2.3源程序的建立与编辑、连接
⑴建立C语言源程序文件。
建立方法:
选择菜单命令“File”→“New”或直接点击对话框中的“New”,如图2-3所示。
图2-3建立C语言源程序文件
⑵程序的编辑与编译。
编辑完成后,选择菜单栏中的“组建”→“调试程序”,或者直接点击工具栏中“箭头”按钮,即可对程序进行编译。
当输出区显示“0errors,0warnings”时表示没有错误和警告,反之,则会按序号列出错误和警告。
双击错误或警告,编辑标志会出现在源文件可能出错的位置,我们可以在此对源程序中的错误进行更改。
当然有时提示位置不一定很准确。
程序的编辑于编译操作,如图2-4所示。
图2-4程序的编辑与编译
⑶程序的执行。
单击工具栏上的“深红色感叹号”按钮,即可执行刚编写的程序。
若程序完全正确,即可弹出运行框。
如图2-5所示。
图2-5程序的执行
第三章系统分析与设计
3.1地铁建设问题分析与设计
3.1.1系统的功能
此系统为:
某城市要在各个辖区之间修建地铁,由于地铁建设费用昂贵,因此需要合理安排地铁建设线路,使市民可以沿地铁到达各个辖区,并使总费用最小。
其主功能模块的流程图如图3-1所示。
N
Y
第四章系统功能实现
4.1地铁建设问题的系统功能实现
4.1.1定义主函数
主函数是程序的入口,采用模块化设计,首先声明一些必要的变量函数如下:
主函数调用各模块的关系如下:
⑴主函数main()调用intcreatve(cityvex[max])创建结构体数组存储辖区名;
⑵主函数main()调用intCreateGraph(intg[][max],intn,voidpri(intg[][max],intn))建立无向图,用邻接矩阵存储;
⑶intCreateGraph(intg[][max],intn,voidpri(intg[][max],intn))调用voidpri(intg[][max],intn)输出邻接矩阵;
⑷主函数main()调用voidprim(intg[][max],intn,cityvex[max])计算最小生成树,输出最优线路和总里程。
源代码如下:
voidmain()/*主函数*/
{
intg[max][max],n;
cityvex[max];
n=creatve(vex);
CreateGraph(g,n,pri);
printf("
\n\n最佳建设路线为:
\n"
);
(辖区名----辖区名)---直接距离\n\n"
prim(g,n,vex);
}
功能实现图如图4-1所示。
图4-1初始化界面
4.1.2创建结构体数组,存储辖区名
进入主程序页面后,应输入各个辖区名,并调用函数对输入的辖区名进行存储。
intcreatve(cityvex[max])//创建辖区名数组
inti,n;
设置辖区的个数:
"
//城市中辖区的个数
scanf("
%d"
&
n);
for(i=1;
i<
n+1;
i++)//建立城市辖区名数组
{
第%d个城市辖区名称为:
i);
%s"
vex[i].name);
}
return(n);
功能实现图4-2所示。
图4-2
4.1.3创建无向图,邻接矩阵存储
按照地铁建设问题的要求,要将各个辖区为顶点作为图,并用邻接矩阵将其存储。
其源代码如下:
intCreateGraph(intg[][max],intn,voidpri(intg[][max],intn))/*建立无向图*/
inte,i,j,k,v1=0,v2=0,weight=0;
输入可建地铁线线路个数:
"
e);
while(e<
=0||e>
=n*(n-1)||n>
=max)
{
error();
=n;
i++)
for(j=1;
j<
j++)
g[i][j]=inf;
/*初始化矩阵,全部元素设为无穷大*/
for(k=1;
k<
=e;
k++)
输入第%d条线路的起始辖区,终点辖区,直接距离:
k);
%d%d%d"
v1,&
v2,&
weight);
while(v1==v2||v1>
n||v2>
n||v1<
1||v2<
1)
g[v1][v2]=weight;
g[v2][v1]=weight;
\n输出存储矩阵:
pri(g,n);
returnOK;
}
功能实现图如图4-3所示
图4-3
4.1.4输出邻接矩阵
此时将邻接矩阵存储的结果显示一下,以便检查下一步中结果的正确性。
voidpri(intg[][max],intn)/*输出无向图的邻接矩阵*/
inti,j;
for(i=0;
%d\t"
\n%d\t"
j++)/*输出边的权值*/
if(g[i][j]==inf)printf("
∞\t"
'
\354'
elseprintf("
g[i][j]);
功能实现如图4-4所示
图4-4
4.1.5普利姆算法求最小生成树,输出最优路线
用普利姆算法求出最短路程,则为地铁建设的最优路线。
voidprim(intg[][max],intn,cityvex[max])/*prim的函数*/
intlowcost[max],closest[max];
inti,j,k,min,s=0;
for(i=2;
i++)/*n个顶点,n-1条边*/
{lowcost[i]=g[1][i];
/*初始化*/
closest[i]=1;
/*顶点未加入到最小生成树中*/
lowcos