




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计报告设计题目 校园导游图 学院名称 信息工程学院 专 业 班 级 计算机科学与技术(2)班 姓 名 晁 勉 学 号 1212210226 一. 题目:校园导游图二. 设计目标通过设计一个校园导游图,进一步理解数据结构中有关于图的基本概念、定义术语、存储结构等,理解图在描述现实问题中的能力,明白数据结构在程序设计中的重要性等。三. 问题描述给出学校的导游图(景点不少于10个),游客通过终端询问可知:任一景点的相关信息:从某一景点到另一景点的最短简单路径;游戏从校园大门进入,选一条最佳路线,使游客可以不重复地游览个景点,最后回到出口(出口就在入口旁边)。四. 需求分析需求:(1)将导游图看作一张带权无向图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息;(2)可以通过菜单提示操作,浏览校园全部景点;(3)查看所有游览路线,将某个景点的所有路线展示给游客;(4)选择出发点和目的地,将最短路线展示给游客;(5)输入景点编号,查看某个景点的信息。分析:完成对整个校园导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路:(1)结合本校的实际情况,选出10个景点;(2)为选出的10个景点赋上相关信息(景点编号、名称、简介);(3) 根据选出来的10个景点用邻接矩阵存储校园图。(4)利用C语言和数据结构编写实现校园导游图系统各功能的实现;(5)根据人为赋值的路权,设计算法计算任意两点之间的最短路径并显示;(6) 综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。五. 概要设计程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。功能调用信息输入全景浏览景点信息定义图主模块游览路线两个之间最短路线六. 详细设计采用C语言定义相关的数据类型写出各模块的类C码算法图的定义typedefstructArCellintadj; /路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedefstruct /图中顶点表示主要景点,存放景点的编号、名称、简介等信息,初始化图形MGraph * CreatUDN(MGraph *G)/接受用户输入inti,j,k,w;char v120,v220;printf(请输入图的顶点数,弧数:);scanf(%d%d,&G-vexnum,&G-arcnum);printf(请输入景点的编号、名称、简介:n);for(i=0;ivexnum;i+)printf(景点编号:);scanf(%d,&G-vexs-num);printf(景点名称:);scanf(%s,G-);printf(景点简介:);scanf(%s,G-vexs-introduction);for(i=0;ivexnum;i+)for(j=0;jvexnum;j+)G-arcsij.adj=INFINITY;printf(请输入路径长度:n);for(k=0;karcnum;k+)printf(第%d条边:n,k+1);printf(景点对(x,y):);scanf(%s,v1);scanf(%s,v2);printf(路径长度:);scanf(%d,&w);i=LocateVex(G,v1); j=LocateVex(G,v2);if(i=0&j=0)G-arcsij.adj=w;G-arcsji=G-arcsij; return G;主菜单void main() printf(n 榆林学院导游图 n);printf(*n);printf( * 1.浏览校园全景 *n);printf( * 2.查看所有游览路线 *n);printf( * 3.选择出发点和目的地 *n);printf( * 4.查看景点信息 *n);printf( * 5.退出系统 *n);printf( *n);printf(请选择您所需要的操作:);画出主要函数的流程图七.测试分析白盒:查看代码完整性代码完整。黑盒:测试是否可以正确的初始化,编码,译码,打印哈夫曼树等操作黑盒检测:打开VC+6.0开发环境,编译连接程序是否有错; 连接生成可执行exe文件八. 使用说明首先启动VC+开发环境,新建工程project,设定工程project的名称和保存位置,工程的描述信息生产,从而建立了一个空的工程文件。向工程中添加新建源代码的类型、名称、保存位置,设定源代码的类型、名称并添加到工程中,在源代码文件添加程序代码,编写完成后编译,查看运行结果。注意:一个工程project中可以有多个源文件、多个头文件;但这些段代码文件中只能出现一个main函数,作为整个程序运行的入口;必须关闭前一次程序运行结果窗口,才能进行下一次程序运行。编译程序无错后运行,根据主菜单提示输入所需要的操作,当输入1-5时显示运行结果,否则重新输入。操作结束后,根据提示再选择景点时,当输入0-9显示运行结果,否则重新输入,操作完成后,根据菜单提示退出系统,运行结束。九.测试数据1.主菜单2.校园各景点展示3.景点路线4.从出发点到目的地的路线5.景点信息查询十. 课程设计总结通过课程设计,使我对数据结构这门课程有了更深一步的认识。它是计算机程序设计的重要理论技术基础,在软件专业的学习中占据着十分重要的地位。同时也使我知道,要学好这门课程,基础是非常重要的,比如说以前学习的C语言为这门课、为程序的设计打下了重要的基础。也让我明白,上课认真听讲通过编写实验代码和调试运行,我们可以逐步积累调试C程序的经验并逐渐培养我们的编程能力、增强用计算机解决世界问题的能力。在课程设计过程中,总会感觉无从下手。因为上课时听的理论知识,各种算法总感觉挺似容易理解的,但是在真正的运用过程中,却不能把理论知道很好的和实践结合起来。因此,在学知识的过程中,一定要多动手、动脑,将所学的知识熟练掌握,自如运用。课程设计具有较强的可应用性和实践性,也是一个很考验毅力的过程,一个小小的错误就会导致整个程序出错,代价就是花费更长的时间去解决。因此,我们应该认真的对待课程设计,无论是编程设计还是分析总结都应该做到尽善尽美,这样才能提高我们的学习能力,为自己以后的发展打下扎实的基础。此外,对程序的测试应该要仔细,以确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。通过运用数据结构中的算法思想并结合C语言的基本知识,编写校园导游图的程序设计,使我受益匪浅,也让我明白了自己在这方面知识上的欠缺,比如不能完整的编写一个程序使之如自己预想的那样呈现在主菜单上,当然,我一定会再接再厉,努力改进,提高自己。源程序代码:#include#include#include#include#define INFINITY 10000 #define MAX_VERTEX_NUM 40#define MAX 40typedefstructArCellintadj; /路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedefstruct /图中顶点表示主要景点,存放景点的编号、名称、简介等信息,char name30;intnum;char introduction100;/简介infotype;typedefstructinfotypevexsMAX_VERTEX_NUM;AdjMatrix arcs;intvexnum,arcnum;MGraph;MGraph b;voidcmd(void);MGraphInitGraph(void);void Menu(void);void Browser(MGraph *G);voidShortestPath_DIJ(MGraph * G);void Floyd(MGraph *G);void Search(MGraph *G);intLocateVex(MGraph *G,char* v);MGraph * CreatUDN(MGraph *G);void print(MGraph *G);void main(void)system(color 0f);system(mode con: cols=140 lines=130);cmd();voidcmd(void)int i; b=InitGraph();Menu();scanf(%d,&i);while(i!=5) switch(i) case 1:system(cls);Browser(&b);Menu();break;case 2:system(cls);ShortestPath_DIJ(&b);Menu();break;case 3:system(cls);Floyd(&b);Menu();break;case 4:system(cls);Search(&b);Menu();break;case 5:exit(1);break;default:break; scanf(%d,&i); MGraphInitGraph(void)MGraph G;inti,j;G.vexnum=10;G.arcnum=14;for(i=0;iG.vexnum;i+)G.vexsi.num=i;strcpy(G.,沁园);strcpy(G.roduction,有山有水,是学院最美丽最具特色的地方);strcpy(G.,校门口);strcpy(G.roduction,榆林学院的南大门,正门之一);strcpy(G.,13号公寓楼);strcpy(G.roduction,学院最新的公寓楼,设备和环境是学院所有公寓楼中最好的);strcpy(G.,图书馆);strcpy(G.roduction,内有数万种图书并设有不少自习室,有电子阅览室和免费饮水机);strcpy(G.,行政楼);strcpy(G.roduction,学院的主楼,各级领导办公的地方,外观新颖,楼内干净,设备齐全);strcpy(G.,旧餐厅);strcpy(G.roduction,自学校建立就有的餐厅,学生吃饭的地方,饭菜不是很美味,价格适中);strcpy(G.,逸夫楼);strcpy(G.roduction,这是学院最新的一所教学楼,其设备齐全,是学生进行科技设计的选择之地);strcpy(G.,新餐厅);strcpy(G.roduction,就餐窗口少,饭味不可口且价格较贵,但比旧餐厅好的是新设了卖饮品的餐位);strcpy(G.,田径场);strcpy(G.roduction,塑胶跑道,人造草坪,适宜锻炼身体的好地方,学院的大型室外活动也都在此举行);strcpy(G.,2号教学楼);strcpy(G.roduction,学院的多媒体教学场所,设施先进,环境良好,网速较快,是各院系学生练机的首选之地);for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsij.adj=INFINITY;G.arcs01.adj=100;G.arcs02.adj=100;G.arcs06.adj=800;G.arcs17.adj=300;G.arcs23.adj=400;G.arcs36.adj=600;G.arcs34.adj=200;G.arcs45.adj=700;G.arcs49.adj=550;G.arcs59.adj=500;G.arcs67.adj=900;G.arcs69.adj=150;G.arcs78.adj=350;G.arcs89.adj=450;for(i=0;iG.vexnum;i+)for(j=0;jG.vexnum;j+)G.arcsji.adj=G.arcsij.adj;return G;void Menu() printf(n 榆林学院导游图 n);printf( *n);printf( * 1.浏览校园全景 *n);printf( * 2.查看所有游览路线 *n);printf( * 3.选择出发点和目的地 *n);printf( * 4.查看景点信息 *n);printf( * 5.退出系统 *n);printf( *n);printf(请选择您所需要的操作:);void Browser(MGraph *G)int v;printf(*n);printf(编号景点名称简介 n);for(v=0;vvexnum;v+)printf(%-4d%-16s%-56sn,G-vexsv.num,G-,G-roduction);printf(*n);voidShortestPath_DIJ(MGraph * G)intv,w,i,min,t=0,x,flag=1,v0;int final20, D20, p2020;while(flag) printf(请输入一个起始景点编号:);scanf(%d,&v0);if(v0G-vexnum) printf(景点编号不存在!请重新输入景点编号:);scanf(%d,&v0); if(v0=0&v0vexnum)flag=0; for(v=0;vvexnum;v+) finalv=0; Dv=G-arcsv0v.adj;for(w=0;wvexnum;w+)pvw=0;if(DvINFINITY) pvv0=1;pvv=1; Dv0=0;finalv0=1;for(i=1;ivexnum;i+) min=INFINITY;for(w=0;wvexnum;w+)if(!finalw)if(Dwmin)v=w;min=Dw;finalv=1;for(w=0;wvexnum;w+)if(!finalw&(min+G-arcsvw.adjarcsvw.adj;for(x=0;xvexnum;x+) pwx=pvx;pww=1; for(v=0;vvexnum;v+) if(v0!=v) printf(%s,G-);for(w=0;wvexnum;w+) if(pvw&w!=v0) printf(-%s,G-);t+; if(tG-vexnum-1&v0!=v)printf( 总路线长%dmnn,Dv); void Floyd(MGraph *G)intv,u,i,w,k,j,flag=1,p101010,D1010;for(v=0;vvexnum;v+)for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj;for(u=0;uvexnum;u+)pvwu=0;if(DvwINFINITY) pvwv=1;pvww=1; for(u=0;uvexnum;u+)for(v=0;vvexnum;v+)for(w=0;wvexnum;w+)if(Dvu+DuwDvw) Dvw=Dvu+Duw;for(i=0;ivexnum;i+)pvwi=pvui|puwi; while(flag) printf(请输入出发点和目的地的编号:);scanf(%d%d,&k,&j);if(kG-vexnum|jG-vexnum) printf(景点编号不存在!请重新输入出发点和目的地的编号:);scanf(%d%d,&k,&j); if(k=0&kvexnum&j=0&jvexnum)flag=0; printf(%s,G-);for(u=0;uvexnum;u+)if(pkju&k!=u&j!=u)printf(-%s,G-);printf(-%s,G-);printf( 总路线长%dmn,Dkj);void Search(MGraph *G)intk,flag=1;while(flag) printf(请输入要查询的景点编号:);scanf(%d,&k);if(kG-vexnum) printf(景点编号不存在!请重新输入景点编号:);scanf(%d,&k); if(k=0&kvexnum)flag=0; printf(*n);printf(编号景点名称简介 n);printf(%-4d%-16s%-56sn,G-vexsk.num,G-,G-roduction);printf(*n);intLocateVex(MGraph *G,char* v) int c=-1,i;for(i=0;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省名校联盟2026届高三上学期10月联考生物试题+答案
- 2025年中华会计中级题库及答案
- 编导广告策划真题及答案
- 2025年东阳社工面试真题及答案
- 美容仪器新品发布会行业跨境出海项目商业计划书
- 老年心理健康咨询企业制定与实施新质生产力项目商业计划书
- 2025医疗设备租赁合同样本
- 2025年淄博书法考试试题及答案
- 2025年大班认识汉字试卷及答案
- 医学知识技能培训课件
- 2025年河北唐山市芦台经济开发区公开招聘区属国有企业工作人员18人笔试模拟试题及答案解析
- 酒店突发事件应急预案2025优化版
- 2024年新高考Ⅰ卷英语真题(原卷+答案)
- 2025年注册安全工程师考试冲刺押题:安全生产管理实务专项训练试卷
- 外贸会计自学课件
- 高质量临床护理服务实施路径
- 烟花爆竹经营培训试题及答案
- 车位退还协议书
- 景区酒店融资方案(3篇)
- GB/T 9948-2025石化和化工装置用无缝钢管
- 下肢静脉血栓疑难病例护理讨论
评论
0/150
提交评论