C语言课程设计――飞机订票系统说明书(第一个人)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

目录设计目的………………………………………………………1总体设计………………………………………………………1详细设计………………………………………………………3调试与测试……………………………………………………5核心源程序清单和执行结果…………………………………5源程序代码……………………………………………5截图……………………………………………………13仍存在的问题…………………………………………15心得体会………………………………………………………15设计进度表……………………………………………………16参考文献………………………………………………………17-1-一、正文(一)设计目的:假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一飞机订票系统,使之能提供下列服务:1、航班信息录入功能(航班信息用文件保存)包括航班号、起始站、重点站、机票数等;2、航班信息浏览功能3、按航班号排序4、查询航线:按航班号查询5、承办订票和退票业务(可选项)(二)总体设计:编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、排序、查询以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。在这附上总体模块设计图:飞机订票系统系统初始化增加航班信息航班信息浏览航班排序订票业务退票业务建立新数据文件从已有的数据文件读取按航班号从小到大排序按航班号从大到小排序查找航班信息按航班号查找退出并保存-2-因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来存放航班的各项信息,根据题目要求定义如下结构体类型:头文件包含、全局变量定义和结构体定义源代码:#includestdio.h//标准输入、输出头文件#includestring.h//包含字符串函数处理头文件#includeprocess.h//包含access函数的头文件#defineN1000//定义最多的航班数#definePRINT%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式structair//定义结构体数组{intnum;//定义航班号charstart[20];//航班起始站charover[20];//航班终点站chartime[10];//飞行时间intcount;//机票数量}s[N];inti,m=0;//定义全局变量,记录下航班信息的数量charii[10];//用来选择是否继续的变量以上就是我的总体设计思路。-3-(三)详细设计:在本次的课程设计中我负责编制的是初始化、建立数据文件、数据文件读取、数据文件保存、增加航班信息、订票、退票业务函数的编写。以下是我的负责部分的详细设计内容:1)定义系统初始化函数模块功能:设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。该函数源代码为:voidchushihua()//初始化函数{if(access(hangban.dat,0))build();elseread();}2)定义建立新数据文件的函数系统初始化后,没有寻找到数据文件,则进行新建数据文件,此函数的作用就是进行新建文件数据的录入。运用到了文件指针的定义FILE*fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite;运用for循环进行各组数据的输入,用m++记录下输入的航班数量,并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。该函数的源代码为:3)定义读取文件内航班信息的函数系统初始化之后,若原始数据文件存在,则进行文件内航班信息的读取,以供接下来程序中的各个函数来使用。在该函数中同样运用到了文件指针FILE*fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取;m++记录下读取到的航班数量等。4)定义保存函数因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序,我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存,将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存的设计,大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。此函数的源代码为:有关文件读取、写入和保存的函数定义完了就开始设计与题目要求直接相关的函数了。数据文件是否存在输入航班信息并建立新数据文件保存下来从已有的数据文件读取已有的航班信息Y初始化结束N-4-5)定义订票业务函数在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况:订票数输入不正确、飞机票数不足等情况。订票成功时运用s[i].count=s[i].count-n;将已被订的机票数减去,以显示新的即时航班信息6)定义退票业务函数:与订票函数相类似,只做稍稍修改就行退票成功是用s[i].count=s[i].count+n;将航班的剩余票数加上去以显示即时航班信息。7)定义主函数主函数主要就是提供系统的主菜单界面供用户选择。运行主函数时首先调用chushihua函数判定数据文件是否存在、是否要进行初始航班信息输入;若已存在则进入主界面菜单供用户选择,运用swich语句对用户的不同选择来调用各功能的函数。并用do…while语句循环实现能够让用户进行多次的选择。-5-(四)调试与测试调试过程中曾经遇到过一些问题,但是也不多,遇到过:订票或退票的时候不能将剩余的票数加上和减去。后来经过详细的检查与对照课本知识点找出了相应的错误点,经过修改加入票数加减语句,再经过与保存函数的配合后实现了题目要求的功能。调试成功。(五)核心源程序清单和执行结果:a)源程序清单:#includestdio.h//标准输入、输出头文件#includestring.h//包含字符串函数处理头文件#includeprocess.h//包含access函数的头文件#defineN1000//定义最多的航班数#definePRINT%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式structair//定义结构体数组{intnum;//定义航班号charstart[20];//航班起始站charover[20];//终点站chartime[10];//飞行时间intcount;//机票数量}s[N];inti,m=0;//定义全局变量charii[10];voidadd();//函数声明增加航班信息函数voidprint();//显示航班信息voidsearch();//查找航班信息voiddingpiao();//订票业务voidtuipiao();//退票voidread();//读取文件voidsave();//保存文件voidoutput();//输出格式voidpaixu();//航班排序voidchushihua();//系统初始化voidbuild();//建立数据文件voidpaixu1();//按航班号从小到大排序voidpaixu2();//从大到小voidmain()//主函数{intj;chushihua();//系统初始化判断是否存在原始数据文件printf(O(^_^)O欢迎使用天鑫飞机订票系统(*^__^*)\n);//打印出系统主界面do-6-{printf(================================================================================);printf(1.增加航班信息\n\t2.浏览航班信息\n\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n\t\t\t4.航班排序(按航班号)\n\t\t\t\t5.订票业务\n\to(︶︿︶)o\t\t\t6.退票业务\n\t\t\t\t\t\t0.退出\n);printf(================================================================================);printf(请在0-6中选择以回车键结束:);scanf(%d,&j);switch(j){case1:add();//调用增加航班函数break;case2:print();//调用显示模块break;case3:search();//调用查找模块break;case4:paixu();//调用排序函数break;case5:dingpiao();//调用订票模块break;case6:tuipiao();//调用退票模块break;case0://退出系统save();printf(谢谢使用,再见!);break;}}while(j!=0);//判断是否调用其他函数}voidchushihua()//定义系统初始化函数{if(access(hangban.dat,0)){build();}else-7-read();}voidbuild()//定义建立数据文件函数{FILE*fp;//定义文件指针if((fp=fopen(hangban.dat,wb))==NULL)//打开文件并判定是否出错{printf(创建文件失败!);//打印出错提示getchar();return;}printf(请依次输入航班信息(以回车键结束):\n);//打印提示信息printf(--------------------------------------------------------------------------\n);for(i=0;iN;i++){printf(请输入航班号:);scanf(%d,&s[i].num);//输入航班号printf(请输入起始站:);scanf(%s,s[i].start);//输入起始站printf(请输入终点站:);scanf(%s,s[i].over);//输入终点站printf(请输入时间(星期几):);scanf(%s,s[i].time);//输入时间printf(请输入机票数:);scanf(%d,&s[i].count);//输入机票数fwrite(&s[i],sizeof(structair),1,fp);m++;printf(添加完毕,是否继续添加?请键入y或n以回车键结束:);scanf(%s,ii);if(strcmp(ii,y)!=0)//判断是否继续添加航班信息{fclose(fp);//关闭文件return;}}}voidread()//定义读取文件函数{FILE*fp;if((fp=fopen(hangban.dat,r))==NULL){printf(创建文件失败!);getchar();return;-8-}i=0;while(!feof(fp)){fread(&s[i],sizeof(structair),1,fp);//逐块读取数据i++;m++;//计算存在航班数}m--;fclose(fp);}voidsave()//定义保存函数{FILE*fp;if((fp=fopen(h

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功