1、二、需求分析系统主界面应有以下功能选项1录入火车时刻信息2查询火车时刻信息3统计火车车次4.退出 (1)火车时刻信息录入。二、 概要设计 void SearchTrainNum();/按照车次查询void SearchToPlace();/按终点查询void SearchFromPlace();/按起点查询void SearchToPlaceAndDate();/按终点和日期查询void CountToPlace();/按终点统计每日的车次数void CountFromPlace();/按起点统计每日的车次数三、详细设计 程序的源代码与注释 #includestring.hstdlib.hvo
2、id Star();struct TRAIN char trainNum10; char date30; char fromPlace20; char toPlace20; char inTime30; char outTime30; double price;struct TRAIN train30;int main() int request; char ch=Y; int i=0; double myprice; FILE *fp;repeat: Star(); printf(火车管理系统界面n);1.录入火车时刻信息.n2.查询火车时刻信息.n3.统计火车车次.n4.退出.nn请输入:
3、 scanf(%d,&request); switch(request) /利用case分支结构 case 1: fp=fopen(.train.rec,wb /利用文件与流 if(!fp) printf(File can not be openedn exit(1); do printf(Enter车次 日期 起点 终点 开车时间 到达时间 票价n scanf(%s%s%s%s%s%s%lf,traini.trainNum,traini.date,traini.fromPlace ,traini.toPlace,traini.inTime,traini.outTime,&myprice);
4、traini.price=myprice; fwrite(&traini,sizeof(struct TRAIN),1,fp); i+;continue(Y/N)(N to end)? getchar(); scanf(%cch); while(ch!=N fclose(fp); printf(返回主界面吗?(Y返回) getchar(); if(ch=)nn goto repeat; break; case 2: printf(火车时刻信息查询1.按车次查询.n2.按终点查询.n3.按起点查询.n4.按终点和日期查询.n5.退出.n switch(request) case 1: Searc
5、hTrainNum(); break; SearchToPlace(); case 3: SearchFromPlace(); case 4: SearchToPlaceAndDate(); case 5: exit(0); break;火车车次统计系统%s,num); while(!feof(fp1) fread(&traini,sizeof(struct TRAIN),1,fp1); if(strcmp(num,traini.trainNum)=0)%-4s%-12s%-8s%-10s%-10s%-8s%.2lf,traini.trainNum,traini.date,traini.fro
6、mPlace,traini.toPlace, traini.inTime,traini.outTime,traini.price); i+; getchar(); fclose(fp1);void SearchToPlace() FILE *fp2; fp2=fopen(fp2) rewind(fp2);输入你要查询的终点.nfeof(fp2)traini,sizeof(struct TRAIN),1,fp2); if(strcmp(num,traini.toPlace)=0) fclose(fp2);void SearchFromPlace() FILE *fp3; fp3=fopen(fp
7、3) rewind(fp3);输入你要查询的起点.nfeof(fp3)traini,sizeof(struct TRAIN),1,fp3); if(strcmp(num,traini.fromPlace)=0) fclose(fp3);void SearchToPlaceAndDate() FILE *fp4; char num120; fp4=fopen(fp4) rewind(fp4);输入你要查询的终点与日期.n,num1);feof(fp4)traini,sizeof(struct TRAIN),1,fp4); if(strcmp(num,traini.toPlace)=0)&(str
8、cmp(num1,traini.date)=0) fclose(fp4);void CountToPlace() FILE *fp5; int j=0; fp5=fopen(fp5) rewind(fp5);输入你(要统计的车次数的)终点.n j=0;feof(fp5)traini,sizeof(struct TRAIN),1,fp5); j+;当日终点%s的车次数:,num,j); fclose(fp5);void CountFromPlace() FILE *fp6; fp6=fopen(fp6) rewind(fp6);输入你(要统计的车次数的)起点.nfeof(fp6)traini,s
9、izeof(struct TRAIN),1,fp6);当日起点%s的车次数: fclose(fp6);void Star() int i; for(i=0;i20;i+)*四、测试数据及其结果分析(如图)1.火车时刻信息录入2. 火车时刻信息查询。(1)按照车次查询(2) 按终点查询(3) 按起点查询(4)按终点和日期查询3.统计(1)按终点统计每日的车次数(2)按起点统计每日的车次数4.退出。五、调试过程中的问题编译过程中由于MicrosoftVisualStudioC+6.0编译器的原因。直接给结构体double赋值会出现问题。在金老师的指导和帮助下:程序改为如下:scanf(,traini.trainNum,traini.date,traini.fromPlace, traini.toPlace,traini.inTime,traini.outTime,&traini.price=myprice;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1