算法与数据结构设计报告

上传人:第*** 文档编号:33712564 上传时间:2018-02-17 格式:DOCX 页数:18 大小:288.35KB
返回 下载 相关 举报
算法与数据结构设计报告_第1页
第1页 / 共18页
算法与数据结构设计报告_第2页
第2页 / 共18页
算法与数据结构设计报告_第3页
第3页 / 共18页
算法与数据结构设计报告_第4页
第4页 / 共18页
算法与数据结构设计报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《算法与数据结构设计报告》由会员分享,可在线阅读,更多相关《算法与数据结构设计报告(18页珍藏版)》请在金锄头文库上搜索。

1、算法与数据结构设计报告( 2015 / 2016 学年 第 一 学期)题 目: 景点导游程序 专 业 信息安全 学 生 姓 名 邓佳成 班 级 学 号 B13040701 指 导 教 师 骆 健 指 导 单 位 计算机学院计算机科学与技术系 日 期 一、 课程内容和要求内容:用无向图表示学校的景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点的介绍、游览路径等问题。要求:(1)需设置普通用户、超级管理员、景点管理用户等不同权限的用户。景点管理用户增加、删除、更新有关景点和道路的信息的权限、超级管理员对所有用户有

2、增加、删除和修改权限。(2) 查询各景点的相关信息;(3) 查询图中任意两个景点间的最短路径。(4) 查询图中任意两个景点间的所有路径。(5)所有信息需存放在文本文件中。二、 需求分析void cmd3();/菜单页面调用函数void menu3();/显示菜单页面void addUsers();/添加用户void showUsers();/显示用户信息void updateUser();/修改用户登录密码void deleteUser();/删除该用户void loadUser();/加载用户信息void storeUser();/存储用户信息void cmd2();/菜单页面调用函数voi

3、d menu2();/菜单页面void showPoints();/显示景点信息void addPoint();添加景点void updatePoint();/修改景点信息void deletePoint();/删除景点void showRoad();/显示路线void addRoad();/添加路线void updateRoad();/修改路线void deleteRoad();/删除路线void cmd(void);/主菜单页面调用函数MGraph InitGraph(void);/初始化地图void Menu(void);/主菜单界面void Browser(MGraph *G);/浏览

4、景点void ShortestPath_DIJ(MGraph * G);/ 迪杰斯特拉算法计算出起点到各个顶点之间的最短路径void Floyd(MGraph *G);/计算两景点间的总路线长void Search(MGraph *G);/查找景点并输出景点信息int LocateVex(MGraph *G,char* v);/MGraph * CreatUDN(MGraph *G);/初始化图形,接受用户输入void print(MGraph *G);/输出地图信息void print_Passwd(void);/登录页面,输入登录信息判断是否为景区用户及用户类型void loadInfoT

5、ype(); /加载景点信息,景点信息的类型为 infotypevoid loadMap(); /加载道路信息void storeInfoType();/保存景点信息void storeMap();/保存道路信息三、 概要设计普通用户对景点的查询, 路线查询, 景点介绍等功能读取用户名和密码是权限判断超级管理员 景点管理员开始访问磁盘中的文件, 获取已存储的信息访问成功? 否结束对用户进行添加,删除, 权限修改对景点进行添加, 删除, 修改四、 详细设计1. 加载用户信息,若用户信息文件不存在则输出错误提示void loadUser()ifstream in(user.dat);if(!in)

6、cout name pwd weight;for(int i=0; iname;for(int i=0; ipwd;strcpy(stupos.user_Pass, pwd);cout name;for(int i=0; iname intro;for(int i=0; iname;for(int i=0; iintro;strcpy(b.vexspos.introduction, intro);cout name;for(int i=0; istart end dis;if(start=b.points | start=b.points | endstart end dis;if(start

7、=b.points | start=b.points | endstart end;if(start=b.points | start=b.points | endG-points)printf(景点编号不存在!请重新输入景点编号:);scanf(%d,if(v0=0&v0points)flag=0;for(v=0;vpoints;v+)finalv=0;Dv=G-arcsv0v.adj;for(w=0;wpoints;w+)pvw=0;if(Dvpoints;i+)min=INFINITY;for(w=0;wpoints;w+)if(!finalw)if(Dwpoints;w+)if(!fi

8、nalw&(min+G-arcsvw.adjarcsvw.adj;for(x=0;xpoints;x+)pwx=pvx;pww=1;for(v=0;vpoints;v+)if(v0!=v) printf(%s,G-vexsv0.name);for(w=0;wpoints;w+)if(pvwt+; if(tG-points-113. 查找景点,查找正确则输出景点信息,错误则输出提示void Search(MGraph *G)int k,flag=1;while(flag)printf(请输入要查询的景点编号:);scanf(%d,if(kG-vexnum)printf(该景点编号不存在!请重新输

9、入景点编号:);scanf(%d,if(k=0&kvexnum)flag=0;printf(n);printf(编号 景点名称 简介 n);printf(%-4d %-16s %-56s n,G-vexsk.num,G-vexsk.name,G-vexsk.introduction);printf(n);14. 初始化图形,接受用户输入MGraph * CreatUDN(MGraph *G) int i,j,k,w;char v120,v220;printf(请输入图的顶点数,弧数:);scanf(%d%d,printf(请输入景点的编号、名称、简介:n);for(i=0;ivexnum;i+

10、)printf(景点编号:); scanf(%d,printf(景点名称:);scanf(%s,G-vexsi.name);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,i=LocateV

11、ex(G,v1);j=LocateVex(G,v2);if(i=0&j=0)G-arcsij.adj=w;G-arcsji=G-arcsij;return G;五、 测试数据及其结果分析六、 调试过程中的问题. 在设计登录用户时不知道如何才能跟已存入用户信息进行比较,老是出现错误。.在求最短路径时不知道用什么算法,开始运用比较大小的算法算时出现很多错误。. 文件操作方法使用错误,导致文件访问老是出现错误,输出错误提示。七、 总结 刚一开始看到这个实验时感觉整个人都要懵了,不知道从何开始。于是疯狂地浏览网上资料,在论坛上求助。终于,有了一点头绪,于是开始自己慢慢地敲。第一次敲那么长的代码,感觉整个人都头昏眼花了,不过在这个过程中,既培养了我的耐心,也大大地提高了我的编程能力以及对中各种方法操作的理解与运用,比如文件操作,各种字符串的方法使用。觉得这个过程中比较有价值的还有学会了迪杰斯特拉算法这一比较经典的算法。不管怎样,在这个实验过程中我的收获很大,不管在编程这方面还是耐性这方面,都有了许多的提高。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号