0

我正在尝试制作一个简单的登录/身份验证控制台应用程序,例如我有一个字符串 testpwd 作为我的密码,我希望程序以毫秒为单位计算用户开始输入密码的时间,它应该输出多少每次用户在该GetTickCount功能的帮助下从键盘开始输入时,每个用户输入密码所需的秒数。

我不知道我该怎么做,但我唯一能做的就是下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace LoginSystem
{
    class LSystem
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello! This is simple login system!");
            Console.Write("Write your username here: ");
            string strUsername = Console.ReadLine();
            string strTUsername = "testuser";
            if (strUsername == strTUsername)
            {
                Console.Write("Write your password here: ");
                Console.ForegroundColor = ConsoleColor.Black;
                string strPassword = Console.ReadLine();
                string strTPassword = "testpwd";
                if (strPassword == strTPassword)
                {
                    Console.ForegroundColor = ConsoleColor.Gray;
                    Console.WriteLine("You are logged in!");
                    Console.ReadLine();

                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Gray;
                    Console.WriteLine("Bad password for user: {0}", strUsername);
                    Console.ReadLine();
                }
            }
            else
            {
                Console.WriteLine("Bad username!");
                Console.ReadLine();
            }
        }
    }
}
4

3 回答 3

0

1-您可以使用 DateTime.Now 然后减去它们以获得时间跨度。

2- 调用 GetTickCount 但您需要先声明它,如下所示:

[DllImport("kernel32.dll")]
static extern uint GetTickCount();
于 2013-03-16T15:42:07.853 回答
0

一个简单的秒表?您的代码的相关部分可以用这种方式编写

...
Console.ForegroundColor = ConsoleColor.Black;
StopWatch sw = new Stopwatch();
sw.Start();
string strPassword = Console.ReadLine();
sw.Stop()
TimeSpan ts = sw.Elapsed;
string strTPassword = "testpwd";
if (strPassword == strTPassword)
{
    Console.ForegroundColor = ConsoleColor.Gray;
    Console.WriteLine("You are logged in after " + ts.Milliseconds.ToString() + " milliseconds");
    Console.ReadLine();
}
.....
于 2013-03-16T15:42:25.073 回答
0

首先,你的问题很难理解。如果我没看错,您希望在用户开始输入时开始计时并在用户按下回车时停止计时?使用System.Diagnostics.Stopwatch怎么样?

在调用 Console.ReadLine() 之前,启动一个新的 Stopwatch(),然后调用 Start() 方法。

在 Console.ReadLine() 之后立即停止秒表:

        Console.Write("Write your username here: ");

        var stopwatch = new System.Diagnostics.Stopwatch();
        stopwatch.Start();

        string strUsername = Console.ReadLine();

        stopwatch.Stop();

        string strTUsername = "testuser";
于 2013-03-16T15:46:15.083 回答