为什么最后的 if 里面的 switch 没有执行! why ?
刚刚跑去继续做暑假的作业,恩,修改功能按思路写完之后,一编译连接完后没有错误(好吧有点小鸡冻,,,运行,嗯,一路下去都非常好,结果我发现,最关键的修改地方的switch 没有执行,寻思了会儿,,why。?老天爷,why。。放我去洗澡吧。。妈妈咪..咳咳,下面是代码,就是if里面的switch,运行时候没有执行。。
void ChangeDataFromFile()
{
long repos;
int iDataCount=0;
int Num=0;
int Answer;
char inName[NUM1];
char inNum[NUM1];
char inTitle[NUM2];
char inWage[NUM2];
fstream iofile;
iofile.open("WageMessage.dat",ios::binary|ios::in|ios::out);
iofile.seekg(0,ios::end); /*位移指针到距离文件尾部0个位置处,即文件尾部*/
repos=iofile.tellg(); /*获取指针当前位置,即文件长度*/
iDataCount=repos/(NUM1+NUM1+NUM2+NUM2); /*得到文件记录数*/
cout <<"请输入您要修改的人员编号 : ";
cin >>Num;
cout <<endl;
if(Num < 0 && Num > iDataCount) /*判断删除的是否超出现有记录*/
{
throw "输入错误,不在范围之内哦亲";
}
else
{ iofile.seekg((Num-1)*(NUM1+NUM1+NUM2+NUM2),ios::beg);
memset(inName,0,NUM1); /*将变量清零*/
memset(inNum,0,NUM1);
memset(inTitle,0,NUM2);
memset(inWage,0,NUM2);
iofile.read(inName,NUM1); /*读取信息*/
iofile.read(inNum,NUM1);
iofile.read(inTitle,NUM2);
iofile.read(inWage,NUM2);
cout <<"搜索到的信息为:"<<endl; /*让用户验证即将修改的信息*/
cout <<"1.姓名:"<<inName<<endl;
cout <<"2.工号:"<<inNum<<endl;
cout <<"3.职位:"<<inTitle<<endl;
cout <<"4.工资:"<<inWage<<endl;
cout <<"是否为您所需要的目标信息,是请输入1否则输入2 :";
cin >>Answer;
if(Answer==1) /*确认要修改信息正确,开始执行修改*/
{ cout<<"请选择你想要更改的信息";
cout<<endl;
switch(GetSelect())
{
case 1:
cout <<"请输入你想更改的名字"<<endl;
cin >>inName;
break;
case 2:
cout <<"请输入你想改变的工号"<<endl;
cin >>inNum;
break;
case 3:
cout <<"请输入职称更改"<<endl;
cin >>inTitle;
break;
case 4:
cout <<"请输入要改变的工资额"<<endl;
cin >>inWage;
break;
}
iofile.seekp((Num-1)*(NUM1+NUM1+NUM2+NUM2),ios::beg); /*写入修改完的信息*/
iofile.write(inName,NUM1);
iofile.write(inNum,NUM1);
iofile.write(inTitle,NUM2);
iofile.write(inWage,NUM2);
cout <<"修改完成!"<<endl;
WaitUser();
}
else WaitUser();
}
}
附带运行图,第一个为存有的信息(确认里面有东西),第二个开始是程序的执行 可以看出switch没有执行啊.....
[ 本帖最后由 mxstone 于 2014-8-19 22:23 编辑 ]