数据结构课程设计:C++实现集美大学校园导游系统

您所在的位置:网站首页 校园导游系统java版 数据结构课程设计:C++实现集美大学校园导游系统

数据结构课程设计:C++实现集美大学校园导游系统

2024-07-07 06:28| 来源: 网络整理| 查看: 265

概述:

校园导游系统是一种应用于大学校园的信息化系统,它主要是为了方便师生和游客在校园内进行游览或寻找各个地点。该系统实现了校园导游的自助化,用户可以通过电脑进行导游,同时系统也提供了景点介绍、浏览路线、更新信息等多种功能。

需求分析:

1. 景点介绍:用户可以浏览各个景点的详细介绍。

2. 浏览路线:为满足不同情况下的用户需求此功能,应满足多种查询方法。

3. 更新信息:用户可根据实际情况主动更新校园内的各种变化,用户可以通过该功能增加、删除景点或增加新的路径等,以保证系统的有效性。

概要设计:

该系统运用数据结构中图的相关知识进行设计,并采用C++进行编写。主要功能模块包括景点介绍、浏览路线、更新信息等。

详细设计:

景点介绍:用户可以点击相关景点获取详细信息,并借此了解学校的各种相关信息。浏览路线:(1)查看游览路线:输入起点,得到所有的浏览路线。(2)查询景点间最短路径:输入起点及终点,得到最短路径。(3)查询景点间所有路径:输入起点及终点,得到所有两点间的路径。更新信息:需要输入密码来解锁以下功能(1)删除结点:将指定景点删除。 (2)删除边:将景点之间的道路删除。 (3)增加结点:添加一个新的景点。 (4)增加边:为景点间添加一条新的路线。 (5)输出邻接矩阵:查看各个节点及节点间权值。 6)重新建图: 删除全部内容,并重新构建。 (7)更新信息:修改部分节点及边 (8)返回主页。

总结与心得:

通过本次数据结构的课程设计,我学习到了如何使用数据结构和算法来实现复杂的功能,并深入理解了软件开发过程中的需求分析、概要设计、详细设计、运行与测试等环节。同时,我也意识到在实际开发中需要注重用户体验、安全性和可扩展性等方面,不断优化和改进系统,以满足用户和市场的需求。

参考文献:

《数据结构:用C语言描述》(第2版),耿国华《面向对象程序设计与Visual C++ 6.0教程》(第2版),陈天华 

全代码: 

//集美大学校园管理系统 #include #include #include #define Infinity 65535 //表示无穷大 #define MaxNumber 23 //用于邻接矩阵 #define vertex 15//顶点个数 typedef struct side//边的权值 { int wet;//权值 }side, wetmatrix[MaxNumber][MaxNumber];//边的邻接矩阵类型 typedef struct vetinf//顶点信息 { int number;//顶点编号 char name[64];//顶点名称 char intro[256];//顶点介绍 }vetinf; typedef struct mapstr//图结构信息 { vetinf vets[MaxNumber];//顶点数组 wetmatrix mat;//邻接矩阵 int vetnum, sidenum; }mapstr; //全局变量 mapstr campus;//图结构变量(学校校园) int d[30]; int visited[50]; int shortest[MaxNumber][MaxNumber];//定义全局变量存储最小路径 int pathh[MaxNumber][MaxNumber];//定义存储路径 //1.图的初始化 mapstr initmap() { mapstr m;//构件图m int i = 0, j = 0; m.vetnum = 15;//定义顶点个数 m.sidenum = 23;//定义边的条数 for (i = 1; i vetnum][i].wet = Infinity; m->mat[i][m->vetnum].wet = Infinity; } return 1; } //9.删除一个结点 int delvet(mapstr* m) { int i = 0, j, l, v; if (m->vetnum vetnum) { printf("\n输入错误!请重新输入:"); scanf_s("%d", &v); } l = locatevet(campus, v); if (l < 0) { printf("顶点%d已删除\n", v); return 1; } for (i = l; i vetnum - 1; i++) for (j = 1; j vetnum; j++)//将二维数组中的第m+1行依次向前移动一行(删除第m行) m->mat[i][j] = m->mat[i + 1][j]; for (i = l; i vetnum - 1; i++) for (j = 1; j vetnum; j++)//将二维数组中的第m+1列依次向前移动一列(删除第m列) m->mat[j][i] = m->mat[j][i + 1]; m->vets[v].number = -1;//表示此点已删除,后期打印也不会显示该点 m->vetnum--;//顶点个数-1 return 1; } //10.删除一条边 int delside(mapstr* m) { int l, n, v0, v1; if (m->vetnum vetnum < 0) { printf("此%d顶点已删除", v0); return 1; } n = locatevet(campus, v1); if (n < 0) { printf("此%d顶点已删除", v1); return 1; } m->mat[l][n].wet = Infinity;//将删掉的边的权值改为无穷 m->mat[n][l].wet = Infinity; m->sidenum--;//图的边数减一 return 1; } //11.重新构造图 int creatmap(mapstr* m) { int i, j, l, n, v0, v1, distance; printf("请输入图的顶点数和边数:\n"); scanf_s("%d %d", &m->vetnum, &m->sidenum); printf("请输入顶点信息: \n"); for (i = 1; i vetnum; i++)//输入各顶点对应的景点信息 { printf("请输入景点编号:"); scanf_s("%d", &m->vets[i].number); printf("请输入景点名称:"); scanf_s("%s", &m->vets[i].name,10); printf("请输入景点简介:"); scanf_s("%s", &m->vets[i].intro,20); } for (i = 0; i vetnum; i++)//权值初始化为无穷 for (j = 0; j vetnum; j++) m->mat[i][j].wet = Infinity; printf("请输入图中各景点边的信息 \n"); for (i = 1; i sidenum; i++) { printf("\n请输入第%d条边的起点,终点,长度为:", i); scanf_s("%d %d %d", &v0, &v1, &distance); l = locatevet(campus, v0); n = locatevet(campus, v1); if (l > 0 && n > 0) { m->mat[l][n].wet = distance; m->mat[n][l].wet = m->mat[l][n].wet; } } return 1; } //12.更改图部分信息 int newmap(mapstr* m) { int changenum, i, l, n, t, distance, v0, v1; printf("\n下面请输入你要修改的景点的个数:\n");//修改定点对应的景点 scanf_s("%d", &changenum); while (changenumvertex) { printf("\n你的输入有误,请重新输入"); scanf_s("%d", &changenum); } for (i = 0; i < changenum; i++) { printf("\n请输入景点编号:"); scanf_s("&d", &l); t = locatevet(campus, l); printf("\n请输入修改后景点的名称:"); scanf_s("%s", &m->vets[t].name,10); printf("\n请输入修改后景点的简介:"); scanf_s("%s", &m->vets[t].intro,20); } printf("\n下面请输入你要修改的边的个数"); scanf_s("%d", &changenum); while (changenumvertex); { printf("\n你的输入有误,请重新输入"); scanf_s("%d", &changenum); } if (changenum != 0) printf("\n下面请输入更新边的信息:\n"); for (i = 1; i = 0 && n >= 0) { m->mat[l][n].wet = distance; m->mat[n][l].wet = m->mat[l][n].wet; } } return 1; } //13.输出图的邻接矩阵的值 void printmapstr(mapstr m) { int i, j, k = 0; for (i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3