航空售票系统.docx
- 文档编号:26010518
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:27
- 大小:225KB
航空售票系统.docx
《航空售票系统.docx》由会员分享,可在线阅读,更多相关《航空售票系统.docx(27页珍藏版)》请在冰豆网上搜索。
航空售票系统
**理工大学
《C语言程序设计》
题目航空售票管理程序
指导教师:
**
姓名:
**
学号:
2011070**
班级:
计算机科学与技术111
专业:
计算机科学与技术
地点:
机房201
时间:
2012-06-25至2012-06-30
一、内容
航空票务管理程序:
本程序主要实现了查询航班、购买机票、退订机票。
通过选项提示来操作程序实现相关的功能。
二、上机环境
操作系统:
Windows7
开发工具:
VC6.0
三、函数调用关系图
4退出
1查询
3退票
2买票
四、各函数功能说明
voidmain()主函数
voidmenu(structflt*pr,structticket*pk);显示主菜单的函数
voidcheck(structflt*pr,structticket*pk);查询航班的函数
voidbuy(structflt*pr,structticket*pk);购买机票的函数
voidreturnt(structflt*pr,structticket*pk);退订机票的函数
五、算法描述
算法描述:
#include
#include
#include
#defineNUM100
structflt//记录各个航班的信息
{charairport[2][10];//起点、终点
charFltno[20];//航班号
chardate[20];
charTime1[100],Time2[100];//起飞时间、到达时间
intTounumb,Gongnumb,Jingnumb;//三个不同类型的机票的数量
intTouprice,Gongprice,Jingprice;//三种机票的价格
};
structticket//机票信息
{charbuyer[20];//购票者姓名
charID[20];//购买者身份证号
charsource[20],dest[20];//始点、终点
charfltno;//航班号
chartime1,time2;//起飞时间、到达时间
inttounumb,gongnumb,jingnumb;//三个不同类型的机票的数量
floattouprice,gongprice,jingprice;//三种机票的价格
};
voidmenu(structflt*pr,structticket*pk);//显示主菜单的函数
voidcheck(structflt*pr,structticket*pk);//查询航班的函数
voidbuy(structflt*pr,structticket*pk);//购买机票的函数
voidreturnt(structflt*pr,structticket*pk);//退订机票的函数
voidmain()//主函数
{
structticketcheque;//定义结构体变量
structticket*pk;//定义结构体指针
structfltairportinfor[NUM]={//对结构体进行初始化
{"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","2012.05.01",
"2012年05月01日12时00分",
"2012年05月01日18时00分",100,100,100,1800,1500,1000}};
structflt*pr;//定义结构体指针
pr=airportinfor;//让指针pr指向airportinfor
pk=&cheque;//让指针pk指向cheque
menu(pr,pk);//调用菜单函数
}
voidmenu(structflt*pr,structticket*pk)//显示主菜单的函数
{inta;
printf("\n******************************************************************");
printf("\n\n-------欢迎来到青岛流亭机场--------\n");//输出菜单选项
printf("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);//调用菜单函数返回首页
}
elseif(a==2)//判断是否购买机票
buy(pr,pk);//调用购买机票的函数
elseif(a==3)//判断是否退订机票
returnt(pr,pk);//调用退订机票的函数
elseif(a==4)//判断是否退出程序
{system("cls");//清屏
printf("谢谢使用!
\n");
printf("\n******************************************************************");
}
Else//输入不在1~4范围内重新输入
{system("cls");
printf("\n输入有误!
请重新输入!
");
menu(pr,pk);
}
}
voidcheck(structflt*pr,structticket*pk)//查询航班的函数
{
inti,flag=0;//i用于for循环flag作为标志
charsour[10],dest[10];//定义字符数组用于接收地址
charday[20];//定义字符数组用于接收输入的日期
printf("请输入起点:
");
scanf("%s",sour);
printf("请输入终点:
");
scanf("%s",dest);
printf("请输入日期:
");
scanf("%s",day);
if(day[4]!
=46||day[7]!
=46)//确保日期输入正确
{
do
{printf("日期格式输入有误,请重新输入!
(年月日之用点“.”隔开)\n");
printf("请输入日期:
");
scanf("%s",day);
}while(day[4]!
=46&&day[7]!
=46);
}
for(i=0;i if(strcmp(pr[i].airport[0],sour)==0) if(strcmp(pr[i].airport[1],dest)==0) if(strcmp(pr[i].date,day)==0) { strcpy(pk->source,pr[i].airport[0]);printf("\n航班: %s\n",pr[i].Fltno);//查找成功后输出航班信息 printf("出发地-------->目的地\n"); printf("%s-------->",pr[i].airport[0]); printf("%s\n",pr[i].airport[1]); printf("起飞时间%s\n",pr[i].Time1); printf("到达时间%s\n",pr[i].Time2); printf("头等舱公务舱经济舱\n"); printf("%d张%d张%d张\n",pr[i].Tounumb,pr[i].Gongnumb,pr[i].Jingnumb); printf("%d元%d元%d元\n",pr[i].Touprice,pr[i].Gongprice,pr[i].Jingprice); flag=1; break; } if(flag==0) {printf("\n对不起,未找得你要的航班! \n"); strcpy(pk->source,"0"); return; } } voidbuy(structflt*pr,structticket*pk)//购买机票的函数 { intchoice; intbuynumber; system("cls");//清屏 printf("请输入您的姓名: ");//输入购买者信息 scanf("%s",pk->buyer); printf("请输入您的身份证号: "); if(strlen(pk->ID)! =5)//判断输入的位数是否正确 do{printf("身份证位数有误! 请重新输入! \n"); printf("请输入您的身份证号: "); scanf("%s",pk->ID); }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(choice<1||choice>3) Do//用于保证输入的选项有意义 { printf("\n输入有误! 请重新输入! \n"); printf("\n请输入您购买类型(1.头等舱2.公务舱3.经济舱): "); scanf("%d",&choice); }while(choice<1||choice>3); printf("请输入您购买的数量: ");//输入购买的数量 scanf("%d",&buynumber); if(buynumber==0) menu(pr,pk); else switch(choice) {case1: if(pr->Tounumb>=buynumber)//判断机票是否足够 { printf("\n购买成功! 返回首页! "); pk->tounumb=buynumber; pr->Tounumb-=buynumber;//改变机票剩余数 menu(pr,pk); } else { printf("\n机票已售完或不足! 返回首页! "); menu(pr,pk); }break; case2: if(pr->Gongnumb>=buynumber)//判断机票是否足够 { printf("购买成功! 返回首页! "); pk->gongnumb=buynumber; pr->Gongnumb-=buynumber;//改变机票剩余数 menu(pr,pk); } else { printf("\n机票已售完或不足! 返回首页! "); menu(pr,pk); }break; case3: if(pr->Jingnumb>=buynumber)//判断机票是否足够 { printf("\n购买成功! 返回首页! "); pk->jingnumb=buynumber; pr->Jingnumb-=buynumber;//改变机票剩余数 menu(pr,pk); } else { printf("\n机票已售完或不足! 返回首页! "); menu(pr,pk); } } } } voidreturnt(structflt*pr,structticket*pk)//退订机票的函数 { inti,choice1,choice2,buynumber; charsour[20]; chardest[20]; charday[20]; system("cls"); printf("你确定要退票吗? 1.是2.否"); scanf("%d",&choice1); if(choice1<1||choice1>2)//用于保证输入的选项有意义 do { printf("\n输入有误! 请重新输入! \n"); printf("你确定要退票吗? 1.是2.否");//确认是否退票 scanf("%d",&choice1); }while(choice1<1||choice1>2); if(choice1==1) {printf("请输入起点: ");//输入要退机票的信息 scanf("%s",sour); printf("请输入终点: "); scanf("%s",dest); printf("请输入起飞时的日期: "); scanf("%s",day); if(day[4]! =46||day[7]! =46)//确保日期输入正确 { do {printf("日期格式输入有误,请重新输入! (年月日之用点“.”隔开)\n"); printf("请输入日期: "); scanf("%s",day); }while(day[4]! =46&&day[7]! =46); } for(i=0;i if(strcmp(pr[i].airport[0],sour)==0) if(strcmp(pr[i].airport[1],dest)==0) if(strcmp(pr[i].date,day)==0) {printf("\n请输入您机票类型(1.头等舱2.公务舱3.经济舱): "); scanf("%d",&choice2); if(choice2<1||choice2>3)//用于保证输入的选项有意义 Do { printf("\n输入有误! 请重新输入! \n"); printf("\n请输入您机票类型(1.头等舱2.公务舱3.经济舱): "); scanf("%d",&choice2); }while(choice2<1||choice2>3); printf("\n请输入您退票的数量: "); scanf("%d",&buynumber); if(buynumber==0) menu(pr,pk); else switch(choice2) {case1: printf("\n退票成功! 返回首页! "); pr->Tounumb+=buynumber;//修改余票数量 menu(pr,pk); break; case2: printf("\n退票成功! 返回首页! "); pr->Gongnumb+=buynumber;//修改余票数量 menu(pr,pk); break; case3: printf("\n退票成功! 返回首页! "); pr->Jingnumb+=buynumber;//修改余票数量 menu(pr,pk); } } } else {system("cls"); menu(pr,pk); } 六、程序运行效果图 开始进入程序: 当输入1时: 当输入2时: 当输入3时: 当输入4时: 7、总结 经过一周对C语言课程设计(航空票务管理程序)的研究主要有以下几点感受: 首先,C语言课程设计很好的反映了自己这一学期对C语言基础知识的掌握情况,让自己清醒的认识到自己的真实水平。 不动手不知道,自己亲自动手设计程序时才感觉到知识的不扎实。 有的知识虽然已经学过,但是用起来还是感觉有点模糊,这也算是给自己的一个警醒吧。 另外,编写程序时有些自己想要编写的功能用已学的知识不能实现,这样就要去上网或查阅课外书来学习一些其他的知识,我感觉这样很好。 这样不仅会拓宽自己的知识面,还会提高自己的自学能力。 同时,宿舍里的同学集体讨论如何去实现各种功能,各自发表看法彼此交流也是一种学习的过程。 最深刻的感受就是编写程序过程中的酸甜苦辣。 刚开始构思时漏洞百出,程序出错。 但是令人高兴的是通过不断的调试程序,不断的出错,然后不断的修改,从这过程中学到了一些调试程序的技巧。 虽然有些语句没有语法错误,但是如果语句顺序不对也会提示错误,例如errorC2143: syntaxerror: missing';'before'type'errorC2275: 'FILE': illegaluseofthistypeasanexpression等错误提示。 经过痛苦又快乐的调试过程之后,当自己自如的运行着程序时成就感十足啊! 顿时感觉之前付出的一切值了,实在是值了。 总之,我感觉C语言课程设计的重要性不比C语言课堂差。 课程设计提高了我们的动手能力,我们能将课本上的死知识灵活地应用到生活当中,还有就是能够感受到十足的成就感,增加学习专业课的兴趣。 期待下次课程设计,爱课程设计! 八、参考文献 李春葆、增平、喻丹丹.C语言程序设计教程(第2版).清华大学出版社,2011 九、程序清单 #include #include #include #defineNUM100 Structflt//记录各个航班的信息 {charairport[2][10];//起点、终点 CharFltno[20];//航班号 chardate[20]; CharTime1[100],Time2[100];//起飞时间、到达时间 intTounumb,Gongnumb,Jingnumb;//三个不同类型的机票的数量 intTouprice,Gongprice,Jingprice;//三种机票的价格 }; Structticket//机票信息 {charbuyer[20];//购票者姓名 CharID[20];//购买者身份证号 Charsource[20],dest[20];//始点、终点 Charfltno;//航班号 Chartime1,time2;//起飞时间、到达时间 inttounumb,gongnumb,jingnumb;//三个不同类型的机票的数量 floattouprice,gongprice,jingprice;//三种机票的价格 }; voidmenu(structflt*pr,structticket*pk);//显示主菜单的函数 voidcheck(structflt*pr,structticket*pk);//查询航班的函数 voidbuy(structflt*pr,structticket*pk);//购买机票的函数 voidreturnt(structflt*pr,structticket*pk);//退订机票的函数 Voidmain()//主函数 { structticketcheque; structticket*pk; structfltairportinfor[NUM]={ {"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","2012.05.01","2012年05月01日12时00分","2012年05月01日18时00分",100,100,100,1800,1500,1000}}; structflt*pr; pr=airportinfor; pk=&cheque; menu(pr,pk); } voidmenu(structflt*pr,structticket*pk)//显示主菜单的函数 {inta; printf("\n******************************************************************"); printf("\n\n-------------------欢迎来到青岛流亭机场-----------------------\n\n\n"); printf("1,查询机票\n"); printf("2,购买机票\n"); printf("3,退订机票\n"); printf("4,退出程序\n"); printf("请输入序列号: ");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统