Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#登录XML循环错误密码_C#_Xml_Loops_Streamreader - Fatal编程技术网

C#登录XML循环错误密码

C#登录XML循环错误密码,c#,xml,loops,streamreader,C#,Xml,Loops,Streamreader,我对C#和从XML文件加载有点小问题。(只是一个通知-学生项目) 我正在用XML制作登录表单,如果XML文件中只有一个帐户,这很好,但是如果有更多的帐户,如果我选择第一个帐户以外的任何帐户,一个程序将加载一个帐户,然后循环X次,并说“错误的用户名或密码” 公共静态bool登录(bool UserExists) { 弦宿位; 字符串sPassword; 字符串检查; int nPick; Console.WriteLine(“插入用户名:”); sUsername=Console.ReadLine

我对C#和从XML文件加载有点小问题。(只是一个通知-学生项目)

我正在用XML制作登录表单,如果XML文件中只有一个帐户,这很好,但是如果有更多的帐户,如果我选择第一个帐户以外的任何帐户,一个程序将加载一个帐户,然后循环X次,并说“错误的用户名或密码”

公共静态bool登录(bool UserExists)
{
弦宿位;
字符串sPassword;
字符串检查;
int nPick;
Console.WriteLine(“插入用户名:”);
sUsername=Console.ReadLine();
Console.WriteLine(“插入密码:”);
sPassword=Console.ReadLine();
List lUser=GetUsers();
for(int i=0;i
EDIT1:添加了XML

<data>
  <user>
    <username>admin</username>
    <password>admin</password>
  </user>
  <user>
    <username>user</username>
    <password>user</password>
  </user>
  <user>
    <username>user1</username>
    <password>user1</password>
  </user>
  <user>
    <username>user2</username>
    <password>user2</password>
  </user>
</data>

管理
管理
用户
用户
用户1
用户1
用户2
用户2
比如说

1) 若我输入“admin”“admin”组合,程序将进入菜单


2) 如果我输入“user1”“user1”,它将登录,但也会写三次“错误的用户名/密码”

您已接近答案。您可能希望遍历每个用户,并且仅在没有匹配的情况下打印错误消息

请注意,我还将
UserExists
布尔值移动到函数变量中,而不是将其作为参数

public static bool Login()
{
    string sUsername;
    string sPassword;
    string check;
    int nPick;
    bool UserExists = false;

    Console.WriteLine("Insert username: ");
    sUsername = Console.ReadLine();
    Console.WriteLine("Insert password: ");
    sPassword = Console.ReadLine();

    List<User> lUser = GetUsers();
    for (int i = 0; i < lUser.Count(); i++)
    {
        if (lUser[i].username == sUsername && lUser[i].password == sPassword)
        {
            UserExists = true;
            Console.WriteLine("\n Login successfull!");
            do
            {
                Menu();
                check = Console.ReadLine();
                int.TryParse(check, out nPick);
                switch (nPick)
                {
                    case 1:

                        break;
                    case 2:

                        break;
                    case 3:

                        break;
                    case 4:

                        break;
                    case 5:
                        System.Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("\n Option not existing!");
                        break;
                }
            }
            while (nPick != 5);
        }
    }
    if (!UserExists) {
        Console.WriteLine("\n Wrong username or password!\n");
    }
    return UserExists; 
} 
公共静态bool登录()
{
弦宿位;
字符串sPassword;
字符串检查;
int nPick;
bool UserExists=false;
Console.WriteLine(“插入用户名:”);
sUsername=Console.ReadLine();
Console.WriteLine(“插入密码:”);
sPassword=Console.ReadLine();
List lUser=GetUsers();
for(int i=0;i
给出一个xml示例和一个输入示例(您如何在控制台上为单个和多个用户输入用户名和密码)。出色的布尔运算帮助我压缩了一点代码,谢谢!
public static bool Login()
{
    string sUsername;
    string sPassword;
    string check;
    int nPick;
    bool UserExists = false;

    Console.WriteLine("Insert username: ");
    sUsername = Console.ReadLine();
    Console.WriteLine("Insert password: ");
    sPassword = Console.ReadLine();

    List<User> lUser = GetUsers();
    for (int i = 0; i < lUser.Count(); i++)
    {
        if (lUser[i].username == sUsername && lUser[i].password == sPassword)
        {
            UserExists = true;
            Console.WriteLine("\n Login successfull!");
            do
            {
                Menu();
                check = Console.ReadLine();
                int.TryParse(check, out nPick);
                switch (nPick)
                {
                    case 1:

                        break;
                    case 2:

                        break;
                    case 3:

                        break;
                    case 4:

                        break;
                    case 5:
                        System.Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("\n Option not existing!");
                        break;
                }
            }
            while (nPick != 5);
        }
    }
    if (!UserExists) {
        Console.WriteLine("\n Wrong username or password!\n");
    }
    return UserExists; 
}