C语言课程设计飞机订票系统源代码.docx
- 文档编号:3456052
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:10
- 大小:32.64KB
C语言课程设计飞机订票系统源代码.docx
《C语言课程设计飞机订票系统源代码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计飞机订票系统源代码.docx(10页珍藏版)》请在冰点文库上搜索。
C语言课程设计飞机订票系统源代码
#include
#include
#include
#defineN99//定义最多的航班数
#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("欢迎使用飞机订票系统\n");//打印出系统主界面do{printf("================================================================================");
printf("
1.增加航班信息\n"
"\t
2.浏览航班信息\n"
"\t\t
3•查找航班信息(按航班号)\t\t、(丿_T厂\n"
"\t\t\t
4•航班排序(按航班号)\n"
"\t\t\t\t
5.订票业务\n"
"\to旷「)o\t\t\t
6.退票业务\n"
"\t\t\t\t\t\t
0•退出\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
read();}voidbuild()〃定义建立数据文件函数{FILE*fp;〃定义文件指针
if((fp=fopen("hangban.dat","wb"))==NULL)//打开文件并判定是否出错{
printf("创建文件失败!
");//打印出错提示
getchar();
return;}printf("请依次输入航班信息(以回车键结束):
\n");//打印提示信息
printf("\n");
for(i=0;i "); scanf("%d",&s[i].num);//输入航班号 printf("请输入起始站: "); scanf("%s",s[i].start);//输入起始站 printf("请输入终点站: "); seanf("%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;}i=0; while(! feof(fp)){fread(&s[i],sizeof(structair),1,fp);//逐块读取数据 i++; m++;//计算存在航班数}m--; fclose(fp);}voidsave()//定义保存函数{FILE*fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! "); getchar(); return;}for(i=0;i \n");//打印提示信息 \n"); printf(" printf("请输入航班号: "); scanf("%d",&s[m].num);//读取航班号 printf("请输入起始站: "); scanf("%s",s[m].start);//读取起始站 printf("请输入终点站: "); scanf("%s",s[m].over);//读取终点站 printf("请输入时间: "); scanf("%s",s[m].time);//读取时间 printf("请输入机票数: "); scanf("%d",&s[m].count);//读取机票数 m++; printf("添加完毕,是否继续添加? 请键入y或n以回车键结束: "); scanf("%s",ii); }while(! strcmp(ii,"y"));//判断是否继续添加}voidoutput()//定义输出格式函数{printf(”航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n");〃信息标题 for(i=0;i printf(PRINT);//打印出信息}voidprint()〃定义显示航班信息函数{printf("\n目前我们有如下航班: \n"); output();//调用输出格式函数 printf("\n请按回车键返回上层菜单"); getchar(); getchar();}voidsearch()〃定义查询函数{intn; do{printf("\n请输入航班号: "); scanf("%d",&n);//输入查询的航班号 for(i=0;i \n"); printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n"); printf(PRINT);//显示信息 printf("\n查询完毕,按回车键继续"); getchar(); getchar(); return;}} printf("\n对不起,没有您需要的信息! \n"); printf("是否重新查找? 请键入y或n以回车键结束"); scanf("%s",ii); }while(! strcmp(ii,"y"));〃判定是否重新查找}voiddingpiao()〃定义订票业务函数{intn; chara[10]="y"; do{search();〃调用查询模块 if(! strcmp(ii,"n")){printf("对不起! 没有找到您所需要的航班,所以不能订票。 \n");//未查找到所需航班 printf("\n请按回车键返回上层菜单"); getchar(); getchar(); strcpy(ii,"n"); break;}do{printf("请输入您要订的机票数(以回车键结束): "); scanf("%d",&n);//输入所订机票数 if(nv=0)〃判定机票数是否出错{printf("输入错误! 至少需订1张机票。 \n");}elseif(s[i].count==O)〃判定机票是否售完{printf("对不起,你所选择的航班的机票已售完! \n"); break;}elseif(s[i].count! =O&&s[i].count>=n)〃判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf("订票成功! "); break;}elseif(s[i].count 请输入y或n以回车键结束: ");//判定是否重新输入订票数 scanf("%s",a);}}while(! strcmp(a,"y")); printf("是否需要订其他航班的机票? 请输入y或n以回车键结束: "); scanf("%s",a); }while(! strcmp(a,"y"));〃判定是否继续订票}voidtuipiao()//定义退票函数{intn; chara[10]; do{search();〃调用查询函数 if(! strcmp(ii,"n")){printf("对不起! 没有找到您所需要的航班,所以不能退票。 \n"); printf("\n请按回车键返回上层菜单"); getchar(); getchar(); strcpy(ii,"n"); break;}printf("请输入您要退的机票数目: "); scanf("%d",&n);//输入所退票数 if(n<=0)//判定票数是否有效 printf("输入错误! 至少需退1张机票。 "); else{s[i].count=s[i].count+n; printf("退票成功! ");}printf("是否继续? 请键入y或n以回车键结束: ");//判定是否继续退票scanf("%s",a); }while(! strcmp(a,"y"));〃判定并跳出循环}voidpaixu()〃定义排序函数{intn; printf(" 1.按航班号从小到大排序\n" "\t 2.按航班号从大到小排序\n"); printf("请在1-2中选择以回车键结束: ); scanf("%d",&n);//输入排序方式switch(n){case1: paixu1();//调用从小到大排序函数break; case2: paixu2();〃调用从大到小排序函数 break;}printf("排序后的航班信息为: \n"); output();//显示排序后航班信息 printf("\n请按回车键返回上层菜单"); getchar(); getchar();}voidpaixu1()〃定义从小到大排序函数{intk,j;structairt; for(i=0;i for(j=i+1;j if(s[k].num>s[j].num) k=j; if(i! =k){t=s[k]; s[k]=s[i]; s[i]=t;}}}voidpaixu2()//定义从大到小排序函数{}intk,j; structairt; for(i=0;i for(j=i+1;j if(s[k].num k=j;if(i! =k){t=s[k];s[k]=s[i];s[i]=t;}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 飞机 订票 系统 源代码