文件一:bus.h
/**************************************************
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,btree.h,btree.cpp
* 作者:于奎民
* 完成日期:2015年12月24日
* 版本号:vc++ 6.0
*************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#include <string.h>
struct bus
{
char num[10];//车号
char driver[50];//司机
char stime[30];//发车时间
char start[30];//起始站
char end[30];//终点站
int z;//站数
char *pr;//指向路线的首指针
struct bus *next;//下一辆车的结构体
};
//界面函数
void show1();//主菜单界面
void show2();//管 理 菜 单
void show3();//查询菜单界面
//源函数
void initial(); //初始化公交车文件
void modifyr(); //修 改 路 线
void modifyb(); //修 改 汽 车
void delb(); //删 除 汽 车
void lookb(); //公共汽车号查询
void lookr(); //站 台 号 查 询
void save(); //保 存 辆 车
void release(); //清 空 数 据
void newb(); //新 建 汽 车
文件二:bus.cpp
/**************************************************
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp,btree.h,btree.cpp
* 作者:于奎民
* 完成日期:2015年12月24日
* 版本号:vc++ 6.0
*************************************************/
#include"bus.h"
struct bus *bhead=NULL;//公汽信息的头指针
struct bus *bi=NULL;//公汽信息的最后的指针
void initial()
{
FILE *fp;
fp=fopen("bus.txt","r");//打开bus文件
if(fp==NULL) //若无bus文件
{
printf("\n\n无公汽信息文件!");
return;
}
fseek(fp,0,SEEK_END);
int i,n;
n=ftell(fp)/sizeof(struct bus);
//printf("\n\n\n\n一共有%d辆公汽!",n);
rewind(fp);
struct bus *p;
//for
for(i=0;i<n;i++)
{
p=(struct bus *)malloc(sizeof(struct bus ));
fseek(fp,i*sizeof(struct bus),0);
fread(p,sizeof(struct bus),1,fp);//写入信息,其中地址是无用的信息
p->next=NULL;//初始化时下一个指向空,都是一个个单独的
p->pr=NULL;//让路线为空 //路线信息存放在文件名为” 车号 “的文件中;车号是唯一的
FILE *fp1;
fp1=fopen(p->num,"r");
if(!fp1)
printf("\n%s号车无初始路线!",p->num);
else
{
char * p1;
p1=(char *)malloc(p->z*40*sizeof(char) );
fread(p1,p->z*50*sizeof(char),1,fp1);//将路线写入内存
p->pr=p1;
fclose(fp1);
}
// printf("\n\n\n\n初始化%s号车路线成功!",p->num);
//路线信息
if(bhead==NULL)
bhead=bi=p;
else
{
bi->next=p;
bi=p;
}
}
//for结尾
//printf("\n\n\n\n初始化%d辆车成功!",n);
fclose(fp);
}
void newb()
{
loop1:
printf("\n\n\n\n|**|创建新公汽|**|\n\n");
struct bus *p;
p=(struct bus *)malloc(sizeof(struct bus ));
p->next=NULL;
p->pr=NULL;
loop2:
printf("\n请输入新公汽号:\n\n");
scanf("%s",p->num);
struct bus *pj=bhead;
while(pj)
{
if(strcmp(pj->num,p->num)==0)
{
printf("\n\n错误,该公汽号已经存在!\n\n");
goto loop2;
}
pj=pj->next;
}
printf("\n请输入新公汽司机姓名:\n");
scanf("%s",p->driver);
printf("\n请输入新路线发车时间\n\n");
scanf("%s",p->stime);
loop3:
printf("\n\n\n请输入新路线总站台数(>=2)\n\n");
scanf("%d",&p->z);
i