火车票系统C语言报告版带截图

上传人:沈*** 文档编号:107309839 上传时间:2022-06-14 格式:DOC 页数:31 大小:480.50KB
返回 下载 相关 举报
火车票系统C语言报告版带截图_第1页
第1页 / 共31页
火车票系统C语言报告版带截图_第2页
第2页 / 共31页
火车票系统C语言报告版带截图_第3页
第3页 / 共31页
点击查看更多>>
资源描述
精品范文模板 可修改删除撰写人:_日 期:_一、 课题内容和要求设计目标:设计一个火车票务管理系统,用C语言实现。对该系统的要求如下:需求描述:1.系统功能(1)火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价。数据存入数据文件hchsk.dat或hchsk.txt中。(2)火车时刻信息查询。按照车次查询按终点查询按起点查询按终点和日期查询 (3)统计 按终点统计每日的车次数 按起点统计每日的车次数2. 系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出注:建议用VC环境开发用户界面。结果形式:提交程序设计报告和可演示的系统软件二、 需求分析系统主界面应有以下功能选项录入火车时刻信息查询火车时刻信息统计火车车次退出(1)火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价。数据存入数据文件hchsk.dat或hchsk.txt中。(2)火车时刻信息查询。按照车次查询按终点查询按起点查询按终点和日期查询 (3)统计 按终点统计每日的车次数 按起点统计每日的车次数在该部分中叙述每个模块的功能要求三、 概要设计/* 头文件 */#include#include #include/* 函数声明 */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%11sn,Ti.code,Ti.data,Ti.lp,Ti.ap,Ti.lt,Ti.at,Ti.price /输出记录格式#define Wrong n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! n #define GeShi 车次 日期 起点 终点 开车时间 到达时间 票价n /输出表头/* 结构定义 */struct Trainchar code10; /车次char data10; /日期char lp10; /left place 起点char ap10; /arrive place 终点char lt10; /left time 开车时间char at10; /arrive time 到达时间char price10; / 票价TN;/* 全局变量 */int i=0; /输入计数器int n=0; /合计计数器char l20; /纠错空间四、详细设计/* 头文件 */#include#include #include/* 函数声明 */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%11sn,Ti.code,Ti.data,Ti.lp,Ti.ap,Ti.lt,Ti.at,Ti.price /输出记录格式#define Wrong n ! ! ! ! ! ! ! ! ! ! ! 输入错误,请重新输入 ! ! ! ! ! ! ! ! ! ! ! n #define GeShi 车次 日期 起点 终点 开车时间 到达时间 票价n /输出表头/* 结构定义 */struct Trainchar code10; /车次char data10; /日期char lp10; /left place 起点char ap10; /arrive place 终点char lt10; /left time 开车时间char at10; /arrive time 到达时间char price10; / 票价TN;/* 全局变量 */int i=0; /输入计数器int n=0; /合计计数器char l20; /纠错空间/主函数int main() int x;dox=MENU();switch(x)case 1:INPUT(); break;case 2:SEARCH(); break;case 3:SELECT(); break;case 4:printf(n -);printf(n 正在退出,请按任意键退出);printf(nn 阿哈工作室出品 B09020424);printf(n -n );break;default:WRONG(); break;while(x!=4);return 0;/菜单模块int MENU()int choice;system(cls); /借鉴而来的清屏语句,好用!printf(n -n);printf( -n);printf( - -n);printf( - 欢迎进入火车票务管理系统 -n);printf( - -n);printf( -n);printf( -nn);printf( n - 请输入选项 -n);printf( 1.录入火车时刻信息n);printf( 2.查询火车时刻信息n);printf( 3.统计火车车次n);printf( 4.退出n);printf( -n);printf( 请选择: );scanf(%d,&choice);gets(l);return choice;/输入模块void INPUT()char ch;dosystem(cls); /借鉴而来的清屏语句,好用!printf(nn =欢迎进入 录入火车时刻信息 界面=n);doprintf(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(Ti.code);printf( 日期 );gets(Ti.data);printf( 起点 );gets(Ti.lp);printf( 终点 );gets(Ti.ap);printf( 开车时间 );gets(Ti.lt);printf( 到达时间 );gets(Ti.at);printf( 票价 );gets(Ti.price);n+;i+;while(iN);WRITE();system(cls); /借鉴而来的清屏语句,好用!printf(n);printf( -n);printf( 系统记载的列车信息如下n);printf( -nn);PRINT();/文件记录模块void WRITE() FILE *fp,*fp1;if(fp=fopen(hchsk.txt,w)=NULL)printf(无法创建文件!nn);getchar();return;if(fp1=fopen(N.txt,w)=NULL)/用于记录共几趟车printf(无法创建文件!n);getchar();return; for(i=0;in;i+)if(fwrite(&Ti,sizeof(struct Train),1,fp)=0)printf(写入数据失败!nn);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(无法打开文件!nn);getchar();return;fscanf(fp1,%d,&n);fclose(fp1);for(i=0;in;i+) fread(&Ti,sizeof(struct Train),1,fp); fclose(fp);/打印模块void PRINT()char ch10;READ();printf(n =n);printf(GeShi);for(i=0;in;i+) printf(Print);printf( =n);printf(n 按任意键返回上级菜单: );gets(ch);/查询模块void SEARCH()char name110;/车次char name210;/终点char name310;/起点char name4110;/终点char name4210;/日期char choice;int j;int k;dosystem(cls); /借鉴而来的清屏语句,好用!printf(nn =欢迎进入 查询火车时刻信息 界面=n);printf(n +请选择查找方式+nn);printf( -1.显示所有列车信息 2.按车次查询 3.按终点查询-n);printf( -4.按起点查询 5.按终点和日期查询 6.返回上级菜单-n);printf(n 请选择: );scanf(%d,&j);gets(l);switch(j)case 1:PRINT();break;case 2:printf(n - 请输入车次 -: );gets(name1);break;case 3:printf(n - 请输入终点 -: );gets(name2);break;case 4:printf(n - 请输入起点 -: );gets(name3);break;case 5:printf(n - 请输入终点 -: );gets(name41);printf(n - 请输入日期 -: );gets(name42);break;case 6: break;default:WRONG ();break;READ();k=0;if(j=2)for(i=0;in;i+) if(strcmp(Ti.code,name1)=0)printf(n 按 车次 查找列车信息成功!n);printf(n =n);printf(GeShi);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 - ,k);gets(l);if(j=3)for(i=0;in;i+) if(strcmp(Ti.ap,name2)=0)printf(n 按 终点 查找列车信息成功!n);printf(n =n);printf(GeShi);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 - ,k);gets(l);if(j=4)for(i=0;in;i+) if(strcmp(Ti.lp,name3)=0)printf(n 按 起点 查找列车信息成功!n);printf(n =n);printf(GeShi);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 - ,k);gets(l);if(j=5)for(i=0;in;i+) if(strcmp(Ti.ap,name41)=0&strcmp(Ti.data,name42)=0)printf(n 按 终点和日期 查找列车信息成功!n);printf(n =n);printf(GeShi);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 继续查找(1),返回主菜单(2)- );choice=getchar();gets(l);if(choice!=1&choice!=2)WRONG ();while(choice!=1&choice!=2);while(choice!=2);/统计模块void SELECT()char name110;/终点char name210;/起点int t,k;char choice;dosystem(cls);printf(nn =欢迎进入 统计火车车次 界面=n);printf(n -|- -|- -|- -|- 请选择统计方式 -|- -|- -|- -|- nn);printf( 1.按终点统计每日的车次数n);printf( 2.按起点统计每日的车次数n);printf(n 请选择: );scanf(%d,&t);gets(l);switch(t)case 1:printf( 请输入终点: );gets(name1);break;case 2:printf( 请输入起点: );gets(name2);break;default:WRONG();break;READ();if(t=1)k=0;for(i=0;in;i+) if(strcmp(Ti.lp,name1)=0)printf(n 按 终点 统计列车信息成功!n);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 - ,k);gets(l);if(t=2)k=0;for(i=0;in;i+) if(strcmp(Ti.lp,name2)=0)printf(n 按 起点 统计列车信息成功!n);break;for(i=0;i 共查询到 %d 趟列车信息,请按任意键返回 继续统计(1),返回主菜单(2) ! ! ! 输入错误,请按任意键返回 ! ! ! - );gets(l);五、测试数据及其结果分析1、菜单模块-选择 界面:1、菜单模块-退出2、输入模块2、输入完毕3、查询模块3、查询模块-13、查询模块-23、查询模块-33、查询模块-43、查询模块-53、查询模块-询问3、查询模块-失败4、统计模块-14、统计模块-24、统计模块询问出错提示六、调试过程中的问题实验中遇到的问题不少,有以下几点:1. 本来一开始做程序时候想使用模块化的,但因外部变量总要声明的缘故被取消。2. 对于需要选择的时候,比如在菜单模块中,如果键入一些非正常的字符,就会是系统出错无法运行。因此,我加入了纠错模块“WRONG();”。3. 在输出格式上面很难控制,几经调试才最后成功。并且引入宏 #define Print 加以控制。4. 在结构定义时本想引入动态空间加以控制,但因不好控制最终定义为#define N 1000 。5. 最难得在与数据的写入与读取WRITE(); READ(); 最后为了保证准确记录列车的趟数不得不加入了文件N(fp1),同时,由于在for(;)循环中没有把“in” 和“i=n”严格区分,在早期运行时会莫名其妙多打出一行,最终发现并修改好。6. 在编写函数SEARCH();时犯了一个低级错误,把“=” 和“=”混淆,几经调试才发现,真是笨。最后就是统计函数SELECT();,虽然至今仍然觉得这个函数编写的似乎不合题意,但也没办法啦。值得一提的是,他和SEARCH();函数一样,使用了两次循环,虽然累赘,但是保证输出时的简洁与明了。七、程序设计总结经过这为期两周的集中化训练,我的编程能力有了较明显的提高。然而,虽然只是编写这么一个小小的程序,却是我意识到自己的不足以及需要提高的地方。首先,程序语句的不熟练使我在编程初期工作效率相当的低下。不断地翻书让我很“痛苦”。第二,对于流与文件的不熟悉让我在编写读取与写入文件那两个模块时非常迟缓。不得不说明的是,我也是参考了其他同学的程序时才真正学会了文件的操作。第三,在编程初期使用模块化的程序思想使我效率低下,相比之下的函数与宏的定义更适合于这种小型程序。第四,本次编程最令我高兴的是在借鉴其他同学的代码时发现了system(cls); 这一语句。清屏语句的引入使程序执行时无比简洁。没有了一行有一行的烦恼。这也显示出了我对此语言了解之浅薄,我仍需努力才行。最后,通过这两周的编程,我感觉到了程序的来之不易。平时惯用的免费软件没觉得有什么,但通过本次的编程后我感觉到了编程者的艰辛。这两周我学到了很多,也懂得了很多。感谢这两周的程序设计课,我的C语言又有了新的提高。第 31 页 共 31 页免责声明:图文来源于网络搜集,版权归原作者所以若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!