1、C 语言课程设计题目: 飞机订票系统 专业: 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 学号: 。 。 。 。 。 。 。 。 。 。 。 姓名: 。 。 。 。 。 。 。 任课教师: 。 。 。 。 。 。 。 。 C 语言课程设计报告一、课程设计报告正文(1)课程设计题目的原文;假定民航机场共有 n 个航班:航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。试设计一民航订票系统,使之能提供下列服务: 航班信息录入功能(文件保存) 完成航班信息浏览功能; 查询航线(至少一种查询方式) 。(2)题目的分析(需求分析) ;任务:通过此系统可以实现如下
2、功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中)浏览:航班信息浏览功能需要提供显示操作; 查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓) ;另外要提供键盘式选择菜单以实现功能选择。 要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。 (3)整体设计与模块划分;根据需求分析,该程序可分为以下四大模块:输入模块 显示模块 查询模块 退出模块飞机订票系统(4)代码设计;包括各功能模块的流程
3、图;重要模块中关键部分的代码分析;关键函数的算法设计和分析等等;二、航班基本信息输入模块航班信息录入函数:文件打开否 输入信息是否继续将信息输出到磁盘调用 printf_back()函数结束开始输出错误信息航班信息浏览函数:流程图显示信息开始文件打开查找航班信息是否查找到输入信息是否继续结束输出错误信息删除操作查询模块:分析:基本信息的查询按查询可供选择的方式比较丰富,可按航班号查询。在查询小模块中采用了直接查找的方法。本模块可以通过多种查询方式进行完善。这是本程序没有做的地方。流程图开始文件打开查询方式是否继续结束输出错误信息航班号 此处可以完善其它查询方式(一)核心源程序清单和执行结果:a
4、) 源程序清单:#include#include#include#include /标准输入、输出头文件#include /包含字符串函数处理头文件#include /包含 access 函数的头文件#define N 1000 /定义最多的航班数#define PRINT “%dtt%stt%stt 星期%stt%dn “,si.num,si.start,si.over,si.time,si.count /宏定义输出格式struct air /定义结构体数组int num; /定义航班号char start20; /航班起始站char over20; /终点站char time10; /飞行
5、时间int count; /机票数量sN;int i,m=0; /定义全局变量char ii10;void add(); /函数声明增加航班信息函数void print(); /显示航班信息void search(); /查找航班信息void read(); /读取文件void save(); /保存文件void output(); /输出格式void chushihua(); /系统初始化void build(); /建立数据文件void main() /主函数int j; chushihua(); /系统初始化判断是否存在原始数据文件printf(“ O(_)O 欢迎使用飞机订票系统 O(
6、_)O n“); /打印出系统主界面doprintf(“= “); printf(“ 1.增加航班信息n“ 2.浏览航班信息n“ 3.查找航班信息( 按航班号 )ttn“ 0.退出n“);printf(“= “); printf(“请在 0-3 中选择以回车键结束: “);scanf(“%d“,switch(j)case 1: add(); /调用增加航班函数break;case 2:print(); /调用显示模块break;case 3:search(); /调用查找模块break;case 0: /退出系统save();printf(“谢谢使用,再见!( _ )/ n “);break;
7、while(j!=0); /判断是否调用其他函数void chushihua() /定义系统初始化函数if(access(“hangban.dat“,0)build();elseread();void build() /定义建立数据文件函数FILE *fp; /定义文件指针if(fp=fopen(“hangban.dat“,“wb“)=NULL) /打开文件并判定是否出错 printf(“创建文件失败! “); /打印出错提示getchar();return;printf(“请依次输入航班信息(以回车键结束):n“); /打印提示信息printf(“- n“);for(i=0;iN;i+)pr
8、intf(“请输入航班号: “); scanf(“%d“, /输入航班号printf(“请输入起始站: “);scanf(“%s“,si.start); /输入起始站printf(“请输入终点站: “);scanf(“%s“,si.over); /输入终点站printf(“请输入时间(星期几): “);scanf(“%s“,si.time); /输入时间printf(“请输入机票数: “);scanf(“%d“, /输入机票数fwrite(m+;printf(“添加完毕,是否继续添加?请键入 y 或 n 以回车键结束 :“);scanf(“%s“,ii);if(strcmp(ii,“y“)!=
9、0) /判断是否继续添加航班信息fclose(fp); /关闭文件return;void read() /定义读取文件函数FILE *fp;if(fp=fopen(“hangban.dat“,“r“)=NULL)printf(“创建文件失败! “);getchar();return;i=0;while(!feof(fp)fread( /逐块读取数据i+;m+; /计算存在航班数m-;fclose(fp);void save() /定义保存函数FILE *fp;if(fp=fopen(“hangban.dat“,“wb“)=NULL) printf(“创建文件失败! “);getchar();r
10、eturn;for(i=0;im;i+) /逐块保存数据fwrite(fclose(fp);void add() /定义增加航班信息函数doprintf(“请依次输入您要增加的航班信息(以回车键结束): n“); /打印提示信息printf(“- n“);printf(“请输入航班号: “); scanf(“%d“, /读取航班号printf(“请输入起始站: “);scanf(“%s“,sm.start); /读取起始站printf(“请输入终点站: “);scanf(“%s“,sm.over); /读取终点站printf(“请输入时间: “);scanf(“%s“,sm.time); /读
11、取时间printf(“请输入机票数: “);scanf(“%d“, /读取机票数m+;printf(“添加完毕,是否继续添加?请键入 y 或 n 以回车键结束 :“);scanf(“%s“,ii);while(!strcmp(ii,“y“); /判断是否继续添加void output() /定义输出格式函数printf(“航班号tt 起始站 tt 终点站tt 时间tt 机票数n“); /信息标题for(i=0;im;i+)printf(PRINT);/打印出信息void print() /定义显示航班信息函数printf(“n 目前我们有如下航班:n“);output(); /调用输出格式函数
12、printf(“n 请按回车键返回上层菜单 “);getchar();getchar();void search() /定义查询函数int n;doprintf(“n 请输入航班号: “);scanf(“%d“, /输入查询的航班号for(i=0;im;i+) if(si.num=n) /按航班号判定输出条件 printf(“n 您所查找的航班信息为:n “);printf(“航班号tt 起始站tt 终点站tt 时间tt 机票数 nn“);printf(PRINT); /显示信息 printf(“n 查询完毕,按回车键继续“);getchar();getchar();return;printf
13、(“n 对不起,没有您需要的信息!n “);printf(“是否重新查找?请键入 y 或 n 以回车键结束 “);scanf(“%s“,ii);while(!strcmp(ii,“y“);/判定是否重新查找 1) 第一次运行程序(输入初始数据)界面提示输入原始数据:请输入航班号请输入起始站请输入终点站请输入飞行时间请输入机票数。我按照提示一次输入了 4 个航班信息后按提示输入“n”则不再继续输入,系统显示出了主菜单界面。接着按 0 退出程序,显示“谢谢使用,再见。 ”图表 1主菜单界面1) 第二次运行程序(进行航班信息的浏览)运行程序就不再显示输入航班信息了,而是直接显示出了主菜单界面(如图表
14、 1) 。在提示中输入“2” 显示航班信息。输出如下航班信息(如图表 2) ,确实显示出输入的 4个航班信息。图表 2显示航班信息1) 查询航班信息在主菜单界面输入 3请输入航班号输入“1010” 显示出所查找的信息(如图表3)图表 3查询航班信息2) 航班排序在主菜单界面输入 4按照提示输入“2” (按航班号从大到小排序)显示出排序后的航班信息(如图表 4)图表 4航班排序三、总结经过十天的程序设计,基本掌握程序设计的基本方法和步骤。在这十天中悟出:程序设计要求有一定的基础是必须的,在设计过程中要大胆的发挥自己的想象力,要敢于不断的创新,要敢于尝试,我认为这也是一种进步的好方法。回顾起此次课
15、程设计,至今我仍感慨颇多,从理论到实践,在十天的日子里,我学到很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。仍存在的问题:系统只是按照题目的要求做的,虽然是很好地完成了题目要求的所有模块,但是在整个编程过程中我们也曾尝试增加我们感兴趣的功能,但是失败了。四、参考文献C+程序设计 ,谭浩强著,清华大学出版社,2004 年C+程序设计 ,钱能著,清华大学出版社,2000 年C+ Prime (第三版) ,stanley B lippman 著,潘爱民译,中国电力出版社