校园导游系统实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
导游咨询系统
1需求分析
编制一个为来访客人进行最短路径导游的程序
(1)从学校的平面图上选取n个有代表性的景点,根据用户指定的起点和终点输出相应路径,或根据用户指定的景点输出景点的信息。
(2).为来访客人提供图中任意景点相关信息的查询。
(3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
2、设计思路
校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。(草稿纸)结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,
为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。
3 算法设计
一、概要设计
程序中包含的模块
(1)主程序模块
主函数:void main()
(2)查询模块
景点信息查询:void CreateUDN()
(3)打印模块
打印两个景点的路径及最短距离:
void display()
模块间的调用关系
主函数main()调用:void CreateUDN()
void ShortestPath()/*要查找的两景点的最短距离*/
void NextValue()
void HaMiTonian()
void display() /* 打印两个景点的路径及最短距离*/
3.2 详细设计
界面菜单设计:
char Menu()
{
char c;
int flag;
do{
flag=1;
system("cls");
narrate();
printf("\t\t\t-------1、查询景点路径-------\n"); printf("\t\t\t-------2、查询景点信息-------\n"); printf("\t\t\t-------3、推荐参观路线-------\n"); printf("\t\t\t-------e、退出-----------\n");
printf("\t\t\t\t请输入您的选择:");
scanf("%c",&c);
if(c=='1'||c=='2'||c=='3'||c=='e')
flag=0;
}while(flag);
return c;
}
char SearchMenu()
{
char c;
int flag;
do{
flag=1;
system("cls");
narrate();
printf("\t\t\t-----1、按照景点编号查询-----n"); printf("\t\t\t-----2、按照景点名称查询-----n"); printf("\t\t\t-----e、返回-----------n");
printf("\t\t\t\t请输入您的选择:");
scanf("%c",&c);
if(c=='1'||c=='2'||c=='e')
flag=0;
}while(flag);
return c;
}
void search()
{
int num;
int i;
char c;
char name[20];
do
{
system("cls");
c=SearchMenu();
switch (c)
{
case '1':
system("cls");
narrate();
printf("\n\n\t\t请输入您要查找的景点编号:"); scanf("%d",&num);
for(i=0;i { if(num==G.vex[i].number) { printf("\n\n\t\t\t您要查找景点信息如下:"); printf("nnttt%-25snn",G.vex[i].description); printf("\n\t\t\t按任意键返回..."); getchar(); getchar(); break; } } if(i==NUM) { printf("\n\n\t\t\t没有找到!"); printf("\n\n\t\t\t按任意键返回..."); getchar(); getchar(); } break; case '2': narrate(); system("cls"); printf("\n\n\t\t请输入您要查找的景点名称:"); scanf("%s",name); for(i=0;i { if(!strcmp(name,G.vex[i].sight)) { printf("\n\n\t\t\t您要查找景点信息如下:"); printf("\n\n\t\t\t%-25snn",G.vex[i].description); printf("\n\t\t\t按任意键返回..."); getchar(); getchar(); break; } }