资源描述:
《火车订票管理系统主程序流程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序简介此程序是采用多文件模块化形式编写;其中自定义头文件中包括了程序中所有调用的函数的声明,以及需要的所有系统头文件。#include#include#include#include#include#includeexternvoidsearchtrain(linkl);externvoidModify(linkl);externvoidshowtrain(linkl);externvoidSaveTrainIn
2、fo(linkl);externvoidprintdata(Node*q);externvoidprinthead();等编写时的分块包括订票块、查询块、输出块,及已订票修改部分等。订票块则包含了定票流程的所有代码。查询块中是通过车次号码或是到达城市来查询的。输出部分包括了主界面的输出,已定车票信息的输出,所查车次信息输出的头部分。订票修改即是改定过程的编程。即此程序包括了查询、订票、改定的流程。编程过程在编写该程序时,遇到了信息的保存问题。订票时与改定时的录入信息的保存不知如何处理;之后将保存的部分分为链表暂存和文件的保存
3、,在录入信息时是暂存在链表中的,当离开此系统是会提示是否保存信息,若是则保存到文件中。此举方便了票的改定,将数据分割开了,也精简了程序,更便于阅读。编程模块划分后,编写程序之后的编译时,总是连分文件编译时都无法通过。但是写入的代码经过检查又没有问题,一直困扰着我。直到想起老师教的课本以外的知识,并以一种玩玩试一试的心态用条件编译得以解决此问题。同时在编程时多次用到“清屏”,保证了输出界面的简洁。在分出模块后,未完成所有部分的编程时的试运行时出现刚一进入子程序时便会回到主界面,后发现时由于只有输出部分没有输入部分,每当运行完子
4、程序后回到主程序时都会被“清屏”,结果造成编译时正常,到运行时却漏洞百出。在编程时,由于对文件的处理不熟悉,以及计算机的设置问题没考虑,使用了‘w+’的调用方式,使得在保存数据到文件时出现无法写入文件的现象。在百度,问同学以及问老师后才用‘wb+’和别的方式调用,并写入成功。这个程序时我学习计算机c以来编写的最大型涵盖面最广的一个程序,没有之一。但同时我也知道这在c语言编程中也只是很小的一个小程序而已,我在这编程中–7–发现:我要学的还有很多,大型程序也不是一个人能写出来的,会一些编程技巧是很有必要的,与人合作是必须的,当然
5、了,我不是在写诗,而是真的这么觉得。一个人会的有限,专精方向也不同,若能好好的合作肯定可以超过一个人单干。部分源代码订票程序#ifndefTRAINHEAD_H#defineTRAINHEAD_H#include"trainhead.h"#endif/*条件编译,作用是防止头文件被重复引用*/intsaveflag=0;voidBookticket(linkl,booklinkk){Node*p[10],*q;charc[2],tnum[10],str[10],str1[10];Book*r,*s;inti=0,t=0,fl
6、ag=0,dnum;r=k;while(r->next!=NULL)r=r->next;printf("Inputthecityyouwanttogo:");scanf("%s",&str);q=l->next;while(q!=NULL){if(strcmp(q->data.reachcity,str)==0){p[i]=q;i++;}q=q->next;}printf("thenumberofrecordhave%d",i);printhead();for(t=0;t
7、if(i==0)printf("Sorry!Can'tfindthetrainforyou!");else{printf("doyouwanttobookit?");–7–scanf("%s",c);if(strcmp(c,"Y")==0
8、
9、strcmp(c,"y")==0)/*判断是否订票*/{s=(Book*)malloc(sizeof(Book));printf("Inputyourname:");scanf("%s",&s->data.name);printf("InputyourI
10、D:");scanf("%s",&str1);strcpy(s->data.num,str1);printf("pleaseinputthenumberofthetrain:");scanf("%s",tnum);for(t=0;tdata