修改密码程序

C语言 码拜 6年前 (2015-05-11) 458次浏览 0个评论
 

 void She_zhi(void)
 {
  uchar New,Wei,Zhi,bb[6],cc[6],i,k,j;
uchar code table8[]=”input new again”;
uchar code table9[]=”Successfully!”;
uchar code table10[]=”Input is error!”;
uchar code table11[]=”put enter again”;
New=0;
Wei=0;
Fu_hao=0;
for(k=0;k<6;k++)
{
bb[k]=0;
cc[k]=0;
}
write_com(1);
for(j=0;j<14;j++)
write_data(table7[j]); //清屏显示输入新密码
while(1)
{
Zhi=keyscan();
if(Zhi>0&&Zhi<=9) //0-9密码按键
{
Xian_shi(0);
if(New==0)
bb[Wei++]=Zhi;  //存输入数值
if(New==1)
cc[Wei++]=Zhi;
continue;
}
if(Zhi==15)     //删除键按下
{
Xian_shi(1);   //清除*号
Wei=0;    //重新存输入数值
Fu_hao=0;
continue;
}
if(Zhi==10||Zhi==11||Zhi==12) continue;
if(Zhi==14)   //直接按下退出键退出
{
Txet=0;
TR1=0;
write_com(1);
for(j=0;j<12;j++)
write_data(table4[j]); //显示退出
Delay(2000); //延迟2秒后清屏
write_com(1);
Wei=0;   //下次重新存数值
Fu_hao=0;    //符号位归零,以便下次输入显示
}
if(Zhi==13)    //确定键按下
{
New++;
if(New==1)    //第一次输入完新密码后,再输入一次
{
write_com(1);
for(j=0;j<15;j++)
write_data(table8[j]);//清屏显示输入新密码
Fu_hao=0 ;
continue;
}
if(New==2)  //第二次输入完成,比较前后是否一样
{
for(k=0;k<6;k++)
if(bb[k]!=cc[k]) break;
if(k>6)     //两次一样
{
write_com(1);
for(j=0;j<13;j++)
write_data(table9[j]);//清屏显示成功
Users[j]=bb[j]; //更改用户密码
Delay(2000);
Txet=0;   //更改密码成功,暂停中断,重新计时
TR1=0;
write_com(1);
for(j=0;j<12;j++)
write_data(table4[j]);
Wei=0;
Fu_hao=0;
write_com(1);
return;  //跳出循环
}

if(k<6)    //两次输入新密码不一样
{
write_com(1);
for(j=0;j<15;j++)
write_data(table10[j]); //第一行显示输入错误
write_com(0x80+0x40);
for(j=0;j<15;j++)    //第二行显示重新输入
write_data(table11[j]); 
i=keyscan();
if(i==14)     //退出键按下,跳出循环
{
Txet=0;
TR1=0;
write_com(1);
for(j=0;j<12;j++)
write_data(table4[j]);
Delay(2000);
write_com(1);
Wei=0;
Fu_hao=0;
return;
}
if(i==13) //确定键按下,继续输入密码
{
write_com(1);
for(j=0;j<14;j++)
write_data(table7[j]);//清屏显示重新输入
Wei=0;     //重新存键值
Fu_hao=0;   //重新输出符号
New=0;
continue;
}
}
}
}
}

 }
这个红色部分的修改密码的程序为什么在电路板上总是修改不成功,总是显示错误。

15分
if(k>6)     //两次一样
如果两次一样,循环结束的时候k=6,所以要改成 if(k==6)  或者 if(k>=6) 
15分
for(j=0;j<13;j++)
write_data(table9[j]);//清屏显示成功
// 循环只有上面一句吧,到这里j的值固定为13,等于执行了一句Users[13]=bb[13]
Users[j]=bb[j]; //更改用户密码

还有,怎么没看见对输入长度的控制,bb和cc的长度肯定是6吗?会不会大于6或者小于6?

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明修改密码程序
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!