1、C语言飞机订票系统课程设计第一章 绪论1.1:项目背景描述1、课程设计性质与目的:C语言程序设计是一门实践性很强的课程。C程序课程设计是学习C语言程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程序、分析程序及上机操作、调试程序的能力,让学生加深理解,提高动手操作能力及分析问题和解决问题的能力。2、课程设计包含的知识点:1掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语句。2掌握数组的基本概念。掌握一维数组与二维数组的使用,掌握字符数组与字符串的关系。3熟练掌握指针、地址、指针类型的概念及其使用。
2、掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系4掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。5掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。结构体与指针、函数的关系。第二章 可行性分析一、问题描述:假设某航空公司只有N架X个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。二、功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、航班定额。2、本系统显示这样的菜单:1.)录入: 可以录入航班情
3、况(数据可以存储在一个数据文件中)2.)浏览:航班信息浏览功能需要提供显示操作; 1、查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。(1)输入航班信息(2)输出航班信息(3)查找航班信息(4)订票预约(5)删除定票预约(6)退出系统2、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。3、查找航班信息既可按线路查,也可按目的地查。4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据三、算法提示
4、:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。航班号起点终点起飞时间intcharcharchar 四、测试数据:录入到的星期一起飞的航班,假设其定额为30,到的航班起飞时间为星期二。五、其它:在实现系统基本功能后,完善系统的其它功能。在测试数据是发现退票系统出现问题,退票数会超过定额,在加上一个限定条件后成功。基于本系统可以尝试输出所定票的的顾客的完整信息,包括,号等个人信息,由于时间有限,尚未添加。第三章 总体设计3.1 课程设计题目:航班订票系统3.2. 容摘要:假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。3.3
5、. 关键字:函数 数组 结构体 文件 循环语句 多分支结构3.4总体设计方案的选定:程序的功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、座次、座次订出与否标记、订座者的和订座者的。2、本系统显示这样的菜单:(4)输入航班信息(5)输出航班信息(6)查找航班信息a.显示空座的数量b.显示空座的信息c.显示已订座的信息d.起飞时间(4)订票预约(5)删除定票预约(6)退出系统4、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。5、查找航班信息既可按航班号来实现。4、在两次运行之间,数据被保存于一个文
6、件里,当本程序重新开始的时候,它首先从该文件读入数据 第四章 详细设计4.1采用自定向下,逐步细化的思想,将该系统分解成各个相对独立且可以运行的模块。在文件的开始定义出本系统中将会用到的所有的变量以及对各个模块的调用,将作为头文件使各个组员能够使用。如下所示:hangban.h#include /标准输入、输出头文件#include /包含字符串函数处理头文件#define N 9999 /定义最多的航班数#define PRINT %dtt%stt%stt星期%stt%dn ,si.num,si.qidian,si.zhongdian,si.time,si.count /宏定义输出格式str
7、uct air /定义结构体数组 int num; /定义航班号 char qidian20; /航班起始站 char zhongdian20; /终点站 char time10; /飞行时间 int count; /机票数量sN;int i,m=0; /定义全局变量char hangbanhao10;void add(); /函数声明增加航班信息函数void print(); /显示航班信息void search(); /查找航班信息void dingpiao(); /订票业务void tuipiao(); /退票void read(); /读取文件 void save(); /保存文件vo
8、id output(); /输出格式void paixu(); /航班排序void build(); /建立数据文件void paixu1(); /按航班号从小到大排序void paixu2(); /从大到小4.2系统总体结构4.3航班信息录入流程图4.4订票系统流程图在有航班信息的情况下可以进行订票操作。 是 否 否4.5查询结构代码void search() /定义查询函数 int n; do printf(n请输入航班号: ); scanf(%d,&n); /输入查询的航班号 for(i=0;im;i+) if(si.num=n) /按航班号判定输出条件 printf(n您所查找的航班信
9、息为:n ); printf(航班号tt起始站tt终点站tt时间tt机票数 nn); printf(PRINT); /显示信息 printf(n查询完毕,按回车键继续); getchar(); getchar(); return; printf(n对不起,没有您需要的信息!n ); printf(是否重新查找?请键入y或n以回车键结束 ); scanf(%s,hangbanhao); while(!strcmp(hangbanhao,y);/判定是否重新查找4.6订票业务代码void dingpiao() /定义订票业务函数 int n; char a10=y; do search(); /调
10、用查询模块 do printf(请输入您要订的机票数(以回车键结束): ); scanf(%d,&n); /输入所订机票数 if(n=n) /判定机票数是否大于等于订票数 si.count=si.count-n; printf(订票成功! ); break; else if(si.countn)/判定机票数是否小于订票数 printf(对不起,你所选择的航班只剩 %d机票n, si.count); printf(是否需要重新输入机票数?请输入y或n以回车键结束: );/判定是否重新输入订票数 scanf(%s,a); while(!strcmp(a,y); printf(是否需要订其他航班的机
11、票?请输入y或n以回车键结束: ); scanf(%s,a); while(!strcmp(a,y); /判定是否继续订票4.7退票业务代码void tuipiao() /定义退票函数 int n; char a10; do search(); /调用查询函数 printf(请输入您要退的机票数目: ); scanf(%d,&n); /输入所退票数 if(n=0) /判定票数是否有效 printf(输入错误!至少需退1机票。 ); else si.count=si.count+n; printf(退票成功! ); printf(是否继续? 请键入y或n以回车键结束: ); /判定是否继续退票
12、scanf(%s,a); while(!strcmp(a,y); /判定并跳出循环 第五章 总结一周的C语言课程设计即将结束,通过此次课程设计也学会综合运用理论知识来分析和解决实际问题的能力、养成严谨的科学态度和良好的程序设计习惯实现由知识向智能的初步转化学会循软件开发过程的基本规运用结构化程序设计的方法按照课程设计的题目要求并能够完成设计、编写、调试和测试应用程序及编写文档的任务 程序整体上运行与题目要求很吻合算法大多比较通用各个函数模块的正确性、完备性、对输入的容错能力以及算法的进一步改进在设计中都有表述这道题使我熟悉了文件的输入输出操作真切的感受到了fprintf和fwrite函数的区别
13、。回顾起此次课程设计至今我仍感慨颇多从理论到实践在整整半个月的日子里我学到很多很多的东西不仅巩固了以前所学过的知识而且学到了很多在书本上所没有学到过的容。通过这次课程设计使我懂得了理论与实际相结合是很重要的只有理论知识是远远不够的只有把所学的理论知识与实践相结合起来从理论中得出结论才是真正的知识才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题同时在设计的过程中发现了自己的不足之处对以前所学过的知识理解得不够深刻掌握得不够牢固通过这次课程设计把以前所学过的知识重新温故巩固了所学的知识。 在编写程序的过程中受到了其他同学的指点也许在某些程序方面会和有的同学想类似但是老师
14、在我编程序过程中也起到了很大的作用我们在C语言这门课上还会继续走下去以后还会经常碰到我会努力。附1: 源代码#include /标准输入、输出头文件#include /包含字符串函数处理头文件#define N 9999 /定义最多的航班数#define PRINT %dtt%stt%stt星期%stt%dn ,si.num,si.qidian,si.zhongdian,si.time,si.count /宏定义输出格式struct air /定义结构体数组 int num; /定义航班号 char qidian20; /航班起始站 char zhongdian20; /终点站 char ti
15、me10; /飞行时间 int count; /机票数量sN;int i,m=0; /定义全局变量char hangbanhao10;void add(); /函数声明增加航班信息函数void print(); /显示航班信息void search(); /查找航班信息void dingpiao(); /订票业务void tuipiao(); /退票void read(); /读取文件 void save(); /保存文件void output(); /输出格式void paixu(); /航班排序void build(); /建立数据文件void paixu1(); /按航班号从小到大排序v
16、oid paixu2(); /从大到小void main() /主函数 int j; read(); printf(ntt欢迎使用航班订票系统!n); printf(*n); printf( 1.增加航班信息n); printf( 2.浏览航班信息n); printf( 3.查找航班信息n); printf( 4.航班排序(按航班号)n); printf( 5.办理订票业务n); printf( 6.办理退票业务n); printf( 0.退出系统(exit)n); printf(*n); printf(请在0-6中选择以回车键结束: ); scanf(%d,&j); switch(j) ca
17、se 1: add(); /调用增加航班函数 break; case 2:print(); /调用显示模块 break; case 3:search(); /调用查找模块 break; case 4:paixu(); /调用排序函数 break; case 5:dingpiao(); /调用订票模块 break; case 6:tuipiao(); /调用退票模块 break; case 0: save(); /退出系统 printf(使用,再见! ); break; void read() /定义读取文件函数 FILE *fp; if(fp=fopen(hangban.dat,rb)=NUL
18、L) printf(创建文件失败! ); getchar(); return; i=0; while(!feof(fp) fread(&si,sizeof(struct air),1,fp); /逐块读取数据 i+; m+; /计算存在航班数 m-; fclose(fp);void save() /定义保存函数 FILE *fp; if(fp=fopen(hangban.dat,wb)=NULL) printf(创建文件失败! ); getchar(); return; for(i=0;im;i+) /逐块保存数据 fwrite(&si,sizeof(struct air),1,fp); fc
19、lose(fp);void add() /定义增加航班信息函数 do printf(请依次输入您要增加的航班信息(以回车键结束): n); /打印提示信息 printf(- n); printf(请输入航班号: ); scanf(%d,&sm.num); /读取航班号 printf(请输入起始站: ); scanf(%s,sm.qidian); /读取起始站 printf(请输入终点站: ); scanf(%s,sm.zhongdian); /读取终点站 printf(请输入时间: ); scanf(%s,sm.time); /读取时间 printf(请输入机票数: ); scanf(%d,&
20、sm.count); /读取机票数 m+; printf(添加完毕,是否继续添加?请键入y或n以回车键结束:); scanf(%s,hangbanhao); while(!strcmp(hangbanhao,y); /判断是否继续添加void output() /定义输出格式函数 printf(航班号tt起始站tt终点站tt时间tt机票数n); /信息标题 for(i=0;im;i+) printf(PRINT);/打印出信息 void print() /定义显示航班信息函数 printf(n目前我们有如下航班:n); output(); /调用输出格式函数 printf(n请按回车键返回上层
21、菜单 ); getchar(); getchar(); void search() /定义查询函数 int n; do printf(n请输入航班号: ); scanf(%d,&n); /输入查询的航班号 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(n对不起,没有您需要的信息!n );
22、 printf(是否重新查找?请键入y或n以回车键结束 ); scanf(%s,hangbanhao); while(!strcmp(hangbanhao,y);/判定是否重新查找 void dingpiao() /定义订票业务函数 int n; char a10=y; do printf(请输入您要订的机票数(以回车键结束): ); scanf(%d,&n); /输入所订机票数 if(n=n) /判定机票数是否大于等于订票数 si.count=si.count-n; printf(订票成功! ); break; else if(si.countn)/判定机票数是否小于订票数 printf(对
23、不起,你所选择的航班只剩 %d机票n, si.count); printf(是否需要重新输入机票数?请输入y或n以回车键结束: );/判定是否重新输入订票数 scanf(%s,a); printf(是否需要订其他航班的机票?请输入y或n以回车键结束: ); scanf(%s,a); while(!strcmp(a,y); /判定是否继续订票void tuipiao() /定义退票函数 int n; char a10; do search(); /调用查询函数 printf(请输入您要退的机票数目: ); scanf(%d,&n); /输入所退票数 if(n=0) /判定票数是否有效 print
24、f(输入错误!至少需退1机票。 ); else si.count=si.count+n; printf(退票成功! ); printf(是否继续? 请键入y或n以回车键结束: ); /判定是否继续退票 scanf(%s,a); while(!strcmp(a,y); /判定并跳出循环 void paixu() /定义排序函数 int n; printf(n* ); printf(1.按航班号从小到大排序n t2.按航班号从大到小排序n); printf(* ); printf(请在1-2中选择以回车键结束: ); scanf(%d,&n); /输入排序方式 switch(n) case 1:paixu1();/调用从小到大排序函数 break; case 2:paixu2();/调用从大到小排序函数 break; printf(排序后的航班信息为:n); output(); /显示排序后航班信息 printf(n请按回车键返回上层菜单 ); getchar(); getch
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1