校园导游课程设计实验报告_校园导游实验报告
校园导游课程设计实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“校园导游实验报告”。
《数据结构》
课 程 设 计 实 验 报 告
课程名称:
《数据结构》课程设计 课程设计题目: 校园导游 姓名:
邱可昉 院系:
计算机学院 专业:
计算机科学与技术 班级:
10052313 学号:
10051319 指导老师:
王立波
2012年5月18日
目录
1.课程设计的目的„„„„„„„„„„„„„„„„„„„„„3 2.问题分析„„„„„„„„„„„„„„„„„„„„„„„„3 3.课程设计报告内容„„„„„„„„„„„„„„„„„„„„3(1)概要设计„„„„„„„„„„„„„„„„„„„„„3(2)详细设计„„„„„„„„„„„„„„„„„„„„„3(3)测试结果„„„„„„„„„„„„„„„„„„„„„7(4)程序清单„„„„„„„„„„„„„„„„„„„„„9 4.个人小结 „„„„„„„„„„„„„„„„„„„„„„„14
1.课程设计的目的《数据结构》是计算机软件的一门基础课程,计算机科学各领域及有关的应用软件都要用到各种类型的数据结构。学好数据结构对掌握实际编程能力是很有帮助的。为了学好《数据结构》,必须编写一些在特定数据结构上的算法,通过上机调试,才能更好地掌握各种数据结构及其特点,同时提高解决计算机应用实际问题的能力。
2.问题分析
[问题描述](1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
(3)为来访客人提供图中任意景点相关信息的查询。[测试数据] 由读者根据实际情况指定。
3.课程设计报告内容
(1)概要设计
根据学校具体分布构建无向连通图,再通过几个模块运行函数完成校园信息简介查询,校园景点间最短距离计算和输出以及退出功能。
(2)详细设计
//定义全局变量 int bian[n][n];int zhjl[n][n];int path[n][n];//构建dy类 cla dy{ public: dy();
~dy();void jj();int zuiduan();void floyed();void shuchu(int,int);
// 边的值
// 两点间的最短距离
// 经过的景点
};首先,通过dy类的构造函数构建邻接矩阵。dy::dy(){ for(int i=0;i
bian[1][3]=bian[3][1]=150;bian[1][6]=bian[6][1]=300;bian[2][3]=bian[3][2]=100;bian[3][4]=bian[4][3]=50;bian[3][5]=bian[5][3]=200;bian[4][5]=bian[5][4]=100;bian[4][8]=bian[8][4]=350;
bian[4][9]=bian[9][4]=250;bian[5][6]=bian[6][5]=100;bian[5][7]=bian[7][5]=250;bian[5][8]=bian[8][5]=300;bian[6][7]=bian[7][6]=200;bian[7][8]=bian[8][7]=100;bian[8][9]=bian[9][8]=400;bian[9][10]=bian[10][9]=100;//将各点到自己的距离定义为0 bian[1][1]=bian[2][2]=bian[3][3]=bian[4][4]=bian[5][5]=0;bian[6][6]=bian[7][7]=bian[8][8]=bian[9][9]=bian[10][10]=0;} 接着,jj函数实现景点列表输出和景点查询。void dy::jj(){ int a;cout>a;getchar();cout
cin>>i>>j;if(i>n||in||j
cout>i>>j;} else { floyed();shuchu(i,j);} return 1;} 再者,floyed函数用三个for循环求解最短路,将两点间的n个点看做一个点,用path数组记录这个点,在依次求出各点间最短路,并用zdjl数组保存起来。
void dy::floyed(){ int i,j,k;for(i=1;i(zdjl[i][k]+zdjl[k][j])){//用path[][]记录从i到j的最短路径上点j的前驱景点的序号
zdjl[i][j]=zdjl[i][k]+zdjl[k][j];path[i][j]=k;path[j][i]=k;} } 最后,shuchu函数判断输入两景点编号大小,完成正序输出和逆序输出。void dy::shuchu(int i,int j){ int a,b;a=i;b=j;cout
cout“”“”
(4)测试结果
(4)程序清单
#include //#include
using namespace std;
#define INT_MAX 10000 #define n 11
//定义全局变量 int bian[n][n];int zdjl[n][n];int path[n][n];
cla dy{ public:
dy();~dy();void jj();int zuiduan();void floyed();
// 边的值
// 两点间的最短距离
// 经过的景点
void shuchu(int,int);};dy::dy(){ for(int i=0;i
bian[1][3]=bian[3][1]=150;bian[1][6]=bian[6][1]=300;bian[2][3]=bian[3][2]=100;bian[3][4]=bian[4][3]=50;bian[3][5]=bian[5][3]=200;bian[4][5]=bian[5][4]=100;bian[4][8]=bian[8][4]=350;
bian[4][9]=bian[9][4]=250;bian[5][6]=bian[6][5]=100;bian[5][7]=bian[7][5]=250;bian[5][8]=bian[8][5]=300;bian[6][7]=bian[7][6]=200;bian[7][8]=bian[8][7]=100;bian[8][9]=bian[9][8]=400;bian[9][10]=bian[10][9]=100;bian[1][1]=bian[2][2]=bian[3][3]=bian[4][4]=bian[5][5]=0;bian[6][6]=bian[7][7]=bian[8][8]=bian[9][9]=bian[10][10]=0;} dy::~dy(){} void dy::jj()int a;{ cout>a;getchar();cout
cout
break;case 2:
cout
cout
break;case 3: cout
cout
cout
break;case 5: cout
cout
break;case 6: cout
cout
break;case 7: cout
cout
break;case 8: cout
cout
break;case 9: cout
break;case 10: cout
cout
break;} } int dy::zuiduan(){ int i,j;cout>i>>j;if(i>n||in||j>i>>j;} else { floyed();shuchu(i,j);} return 1;} void dy::floyed(){ int i,j,k;for(i=1;i(zdjl[i][k]+zdjl[k][j])){//用path[][]记录从i到j的最短路径上点j的前驱景点的序号
zdjl[i][j]=zdjl[i][k]+zdjl[k][j];path[i][j]=k;path[j][i]=k;} } void dy::shuchu(int i,int j){ int a,b;a=i;b=j;cout“”“”
int main(){ int i,j,s=1,k;dy dy;while(s){ cout>k;switch(k){ case 1: cout
4.个人小结
在前两次编写程序之后,我已经能够轻车熟路的编写程序了,对于C++的数据结构风格也有所领悟,感觉相对轻松一些。
经过这次练习,我发现我还是有一些没有注意的地方,我发现我对于书本上的知识吸收还有欠缺,然后编写程序不够仔细,有一些小差错导致编译出现错误,后来检查后修正了。我要在以后的学习中注意以下几点:
1.认真上好专业课,多在实践中锻炼自己。2.写程序要考虑周到,严密。
3.在做设计的时候要有信心,有耐心,不浮躁。
4.认真学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
5.在课余时间多写程序,熟练掌握在调试程序过程中常见的错误,一边节约调试程序的时间。