1、 1 校园导航系统校园导航系统课程设计报告课程设计报告 目目 录录 摘要摘要.1 1. 题目题目.1 2. 概要设计概要设计.1 3. 调试分析调试分析.15 4. 参考文献参考文献.15 2 1. 题目题目 校园导航系统校园导航系统 设计一个校园导游程序,后台操作: 1、操作员信息管理如修改密码等 2、能根据学校的规模进行添加景点信息、修改景点信息等功能, 3、若临时有交通管制,能进行交通管制的设置和撤销(如某某时间段那条路进行那个方向的 交通管制等) 前台为来访的客人提供各种信息查询服务: 1、设计学校的校园平面图,所含景点不少于 10 个。以图中顶点表示校内各景点,存放景点名 称、代号、
2、简介等信息;以边表示路径,存放路径长度等相关信息。 2、为来访客人提供图中任意景点相关信息的查询。 3、提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。 1.1 需求分析 设计一个校园导航系统, 导航系统又分为游客和管理员。 要进行管理操作还是游客操作由用户 自己选择 管理员的操作:修改景点信息、增加景点信息、交通管制等。 游客的操作:查看景点信息和查最短路径。 2. 概要设计概要设计 景点的信息由一维数组存放,景点关系由二维数据来存放 景点的信息和关系从文件读取,进而初始化 typedef struct /保存单个景点信息的结构体 char code10; /存放景点代码
3、char name20; /存放景点名称 char instruction100; /存放景点简介 ViewPoint; typedef struct /存放景点关系的二维数组 int edgesMAXVMAXV; /两景点间的距离 int number; /景点的数量 ViewPoint VMAXV; /保存景点信息的结构体数组 MGraph; 3 2.1 流程图 函数开始 接收功能的请求 接受信息输入 判断是否正确 读取文件 进行相对应操作 写回文件 函数结束 2.2 详细设计 void MainMenu(); 主菜单,写界面操作的函数。 void UserMenu(); 游客菜单,判断是
4、否非法输入,不会死循环。 void Map(); 输出民大地图,由于时间关系,没有画出。 void ViewAsk(); 游客查询景点函数,让游客选择要查询的景点,判断是否非法输入,不会死循环。 void PathAsk(); 问路函数,根据游客的起点和终点给出最短路径,判断是否非法输入,不会死循 环。 void Dijkstra(MGraph G,int v,int i); 迪杰斯特拉函数求最短路径 void Ppath(MGraph G,int path,int i,int v); 输出最短路径中的景点 void Dispath(MGraph G,int dist,int path,int
5、 s,int n,int v,int i); 查找最短路径。 void AdminMenu(); 管理员菜单,判断是否非法输入,不会死循环。 void Password(); 密码函数,管理员需输入密码才能进入后台,输入一次后无需再输入。 void AdminAlter(); 修改密码,需要再次输入密码。 void ViewAdd(); 增加景点,列出已有景点,判断新景点信息是和与已有景点的冲突,如冲突需重 新输入,判断是否非法输入,不会死循环。 void ViewAlter(); 修改景点信息,由于时间关系,没有判断新修改的景点信息是否与已有景点信息 4 冲突。若要做次判断,应与增加景点的判断算法一致。 void ControlMenu(); 交通管制菜单,判断是否非法输入,不会死循环。 void PathControl(); 路径管理, 可增加路径和修改路径, 列出已有路径, 根据用户的输入进行管理, 判断是否非法输入,不会死循环。但路径长度为整型,没有判断,若输入非整 型,则进入死循环,一个大大的 BUG,能力有限。 void PathDel(); 删除路径,列出已有路径,用户根据提示进行删除。判断是否非法输入,不会死 循环。 void Read(MGraph 读取文件。 void