300分,高手速来,急求严蔚敏版《数据结构习题集》一题解法。。。。。。。
题如下:假设某机场共有M次航班,第i次航班有ni个座位,且每次航班到达一个目的机场。设计一个满足该机场需要的用户订票、退票程序? 可以发我邮箱ouyang2360182@163.com,请注明百度用户账号,方便给分。现在因为百度限制,小弟只可以悬赏100,如果程序正常运行并符合题意,马上追加200,决不食言。
其他答案
#include<stdio.h>//标准输入、输出头文件#include<string.h>//包含字符串函数处理头文件#include<stdlib.h>//包含动态存储与释放函数头文件#define N 10000 struct air //定义结构体数组{ int num;char start[20];char 展开
#include<stdio.h>//标准输入、输出头文件#include<string.h>//包含字符串函数处理头文件#include<stdlib.h>//包含动态存储与释放函数头文件#define N 10000 struct air //定义结构体数组{ int num;char start[20];char over[20];char time[10];int count;}s[N];int i;int m=0;#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定义输出格式void input();//输入航班信息void print();//输出航班信息void save();//保存航班信息 void read();//读取航班信息void search();//查找航班信息void shanchu();//删除航班信息void dingpiao();//订票信息void tuipiao();//退票信息void xiugai();//修改信息void main(){ int j;printf(" ★---您好,欢迎进入中国民航管理系统!---★\n");printf("================================================================================\n");do { printf(" -------- ☆ 1.输入航班信息 ☆-------- \n\n" " -------- ☆ 2.浏览航班信息 ☆-------- \n\n" " -------- ☆ 3.修改航班信息 ☆-------- \n\n" " -------- ☆ 4.查找航班信息 ☆-------- \n\n" " -------- ☆ 5.删除航班信息 ☆-------- \n\n" " -------- ☆ 6.订票信息 ☆-------- \n\n" " -------- ☆ 7.退票信息 ☆-------- \n\n" " -------- ☆ 0.退出 ☆-------- \n\n");printf("================================================================================\n");printf("请在0-7中选择以回车键结束:\n\n");scanf("%d",&j);switch(j) { case 1: input();//调用输入模块 break;case 2:print();//调用打印模块 break;case 3:xiugai();//调用修改模块 break;case 4:search();//调用查找模块 break;case 5:shanchu();//调用删除模块 break;case 6:dingpiao();//调用订票模块 break;case 7:tuipiao();//调用退票模块 break;case 0:;break;} }while(j!=0);//判断结束 printf("谢谢使用,再见!\n");}//主函数结束void input()//打印模块程序{ char f[]="2008china";//设置密码 int y;printf("请输入密码并以回车键结束:\n\n");scanf("%s",f);//读取密码 if(strcmp(f,"2008china")==0) { printf("请依次输入航班信息(机票数位0结束输入):\n\n" "完成输入信息请键入w以回车键结束\n\n");//打印提示信息 printf("--------------------------------------------------------------------------\n");for(i=0;i<N;i++) { printf("请输入航班号:\n");scanf("%d",&s[i].num);//读取航班号 printf("请输入起始站:\n");scanf("%s",s[i].start);//读取起始站 printf("请输入终点站:\n");scanf("%s",s[i].over);//读取终点站 printf("请输入时间:\n");scanf("%s",s[i].time);//读取时间 printf("请输入机票数(机票数为0结束输入):\n",m);scanf("%d",&s[i].count);//读取机票数 m++;printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m);scanf("%d",&y);if(y==0) { save();//将结构体信息存盘 print();//输出输入的航班信息 break;} } } else printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!\n\n");}void save()//保存模块程序{ FILE *fp,*fp1;//定义文件指针 if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错 { printf("创建文件失败!\n\n");//打印出错提示 getchar();return;} if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错 { printf("创建文件失败!\n\n");//打印出错提示 getchar();return;} for(i=0;i<m;i++) if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错 printf("向文件输入数据失败!\n\n");fprintf(fp1,"%d",m);fclose(fp);//关闭文件 fclose(fp1);//关闭文件}void read()//从文件读取信息模块{ FILE *fp,*fp1;//定义文件指针 if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错 { printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示 getchar();} if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错 { printf("创建文件失败!\n\n");//打印出错提示 getchar();return;} fscanf(fp1,"%d",&m);fclose(fp1);//关闭文件 for(i=0;i<m;i++) { fread(&s[i],sizeof(air),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件}void print()//打印模块{ char w[10];read();//调用读取文件函数 printf("航班号 起始站 终点站 时间 机票数\n");for(i=0;i<m;i++) { printf(PRINT);//打印信息 } printf("请按任意键回车键结束返回上层菜单以:\n");scanf("%s",w);} void search()//查询模块{ char name1[20];char name2[20];char ii[10];int n,no;do{ printf("请选择查找方式:\n\n");//打印查询方式菜单 printf("1.按航班号查找\n\n" "2.按终点站查找\n\n" "3.按航线查找\n\n" "0.返回\n\n");printf("请在0-3中选择:\n\n" "按其他键以回车键结束返回主菜单:\n\n");scanf("%d",&n);//读取查找方式 if(n==0) break;switch(n) { case 1: printf("请输入航班号:\n");scanf("%d",&no);//航班号 break;case 2: printf("请输入终点站名称:\n");scanf("%s",name2);//读取终点站 break;case 3: printf("请输入起始站名称:\n");scanf("%s",name1);//读取起始站 printf("请输入终点站名称:\n");scanf("%s",name2);//终点站 break;} read();//调用读取函数 for(i=0;i<m;i++) { if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件 { printf("\n查找航班信息成功!\n");printf("航班号 起始站 终点站 时间 机票数\n");printf(PRINT);//打印信息 break;} if(s[i].num==no)//按航班号判断输出条件 { printf("\n查找航班信息成功!\n");printf("航班号 起始站 终点站 时间 机票数\n");printf(PRINT);//打印信息 break;} } no=0;//将航班号赋值为0 printf("没有您需要的信息或查找完毕:\n\n" "是否继续查找?请键入yes或no以回车键结束\n");scanf("%s",ii);}while(strcmp(ii,"yes")==0);//判断结束}void shanchu()//删除模块{ char name1[20];char name2[20];char ii[10];char f[]="2008china";//设置密码 int no,n;printf("请输入密码并以回车键结束:\n\n");scanf("%s",f);//读取密码 if(strcmp(f,"2008china")==0) //判断密码是否正确 { do { printf("请选择删除以方式回车键结束:\n\n");//打印删除方式菜单 printf("*1.按航班号删除\n\n" "*2.按航线删除\n\n" "*0.返回\n\n");printf("请在0-2中选择以回车键结束:\n");scanf("%d",&n);//读取删除方式 if(n==0) break;//跳出循环 switch(n) { case 1: printf("请输入航班号:\n");scanf("%d",&no);//读取航班号 read();//调用读取函数 break;//跳出循环 case 2: printf("请输入起始站 名称:\n");scanf("%s",name1);//读取起始站 printf("请输入终点站名称:\n");scanf("%s",name2);//读取终点站 read();//调用读取函数 break;//跳出循环 } for(i=0;i<m;i++) { if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判断输入信息是否存在 { s[i]=s[m-1];m--;} } printf("查找完毕或没有这个信息\n\n");printf("是否继续删除\n");printf("请键入yes或no以回车键结束\n");scanf("%s",ii);//读取是否继续信息 save();//调用读取函数 if(!strcmp(ii,"yes")) //判断是否继续删除 printf("请按任意键以回车键结束返回上层菜单:\n");break;}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0);//判断结束 } else printf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");} void dingpiao()//订票模块{ int n;char a[10];do { search();//调用查询模块 printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);//读取所订机票数 if(n<0) { printf("请输入有效的机票数!\n");//判断机票数是否出错 break;} if(s[i].count!=0&&s[i].count>=n)//判断是否出错 { s[i].count=s[i].count-n;save();//调用保存函数 printf("订票成功!\n\n");break;} if(s[i].count<n)//判断是否出错 { printf("请输入有效的机票数:\n");break;} printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票 scanf("%s",a);}while(!strcmp(a,"yes"));//判断结束 }void tuipiao()//退票模块{ int n;char a[10];do { search();//调用查询模块 printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数 if(n<0) //判断票数是否有效 printf("请输入有效的机票数!\n");s[i].count=s[i].count+n;save();//调用保存模块 printf("退票成功!\n\n");printf("是否继续? 请键入yes或no以回车键结束:\n\n");//判断是否继续退票 scanf("%s",a);}while(!strcmp(a,"yes"));//判断并跳出循环 getchar();}void xiugai() //修改模块{ struct xiu //定义结构体 { int no;char name1[20];char name2[20];char time[20];int count;}x[1];char j[10];char f[]="2008china";//设置密码 int n;printf("请输入密码并以回车键结束:\n\n");scanf("%s",f);//读取密码 if(strcmp(f,"2008china")==0)//判断是否出错 { read();//调用读取模块 do { printf( "请选择修改方式:\n\n" "*1,按航班号修改:\n\n" "*2,按航线修改: \n\n");printf("请在1---2中修改以回车键结束:\n\n");scanf("%d",&n);//读取修改方式 switch(n) { case 1:printf("请输入航班号:\n");scanf("%d",&x[0].no);//读取航班号 break;case 2:printf("请输入起始站:\n");scanf("%s",x[0].name1);//读取起始站 printf("请输入终点站:\n");scanf("%s",x[0].name2);//读取终点站 break;} for(i=0;i<m;i++) { if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件 { printf("航班号 起始站 终点站 时间 机票数\n");printf(PRINT);break;} if(s[i].num==x[0].no)//判断输出条件 { printf("航班号 起始站 终点站 时间 机票数\n");printf(PRINT);break;} } x[0].no=0;//将结构体中的号为零 printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:\n");scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定义输入格式 s[i].num=x[0].no;//替换航班号 strcpy(s[i].start,x[0].name1);//替换其始站 strcpy(s[i].over,x[0].name2);//替换终点站 strcpy(s[i].time,x[0].time);//替换时间 s[i].count=x[0].count;//替换机票数 save();//调用保存模块 printf("是否继续?请键入yes或no以回车键结束:\n\n");scanf("%s",j);}while(strcmp(j,"yes")==0);//判断结束 } else printf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!\n\n");} 收起
2010-08-29 01:45
来自北京市
赞(0)点赞赞(0)举报
发布评论
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。
相关问题
- 2回答 300分,高手速来,急求严蔚敏版《数据结构习题集》一题解法。。。。。。。
- 6回答 高手速来:高分!网上银行开通问题
- 2回答 {冒险岛}, ,,,请教高手,现版本 黑暗系 怪物分布,谢谢~!
- 1回答 大话3敏男人如何强混140强B130以上 抗B混150以上?来高手~~!有分昂
- 1回答 iphone4玩现代战争3卡,目测不足25帧。掉帧十分严重5。11完美越狱。内存剩余300多。求大神
- 3回答 虐杀原型2汉化版?? 玩10多分钟就会出现下面这张图片?? 请教高手怎么解决
- 3回答 红宝石386完美版中图鉴有蓝水督的分布区,在那抓蓝水督机率会大点儿么?求高手解答。
- 1回答 现在完美世界经典版妖兽如何加点?听说要加200敏是怎么回事?求高手解答!!!
- 1回答 现在完美世界经典版妖兽如何加点?听说要加200敏是怎么回事?求高手解答!!!
- 5回答 q宠大乐斗我的企鹅算不算垃圾? 30级 力量28,敏捷30,速度才18.求高手评论,好的加分。
- 2回答 MOP版本话说JJC混分打到1350后能不能用勇气换征服点数把剩余的300点上限给拿到?
- 1回答 梦幻WZ45级加点2血1耐2敏.想走封辅助PK .怎么加点好.求详细说加点方式.求高手指教 高分
- 2回答 我去年八月份分期付款拿了个3000左右的手机。分四期还的,当时协商前三期每月300第四期还清严重吗?
- 4回答 地下城85版本阿修罗这样加点有什么欠缺??请高手指点一二(文明解答,高分悬赏)
回答成功


