收藏 分销(赏)

火车票务管理系统(C语言).docx

上传人:二*** 文档编号:4519367 上传时间:2024-09-26 格式:DOCX 页数:21 大小:39.76KB 下载积分:5 金币
下载 相关 举报
火车票务管理系统(C语言).docx_第1页
第1页 / 共21页
本文档共21页,全文阅读请下载到手机保存,查看更方便
资源描述
火车票务管理系统一、课题内容和要求 设计目标:设计一个火车票务管理系统,用C语言实现。对该系统的要求如下: 需求描述: 1. 系统功能火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价。 数据存入数据文件hchsk. dat或hchsk. txt中。 (1) 火车时刻信息查询。 按照车次查询 按终点查询 按起点查询 按终点和日期查询 (2) 统计 按终点统计每日的车次数 按起点统计每日的车次数 2. 系统主界面应有以下功能选项录入火车时刻信息 查询火车时刻信息统计火车车次 退出 注:建议用VC环境开发用户界面。 结果形式: 提交程序设计报告和可演示的系统软件二、需求分析 系统主界面应有以下功能选项录入火车时刻信息 1. 查询火车时刻信息统计火•车车次 rewind(fp2); printfC输入你要查询的终点.\n>>>〃); scanf(〃%s〃, num); while(!feof(fp2))fread(&train[i], sizeof(struct TRAIN), 1, fp2); if (strcmp(nun), train[i]. toPlace)~0)( printf (,z%~4s%-12s%~8s%-10s%-10s%-8s%. 21f〃,trainfi]. trainNum, train[i]. date, train[i]. fromPlace, train[i]. toPlace, train[i]. inTime, train[i]. outTime, train[i]. price); printf(〃\n〃);} i++; )printf C,continue(Y/N) (N to end)?”); getchar ();scanf&ch); } while (ch!=,; printf("\n〃); fclose(fp2); } void SearchFromPlace() ( FILE *fp3; char num[20]: char ch; fp3二fopcn(〃. \\train. rcc〃, 〃r+〃);if(!fp3) (printf (^File can not be opened\n,/); exit (1);} do! rewind(fp3);printf ("输入你要查询的起点.\n»>z,); scanf(〃%s〃,num);while(!feof(fp3)) {fread(Strain[i], sizeof(struct TRAIN),1,fp3); if (strcmp(num, train[i]. fromPlace)==0)( printf(*%-4s%-12s%-8s%-10s%-10s%-8s%. 21f〃,train[i]. trainNum, train[i]. date, tra fromPlace, train[i]. toPlace,train[i]. inTime, trainEi]. outTime, train[i]. price); printf (〃\n〃);) i++;} printf (z,continue(Y/N) (N to end)?”);getchar (); scanf(〃%c〃,&ch);} while (ch!=' N'); printf(〃\n〃);fclose(fp3); void SearchToPlaceAndDate()FILE FILE *fp4; char num[20]; char numl[20]; char ch; int i=0; fp4=fopen(/,. \\train. rec”, 〃r+〃); printf (,zFile can not be opencd\n〃); exit (1); do rewind(fp4); printfC输入你要查询的终点与日期.\n>>>〃); while(!feof(fp4)) fread(&train[i], sizeof(struct TRAIN), 1, fp4);if((strcmp(num, train[i]. toP1ace)==0)&&(strcrop(numl, trainEi]. date) ==0)) printf (,z%-4s%-12s%-8s%-10s%-10s%-8s%. 21f,z, trainfi]. trainNum, train[i]. date, trainti]. fromPlace, train[i].toPlace, train[i]. inTime, train[i]. outTime, train[i]. price); printf(〃\n〃);} i++; }printf("continue(Y/N) (N to end)?”); getchar ();scanf(〃%c〃,&ch); }while(ch!='N'); printf(〃\n"); fclose(fp4); } void CountToPlaceO { FILE *fp5; char num[20]; char ch; int i=0; int j=0; fp5=fopen(〃. \\train. rec〃, 〃r+〃);if(!fp5) {printf(^File can not be opened\n〃); exit (1);do rewind(fp5); printfC输入你(要统计的车次数的)终点.\n>>>〃); scanf (〃%s〃, num);j=0; while(!feof(fp5)) { fread(Strain[i], sizeof(struct TRAIN), 1,fp5); if (strcmp(num, train[i]. toPlace)==0)( j++;} i++; } printf C当日终点Ws的车次数:%d〃,num, j); printf(〃\n〃);printf(''continue(Y/N) (N to end)?”); getchar (); scanf(〃%c〃, &ch); } while (ch!=, N'); fclose(fp5); } void CountFromPlace() ( FILE *fp6; char num[20]; char ch; int j=0; fp6=fopen(〃. \\train. rec〃,〃r+〃);if(!fp6) {printf(^File can not be opened\n〃); exit (1); )do ( rewind(fp6); printfC输入你(要统计的车次数的)起点.\n>>>〃); scanf (〃%s〃,num);j=0; while(!feof(fp6)) (fread(&train[i], sizeof(struct TRAIN), 1,fp6); if (strcmp(num, train[i]. fromPlace)~0)( j++;} i++; ) printf (,z当日起点%s的车次数:%d", num, j); printf (〃\n〃);printf("continue(Y/N) (N to end)?”); getchar (); scanf(〃%c〃,&ch); } while (ch !=' N');fclose(fp6); }void Star () (int i; for(i=0;i〈20;i++){ printf(〃*〃);) printf(〃\n〃);) 四、测试数据及其结果分析(如图)1.火车时刻信息录入 * 息息 f面膏• f统曹车 5车车车 f理火火火. j勇询计出 5车蓍统退 * 少 1 2 3 4 鬲输入 gnter车次日期 起点 »> T001 2010-3-1 NANJING continue<¥/NXN to end>?V 车次日期 起点 »> T002 2010-3-1 NANJING continue<¥/N><N to end>?¥ 车次白期庖,点 »> T003 2010-3-1 NANJING cont inue<V/NXN to end>?V gnt”车次日期 起点 »> T004 2010-3-1 BEIJING cont inue<V/NXN to end>?¥ Rnter车次日期 起点 »> T005 2010-3-1 SHANGHAI 鬲输入 gnter车次日期 起点 »> T001 2010-3-1 NANJING continue<¥/NXN to end>?V 车次日期 起点 »> T002 2010-3-1 NANJING continue<¥/N><N to end>?¥ 车次白期庖,点 »> T003 2010-3-1 NANJING cont inue<V/NXN to end>?V gnt”车次日期 起点 »> T004 2010-3-1 BEIJING cont inue<V/NXN to end>?¥ Rnter车次日期 起点 »> T005 2010-3-1 SHANGHAI 终点开车时间到达时间票价 SHANGHAI 7:308:20300 终点开车时间到达时间票价 SHANGHAI 10:3011:20 400 终点开车时间到达时间票价 SHANGHAI 15:3016:20 500 终点 NANJING 开车时间到达时间票价 9:5011:00 500 终点开车时间到达时间票价 TIANJING 19:0020:20 650 2. 火车时刻信息查询。 (1) 按照车次查询 〉>>>>火车时刻信息查询 1. 2. 援终钱而甘丽查询. 5 .退出・ 查找的车次号. »>T001 T0012010-3-1 NANJING SHANGHAI 7:30 8:20300.00 cont inue<¥/NXN to end〉?Y 输入你要查找的车次号. »>T002 T0022010-3-1 NANJING SHANGHAI cont inue<V/NXN to end>?V 输入你要查找的车次号. »>T003 T0032010-3-1 NANJING SHANGHAI continue<V/NXN to end>?V 输入你要查找的车次号. »>T004 T0042010-3-1 BEIJING NANJING cont inue<V/NXN to end>?V 输入你要查找的车次号• »>T005 T0052010-3-1 SHANGHAITIANJING 10:30 15:30 9:50 19:00 11:20400.00 16:20500.00 11:00500.00 20:20650.00 按终点查询 >>>>>火车时刻信息查询 L.铤次查询. 侦安练点查询. ).波超点查询. I成终点和日期查询. i.退出. 10012010-3-1 NANJING SHANGHAI 7:30 8:20 300.00 10022010-3-1 NANJING SHANGHAI 10:30 11:20 400.00 F0032010-3-1 NANJING SHANGHAI 15:30 16:20 500.00 cont inue<V/NXN to end>?V 腕入你要查询的终点. »>NANJING 10042010-3-1 BEIJING NANJING 9:50 11:00 500.00 continue<V/NXN to end〉?Y 输入你要查询的终点・ »>TIANJING 10052010-3-1 SHANGHAITIANJING continue<Y/NXN to end>?N 崭乂你要查询的终点・ »>SHANGHAI 19:00 20:20 650.00 返回主果面吗?<丫返回〉 (2) 按起点查询 请翰入:3 输X你要查询的起点. »>NANJING T0012010-3-1NANJINGSHANGHAI T0022010-3-1NANJINGSHANGHAI T0032010-3-1NANJINGSHANGHAI 7:30 10:30 15:30 8:20 11:20 16:20 300.00 400.00 500.00 continue<V/NXN to end>?¥ 输入你要查询的起点• »>BEIJING T0042010-3-1BEIJING NANJING continue<?/NXN to end〉?Y 输入你要查询的起点. »>SHANGHAI 9:50 11:00 500.00 T0052010-3-1SHANGHAITIANJING cont inue<¥/NXN to end〉?. 19:00 20:20 650.00 (3) 按终点和日期查询 请 • 4 输乂你妻查询的终点与日期. »>SHANGHAI 2010-3-1 T0012010-3-1NANJINGSHANGHAI T0022010-3-1NANJINGSHANGHAI T0032010-3-1NANJINGSHANGHAI 7:30 10:30 15:30 8:20 11:20 16:20 300.00 400.00 500.00 cont inue<V/NXN to end>?¥ 输入你要查询的终点与日期. »>NANJING 2010-3-1 T0042010-3-1BEIJING NANJING cont inue<V/NXN to end〉?Y 输入你要查询的终点与日期. »>TIANJING 2010-3-1 9:50 11:00 500.00 T0052010-3-1SHANGHAITIANJING continueCV/NXN to end>? 19:00 20:20 650.00 统计 (1)按终点统计每日的车次数>>>>>火车车次统讦系统««< 1 .技绞点统计每日曲车次数. 2炭起点统计每日的车次数. 3 •退出・请输入 输芙你〈要统计的车次数的〉终点. »>SHANGHAI当日终点SHANGHAI的车次数:3 cont inue<?/NXN to end〉?Y 输入你〈要统计的车次数的〉终点. »>NANJING当日终点NANJING的车次数 continue<?/N><N to end>?V输入你〈要统计的车次数的〉终点. »>TIANJING当日终点TIANJING的车次数H continue<¥/NXN to end>? (2)按起点统计每日的车次数输乂你〈要统计的车次数的〉起点. XXXklAM IT HP当日起点NANJING的车次数:3 continue<V/NXN to end〉?Y 输入你〈要统计的车次数的〉起点. »>BEIJING含日盘,板BEIJING的车次数 cont inue<V/NXN to end〉?Y 输入你〈要统计的车次数的〉起点. »>SHANGHAI含日起出SHANGHAI的车次数 conti.nue<Y/N〉<N to end〉?一退出。 4.退出⑴火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价。 数据存入数据文件hchsk. dat或hchsk. txt中。 (2)火车时刻信息查询。 按照车次查询 按终点查询 按起点查询 按终点和日期查询 ⑶统计 按终点统计每日的车次数 按起点统计每日的车次数二、概要设计 void SearchTrainNumO ;//按照车次查询 void SearchToPlace (): 〃按终点查询 void SearchFromPlace (); 〃按起点查询 void SearchToPlaceAndDate (); 〃按终点和日期查询 void CountToPlace ();//按终点统计每日的车次数 void CountFromPlace (); 〃按起点统计每日的车次数三、详细设计 程序的源代码与注释 #include<stdio. h> #include<string. h> #include<stdlib. h> void SearchTrainNumO ; void SearchToPlace(); void SearchFromPlace0; 自心自心 面简简• 次 统曹专 u 理火火火• 勇询计出 车善统退 • • • • w.kl—21314— |jW^A=4作者:B09020415S云鹏 MMMMMMMMMMMMMMMMMMMM 匚Press any key to continue 五、调试过程中的问题编译过程中由于MicrosoftVisualStudioC++6. 0编译器的原因。 直接给结构体double赋值会出现问题。 在金老师的指导和帮助下: 程序改为如下: struct TRAIN chartrainNum[10]; chardate[30]; charfromPlace[20]; chartoPlace[20]; charinTime[30]; charoutTime[30]; double price;}; int main () char ch='Y';int i=0; double myprice;FILE *fp; scanf (〃%s%s%s%s%s%s%lf〃,train[i]. trainNum, train[i]. date, train[i]. fromPlace,train[i]. toPlace, train[i]. inTime, train[i]. outTime, &myprice); train[i]. price=myprice; void SearchToPlaceAndDate 0; void CountToPlaceO ; void CountFromPlace(); void Star (); struct TRAIN char trainNum[101; char date[30]; char fromPlace[20]; char toPlace[20]; char inTime[30]; char outTime[30]; double price; }; struct TRAIN train[30]; int main()int request: char ch='Y'; int i=0;double myprice; FILE *fp; repeat: Star (); printfC火车管理系统界面\n〃); printf (,zl.录入火车时刻信息.\n〃); printf (z/2.查询火车时刻信息.\n〃); printf C3.统计火车车次.\n〃); printf C4.退出.\n〃);Star (); printf(〃\n〃); printfC 请输入:〃); scanf&request); switch (request)//利用 case 分支结构 { case 1: {fp=fopcn(〃. \\train. rcc〃,〃wb〃); //利用文件与流if(!fp) (printf ("File can not be opened\n,/); exit (1);} do{ printf ("Enter车次日期 起点 终点开车时间到达时间 票价\n»> 〃);scanf ("%s%s%s%s%s%s%lf〃,train[i]. trainNum, train[i]. date, train[i]. fromPlace ,train[i]. toPlace, train。], inTime, train[i]. outTime, &myprice); train[i]. price=myprice;fwrite(&train[i], sizeof(struct TRAIN), 1,fp); i++; printf(^continue(Y/N)(N to end)?”);getchar (); scanf(〃%c〃,&ch);} while (ch!=‘ N'); fclose(fp);printfC返回主界面吗?(Y返回)〃); getchar ();scanf("%c", &ch); if(ch== Y'){ printf(〃\n\n〃);goto repeat; ))break; case 2: { printf(〃\n\n〃);printfC»»>火车时刻信息查询«<«\n,/); printfCl.按车次查询.\n〃);printfC2,按终点查询.\n〃); printf (〃3.按起点查询.\n〃);printfC4,按终点和日期查询.\n〃); printf (z,5.退出.\n〃);printfC请输入:〃); scanf(〃%d〃,&request); case 2: SearchToPlaceO ;break; case 3: SearchFromPlace();break; case 4: SearchToPlaceAndDate(); break;case case exit(0); break; printfC返回主界面吗?(Y返回)〃);getchar0; scanf("%c", &ch);if(ch==' Y') (printf(〃\n\n〃); goto repeat; } break;case 3: printf(〃\n\rT);printf (〃>>>>>火车车次统计系统<««\0,/); printfCl.按终点统计每日的车次数.\n〃); printf (〃2.按起点统计每日的车次数.\n〃);printf (/z3,退出.\n〃); printf C请输入:");scanf(〃%d〃,&request); switch(request)case 1: CountToPlaceO : break; case 2:CountFromPlaceO : break;case 3:exit(0);break; ) printfC返回主界面吗?(Y返回广); getchar ();scanf(〃%c〃,&ch); if(ch='Y')I printf(〃\n\n〃);goto repeat; }} break; case 4: (Star (); printfC欢迎下次使用,拜拜s\n〃);Star (); }exit (0); break; default: printf(^Incorrect num entered.”);printf("Enter a new num. \n〃); break; return 0; void SearchTrainNumO ( FILE *fpl; char num[20]; char ch; int i=0; fpl=fopenC\ \\train. rec〃, 〃r+");if(!fpl) {printf(〃File can not be opened\n〃); exit (1); )do { rewind(fpl); 〃文件指针的操作,到文件头部函数 printfC输入你要查找的车次号.\n>>>〃); scanfnum); while(!feof(fpl)) {fread(&train[i], sizeof(struct TRAIN), 1,fpl); if (strcmp(num, train[i]. trainNum) ==0) printf (/?%-4s%-12s%-8s%-10s%-10s%-8s%. trainfi]. trainNum, train[i]. date, trainti]. fromPlace, train[i].toPlace,train[i]. inTime, train[i]. outTime, train[i]. price); printf(〃\n〃);} i++; }printf("continue(Y/N) (N to end)?”); getchar ();scanf(〃%c〃,&ch); } while (ch!='N'); printf (〃\rT); fclose(fpl); } void SearchToPlace() ( FILE *fp2; char num[20]; char ch: int i=0; fp2=fopen(〃. \\train. rcc〃, 〃r+〃);if(!fp2) {printf ("File can not be opened\n,/); exit (1);do
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服