1、航空售票系统*理工大学C语言程序设计题目 航空售票管理程序 指导教师: * 姓名: * 学号: 2011070* 班级: 计算机科学与技术111 专业: 计算机科学与技术 地点: 机房201 时间: 2012-06-25 至 2012-06-30 一、内容 航空票务管理程序:本程序主要实现了查询航班、购买机票、退订机票。通过选项提示来操作程序实现相关的功能。 二、上机环境操作系统:Windows7开发工具:VC6.0三、函数调用关系图4 退出1 查 询3 退 票2 买 票 四、各函数功能说明void main() 主函数 void menu(struct flt *pr,struct tick
2、et *pk); 显示主菜单的函数void check(struct flt *pr,struct ticket *pk); 查询航班的函数void buy(struct flt *pr,struct ticket *pk); 购买机票的函数void returnt(struct flt *pr,struct ticket *pk); 退订机票的函数五、算法描述算法描述:#include#include#include#define NUM 100struct flt /记录各个航班的信息 char airport210; /起点、终点 char Fltno20; /航班号 char date
3、20; char Time1100,Time2100; /起飞时间、到达时间 int Tounumb,Gongnumb,Jingnumb; /三个不同类型的机票的数量 int Touprice,Gongprice,Jingprice; /三种机票的价格;struct ticket /机票信息 char buyer20; /购票者姓名 char ID20; /购买者身份证号 char source20,dest20; /始点、终点 char fltno; /航班号 char time1,time2; /起飞时间、到达时间 int tounumb,gongnumb,jingnumb; /三个不同类
4、型的机票的数量 float touprice,gongprice,jingprice; /三种机票的价格;void menu(struct flt *pr,struct ticket *pk); /显示主菜单的函数void check(struct flt *pr,struct ticket *pk); /查询航班的函数void buy(struct flt *pr,struct ticket *pk); /购买机票的函数void returnt(struct flt *pr,struct ticket *pk); /退订机票的函数void main() /主函数 struct ticket
5、cheque; /定义结构体变量 struct ticket *pk; / 定义结构体指针 struct flt airportinforNUM= /对结构体进行初始化 qingdao,beijing,f111, 2012.05.01,2012年05月01日12时00分, 2012年05月01日15时00分,100,100,100,1000,800,500, qingdao,shanghai,f112,2012.05.01, 2012年05月01日12时00分, 2012年05月01日16时00分,100,100,100,1000,800,500, beijing,shanghai,f113,
6、2012.05.01, 2012年05月01日12时00分, 2012年05月01日18时00分,100,100,100,1800,1500,1000; struct flt *pr; /定义结构体指针 pr=airportinfor; / 让指针pr指向airportinfor pk=&cheque; /让指针pk指向cheque menu(pr,pk); /调用菜单函数void menu(struct flt *pr,struct ticket *pk) /显示主菜单的函数 int a; printf(n *); printf(nn-欢迎来到青岛流亭机场-n); /输出菜单选项 print
7、f( 1,查询机票n); printf( 2,购买机票n); printf( 3,退订机票n); printf( 4,退出程序n); printf( 请输入序列号:); scanf(%d,&a); / 输入选项 if(a=1) /判断是否查询机票 system(cls); / 清屏 check(pr,pk); /调用查询机票的函数 menu(pr,pk); /调用菜单函数返回首页 else if(a=2) /判断是否购买机票 buy(pr,pk); /调用购买机票的函数 else if(a=3) / 判断是否退订机票 returnt(pr,pk); / 调用退订机票的函数 else if(a=
8、4) / 判断是否退出程序 system(cls); / 清屏 printf( 谢谢使用!n); printf(n *); Else /输入不在14范围内重新输入 system(cls); printf(n 输入有误!请重新输入!); menu(pr,pk); void check(struct flt *pr,struct ticket *pk) /查询航班的函数 int i,flag=0; / i用于for 循环flag作为标志 char sour10,dest10; /定义字符数组用于接收地址 char day20; / 定义字符数组用于接收输入的日期 printf(请输入起点: );
9、scanf(%s,sour); printf(请输入终点: ); scanf(%s,dest); printf(请输入日期: ); scanf(%s,day);if(day4!=46|day7!=46) /确保日期输入正确 do printf(日期格式输入有误,请重新输入!(年月日之用点“.” 隔开)n); printf(请输入日期: ); scanf(%s,day); while(day4!=46&day7!=46); for(i=0;isource,pri.airport0); printf(n航班:%sn,pri.Fltno); / 查找成功后输出航 班信息 printf(出发地-目的地
10、n); printf(%s-,pri.airport0); printf(%sn,pri.airport1); printf(起飞时间 %sn,pri.Time1); printf(到达时间 %sn,pri.Time2); printf(头等舱 公务舱 经济舱n); printf(%d张 %d张 %d张n,pri.Tounumb,pri.Gongnumb,pri.Jingnumb); printf(%d元 %d元 %d元n,pri.Touprice,pri.Gongprice,pri.Jingprice); flag=1; break; if(flag=0) printf(n 对不起,未找得你
11、要的航班!n); strcpy(pk-source,0); return; void buy(struct flt *pr,struct ticket *pk) /购买机票的函数 int choice; int buynumber; system(cls); /清屏 printf(请输入您的姓名: ); /输入购买者信息 scanf(%s,pk-buyer); printf(请输入您的身份证号: ); if(strlen(pk-ID)!=5) /判断输入的位数是否正确 do printf( 身份证位数有误!请重新输入!n); printf(请输入您的身份证号: ); scanf(%s,pk-I
12、D); while(strlen(pk-ID)!=5); scanf(%s,pk-ID); check(pr,pk); /调用查询航班的函数 if(strcmp(pk-source,0)=0) / 查找失败返回首页 printf( 未找到您要的航班!n); menu(pr,pk); Else / 选择机票类型 printf(n请输入您购买类型( 1.头等舱 2.公务舱 3.经济舱 ): ); scanf(%d,&choice); if(choice3) Do / 用于保证输入的选项有意义 printf(n 输入有误!请重新输入!n); printf(n请输入您购买类型( 1.头等舱 2.公务舱
13、 3.经济舱 ):); scanf(%d,&choice); while(choice3); printf(请输入您购买的数量: ); / 输入购买的数量 scanf(%d,&buynumber); if(buynumber=0) menu(pr,pk); else switch(choice) case 1: if(pr-Tounumb=buynumber) /判断机票是否足够 printf(n 购买成功!返回首页!); pk-tounumb=buynumber; pr-Tounumb-=buynumber; / 改变机票剩余 数 menu(pr,pk); else printf(n 机票已
14、售完或不足!返回首页!); menu(pr,pk); break; case 2: if(pr-Gongnumb=buynumber) / 判断机票是否足 够 printf( 购买成功!返回首页!); pk-gongnumb=buynumber; pr-Gongnumb-=buynumber; / 改变机票剩余数 menu(pr,pk); else printf(n 机票已售完或不足!返回首页!); menu(pr,pk); break; case 3: if(pr-Jingnumb=buynumber) / 判断机票是否 足够 printf(n 购买成功!返回首页!); pk-jingnum
15、b=buynumber; pr-Jingnumb-=buynumber; / 改变机票剩余 数 menu(pr,pk); else printf(n 机票已售完或不足!返回首页!); menu(pr,pk); void returnt(struct flt *pr,struct ticket *pk) /退订机票的 函数 int i,choice1,choice2,buynumber; char sour20; char dest20; char day20; system(cls); printf(你确定要退票吗? 1.是 2.否 ); scanf(%d,&choice1); if(choi
16、ce12) / 用于保证输入的选项有意义 do printf(n 输入有误!请重新输入!n); printf(你确定要退票吗? 1.是 2.否 ); /确认是否退票 scanf(%d,&choice1); while(choice12); if(choice1=1) printf(请输入起点: ); / 输入要退机票的信息 scanf(%s,sour); printf(请输入终点: ); scanf(%s,dest); printf(请输入起飞时的日期: ); scanf(%s,day); if(day4!=46|day7!=46) /确保日期输入正确 do printf( 日期格式输入有误,
17、请重新输入!(年月日之用点“.”隔开)n); printf(请输入日期: ); scanf(%s,day); while(day4!=46&day7!=46); for(i=0;iNUM;i+) / 查找要退机票 if(strcmp(pri.airport0,sour)=0) if(strcmp(pri.airport1,dest)=0) if(strcmp(pri.date,day)=0) printf(n请输入您机票类型( 1.头等舱 2.公务舱 3.经济 舱 ): ); scanf(%d,&choice2); if(choice23) / 用于保证输入的选项有意义 Do printf(n
18、 输入有误!请重新输入!n); printf(n请输入您机票类型( 1.头等舱 2.公务舱 3.经 济舱 ): ); scanf(%d,&choice2); while(choice23); printf(n请输入您退票的数量: ); scanf(%d,&buynumber); if(buynumber=0) menu(pr,pk); else switch(choice2) case 1: printf(n 退票成功!返回首页!); pr-Tounumb+=buynumber; / 修改余票数量 menu(pr,pk); break; case 2: printf(n 退票成功!返回首页!)
19、; pr-Gongnumb+=buynumber; / 修改余票数量 menu(pr,pk); break; case 3: printf(n 退票成功!返回首页!); pr-Jingnumb+=buynumber; / 修改余票数 量 menu(pr,pk); else system(cls); menu(pr,pk); 六、程序运行效果图开始进入程序:当输入1时:当输入2时:当输入3时:当输入4时:7、总结 经过一周对C语言课程设计(航空票务管理程序)的研究主要有以下几点感受:首先,C语言课程设计很好的反映了自己这一学期对C语言基础知识的掌握情况,让自己清醒的认识到自己的真实水平。不动手不
20、知道,自己亲自动手设计程序时才感觉到知识的不扎实。有的知识虽然已经学过,但是用起来还是感觉有点模糊,这也算是给自己的一个警醒吧。 另外,编写程序时有些自己想要编写的功能用已学的知识不能实现,这样就要去上网或查阅课外书来学习一些其他的知识,我感觉这样很好。这样不仅会拓宽自己的知识面,还会提高自己的自学能力。同时,宿舍里的同学集体讨论如何去实现各种功能,各自发表看法彼此交流也是一种学习的过程。最深刻的感受就是编写程序过程中的酸甜苦辣。刚开始构思时漏洞百出,程序出错。但是令人高兴的是通过不断的调试程序,不断的出错,然后不断的修改,从这过程中学到了一些调试程序的技巧。虽然有些语句没有语法错误,但是如果
21、语句顺序不对也会提示错误 ,例如error C2143: syntax error : missing ; before typeerror C2275: FILE : illegal use of this type as an expression等错误提示。经过痛苦又快乐的调试过程之后,当自己自如的运行着程序时成就感十足啊!顿时感觉之前付出的一切值了,实在是值了。总之,我感觉C语言课程设计的重要性不比C语言课堂差。课程设计提高了我们的动手能力,我们能将课本上的死知识灵活地应用到生活当中,还有就是能够感受到十足的成就感,增加学习专业课的兴趣。期待下次课程设计,爱课程设计!八、参考文献李春葆
22、、增平、喻丹丹.C语言程序设计教程(第2版).清华大学出版社,2011九、程序清单#include#include#include#define NUM 100Struct flt /记录各个航班的信息 char airport210; /起点、终点 Char Fltno20; /航班号 char date20; Char Time1100,Time2100; /起飞时间、到达时间 int Tounumb,Gongnumb,Jingnumb; /三个不同类型的机票的数量 int Touprice,Gongprice,Jingprice; /三种机票的价格;Struct ticket /机票信息
23、 char buyer20; /购票者姓名 Char ID20; /购买者身份证号 Char source20,dest20; /始点、终点 Char fltno; /航班号 Char time1,time2; /起飞时间、到达时间 int tounumb,gongnumb,jingnumb; /三个不同类型的机票的数量 float touprice,gongprice,jingprice; /三种机票的价格;void menu(struct flt *pr,struct ticket *pk); /显示主菜单的函数void check(struct flt *pr,struct ticket
24、 *pk); /查询航班的函数void buy(struct flt *pr,struct ticket *pk); /购买机票的函数void returnt(struct flt *pr,struct ticket *pk); /退订机票的函数Void main() /主函数 struct ticket cheque; struct ticket *pk; struct flt airportinforNUM= qingdao,beijing,f111,2012.05.01,2012年05月01日12时00分,2012年05月01日15时00分,100,100,100,1000,800,50
25、0, qingdao,shanghai,f112,2012.05.01,2012年05月01日12时00分,2012年05月01日16时00分,100,100,100,1000,800,500, beijing,shanghai,f113,2012.05.01,2012年05月01日12时00分,2012年05月01日18时00分,100,100,100,1800,1500,1000; struct flt *pr; pr=airportinfor; pk=&cheque; menu(pr,pk);void menu(struct flt *pr,struct ticket *pk) /显示主菜单的函数 int a; printf(n *); printf(nn -欢迎来到青岛 流亭机场-nnn); printf( 1,查询机票n); printf( 2,购买机票n); printf( 3,退订机票n); printf( 4,退出程序n); printf( 请输入序列号:);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1