#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int MENU(); //菜单模块
void INPUT(); //输入模块
void SEARCH(); //查询模块
void SELECT(); //统计模块
void WRITE(); //文件记录模块
void PRINT(); //打印模块
void READ(); //文件读取模块
void WRONG(); //纠错模块
#define N 1000 //最大列车组数
#define Print " %s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i].ap,T[i].lt,T[i].at,T[i].price //输出记录格式
#define Wrong "\n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! \n"
#define GeShi " 车次 日期 起点 终点 开车时间 到达时间 票价\n"
struct Train
{
char code[10]; //车次
char data[10]; //日期
char lp[10]; //left place 起点
char ap[10]; //arrive place 终点
char lt[10]; //left time 开车时间
char at[10]; //arrive time 到达时间
char price[10]; // 票价
}T[N];
/* 全局变量 */
int i=0; //输入计数器
int n=0; //合计计数器
char l[20]; //纠错空间
void INPUT()
{
char ch;
do
{
system("cls");
printf("\n\n ====================欢迎进入 录入火车时刻信息 界面====================\n");
do
{
printf("\n 新建列车信息?(y/n) ");
scanf("%c",&ch);
gets(l);
if(ch!='y'&&ch!='n')
WRONG ();
}while(ch!='y'&&ch!='n');
if(ch=='n')
break;
printf(" ---------------------");
printf("\n 录入第%d趟列车信息\n",n+1);
printf(" 车次 ");
gets(T[i].code);
printf(" 日期 ");
gets(T[i].data);
printf(" 起点 ");
gets(T[i].lp);
printf(" 终点 ");
gets(T[i].ap);
printf(" 开车时间 ");
gets(T[i].lt);
printf(" 到达时间 ");
gets(T[i].at);
printf(" 票价 ");
gets(T[i].price);
n++;
i++;
}while(i<N);
WRITE();
system("cls");
printf("\n");
printf(" --------------------------------\n");
printf(" 系统记载的列车信息如下\n");
printf(" --------------------------------\n\n");
PRINT();
}
///////////////////////////////////////////////////////////////////////////////////////文件记录模块
void WRITE()
{
FILE *fp,*fp1;
if((fp=fopen("hchsk.txt","w"))==NULL)
{
printf("无法创建文件!\n\n");
getchar();
return;
}
if((fp1=fopen("N.txt","w"))==NULL)//用于记录共几趟车
{
printf("无法创建文件!\n");
getchar();
return;
}
for(i=0;i<n;i++)
if(fwrite(&T[i],sizeof(struct Train),1,fp)==0)
printf("写入数据失败!\n\n");
fprintf(fp1,"%d",n);
fclose(fp);
fclose(fp1);
}
///////////////////////////////////////////////////////////////////////////////////////文件读取模块
void READ()
{
FILE *fp,*fp1;
if((fp=fopen("hchsk.txt","r"))==NULL)
{
printf("无法打开文件\n");
getchar();
return;
}
if((fp1=fopen("N.txt","r"))==NULL)
{
printf("无法打开文件!\n\n");
getchar();
return;
}
fscanf(fp1,"%d",&n);
fclose(fp1);
for(i=0;i<n;i++)
{
fread(&T[i],sizeof(struct Train),1,fp);
}
fclose(fp);
}