这个程序怎么改成文件保存的形式!
// 校园导游.cpp : Defines the entry point for the console application.//
#include"stdafx.h"
#define DERCTION 10000
#define MAX 50
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct ArCell//校区间距离
{
int way;
}ArCell,WayMatrix[50][50];
typedef struct//图中定点主要表示景点,存放景点的编号,名称,简介信息
{
char name[30];
int num;
char introduction[100];
}infotype;
typedef struct//路径与距离
{
infotype vexs[50];
WayMatrix arcs;
int vexnum,arcnum;
}SGuide;
SGuide b;
SGuide InGuide(void);
void Menu();//菜单
void Browser(SGuide *G);//总体浏览
void ShortPath(SGuide * G); //最短路径
void Floyd(SGuide *G); //所有路径
void Search(SGuide *G); //查找搜寻
int LocateVex(SGuide *G,char* v); //当前地点到其他地点的路径
void print(SGuide *G);
void Menu()//定义菜单函数,显示主页面
{
printf(" |*************************河西校区***************************** \n");
printf(" | * * * * * | 校 | \n");
printf(" | * * * * * | | \n");
printf(" | * * * * * | | \n");
printf(" |*********师专校区 * * * * | 区 | \n");
printf(" | * * * * * | | \n");
printf(" |______________________________________________________| | \n");
printf(" | * * * * * * * | 示 | \n");
printf(" | ________*________湘*____*__江________________________| | \n");
printf(" | * * * * * | | \n");
printf(" | * * 冶金校区 | 意 | \n");
printf(" | * * | | \n");
printf(" | * * | | \n");
printf(" ***********科技学院**********工学院校区****************| 图 | \n");
printf(" ********************************************************************* \n");
printf(" * * 欢迎使用*****大学校园导游查询系统 * * \n");
printf(" * * 1.查看所有校区 * * \n");
printf(" * * 2.查看所有路径 * * \n");
printf(" * * 3.选择当前位置和目的地 * * \n");
printf(" * * 4.查询校区信息 * * \n");
printf(" * * 5.退出 * * \n");
printf(" ********************************************************************* \n");
printf("输入选择操作的序号:");
}
SGuide InGuide(void)//校区介绍,对各校区的简介
{
SGuide G;
int i,j;
G.vexnum=5;
G.arcnum=14;
for(i=0;i <G.vexnum;i++)//在校区编号范围之内查询
G.vexs[i].num=i;
strcpy(G.vexs[0].name,"工学院校区");
strcpy(G.vexs[0].introduction,"主校区,约有10000师生,\n 这里教学条件完善,设备齐全。");
strcpy(G.vexs[1].name,"河西校区");
strcpy(G.vexs[1].introduction,"新校区,约有15000师生,\n 建筑雄伟,学习氛围浓厚。");
strcpy(G.vexs[2].name,"师专校区");
strcpy(G.vexs[2].introduction,"师范学院,约有9000师生,\n 环境优美。");
strcpy(G.vexs[3].name,"冶金校区");
strcpy(G.vexs[3].introduction,"冶金工程学院,约有8000师生,\n 校园美丽。");
strcpy(G.vexs[4].name,"科技学院");
strcpy(G.vexs[4].introduction,"独立学院,约有8000师生\n 环境清幽。");
for(i=0;i <G.vexnum;i++)//两点间的距离
for(j=0;j <G.vexnum;j++)
G.arcs[i][j].way=DERCTION;
G.arcs[0][1].way=6;
G.arcs[0][2].way=8;
G.arcs[2][3].way=7;
G.arcs[3][4].way=13;
for(i=0;i <G.vexnum;i++)
for(j=0;j <G.vexnum;j++)
G.arcs[j][i].way=G.arcs[i][j].way;
return G;//返回函数值
}
void Browser(SGuide *G) //定义校区浏览简介函数
{
int v;
printf(" 编号 校区名称 简介 \n");
for(v=0;v <G->vexnum;v++)
printf("%-4d %-16s %-56s \n",G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);
}
void ShortPath(SGuide * G) //定义最短路径的算法函数
{
int v,w,i,min,t=0,x,flag=1,v0;
int final[20], D[20], p[20][20];
while(flag)
{
printf("请输入一个起始校区编号:");
scanf("%d",&v0);
if(v0 <0||v0>G->vexnum)
{
printf("校区编号不存在!请重新输入景点编号:");
scanf("%d",&v0);
}
if(v0>=0&&v0 <G->vexnum)
flag=0;
}
for(v=0;v<G->vexnum;v++)
{
final[v]=0;
D[v]=G->arcs[v0][v].way;
for(w=0;w <G->vexnum;w++)
p[v][w]=0;
if(D[v] <DERCTION)
{
p[v][v0]=1;p[v][v]=1;
}
}
D[v0]=0;final[v0]=1;
for(i=1;i <G->vexnum;i++)
{
min=DERCTION;
for(w=0;w <G->vexnum;w++)
if(!final[w])
if(D[w] <min){v=w;min=D[w];
}
final[v]=1;
for(w=0;w <G->vexnum;w++)
if(!final[w]&&(min+G->arcs[v][w].way <D[w]))
{
D[w]=min+G->arcs[v][w].way;
for(x=0;x <G->vexnum;x++)
p[w][x]=p[v][x];
p[w][w]=1;
}
}
for(v=0;v <G->vexnum;v++)
{
if(v0!=v) printf("%s",G->vexs[v0].name);
for(w=0;w <G->vexnum;w++)
{
if(p[v][w]&&w!=v0) printf("-->%s",G->vexs[w].name);
t++;
}
if(t>G->vexnum-1&&v0!=v)printf(" 总路线长%dKM\n\n",D[v]);
}
}
void Floyd(SGuide *G)//所有路径的函数
{
int v,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];//通过以下循环得到起始点到其它地点的路径和距离
for(v=0;v <G->vexnum;v++)
for(w=0;w <G->vexnum;w++)
{
D[v][w]=G->arcs[v][w].way;
for(u=0;u <G->vexnum;u++)
p[v][w][u]=0;
if(D[v][w] <DERCTION)
{
p[v][w][v]=1;p[v][w][w]=1;
}
}
for(u=0;u <G->vexnum;u++)
for(v=0;v <G->vexnum;v++)
for(w=0;w <G->vexnum;w++)
if(D[v][u]+D[u][w] <D[v][w])
{
D[v][w]=D[v][u]+D[u][w];
for(i=0;i <G->vexnum;i++)
p[v][w][i]=p[v][u][i]||p[u][w][i];
}
while(flag)
{
printf("请输入出发点和目的地的编号:");
scanf("%d%d",&k,&j);
if(k <0||k>G->vexnum||j <0||j>G->vexnum)
{
printf("校区编号不存在!请重新输入出发点和目的地的编号:");
scanf("%d%d",&k,&j);
}
if(k>=0&&k <G->vexnum&&j>=0&&j <G->vexnum)
flag=0;
}
printf("%s",G->vexs[k].name);
for(u=0;u <G->vexnum;u++)
if(p[k][j][u]&&k!=u&&j!=u)
printf("-->%s",G->vexs[u].name);
printf("-->%s",G->vexs[j].name);
printf(" 总路线长%dm\n",D[k][j]);
}
void Search(SGuide *G)//定义查找函数
{
int k,flag=1;
while(flag)
{
printf("请输入要查询的校区编号:");
scanf("%d",&k);
if(k <0||k>G->vexnum)//不在搜寻范围内
{
printf("校区编号不存在!请重新输入校区编号:"); //报错
scanf("%d",&k);
}
if(k>=0&&k <G->vexnum)//在搜寻范围内,可查找
flag=0;
}
printf(" 编号 校区名称 简介 ┃\n");
printf(" %-4d %-16s %-56s \n",G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);
}
int LocateVex(SGuide *G,char* v)
{
int c=-1,i;
for(i=0;i <G->vexnum;i++)
if(strcmp(v,G->vexs[i].name)==0)
{c=i;break;}
return c;
}
void print(SGuide *G)
{
int v,w,t=0;
for(v=0;v <G->vexnum;v++)
for(w=0;w <G->vexnum;w++)
{
if(G->arcs[v][w].way==DERCTION)
printf("∞ ");
else printf("%-7d",G->arcs[v][w].way);
t++;
if(t%G->vexnum==0)
printf("\n");
}
}
void main()
{
int i;
Menu();//定义菜单
b=InGuide();
scanf("%d",&i);
while(i !=5)
{if(i<1||i>5){
printf("傻瓜!您选的数字不在范围内\n");
printf("再给你一次机会哦,请输入正确的编号!\n");
}
switch(i)//选择执行
{
case 1:Browser(&b);Menu();break;
case 2:ShortPath(&b);Menu();break;
case 3:Floyd(&b);Menu();break;
case 4:Search(&b);Menu();break;
case 5:exit(1);break;
default:break;
}
scanf("%d",&i);
}
}