您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C语言课程设计——飞机订票系统源代码
#includestdio.h//标准输入、输出头文件#includestring.h//包含字符串函数处理头文件#includeprocess.h//包含access函数的头文件#defineN9999//定义最多的航班数#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\t2.浏览航班信息\n\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n\t\t\t4.航班排序(按航班号)\n\t\t\t\t5.订票业务\n\to(︶︿︶)o\t\t\t6.退票业务\n\t\t\t\t\t\t0.退出\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();}elseread();}voidbuild()//定义建立数据文件函数{FILE*fp;//定义文件指针if((fp=fopen(hangban.dat,wb))==NULL)//打开文件并判定是否出错{printf(创建文件失败!);//打印出错提示getchar();return;}printf(请依次输入航班信息(以回车键结束):\n);//打印提示信息printf(--------------------------------------------------------------------------\n);for(i=0;iN;i++){printf(请输入航班号:);scanf(%d,&s[i].num);//输入航班号printf(请输入起始站:);scanf(%s,s[i].start);//输入起始站printf(请输入终点站:);scanf(%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;im;i++)//逐块保存数据fwrite(&s[i],sizeof(structair),1,fp);fclose(fp);}voidadd()//定义增加航班信息函数{do{printf(请依次输入您要增加的航班信息(以回车键结束):\n);//打印提示信息printf(--------------------------------------------------------------------------\n);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;im;i++)printf(PRINT);//打印出信息}voidprint()//定义显示航班信息函数{printf(\n目前我们有如下航班:\n);output();//调用输出格式函数printf(\n请按回车键返回上层菜单);getchar();getchar();}voidsearch()//定义查询函数{intn;do{printf(\n请输入航班号:);scanf(%d,&n);//输入查询的航班号for(i=0;im;i++){if(s[i].num==n)//按航班号判定输出条件{printf(\n您所查找的航班信息为:\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(n=0)//判定机票数是否出错{printf(输入错误!至少需订1张机票。\n);}elseif(s[i].count==0)//判定机票是否售完{printf(对不起,你所选择的航班的机票已售完!\n);break;}elseif(s[i].count!=0&&s[i].count=n)//判定机票数是否大于等于订票数{s[i].count=s[i].count-n;printf(订票成功!);break;}elseif(s[i].countn)//判定机票数是否小于订票数{printf(对不起,你所选择的航班只剩%d张机票\n,s[i].count);printf(是否需要重新输入机票数?请输入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(\n********************************************************************************);printf(1.按航班号从小到大排序\n\t2.按航班号从大到小排序\n);printf(********************************************************************************);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;im;i++)//选择法排
本文标题:C语言课程设计——飞机订票系统源代码
链接地址:https://www.777doc.com/doc-4900157 .html