while loop in matlab password GUI
이전 댓글 표시
Hi, i want to create a matlab program that will require the user to enter the username and password before they can gain access to the program. so far i have able to do it if the correct password is enter but i cannot get the program to loop corretly. i want if the user enter the wrong combination of password/username lets say maximum 3 times, the system will terminated. plz help me guys...waste a lot of time on doing this.
username1=*****;
password1=****;
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))
if (strcmpi(password,password1))
disp('successfully log into the system');
else
close all
end
else
close all
end
채택된 답변
추가 답변 (5개)
David Sanchez
2013년 5월 7일
I hope following code is of help
username1 = 'xxx';
password1 = 'yyy';
attemps = 0;
while attemps < 4
username = input('intoduce user name: ');
password = input('intoduce password: ');
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('successfully log into the system');
return
else
attemps = attemps + 1;
end
end
댓글 수: 1
David Sanchez
2013년 5월 8일
Hi, since disp('a'); is outside the while loop, it will always be displayed. You can set a condition if to display 'a' only if 3 attempts were made
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
end
end
if attempt == 3
disp('a');
end
I hope it helped you, do not forget to vote if so.
David Sanchez
2013년 5월 8일
Hi, that's a bit awkward, with the code above, disp('a') only comes to work when attempt equals 3 ( if attempt == 3 ). I tested it myself and 'a' is only displayed after three unsuccessful attempts were made. You can try the following version too: ( adapt it for you GUI later, it is easier to debug code outside the GUI, once it works as you want, insert it in the GUI )
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = input('intoduce user name: ');
password = input('intoduce password: ');
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
if attempt == 3
disp('a');
end
end
end
댓글 수: 3
Pat
2013년 5월 8일
Teja Muppirala
2013년 5월 8일
But first change this:
username = input('intoduce user name: ');
password = input('intoduce password: ');
To this:
username = input('intoduce user name: ','s');
password = input('intoduce password: ','s');
to indicate the input is a string, otherwise you'll have to put quotes in your input to distinguish it from a variable.
Teja Muppirala
2013년 5월 8일
In your GUI case, the reason it displays 'a' after just one failed attempt is, this loop:
username1= 'xxx';
password1= 'yyy';
attempt= 0;
while attempt < 3
username = upper(get(handles.edit1,'string'));
password = upper(get(handles.edit6,'string'));
if(strcmpi(username,username1))&&(strcmpi(password,password1))
disp('b');
return
else
attempt = attempt + 1;
end
end
if attempt == 3
disp('a');
end
runs 3 times instantly before you can even change the values in the edit boxes. I'm assuming this code is in some callback, like a pushbutton or something. You're going to need to check the password only once every time the user runs this callback function, and keep track of how many times they tried/failed. For example, you might store the variable attempt as 'Userdata' or use SETAPPDATA or something. Then increment it once everytime the user submits the password.
David Sanchez
2013년 5월 8일
Teja got it right, I think next code would be helpful ( it needs to be adapted to your GUI )
attempts = 0; % do not initialize this variable in pushbutton callback function
% this goes in your login pushbutton callback function
username = get(handles.usrbox,'string');
password = get(handles.psswrdbox, 'string');
attempts = attempts + 1;
if strcmpi(username, username1)&&strcmpi(password,password1)
disp('b')
elseif attempts == 3
disp('a');
end
카테고리
도움말 센터 및 File Exchange에서 Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!