校园导游系统代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
#include
#include
#define INF 32767
int visited[100],password; //password为后台管理的登录密码
FILE *fp;
char na[100];
char str1[100],str3[100];
int N,M;
int a[100][100];
using namespace std;
//景点信息
typedef struct
{
int num;
char name[100];
char introduction[500];
} VertexType;
//图结构信息
typedef struct
{
int edges[100][100];
int n,e;
VertexType vex[100];
} MGraph;
//
typedef struct ANode
{
int adjvex;
struct ANode *nextarc;
} ArcNode;
typedef struct Vnode
{
ArcNode *firstarc;
} VNode;
typedef VNode AdjList[100];
typedef struct
{
AdjList adjlist;
int n,e;
} ALGraph;
MGraph g;
//将文本文件打开并输出文件中的内容
void ReadData1(MGraph &g)
{
M=N;
FILE *fp;
int i = 0,j;
if ((fp=fopen("path.txt", "r"))==NULL)
{
printf("error open!");
exit(0);
}
for(i=0; i
for(j=0; j
fscanf(fp,"%d",&g.edges[i][j]);
}
}
fclose(fp);
}
void WriteData1(MGraph &g)
{
FILE *fp;
int i = 0,j;
if ((fp=fopen("path.txt", "w"))==NULL)
{
printf("error open!");
exit(0);
}
for(i=0; i
for(j=0; j
//printf("%d ",g.edges[i][j]);
fprintf(fp,"%d ",g.edges[i][j]);
}
}
printf("\n\n");
fclose(fp);
}
void ReadData(MGraph &g)
{
FILE *fp;
int i = 0;
if ((fp=fopen("data.txt", "r"))==NULL)
{
printf("error open!");
exit(0);
}
while(fscanf(fp,"%d %s %s",&g.vex[i].num,g.vex[i].name,g.vex[i].introduction)!= EOF)
{
i++;
}
N = i;
fclose(fp);
return;
}
void WriteData(MGraph &g)
{
FILE *fp;
int i=0;
if ((fp=fopen("data.txt", "w"))==NULL)
{
printf("error open!");
exit(0);
}
for(i=0; i
fclose(fp);
}
//将邻接矩阵改为邻接表
void MatToList(MGraph g,ALGraph *&G)
{
int i,j;
ArcNode *p;
G=(ALGraph *)malloc(sizeof(ALGraph));
for(i=0; i
for(i=0; i
{
if(g.edges[i][j]!=INF)
{
p=(ArcNode *)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=G->adjlist[i].firstarc;
G->adjlist[i].firstarc=p;
}
}
G->n=g.n;
G->e=g.e;
}
//查找相应景点的介绍
void FindIntroduction(MGraph &g)
{
int d;
int x;
while(1)
{
printf("请输入要查询的景点的编号:");
scanf("%d",&x);
if(x>=0&&x
)
{
ReadData(g);
printf("\n景点的名称:%s\n",g.vex[x].name);
printf("景点的简介:");
printf("%s\n\n",g.vex[x].introduction);
printf("是否继续查询?\n");
printf("0.确定 1.取消\n");
scanf("%d",&d);
while(1)
{
if(d==0||d==1)
break;
else
{
printf("输入的数据不合理,请重新输入:");
scanf("%d",&d);
}
}
if(d==0)
continue;
else
break;
}
else
{
printf("此景点不存在!\n请重新输入\n");
}
}
}
//输出两个顶点间的最短路径
void Dispath(MGraph &g,int A[][100],int path[][100])
{
int i,j,k,s,u,v;
printf("请输入你所在景点的编号:");
scanf("%d",&u);
do
{
if(u>=0&&u<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&u);
}
}
while(1);
printf("请输入你要去景点的编号:");
scanf("%d",&v);
do
{
if(v>=0&&v<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&v);
}
}
while(1);
if(u==v)
{
printf("\n您输入的起点与终点相同!\n\n");
}
else if(strcmp(g.vex[u].name,"无")==0||strcmp(g.vex[v].name,"无")==0)
{
printf("废弃景点!\n");
}
else if(u>=0&&u
int choose;
printf("请选择您的需求:\n");
printf("0.距离最短\n");
printf("1.时间最少\n");
printf("2.换乘最少\n");
scanf("%d",&choose);
int apath[100],d;
for(i=0; i
for(j=0; j
if(A[i][j]!=INF&&i!=j&&u==i&&v==j)
{
if(choose==0)
{
printf("\n 从%s到%s距离最短的路径为:",g.vex[i].name,g.vex[j].name);
}
if(choose==1)
{
printf("\n 从%s到%s时间最少的路径为:",g.vex[i].name,g.vex[j].name);
}
if(choose==2)
{
printf("\n 从%s到%s换乘最少的路径为:",g.vex[i].name,g.vex[j].name);
}
k=path[i][j];
d=0;
apath[d]=j;
while(k!=-1&&k!=i)
{
d++;
apath[d]=k;
k=path[i][k];
}
d++;
apath[d]=i;
printf("%s",g.vex[apath[d]].name);
for(s=d-1; s>=0; s--)
printf("->%s",g.vex[apath[s]].name);
printf("\n");
printf(" 路径长度为:%d米",A[i][j]);
printf("\n");
}
/*else
{
printf("废弃景点!\n");
}*/
}
}
}
else
printf("\n请输入正确的编号!\n\n");
}
//查找两顶点间的最短路径
void FindMinPath(MGraph &g)
{
int A[100][100],path[100][100];
int i,j,k;
for(i=0; i
for(j=0; j
A[i][j]=g.edges[i][j];
if(i!=j&&g.edges[i][j]
else
path[i][j]=-1;
}
}
for(k=0; k
for(i=0; i
for(j=0; j
if(A[i][j]>A[k][j]+A[i][k])
{
A[i][j]=A[k][j]+A[i][k];
path[i][j]=path[k][j];
}
}
}
}
Dispath(g,A,path);
}
//查找两顶点间的所有路径
void FindaPath(MGraph &g,ALGraph *G,int u,int v,int path[],int d)
{
int w,i;
ArcNode *p;
visited[u]=1;
d++;
path[d]=u;
if(u==v&&d>=1)
{
printf(" ");
for(i=0; i
printf("%s",g.vex[path[d]].name);
printf("\n");
}
p=G->adjlist[u].firstarc;
while(p!=NULL)
{
w=p->adjvex;
if(visited[w]==0)
FindaPath(g,G,w,v,path,d);
p=p->nextarc;
}
visited[u]=0;
}
//删除景点简介信息
void delete_str(char str1[], char str2[],int len,char str3[])
{
int num=0,k=0,i=0,j=0; //num用来记录子串的个数 k用来记录子串的位置
char *p=str2; //使用p还原str到初始位置
while(str1[i]!='\0')
{
if(str1[i]!=str2[j])
{
str3[k++]=str1[i++]; //当str1中的字符与str的首字符不相同时
}
else
{
char *temp=str2;
for(; (str1[i]==str2[j])&&str2[j]!='\0'; j++)
{
i++;
}
if(j==len)
{
num++; //出现重复子串,num加一
}
else
{
//主字符串中存在和子串前几个字符相同的一段字符
//退出循环并将这段字符写进新的字符数组中
for(int m=0; m
str3[k++]=temp[m];
}
}
str2=p;
j=0;
}
}
}
//密码输入函数
int inputpassword()
{
char a[10];
int pass=0;
int i;
while(1)
{
for(i=0; i<6; i++)
{
a[i]=getch();
putchar('*');
if(a[i]>='0'&&a[i]<='9')
pass=pass*10+a[i]-'0';
else if(a[i]=='\b') //当遇到退格键不做处理
{
printf("\b \b");
i--;
}
else
{
pass=0;
break; //退出for循环后,再次接受
}
}
fflush(stdin); //清除键盘缓存区中已经有的输入
printf("\n");
if(pass==0) //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环
{
printf("密码要求全为数字,且不能全0!\n");
printf("请重新输入密码: ");
}
else
break;
}
return pass;
}
//在图中增加一个景点
void add_point(MGraph &g)
{
int i,d;
N++;
g.vex[N-1].num=N-1;
//printf("%d\n",N);
printf("请输入要增加景点的名称:");
scanf("%s",g.vex[N-1].name);
while(1)
{
for(i=0; i
if(strcmp(g.vex[i].name,g.vex[N-1].name)==0)
{
printf("该景点已存在!\n请重新输入!\n");
scanf("%s",g.vex[N-1].name);
i=0;
}
}
break;
}
printf("新增景点:%s\n",g.vex[N-1].name);
printf("编号:%d\n",N-1);
//printf("请输入该景点与其它景点间的路径长度:");
for(i=0; i
//scanf("%d",&d);
g.edges[i][N-1]=g.edges[N-1][i]=INF;
}
bool flag = true;
while(flag)
{
int ViewId,ViewRoad;
printf("请输入与'%s'连通的地点的编号:",g.vex[N-1].name);
scanf("%d",&ViewId);
printf("请输入'%s'与'%s'间的距离:",g.vex[N-1].name,g.vex[ViewId].name);
scanf("%d",&ViewRoad);
g.edges[ViewId][N-1]=g.edges[N-1][ViewId]=ViewRoad;
int cout;
printf("是否继续连通景点?\n");
printf("0.是 1.否\n");
scanf("%d",&cout);
if(cout==0)
{
continue;
}
else
{
flag=false;
}
}
printf("请输入要增加顶点的简介:");
scanf("%s",g.vex[N-1].introduction);
printf("增加成功!\n");
}
//在图中增加一条路径
void add_path(MGraph &g)
{
int i,j,length,k;
do
{
printf("请输入要增加路径的起始点的编号:");
scanf("%d",&i);
do
{
if(i>=0&&i<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\
n");
scanf("%d",&i);
}
}
while(1);
printf("请输入要增加路径的终点的编号:");
scanf("%d",&j);
do
{
if(j>=0&&j<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&j);
}
}
while(1);
if(i>=0&&i<=N-1&&j>=0&&j<=N-1&&j>=0)
{
if(g.edges[i][j]!=INF&&g.edges[j][i]!=INF)
{
printf("该两点之间已存在路径,是否进行修改?\n");
printf("0.是 1.否\n");
scanf("%d",&k);
if(k==0)
{
printf("请输入要修改的路径的长度:");
scanf("%d",&length);
g.edges[j][i]=g.edges[i][j]=length;
printf("修改成功!");
}
else
g.edges[j][i]=g.edges[i][j];
}
else
{
printf("请输入要增加的路径的长度:");
scanf("%d",&length);
g.edges[j][i]=g.edges[i][j]=length;
printf("添加成功!\n");
}
break;
}
else
{
printf("输入的顶点在原图中不存在!\n");
continue;
}
}
while(1);
}
//删除图中的一个景点
void delete_point(MGraph &g)
{
int i,j,m;
//printf("%d\n",N);
printf("请输入要删除景点的编号:");
scanf("%d",&m);
do
{
if(m>=0&&m<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&m);
}
}
while(1);
for(i=0; i
for(j=0; j
if(g.edges[m][j]!=INF&&g.edges[i][m]!=INF)
g.edges[m][j]=g.edges[i][m]=INF;
}
}
//g.vex[m].num=INF;
strcpy(g.vex[m].name,"无");
strcpy(g.vex[m].introduction,"该景点已废弃!");
printf("删除成功!\n");
}
//删除图中的一条路径
void delete_path(MGraph &g)
{
int i,j;
do
{
printf("请输入要删除路径的起始点的编号:");
scanf("%d",&i);
printf("请输入要删除路径的终点的编号:");
scanf("%d",&j);
if(g.edges[i][j]==INF)
printf("这两点间不存在路径!\n");
else
{
g.edges[i][j]=g.edges[j][i]=INF;
break;
}
}
while(1);
printf("删除成功!\n");
}
void map()
{
system("cls");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┏━━━━┓━━━━━━━━━━━━━━━━━━━━━━┓
\n");
printf("┃ 2. ┃ ┃1.北门 ┃ ┃ ┃\n");
printf("┃ 四 ┃ ┗━━━━┛ ┃ ┃\n");
printf("┃ ┃ ┃ ┃\n");
printf("┃ ┃ ┃ ┃\n");
printf("┃ 体 ┃ ┏━━━━━┓ ┃ 10. ┃\n");
printf("┃ ┃ ┏━━━━━━┓ ┃ 4.三餐 ┃ ┃ ┃\n");
printf("┃ ┃ ┃ 3.校医院 ┃ ┗━━━━━┛ ┃ ┃\n");
printf("┗━━━━━┛ ┗━━━━━━┛ ┃ 博 ┃\n");
printf("┃ ┏━━━━━━━┓ ┃ ┃\n");
printf("┃ ┃ 6.艺术广场 ┃ ┏━━━━━━┓ ┃ 大 ┃\n");
printf("┃ ┏━━━━┓ ┗━━━━━━━┛ ┃ 9. ┃ ┃ ┃\n");
printf("┃ ┃5.长廊 ┃ ┃ 稷下湖 ┃ ┃ 花 ┃\n");
printf("┃ ┗━━━━┛ ┏━━━━┓ ┏━━━━┓ ┃ ┃ ┃ ┃\n");
printf("┃ ┃7.9号楼 ┃ ┃8.8号楼 ┃ ┃ ┃ ┃ 园 ┃\n");
printf("┃ ┗━━━━┛ ┗━━━━┛ ┃ ┃ ┃ ┃\n");
printf("┃ ┃ ┃ ┃ ┃\n");
printf("┃ ┃ ┃ ┃ ┃\n");
printf("┃ ┃ ┃ ┃ ┃\n");
printf("┃ ┗━━━━━━┛ ┗━━━━━━━━━━━━━┛\n");
printf("┏━━━━┓ ┏━━━━┓\n");
printf("┃
11.西门┃━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┃12. 东门┃\n");
printf("┗━━━━┛ ┗━━━━┛\n");
printf("┃ ┏━━━┓ ┃\n");
printf("┃ ┏━━━━┓ ┏━━━━┓ ┃ 15. ┃ ┃\n");
printf("┃ ┃13.5号楼┃ ┃14.4号楼┃ ┃ 二 ┃ ┏━━┓ ┃\n");
printf("┃ ┗━━━━┛ ┗━━━━┛ ┃ 体 ┃ ┃ 17.┃ ┃\n");
printf("┃ ┃ ┃ ┃ 一 ┃ ┃\n");
printf("┃ ┏━━━━━━━━━┓ ┃ ┃ ┃ 体 ┃ ┃\n");
printf("┃ ┃ 16. 逸夫图书馆 ┃ ┃ ┃ ┏━━━━━┓ ┃ ┃ ┃\n");
printf("┃ ┗━━━━━━━━━┛ ┗━━━┛ ┃18.信息楼 ┃ ┗━━┛ ┃\n");
printf("┃ ┗━━━━━┛ ┃\n");
printf("┃ ┏━━━━━┓ ┏━━━━━┓ ┃\n");
printf("┃ ┃19.3号楼 ┃ ┃ 20.鸿远楼┃ ┃\n");
printf("┃ ┗━━━━━┛ ┗━━━━━┛ ┃\n");
printf("┃ ┃\n");
printf("┃ ┃\n");
printf("┃ ┏━━━━┓ ┃\n");
printf("┃ ┃21.南门 ┃ ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┗━━━━┛━━━━━━━━━━━━━━━┛\n");
printf("\n");
printf("\n\t 按任意键返回主菜单. \n");
getch();
system("cls");
//fflush(stdin);//清除文件缓冲区
}/*map*/
//整个程序的驱动
void function()
{
ALGraph *G;
int i,j,u,v,path[100],l,d,y;
char k,x;
int ch,pass;
char str2[500],nam[100];
ReadData(g);
ReadData1(g);
g.n=N; //初始图结构的结点数目
g.e=40; //图结构中线路的数目
MatToList(g,G);
for(i=0; i
visited[i]=0;
system("color F0");
system("mode con cols=120 lines=45");
printf("\t\t ┏━━━━━━━━━━━━━━━┓\n");
printf("\t\t ┃ 欢迎使用校园导游系统 ┃ \n");
printf("\t\t ┃ 山东理工大学 ┃ \n");
printf("\t\t ┃ ┃ \n");
printf("\t\t ┃ 1.用户登录 ┃\n");
printf("\t\t ┃ 2.管理员登录 ┃\n");
printf("\t\t ┃ 3.退出系统 ┃\n");
printf("\t\t ┗━━━━━━━━━━━━━━━┛\n");
printf("请选择相应的编号进行下一步操作:");
scanf("%s",&k);
while(!(k=='1'||k=='2'||k=='3'))
{
printf("输入数据不合理,请重新输入:");
scanf("%s",&k);
}
if(k=='1')
{
system("title 校园景点介绍及路径查询系统");
system("color F0");
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t欢迎进入校园景点介绍及路径查询系统!\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("正在进入,请稍后...\n");
printf("================================================================\r");
for(j=0; j<65; j++)
{
Sleep(30);
printf(">");
}
system("cls");
do
{
printf("\t\t *******************************\n");
printf("\t\t * 1.景点简介 *\n");
printf("\t\t * 2.两景点间最短路径 *\n");
//printf("\t\t * 3.两景点间所有路径 *\n");
printf("\t\t * 3.查看地图 *\n");
printf("\t\t * 4.退出登录 *\n");
printf("\t\t *******************************\n");
printf("请输入要进行的操作的编号:");
scanf("%s",&x);
do
{
if(x>='1'&&x<='4')
break;
else
{
printf("输入数据不合理,请重新输入:");
//printf("jj");
scanf("%s",&x);
}
}
while(1);
if(x>='1'&&x<='3')
{
printf("\t\t *******************************\n");
if(N%2!=0)
{
for(i=0; i
printf("\t\t %d.%s \t%d.%s \n",g.vex[i].num,g.vex[i].name,g.vex[i+1].num,g.vex[i+1].name);
}
printf("\t\t %d.%s \n",g.vex[i].num,g.vex[i].name);
}
else
{
for(i=0; i
printf("\t\t %d.%s \t%d.%s \n",g.vex[i].num,g.vex[i].name,g.vex[i+1].num,g.vex[i+1].name);
}
}
printf("\t\t *******************************\n");
}
switch(x)
{
case '1':
ReadData(g);
FindIntroduction(g);
system("cls");
break;
case '2':
ReadData(g);
do
{
FindMinPath(g);
printf("是否继续查询?\n");
printf("0.确定 1.取消\n");
scanf("%d",&y);
if(y==1)
break;
else
continue;
}
while(1);
system("pause");
system("cls");
break;
// case 3:
// ReadData(g);
// do
// {
// printf("请输入起点位置的编号:");
// scanf("%d",&u);
// printf("请输入终点位置的编号:");
// scanf("%d",&v);
// printf("从%s到%s的所有路径为:\n",g.vex[u].name,g.vex[v].name);
// FindaPath(g,G,u,v,path,-1);
// printf("是否继续进行该操作(0.继续 1.不继续):");
// scanf("%d",&y);
// if(y==1)
// break;
// else
// continue;
// }
// while(1);
// system("pause");
// system("cls");
// break;
case '3':
map();
break;
case '4':
printf("确定退出吗?\n");
printf("0.确定 1.取消\n");
scanf("%d",&ch);
while(1)
{
if(ch==0||ch==1)
break;
else
{
printf("输入的数据不合理,请重新输入:");
scanf("%d",&ch);
}
}
if(ch==0)
{
function();
}
else
{
continue;
}
}
}
while(x!=0);
}
else if(k=='2')
{
printf("请输入管理员账号:");
scanf("%s",na);
printf("请输入管理员登录密码:");
password=inputpassword();
FILE *fp1;
if((fp1=fopen("password.txt","r"))==NULL)
{
printf("Cannot open the file!");
exit(0);
}
fscanf(fp1,"%s %d",nam,&pass);
fclose(fp1);
int t=3;
do
{
if(password!=pass)
{
t--;
if(t==0)
{
printf("你已经输错三次密码,系统将于10秒后关闭!");
Sleep(10000);
break;
}
printf("输入的密码错误!你还有%d次机会,请重新输入:",t);
password=inputpassword();
}
else
{
getch();
break;
}
}
while(t!=0);
system("cls");
if(password==pass&&strcmp(nam,na)==0)
{
do
{
system("cls");
printf("\t\t *******************************\n");
//printf("\t\t * 1.增加景点简介信息 *\n");
// printf("\t\t * 1.删除景点简介信息 *\n");
printf("\t\t * 1.更新景点简介信息 *\n");
printf("\t\t * 2.增加景点 *\n");
printf("\t\t * 3.增加路径 *\n");
printf("\t\t * 4.删除景点 *\n");
printf("\t\t * 5.删除路径 *\n");
printf("\t\t * 6.退出登录 *\n");
printf("\t\t *******************************\n");
printf("请选择要进行的操作:");
scanf("%d",&l);
if(l!=6)
{
printf("\t\t *******************************\n");
if(N%2!=0)
{
for(i=0; i
printf("\t\t %d.%s \t%d.%s \n",g.vex[i].num,g.vex[i].name,g.vex[i+1].num,g.vex[i+1].name);
}
printf("\t\t %d.%s \n",g.vex[i].num,g.vex[i].name);
}
else
{
for(i=0; i
printf("\t\t %d.%s \t%d.%s \n",g.vex[i].num,g.vex[i].name,g.vex[i+1].num,g.vex[i+1].name);
}
}
printf("\t\t *******************************\n");
}
/* if(l==1)
{
do
{
printf("请输入要要增加信息的景点的编号:");
scanf("%d",&d);
ReadData(g);
printf("%s\n",g.vex[d].introduction);
printf("请输入要增加的信息:");
scanf("%s",str2);
strcat(g.vex[d].introduction,str2);
printf("增加成功!\n");
WriteData(g);
printf("是否继续进行该操作(0.继续 1.不继续):");
scanf("%d",&y);
if(y==1)
break;
else
continue;
}
while(1);
system("cls");
}*/
/*if(l==1)
{
do
{
printf("请输入要删除信息的景点的编号:");
scanf("%d",&d);
ReadData(g);
strcpy(str1,g.vex[d].introduction);
printf("%s\n",str1);
printf("请输入要删除的信息:");
scanf("%s",str2);
//printf("%d\n",N);
delete_str(str1,str2,strlen(str2),str3);
printf("%s\n",str3);
strcpy(g.vex[d].introduction,str3);
printf("%s\n",g.vex[d].introduction);
WriteData(g);
printf("删除成功!\n");
printf("是否继续进行该操作(0.继续 1.不继续):");
scanf("%d",&y);
if(y==1)
break;
else
continue;
}
while(1);
system("cls");
}*/
if(l==1)
{
do
{
printf("请输入要更新信息的景点的编号:");
scanf("%d",&d);
do
{
if(d>=N)
{
printf("此景点不存在!\n请重新输入!\n");
scanf("%d",&d);
}
else
{
break;
}
}
while(1);
ReadData(g);
printf("请输入要更新的信息:");
scanf("%s",str2);
strcpy(g.vex[d].introduct
ion,str2);
WriteData(g);
printf("更新成功!");
printf("是否继续进行更新?\n");
printf("0.确定 1.取消\n");
scanf("%d",&y);
if(y==1)
break;
else
continue;
}
while(1);
system("cls");
}
if(l==2)
{
ReadData(g);
ReadData1(g);
/*for(i=0; i
for(j=0; j
printf("%d ",g.edges[i][j]);
}
printf("\n");
}*/
add_point(g);
WriteData1(g);
WriteData(g);
}
if(l==3)
{
ReadData1(g);
/*for(i=0; i
for(j=0; j
printf("%d ",g.edges[i][j]);
}
printf("\n");
}*/
add_path(g);
WriteData1(g);
}
if(l==4)
{
ReadData(g);
ReadData1(g);
/*for(i=0; i
for(j=0; j
printf("%d ",g.edges[i][j]);
}
printf("\n");
}*/
delete_point(g);
WriteData1(g);
WriteData(g);
}
if(l==5)
{
ReadData1(g);
/*for(i=0; i
for(j=0; j
printf("%d ",g.edges[i][j]);
}
printf("\n");
}*/
delete_path(g);
WriteData1(g);
}
if(l==6)
{
printf("确定退出登录吗?\n");
printf("0.确定 1.取消\n");
scanf("%d",&ch);
while(1)
{
if(ch==0||ch==1)
break;
else
{
printf("输入的数据不合理,请重新输入:");
scanf("%d",&ch);
}
}
if(ch==0)
{
function();
}
else
{
continue;
}
}
printf("\n按任意键继续\n");
getch();
}
while(1);
}
else
{
printf("用户名或密码错误!请重新输入\n");
system("pause");
function();
}
}
else
{
printf("感谢您的使用!\n");
exit(0);
}
}
int main()
{
function();
return 0;
}
新建data.txt存储以下文件
0 大红炉 红炉乃淬炼钢铁之处,寓意创业者和创业项目,在众创空间接受孵化,百炼成钢。红炉中有火热度高,寓意众创空间创业者热情似火,创业氛围激情似火,创业工作红红火火。
1 北门 山东理工大学的北门,附近有各种超市、餐厅、小吃,休闲娱乐放松的好地方。
2 四体 第四体育场位于学校西北角,平时操场不开放,只有在上体育课的时候开放,篮球场,羽毛球场和乒乓球场全天开放。
3 校医院 校医院位于理工长廊北面,校医院承担全校40000余名师生员工的医疗及预防保健服务工作。诊断处理各种常见病、多发病,负责各类健康体检。
4 三餐 该餐厅有三层,每层都有自己的特色,因为附近有众多宿舍楼,人流量非常大。
5 长廊 美食的聚集地,有多个理发店,里面也有学校很不错的超市,价格适中,种类齐全。
6 艺术广场 在稷下湖的西面就是大学生艺术广场(俗称大坑)。这时个非常活跃的地方,很多的大型晚会都是在这里举行的,是理工大的一个标志性地方,可以容纳上千观众,举办的节目当然也是相当的精彩了。
7 9号楼 9号教学楼是计算机科学与技术的教学楼,设有计算中心、计算机应用技术实验中心、通信工程实验中心、传媒技术实验中心、软件工程实验中心及ACM实训、物联网开发、网络攻防等11个开放实验室。
8 8号楼 8号教学楼位于9号教学楼对面,是外国语学院,学校组织的很多英语活动,国际交流活动经常在8教进行。
9 稷下湖 稷下山下有稷下湖,稷下湖湖区景观工程是学校确定的重点工程,是我校标志性景观工程,湖面占地19300平方米,山体占地10000平方米,绿地面积达43800平方米,周围有几个小亭子可供休息赏景。
10 博大花园 博大花园内有中国农业银行,永福超市,也是一些快递的取件地址。
11 西门 山东理工大学的西门,出去就能看见淄博市的体育馆。
12 东门 山东理工大学的东门,
附近有几个大型超市,购物比较方便。
13 5号楼 理工大众多教学楼之一。
14 6号楼 理工大众多教学楼之一。
15 二体 第二体育场非常的大,是举办运动会是使用的体育场,在信息楼的旁边,体育场中各个设备都很完善,是进行体育运动的好地方。
16 图书馆 逸夫图书馆,建筑面积3.8万平方米,外立面的石材犹如一排排书架,北侧的退台寓意着攀登的阶梯,图书馆建筑宛如伸开的双臂,欢迎渴求知识,勤奋学习的莘莘学子走进这座知识的殿堂。
17 一体 最早建的体育场,有乒乓球台、篮球场,设施齐全。
18 信息楼 在连心湖的西北方向就是信息楼,信息楼里面可以供学生上网查资料,学校的各种信息部门也在这里的。、
19 3号楼 3号教学楼是公共教学楼,共四层,单号在教学楼东侧,双号在教学楼西侧,很多学校的公共课的上课和考试都在三教进行,也是暑假不关门的教师。
20 鸿远楼 这是学校的办公区域,也是学校的门面,在学校南门,也是正门。鸿远楼前有个广场,适合一些小型的活动
21 南门 山东理工大学的南门,附近娱乐场地餐馆小吃也是应有尽有。
新建path.txt存储以下文件
9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 200 9999 150 **** **** 9999 9999 100 9999 9999 9999 9999 9999 9999 9999 9999 300 9999 9999 9999 9999 440 300 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 240 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 240 9999 350 130 **** **** 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 300 9999 350 9999 9999 150 **** **** 300 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 130 **** **** 350 200 9999 9999 9999 280 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 150 350 9999 100 100 250 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 200 100 9999 50 9999 9999 9999 9999 200 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 100 50 9999 250 9999 9999 9999 9999 200 9999 9999 9999 9999 9999 9999 9999 9999 440 9999 9999 300 9999 250 9999 250 9999 200 9999 9999 9999 9999 200 9999 9999 9999 9999 9999 9999 200 300 9999 9999 9999 9999 9999 9999 9999 200 9999 9999 150 **** **** 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 280 9999 9999 9999 9999 9999 9999 9999 600 9999 9999 9999 9999 9999 9999 9999 9999 150 **** **** 9999 9999 9999 9999 9999 9999 9999 150 **** **** 9999 9999 9999 9999 200 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 200 9999 9999 9999 600 9999 9999 50 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 200 9999 9999 9999 9999 50 9999 200 150 **** **** 9999 9999 9999 9999 9999 9999 999
9 9999 9999 9999 9999 9999 200 9999 9999 9999 9999 200 9999 9999 9999 150 250 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 150 **** **** 9999 9999 280 9999 9999 100 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 299999999 9999 9999 9999 9999 9999 450 9999 300 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 150 9999 450 9999 9999 150 **** **** 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 250 280 9999 9999 9999 250 300 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 300 150 250 9999 100 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 300 100 9999
新建
password.txt存储以下文件
admin 123456