课程设计
来源:互联网 发布:朗读配音软件 编辑:程序博客网 时间:2024/06/03 09:13
- /*
- 烟台大学计算机学院
- 文件名称:xiangmu.cpp
- 作者:张帅
- 完成日期:2017年12月19日
- 问题描述:校园导游系统
- */
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include<string.h>#include"t.h"int main(){ int S[MaxSize+1],P[MaxSize+1]; int shuru1,shuru2;int step = 1; int top = -1; int D[MaxSize+1]; int Stack[MaxSize+1];int A[MaxSize+1][MaxSize+1]; int N=12; int path[MaxViewNum][MaxViewNum]; /*定义存贮路径*/ int shortest[MaxViewNum][MaxViewNum];MGraph MGr; system("color 9f"); char k; init( MGr, shortest,N); printf("**********************************************************************\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("* 欢迎使用烟台大学导游系统 ! *\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("**********************************************************************\n"); printf("\n"); while(1) { printf("1.景点信息查询请按“1”键;\n"); printf("2.如果需要增加景点。请按“2”键;\n"); printf("3.景点最短路径查询请按“3”键;\n"); printf("4.校内景点地图查询请按“4”键;\n"); printf("5.退出系统请按“5”键;\n"); printf("请选择: \n"); scanf("%c",&k); switch(k) { case '1':printf("景点介绍查询。\n"); introduce( MGr,N);break; case '2':printf("需要增加景点"); zengjia(MGr,N);break; case '3':printf("景点最短路径查询。"); distance( MGr,N, Stack,D,top,step ,shuru1,shuru2,S,P);break;///////////////////////////////////////////////////调用distance函数////////////////////////////////////////// case '4':printf("景点地图。\n"); map();break; case '5':printf("谢谢使用!\n");exit(0); } } system("pause"); return 0;}#define MaxSize 100#define VISITED 1#define NOTVISITED 0#define Infinite 1073741823#define MaxViewNum 50 /*景点个数最大50*/#define MaxRoad 1000 /*定义路径为无穷大*/ /*目前景点个数*/typedef struct{ char name[30]; /*景点名称*/ char number[10]; /*景点代号*/ char introduce[200]; /*景点介绍*/}Elemtype; /*景点信息*/typedef struct{ int num; /*景点编号*/ Elemtype date; /*景点信息*/}View; /*定义景点*/typedef struct{ View view[MaxViewNum]; /*存放顶点的一维数组,数组第零单元没有用上*/ int length[MaxViewNum][MaxViewNum]; /*存放路径长度*/ int m,n;}MGraph;void init( MGraph &MGr, int shortest[MaxViewNum][MaxViewNum],int &N);void introduce(MGraph &MGr,int &N);void display(int &i,int &j,int shortest[MaxViewNum][MaxViewNum],int path[MaxViewNum][MaxViewNum],int &N);void Push(int &value,int Stack[],int &top,int S[],int P[] );int Pop(int Stack[],int &top );int minD(int &N,int D[],int S[],int P[]);void input(MGraph &MGr,int &N,int D[],int &shuru1,int &shuru2,int S[],int P[]);void output_path(MGraph &MGr,int Stack[],int D[],int &top,int &shuru1,int &shuru2 ,int S[],int P[]);void distance(MGraph &MGr,int &N,int Stack[],int D[],int &top,int &step,int &shuru1,int &shuru2,int S[],int P[] );void map();void zengjia(MGraph &MGr,int &N);#include"t.h"#include <stdio.h>#include<string.h>#include <stdlib.h>#include <conio.h>void init(MGraph &MGr, int shortest[MaxViewNum][MaxViewNum],int &N){ MGr.view[1].num=1; strcpy(MGr.view[1].date.name,"学校南门"); strcpy(MGr.view[1].date.number,"001"); strcpy(MGr.view[1].date.introduce,"坐落于烟台大学南门,对面为运动场,有红绿灯,交通便利。"); MGr.view[2].num=2; strcpy(MGr.view[2].date.name,"图书馆"); strcpy(MGr.view[2].date.number,"002"); strcpy(MGr.view[2].date.introduce,"学生看书的地方,里面摆满书籍。"); MGr.view[3].num=3; strcpy(MGr.view[3].date.name,"综合楼"); strcpy(MGr.view[3].date.number,"003"); strcpy(MGr.view[3].date.introduce,"一共六层,常作为开会的场所"); MGr.view[4].num=4; strcpy(MGr.view[4].date.name,"七餐"); strcpy(MGr.view[4].date.number,"004"); strcpy(MGr.view[4].date.introduce,"学校目前最大的餐厅"); MGr.view[5].num=5; strcpy(MGr.view[5].date.name,"西门"); strcpy(MGr.view[5].date.number,"005"); strcpy(MGr.view[5].date.introduce,"前面为一个十字路口,右边有个公交站牌"); MGr.view[6].num=6; strcpy(MGr.view[6].date.name,"一教二教三教"); strcpy(MGr.view[6].date.number,"006"); strcpy(MGr.view[6].date.introduce,"考研的地方"); MGr.view[7].num=7; strcpy(MGr.view[7].date.name,"三元湖"); strcpy(MGr.view[7].date.number,"007"); strcpy(MGr.view[7].date.introduce,"三元胡上面有个桥,景色十分美丽。"); MGr.view[8].num=8; strcpy(MGr.view[8].date.name,"钟楼"); strcpy(MGr.view[8].date.number,"008"); strcpy(MGr.view[8].date.introduce,"学校最高的地方,里面有各种计算机大神"); MGr.view[9].num=9; strcpy(MGr.view[9].date.name,"一餐二餐三餐"); strcpy(MGr.view[9].date.number,"009"); strcpy(MGr.view[9].date.introduce,"种类比较丰富的美食,饭餐可口。"); MGr.view[10].num=10; strcpy(MGr.view[10].date.name,"老校区西门"); strcpy(MGr.view[10].date.number,"010"); strcpy(MGr.view[10].date.introduce,"西门出去正对文化路,对面就是河南牧业经济学院。"); MGr.view[11].num=11; strcpy(MGr.view[11].date.name,"北门"); strcpy(MGr.view[11].date.number,"011"); strcpy(MGr.view[11].date.introduce,"对面为新世纪,里面有各种好玩的好吃的。"); MGr.view[12].num=12; strcpy(MGr.view[12].date.name,"家属院"); strcpy(MGr.view[12].date.number,"012"); strcpy(MGr.view[12].date.introduce,"emmm里面有学校领导以及各位家长,还有学生可以租借的房子。"); int i,j; for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { MGr.length[i][j]=MaxRoad; } } for(i=1;i<=N;i++) { shortest[i][j]=0; } MGr.length[1][2]=MGr.length[2][1]=50; MGr.length[2][3]=MGr.length[3][2]=50; MGr.length[3][4]=MGr.length[4][3]=60; MGr.length[3][5]=MGr.length[5][3]=100; MGr.length[5][6]=MGr.length[6][5]=100; MGr.length[6][7]=MGr.length[7][6]=220; MGr.length[6][9]=MGr.length[9][6]=80; MGr.length[7][8]=MGr.length[8][7]=250; MGr.length[8][9]=MGr.length[9][8]=100; MGr.length[8][10]=MGr.length[10][8]=150; MGr.length[9][11]=MGr.length[11][9]=50; MGr.length[10][11]=MGr.length[11][10]=60; MGr.length[11][12]=MGr.length[12][11]=40; MGr.length[1][1]=MGr.length[2][2]=MGr.length[3][3]=MGr.length[4][4]=0; MGr.length[5][5]=MGr.length[6][6]=MGr.length[7][7]=MGr.length[8][8]=0; MGr.length[9][9]=MGr.length[10][10]=MGr.length[11][11]=MGr.length[12][12]=0;}void introduce(MGraph &MGr,int &N){ int m,z,x; printf("请输入查询景点编号:\n"); scanf("%d",&m);fflush(stdin); for(z=0;z<N+1;z++) if(z==m) { printf("景点编号:%s\t",MGr.view[z].date.number); printf("景点名称:%s\n",MGr.view[z].date.name); printf("景点简介:%s\n",MGr.view[z].date.introduce); x=1; break; }if(x!=1) printf("输入序号错误。\n"); printf("\n");}void display(int i,int j,int shortest[MaxViewNum][MaxViewNum],int path[MaxViewNum][MaxViewNum],int &N){ /*打印两个景点的路径及最短路径*/ int a,b; a=i; b=j; printf("您要查询的两景点间最短路径是: \n\n"); fflush(stdin); if(i<j) { printf("%d",b); while(path[i][j]!=0) { printf("<--%d",path[i][j]); if(i<j) j=path[i][j]; else i=path[j][i]; } printf("<-%d\n\n",a); printf("%d->%d的最短路径是: %d 米。\n\n",a,b,shortest[a][b]); } else { printf("%d",a); while(path[i][j]!=0) { /*把i到j的路径上所有经过的景点按顺序打印出来*/ printf("-->%d",path[i][j]); if(i<j) j=path[i][j]; else i=path[j][i]; } printf("->%d\n\n",b); printf("%d->%d的最短路径是: %d 米。\n\n",a,b,shortest[a][b]); }}/*display*/void display(int &i,int &j,int shortest[MaxViewNum][MaxViewNum],int path[MaxViewNum][MaxViewNum]){ /*打印两个景点的路径及最短路径*/ int a,b; a=i; b=j; printf("您要查询的两景点间最短路径是: \n\n"); fflush(stdin); if(i<j) { printf("%d",b); while(path[i][j]!=0) { printf("<--%d",path[i][j]); if(i<j) j=path[i][j]; else i=path[j][i]; } printf("<-%d\n\n",a); printf("%d->%d的最短路径是: %d 米。\n\n",a,b,shortest[a][b]); } else { printf("%d",a); while(path[i][j]!=0) { /*把i到j的路径上所有经过的景点按顺序打印出来*/ printf("-->%d",path[i][j]); if(i<j) j=path[i][j]; else i=path[j][i]; } printf("->%d\n\n",b); printf("%d->%d的最短路径是: %d 米。\n\n",a,b,shortest[a][b]); }}/*display*/void Push(int &value,int Stack[],int &top,int S[],int P[] ){ if ( top >= MaxSize ) { printf("没有路径存在!\n\n"); exit(1); } else Stack[++top] = value;}int Pop(int Stack[],int &top ){ if ( top < 0 ) { printf("没有路径存在!\n\n"); exit(1); } return Stack[top--];}int minD(int &N,int D[],int S[],int P[]){ int i,t=0; long int minimum = Infinite;/////无限大的数 for ( i=1;i<=N;i++ ) if ( (S[i] == NOTVISITED) && D[i] < minimum ) { minimum = D[i]; t = i; } return t;}void input(MGraph &MGr,int &N,int D[],int &shuru1,int &shuru2,int S[],int P[])///////////{ int i; printf("\n请输入起始节点:"); scanf("%d",&shuru1);//// printf("\n请输入结束节点:"); scanf("%d",&shuru2);fflush(stdin);///// for ( i = 1; i <= N; i++ ) { S[i] = NOTVISITED;////0 D[i] = MGr.length[shuru1][i]; P[i] = shuru1;/////////开始节点 } S[shuru1] = VISITED;/////1 D[shuru1] = 0;}void output_path(MGraph &MGr,int Stack[],int D[],int &top,int &shuru1,int &shuru2 ,int S[],int P[]){ int node = shuru2; if ( (shuru2 == shuru1) || (D[shuru2] == Infinite) ) { printf("\n节点%d与节点%d之间没有路径存在!\n\n",shuru1,shuru2); return; } printf("\n"); while ( node != shuru1 ) { Push(node, Stack,top,S,P); node = P[node]; } printf("V%d到V%d的最短路径为:\n",shuru1,shuru2); printf(" V%d",shuru1); while( node != shuru2) { node = Pop( Stack,top); printf(" --%ld-->",MGr.length[ P[node] ][node]); printf("V%d",node); } printf("\n"); printf("\n %d->%d的最短路径是: %ld\n",shuru1,shuru2,D[shuru2]); printf("\n");}void distance(MGraph &MGr,int &N,int Stack[],int D[],int &top,int &step,int &shuru1,int &shuru2,int S[],int P[] ){ int t,I; input(MGr,N,D,shuru1,shuru2,S,P); for ( step =2;step <=N; step++ ) { t = minD(N,D,S,P); S[t] = VISITED; for ( I=1; I <= N; I++ ) if ( (S[I] == NOTVISITED) && (D[t]+MGr.length[t][I] <= D[I]) ) { D[I] = D[t] + MGr.length[t][I]; P[I] = t; } } output_path(MGr,Stack,D,top,shuru1,shuru2,S,P);}void map(){ printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃┏━━━━━━━━┓┏━━━━━┓ ┏━━━━━━━┓ ┃\n"); printf("┃┃11.北门 ┃┃10.家属院 ┃ ┃ 12. 南门┃ ┃\n"); printf("┃┗━━━━━━━━┛┗━━━━━┛ ┗━━━━━━━┛ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┏━━━━━━┓ ┃\n"); printf("┃ ┃ 9 . ┃ ┏━━━━┓ ┃\n"); printf("┃ ┃一餐二餐三餐┃ ┃8.钟楼 ┃ ┃\n"); printf("┃ ┗━━━━━━┛ ┗━━━━┛ ┃\n"); printf("┃ ┃\n"); printf("┃┏━━━━━━━━━━━━━━┓ ┏━━━━┓ ┃\n"); printf("┃┃ 6 . 一教二教三教 ┃ ┃7.三元湖┃ ┏━━━━━━┓ ┃\n"); printf("┃┗━━━━━━━━━━━━━━┛ ┗━━━━┛ ┃ 4. ┃ ┃\n"); printf("┃┏━━━━┓ ┃ 七餐 ┃ ┃\n"); printf("┃┃5 .西门 ┃ ┃ ┃ ┃\n"); printf("┃┗━━━━┛ ┃ ┃ ┃\n"); printf("┃ ┗━━━━━━┛ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┏━━━━━━━━━┓ ┃\n"); printf("┃ ┃ ┃ ┃\n"); printf("┃ ┃ 2.图 ┃ ┃\n"); printf("┃ ┃ 书 ┃ ┏━━━━━━┓ ┃\n"); printf("┃ ┃ 馆 ┃ ┃ 综 ┃ ┃\n"); printf("┃ ┃ ┃ ┃ 3. 合 ┃ ┃\n"); printf("┃ ┃ ┃ ┃ 楼 ┃ ┃\n"); printf("┃ ┗━━━━━━━━━┛ ┗━━━━━━┛ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┃\n"); printf("┃ ┏━━━━━┓ ┃\n"); printf("┃ ┃1.学校南门┃ ┃\n"); printf("┃ ┗━━━━━┛ ┃\n"); printf("┃ ┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf("\n"); fflush(stdin);}void zengjia(MGraph &MGr,int &N){ char jingdian[50],jieshao[1000]; printf("请输入景点的名字\n"); scanf("%s",&jingdian); printf("请输入景点介绍内容\n"); scanf("%s",&jieshao);fflush(stdin); N=N+1;MGr.view[N].num=N; strcpy(MGr.view[N].date.name,jingdian); strcpy(MGr.view[N].date.number,"013"); strcpy(MGr.view[N].date.introduce,jieshao); printf("添加完成\n");}
阅读全文
0 0
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 课程设计
- 模板基础知识2——《C++程序设计语言(第四版)》第24章 泛型算法 笔记
- 采用el表达式的fn函数,如何进行替换函数并且拼接其他字符串再进行替换
- Centos7.2 mysql安装
- 使用AudioTrack实现声音播放
- 知识不是原创的,但是文章确实是我一个字一个字敲出来的
- 课程设计
- 感谢 Google 开发者大会合作媒体伙伴
- JAVA 的特点:
- JAVA 的特点:
- 前端开发知识体系汇总
- 十二月 19, 2017 8:45:03 上午 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending
- JVM
- 西安工业云上线,工业云平台搭建有哪些真金白银?
- spring boot +commons-io实现文件监控