中南大学数据结构课程设计.docx
《中南大学数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《中南大学数据结构课程设计.docx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构课程设计学院: 信息科学与工程学院 专业班级: 指导老师: 学号: 姓名: 目录校园导游咨询系统21.1.题目与要求21.2.设计与实现2基本思路2主要数据结构3程序的算法和主要流程4程序实现过程中的主要难点和解决方法51.3.实验结果及分析6实验的准备6实验结果及分析81.4总结9简单的职工管理系统102.1.题目与要求102.2.设计与实现10基本思路10主要数据结构11程序的算法和主要流程11程序实现过程中的主要难点和解决方法132.3实验结果及分析15实验的准备15实验结果及分析162.4总结19附件:20校园导游咨询系统 1.1.题目与要求1) 自己画一张简易的校园平面图,有
2、三个校区和三所附属医院,在这些校区和医院内选10个以上的建筑物、办公室、宿舍等地名。以图中顶点表示校园内各地名,存放地名名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。2) 为来访客人提供图中任意地名相关信息的查询。3) 为来访客人提供任意地名的问路查询,即查询任意两个地名之间的一条最短路径。实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。顶点和边均含有相关信息。1.2.设计与实现 基本思路校园导游拓扑图是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代
3、表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。主要数据结构链接矩阵,相关代码typedef struct arc int adj; /路径长度arc,adjmatrix4040; /建一个结构体数组保存路径长度typedef struct scenery /存储景点信息int num;/景点编号char n
4、ame20;/景点名称char introduction200;/景点介绍scenery;typedef struct graph scenery vexs40; /点adjmatrix arcs; /边int vexnum,arcnum; /点与边的个数graph;graph b;程序的算法和主要流程用弗洛伊德算法实现最短路径:void floyd(graph *G) /求有向网G中各对顶点v和w之间的最短路径pvw int v,u,i,w,k,j,flag=1, /及其带权长度Dvw,若pvwu为TRUE p101010,D1010; /则u是从v到w当前求得最短路径上的点 for(v=0
5、;vvexnum;v+) for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj; /初始路径赋值 for(u=0;uvexnum;u+)pvwu=0; if(Dvw9999) /从v到w有直接路径 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; 主要流程: int main() b=initgraph(); /初始化 while(1) Menu();
6、 /界面 int choice; /选择功能 cinchoice; switch(choice) case 1: 查看校园景点 showall(&b); system(pause); system(cls); break; case 2: 查看景点信息 showselect(&b); system(pause); system(cls); break; case 3: 查找最短旅游路线 floyd(&b); system(pause); system(cls); break; case 4: 退出系统 exit(1); break; default:cout请在1-4中选择操作!endl;sy
7、stem(pause);system(cls);break; return 0;程序实现过程中的主要难点和解决方法程序设计的主要难点就是在对结构体的设计和弗洛伊德算法的具体实现上,通过查询数据结构的书及相关算法书,我了解到弗洛伊德算法主要运用了动态规划的相关思想, 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=a(i,j) nn开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(
8、n)为图的距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。1.3.实验结果及分析实验的准备图1.3.1 校园结构拓扑图首先我们序设计校园导游拓扑结构图,将相关数据存入相应数据结构中,然后设计实现相关功能的方法。实验数据如下:strcpy(G.vexs0.name,升华公寓); strcpy(G.vexs0.introduction,学生宿舍,位于中南大学南校区。); strcpy(G.vexs1.name,二食堂); strcpy(G.vexs1.introduction,学生食堂,南校区最大的食堂,四层楼。); strcpy(G.vexs2.name,七食堂); str
9、cpy(G.vexs2.introduction,学生食堂,位于中南大学南校区。); strcpy(G.vexs3.name,八食堂); strcpy(G.vexs3.introduction,学生食堂,位于中南大学南校区。); strcpy(G.vexs4.name,校医院); strcpy(G.vexs4.introduction,校内医院,位于中南大学南校区。); strcpy(G.vexs5.name,春之岛); strcpy(G.vexs5.introduction,校园超市,产品种类齐全,位于中南大学南校区。); strcpy(G.vexs6.name,图书馆); strcpy(G
10、.vexs6.introduction,学生自习的好去处,位于中南大学新校区。); strcpy(G.vexs7.name,建艺院); strcpy(G.vexs7.introduction,建艺院,位于中南大学新校区。); strcpy(G.vexs8.name,外语院); strcpy(G.vexs8.introduction,外语院,位于中南大学新校区。); strcpy(G.vexs9.name,教学楼); strcpy(G.vexs9.introduction,学生上课场所,位于中南大学新校区。);for(i=0;iG.vexnum;i+)for(j=0;jname=; temp-c
11、ode=0; temp-birth=0; temp-sex=; temp-edu=; temp-phone=0; temp-next=NULL;for(p=Head;p-next!=NULL;p=p-next)for(q=Head-next;q-next!=NULL;q=q-next)if(q-nameq-next-name)temp-name=q-name;q-name=q-next-name;q-next-name=temp-name; 主要流程:int main() Link Head=0; Head=Create(Head); /创建一个空头节点int menu; while(1) c
12、outendlmenu; switch(menu) case 0: 退出系统cout成功退出系统!endl; return 0; case 1: 增加员工信息Head=add(Head); break; case 2: 删除员工信息 Head=del(Head); break; case 3: 员工信息查询 search(Head); break; case 4: 员工信息修改modify(Head);break; case 5: 信息总表display_list(Head);break; default: cout请选择正确的菜单项进行操作。多谢合作!next=p-next-next来实现对
13、数据的删除。我们新建两个结点来完成对数据的删除,使ptr_1始终在ptr_2的前面。Link search(Link Head) /返回符合姓名条件的职工信息 Link ptr_1;Link ptr_2;string name;ptr_1=Head-next;ptr_2=Head;while(ptr_1)if(ptr_1-name=name) display_node(ptr_1); /打印满足条件节点 re(); return ptr_2; else ptr_1=ptr_1-next; /查询下一节点ptr_2=ptr_2-next; Link del(Link Head) /删除职工记录L
14、ink ptr;Link ptr_2;ptr_2=search(Head);ptr=ptr_2-next;coutphone;if(ptr) ptr_2-next=ptr-next;free(ptr);elsecout没找到此职工的记录,无法删除。endl; return Head; 2.3实验结果及分析实验的准备图2.3.1 职工管理系统模块图首先将职工系统的实现框架图列出,建立起相应的数据结构,利用注册职工这一模块将职工信息输入,进而实现后续模块功能。实验结果及分析在修改界面还有一些不足,比如输入数据过长会造成数据的溢出,进而影响输出。2.4总结本次实验实现了对单位的职工进行管理,包括插入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 数据结构 课程设计
限制150内