没有合适的资源?快使用搜索试试~ 我知道了~
20181101047-范少帅-校园导航系统1
需积分: 0 0 下载量 47 浏览量
2022-08-08
22:56:25
上传
评论
收藏 779KB DOCX 举报
温馨提示
试读
25页
2.输入输出的要求 3.测试数据样例 2.算法主模块的流程及各子模块的主要功能 2.写出各模块的伪码算法
资源详情
资源评论
资源推荐
实验题目
班级 18 计算机科学与技术 3 班 姓名范少帅 学号 20181101047 日
期 2019/11/30
(一)问题描述
1.功能要求;以我校为例,设计一个校园导航系统,主要为来访的客人提供信息查
询。系统有两类登陆账号,一类是游客,使用该系统方便校内路线查询;一类是管理
员,可以使用该系统查询校内路线,可对校园景点路线可编辑。
2.输入输出的要求;请严格按照系统的提示输入,避免输入恶性数据影响河北大学
导航系统的使用。
3.测试数据样例。
编号:1
名称:体检中心
(二)算法结构分析与设计
1.算法中所用的抽象数据类型的定义;
typedef struct
{
int data;
int t;
int first;
}Node;
typedef struct
{
string name; //地点名称
int a[101]; //地点数组
}Position;
2.算法主模块的流程及各子模块的主要功能;
void initdata(Position *P) //从文件读入学校各地点间的信息
void savedata(Position *P) //保存信息 void
int Menu() //下面建立主菜单界面
int display_1()//管理员界面
int display_2()//普通用户界面
void look_up_the_map(Position *P) //////浏览平面图
void fill_the_data(Position *P) /////////重新录入路径
void add_the_data(Position *P) ////////添加函数
void delete_the_data(Position *P) ////////////删除函数
void change_the_data(Position *P) //////修改函数
void print_the_data(Position *P) ///////显示校园各地点信息
void f(int n,int i,Position *P,Node *c) ////递归输出最佳路径
int fun(Node c[]) //////寻找最小值
void compute_distance(Position *P) ///////求最短路径
3.模块之间的层次关系。
(三)算法详细设计
1.采用 c 语言定义相关的数据类型;
typedef struct
{
int data;
int t;
int first;
}Node;
typedef struct
{
string name; //地点名称
int a[101]; //地点数组
}Position;
2.写出各模块的伪码算法;
1 找最短路径
void look_up_the_map(Position *P)
{
读取文件;
输出文件中的各个地点名称;
用户输入要查询的地点;
找到该位置并输出该位置的信息;
通过邻接矩阵找到与该位置直接相邻的地点;
输出;
关闭文件;
}
void f(int n,int i,Position *P,Node *c) ////递归输出最佳路径
{
if(i==n)
{
cout<<P[i].name<<" ";
return ;
}
f(n,c[i].first,P,c);
cout<<P[i].name<<" ";
}
int fun(Node c[]) //////寻找最小值
{
int min=9999,i,k=-1;
for(i=1;i<sizer;i++)
{
if(c[i].t==1&&c[i].data<min)
{
min=c[i].data;
k=i;
}
}
return k;
}
void compute_distance(Position *P) ///////求最短路径
{
initdata(P);
string name1,name2;
int i,j,n,max=9999,k;
Node c[101];
for(i=1;i<=sizer;i++)
{
c[i].data = max;
c[i].t = 1;
}
cout<<"请输入你要查询的起始位置:";
cin>>name1;
cout<<"请输入你要查询的终点位置:";
cin>>name2;
for(i=1;i<=sizer;i++)
{
if(P[i].name == name1)
{
n=i;
c[i].t= 0;
c[i].first = n;
break;
}
}
if(i>sizer)
cout<<" 输 入 错 误,该 学 校 地 图 信 息 中 没 有 该 地 点!";
else
{
for(j=1;j<=sizer;j++)
{
if(P[i].name 的临界点不为 0)
{
将临界距离读入数组;
数组的首部为 P[i].name;
}
}
int pp=0;
while(1)
{
k=fun(c);
if(k==-1)
break;
c[k].t = 0;
for(i=1;i<=sizer;i++)
{
if(k 的临界点 i 不为 0&&(P[k].a[i]+c[k].data<c[i].data))
{
更新距离;
}
}
}
for(i=1;i<=sizer;i++)
{
if(P[i].name == name2)
{
cout<<name1<<"到"<<name2<<"最短路径依次经过的地点为: ";
f(n,i,P,c);
cout<<endl;
cout<<"路径距离位:";
if(c[i].data == 9999)
cout<<'0'<<endl;
else
cout<<c[i].data<<endl;
剩余24页未读,继续阅读
黄浦江畔的夏先生
- 粉丝: 13
- 资源: 299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0