本帖最后由 qq152688854 于 2010-05-25 22:07:09 编辑

解决方案 »

  1.   

    for(int i=0;i<num;i++)
    if(strcmp(username[i],name)==0)
    {
    for(int j=0;pass[j]!='\0';j++)
    if(password[i][j]!=pass[j]+j)//口令解密
    return -1;
    return i;
    }因为你第一个密码对的话   就返回了一个0  
    而你后面判断>=0就登陆成功
      

  2.   

    int j = 0;
    for(;pass[j]!='\0';j++)
    {
    if(password[i][j]!=pass[j]+j)//口令解密
    return -1;

    }
    if (j != strlen(password[i]))
    {
    return -1;
    }
    return i;
      

  3.   

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;class User
    {
    private:
    char username[10][10];
    char password[10][10];
    static int num;
    public:
    User(char *name,char *pass)
    {
    strcpy(username[num],name);
    strcpy(password[num],pass);
    for(int i=0;password[num][i]!='\0';i++)//口令加密
    {
    password[num][i]+=i;
    }
    num++;
    }
    int loggin(char *name,char *pass)
    {
    for(int i=0;i<num;i++)
    {
    if(strcmp(username[i],name)==0)
    {
    int j=0;
    for(j=0;pass[j]!='\0';j++)
    {
    if(password[i][j]!=pass[j]+j)//口令解密
    {
    return -1;
    }
    } if('\0' != password[i][j])
    {
    return -1;
    } return i;
    }
    }
    return -1;
    }
    };int User::num=0;void main()
    {
    system("color 3F");
    char name[10],pass[10];
    User u1("123","123");
    cout<<"input name:";
    cin>>name;
    cout<<"input password:";
    cin>>pass;
    if(u1.loggin(name,pass)>=0)
            {
                    cout<<"登陆成功!"<<endl;
            }
    else
    {
    cout<<"登陆失败,请再次输入!"<<endl;
    }
    }