以下为《数据结构课程某某》的无排版文字预览,完整内容请下载
武汉***计算机***
课 程 设 计 报 告
课程名称 数据结构课程某某
题 目 公园导游系统
专业班级 软工一班
学 号 ***21001
学生姓名 顾某某
指导教师 黄某某
2021 年 12 月 10 日
武汉***计算机***
课程某某任务书
课程名称: 数据结构课程某某
设计题目: 公园导游系统
专 业: 软件工程 班 级: 20级 1 班
完成时间: 12月10日 指导教师: 黄某某 专业负责人: 许某某
主要内容
主要利用C/C++语言和数据结构相关算法来进行设计与开发。
从黄鹤楼公园的平面图中选取有代表性景点(10-15个),抽象成一个无向带权图。以图中顶点表示景点,边上的权值表示两地之间距离。
本程序主要包括四大功能,为用户提供公园景点简介;从公园大门到其它景点的路径咨询;根据用户指定的始点和终点查询并输出的相应最短路径;在各景点间修通网络的最经济的方案。
基本要求
(1)完成程序所要实现的功能,得到正确的运行结果。
(2)做好程序的功能测试,程序均能得到正确结果。
(3)严格按照课程某某报告的步骤和内容要求撰写报告,做到有文字描述,有图表说明。
(4)严格按照课程某某报告的格式要求调整报告格式,包括字体、字体大小等。
(5)要求上交源代码。
(6)要求系统设计有创新,酌情加分。
参考资料
1. 李春葆主编.数据结构教程(第5版) 清华大学出版社
2. 李春葆主编.数据结构教程上机实验指导(第5版)清华大学出版社
3.苏仕华主编,数据结构课程某某.机械工业出版社
4.何钦铭主编,数据结构课程某某.浙江大学出版社
武汉***计算机***
课程某某成绩评价表
课程名称
数据结构课程某某
题 目
公园导游系统
学生姓名
学号
指导教
师姓名
黄某某
职称
副教授
序 号
评价项目
指 标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程某某质量
课程某某选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
40
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
10
4
答辩
能正确回答指导教师所提出的问题。
30
总 分
评 语:
指导教师: 年 月 日
需求分析
实现黄鹤楼景区导游系统,首先要考虑系统的安全性,在程序中设置密码登录,然后在程序中加入景点介绍和查看导游图功能,使游客对于各个景点有一个基本的了解,最后加入景区游览线路查询功能,让游客可以快速去到自己想要游览的景点。
2.概要设计
3.详细设计
void CreateAdj(AdjGraph *&G,int A[maxv][maxv],int n,int e)//建立图的邻接表
MatGraph CreateMat(MatGraph g,int A[maxv][maxv],int n,int e)//建立图的邻接矩阵
void reg()//密码输入界面
void reglose()//登录失败界面
void serve()//系统功能展示界面
void f1()//“走进黄鹤楼”功能界面
void f2()//“景点介绍”功能界面
void f3()//“旅游路线推荐”功能界面
void f4()//“查询入口到景点路线”功能界面
void f5()//“查询两景点最短路线”功能界面
void f6()//“各景点间修建直饮水管道的最小长度”功能界面
void f8()//系统退出界面
void map()//查看地图
void Dijkstra(MatGraph g,int v,int m)//运用Dijkstra算法求两景点间的最短路径
void Dispath(MatGraph g,int dis[],int path[],int S[],int v,int m)//输出最短路径
void FindAllPath(AdjGraph *G,int u,int v,int path[],int d)//求入口到景点的所有路线
void Prim(MatGraph g,int v)//求图的最小生成树,解决修建管道
使用说明、测试和分析结果
#include
#include
#include
#include
#include
#define maxv 20
#define INF 35678
int visited[maxv]={0};
typedef struct
{
char name[10];
}InfoType;
typedef struct
{
int no;
InfoType info;
}VertexType;
typedef struct
{
int edge[maxv][maxv];
int n,e;
VertexType vex[maxv];
}MatGraph;
typedef struct ANode
{
int adjvex;
struct ANode *nextarc;
int weight;
}ArcNode;
typedef struct Vnode
{
InfoType info;
ArcNode *firstarc;
}VNode;
typedef struct
{
VNode adjlist[maxv];
int n,e;
}AdjGraph;
void CreateAdj(AdjGraph *&G,int A[maxv][maxv],int n,int e)
{
int i,j;ArcNode *p;
G=(AdjGraph *)malloc(sizeof(AdjGraph));
for(i=0;iadjlist[i].firstarc=NULL;
for(i=0;i=0;j--)
if(A[i][j]!=0&&A[i][j]!=INF)
{
p=(ArcNode *)malloc(sizeof(ArcNode));
p->adjvex=j;
p->weight=A[i][j];
p->nextarc=G->adjlist[i].firstarc;
G->adjlist[i].firstarc=p;
}
G->n=n;G->e=e;
i=0;
FILE *fp1;
fp1=fopen("v4.txt","r");
while(!feof(fp1)){
fscanf(fp1,"%s",G->adjlist[i].info.name);
i++;
}
}
void FindAllPath(AdjGraph *G,int u,int v,int path[],int d)
{
int w,i;
ArcNode *p;
d++;path[d]=u;
visited[u]=1;
if(u==v&&d>=0)
{
printf("%s",G->adjlist[path[0]].info.name);
for(i=1;iadjlist[path[i]].info.name);
printf("\n");
}
p=G->adjlist[u].firstarc;
while(p!=NULL)
{
w=p->adjvex;
if(visited[w]==0)FindAllPath(G,w,v,path,d);
p=p->nextarc;
}
visited[u]=0;
}
void Dispath(MatGraph g,int dis[],int path[],int S[],int v,int m)
{
int i=m,j,k;
int apath[maxv],d;
if(S[i]==1&&i!=v)
{
printf("从%s到%s的最短路径长度为:%d\t路径为:",g.vex[v].info.name,g.vex[i].info.name,dis[i]);
d=0;apath[d]=i;k=path[i];
if(k==-1)printf("无路径\n");
else {
while(k!=v)
{
d++;apath[d]=k;
k=path[k];
}
d++;apath[d]=v;
printf("%s",g.vex[apath[d]].info.name);
for(j=d-1;j>=0;j--)
printf("->%s",g.vex[apath[j]].info.name);
printf("\n\n\n");
}
}
}
void Dijkstra(MatGraph g,int v,int m)
{
int dist[maxv],path[maxv];
int S[maxv];
int mindis,i,j,u;
for(i=0;i
以上为《数据结构课程某某》的无排版文字预览,完整内容请下载
数据结构课程某某由用户“时乘6龙寸”分享发布,转载请注明出处