c语言航班设计

旋律_Wang 2016-06-21 02:59:27

帮忙看下这个问题,就是密码输入正确之后,出现这个问题,如何改正
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2016-06-22
  • 打赏
  • 举报
回复
有时间再看一看。。。。。。。。。。。。。。
  • 打赏
  • 举报
回复
你的两个if没太看懂 修改了一下经过调试后发现问题应该在fp = fopen("yu.txt", "rb"); r的意思是只读,要求文件必须是存在的,检查一下你的yu.txt文件是否存在
fp = fopen("yu.txt", "rb");
		fp1 = fopen("yi.txt", "wb");
		if ((fp  == NULL) || (fp1== NULL))
			read();
wb是以二进制进行写,如果yi.txt不存在则会自动创建
小灸舞 版主 2016-06-21
  • 打赏
  • 举报
回复
楼主自己单步调试一下就知道了。
你输入1那么跳到input函数里执行,因为这句if((fp1=fopen("yi.txt","wb"))==NULL);所以会生成yi.txt
并且进入read()函数,在read函数里if((fp1=fopen("yi.txt","rb"))==NULL)这句是能打开的,但是里面是没有内容的
你执行fscanf(fp1,"%d",&count);自然就报错了
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
旋律_Wang 2016-06-21
  • 打赏
  • 举报
回复
#include<stdio.h> //标准输入、输出头文件 #include<string.h> //包含字符串函数处理头文件 #include<stdlib.h> //包含动态存储与释放函数头文件 #define N 1000 #define PRINT "%s%12s%12s%12s%12d\n",flight[i].flightNo,flight[i].start,flight[i].end,flight[i].day,flight[i].flightcount //定义输出格式 struct plane //定义结构体数组 { char flightNo[10]; char start[10]; char end[10]; char day[10]; int flightcount; }flight[N];//定义结构体 int i;//定义整数变量 int count=0; void input(); //输入航班信息 void print(); //输出航班信息 void save(); //保存航班信息 void read(); //读取航班信息 void search(); //查找航班信息 void main() { int option; printf(" 欢迎进入航班管理系统! \n"); printf("================================================================================\n"); do { printf(" 1.输入航班信息 \n\n" " 2.浏览航班信息 \n\n" " 3.查找航班信息 \n\n" " 0.退出 \n\n"); printf("================================================================================\n"); printf("请在0-3中选择以回车键结束:\n\n"); scanf("%d",&option); switch(option) { case 1: input();break;//调用输入模块 case 2:print();break;//调用显示模块 case 3:search();break;//调用查找模块 case 0:;break;} }while(option!=0); //判断结束 printf("谢谢使用,再见!\n"); }//主函数结束 void input()//输入模块程序 { FILE *fp,*fp1;//定义文件指针 char password[]="0101"; //设置密码 int y; printf("请输入密码并以回车键结束:\n\n"); scanf("%s",password); //读取密码 if(strcmp(password,"0101")!=0) printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!\n\n"); else { if((fp=fopen("yu.txt","rb"))==NULL); if((fp1=fopen("yi.txt","wb"))==NULL); else read(); printf("请依次输入航班信息:\n"); //打印提示信息 printf("\n--------------------------------------------------------------------------\n"); for(i=count;i<N;i++) { printf("请输入航班号:\n"); scanf("%s",&flight[i].flightNo); //读取航班号 printf("请输入起始站:\n"); scanf("%s",&flight[i].start);//读取起始站 printf("请输入终点站:\n"); scanf("%s",flight[i].end);//读取终点站 printf("请输入时间:\n"); scanf("%s",flight[i].day);//读取时间 printf("请输入机票数:\n",count); scanf("%d",&flight[i].flightcount);//读取机票数 count++; printf("第%d个信息已经输完是否继续?按任意键继续,按0结束",count); scanf("%d",&y);//表示状态,是否结束 if(y==0) { save();//将结构体信息存盘 print();//输出输入的航班信息 break; } } } } void save()//保存模块程序 { FILE *fp,*fp1;//定义文件指针 if((fp=fopen("yu.txt","wb"))==NULL)//打开文件并判断是否出错 { printf("创建文件失败!\n\n");//打印出错提示 getchar(); return; } if((fp1=fopen("yi.txt","wb"))==NULL)//打开文件并判断是否出错 { printf("创建文件失败!\n\n");//打印出错提示 getchar(); return; } for(i=0;i<count;i++) if(fwrite(&flight[i],sizeof(struct plane),1,fp)==0)//向文件写入数据,并判断是否出错 printf("向文件输入数据失败!\n\n"); fprintf(fp1,"%d",count); fclose(fp);//关闭文件 fclose(fp1);//关闭文件 } void read()//从文件读取信息模块 { FILE *fp,*fp1;//定义文件指针 if((fp=fopen("yu.txt","rb"))==NULL)//打开文件,并判断是否出错 { printf("出错,请检查文件是否存在,按任意键返回主菜单");//打印出错提示 getchar(); } if((fp1=fopen("yi.txt","rb"))==NULL)//打开文件并判断是否出错 { printf("打开文件失败!\n\n");//打印出错提示 getchar(); return; } fscanf(fp1,"%d",&count); fclose(fp1);//关闭文件 for(i=0;i<count;i++) { fread(&flight[i],sizeof(struct plane),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } void print()//打印模块 { char w[10]; read();//调用读取文件函数 printf("航班号 起始站 终点站 时间 机票数\n"); for(i=0;i<count;i++) { printf(PRINT);//打印信息 } printf("请按任意键和回车键结束返回上层菜单:\n"); scanf("%s",w); } void search()//查询模块 { char name1[20];//定义字符串 char name2[20]; char judgement[10]; int n;//定义整型变量 char no[10]; 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("%s",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<count;i++) { if(strcmp(flight[i].end,name1)==0||strcmp(flight[i].end,name2)==0)//按终点站起始站判断输出条件 { printf("\n查找航班信息成功!\n"); printf("航班号 起始站 终点站 时间 机票数\n"); printf(PRINT);//打印信息 break; } if(strcmp(flight[i].flightNo,no)==0)//按航班号判断输出条件 { printf("\n查找航班信息成功!\n"); printf("航班号 起始站 终点站 时间 机票数\n"); printf(PRINT);//打印信息 break; } } printf("没有您需要的信息或查找完毕:\n\n" "是否继续查找?请键入Y(继续查找)或N(返回主菜单)以回车键结束\n"); scanf("%s",judgement); }while(strcmp(judgement,"Y")==0);//判断结束 }

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧