Реализовать имитацию входа в ОС - C#
Формулировка задачи:
Задача: реализовать имитацию входа в ОС. лог и пасс. пароль показывается звёздочками.
предусмотреть наличие в базе 5 пар логов и паролей. если такой существует и пароль верный показать Велком.
иначе выдать предупреждение и дать ещё 2 попытки. использовать sort arr list.
Вопросы:
1. правильно ли я использую ArrayList ?
2. говнокод или относительно нормально) в каких строках всё очень скверно(( ?
3. в реальном времени, когда вводишь правильный пароль, сразу тебя поздравляют с успешной авторизацией. не нужно подтверждать ввод Enter'ом. Как это исправить ? если вы конечно поняли о чём я)
p.s. Спасибо за внимание
using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Collections;
class Sample
{
public static void Main()
{
ArrayList ArrLog = new ArrayList(new string[] { "user", "admin", "moder", "owned767", "alex", "serguk", "monster" });
ArrayList ArrPass = new ArrayList(new string[] { "123456789", "admin", "_moder", "qwerty", "1488", "serj96", "omg123321" });
int TF = 3;
bool tf = true;
string login, str;
Console.Write("Введите логин: ");
login = Console.ReadLine();
ConsoleKeyInfo key;
while (tf)
{
str = string.Empty;
if (TF == 2) Console.WriteLine("\n\nНеправильный логин или пароль. Осталось 2 попытки");
else if (TF == 1) Console.WriteLine("\n\nНеправильный логин или пароль. Осталась 1 попытка");
else if (TF == 0)
{
Console.WriteLine("\n\nПока-пока");
tf = false;
break;
}
Console.Write("Введите пароль: ");
do
{
key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
{
break;
}
else if (key.Key == ConsoleKey.Backspace)
{
if (str.Length != 0)
{
str = str.Remove(str.Length - 1);
Console.Write("\b \b");
}
}
else
{
str += key.KeyChar;
Console.Write("*");
}
for (int i = 0; i < ArrPass.Capacity; i++)
{
if ((ArrLog.LastIndexOf(login) == i) && (string)ArrPass[i] == str)
{
Console.WriteLine("\n\nСпасибо, что зашли, {0} !", ArrLog[ArrLog.LastIndexOf(login)]);
tf = false;
break;
}
}
}
while (true);
TF--;
}
}
}Решение задачи: «Реализовать имитацию входа в ОС»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AutorisationTest {
class Program {
static Dictionary<string, string> UserBase = new Dictionary<string, string>();
static void Main(string[] args) {
UserBase.Add("user", "1234");
UserBase.Add("Admin", "0987");
UserBase.Add("Mary", "mary");
UserBase.Add("Nick", "nick");
UserBase.Add("Lisa", "lisa");
int counter = 0;
while (true) {
Console.Write("Enter user name: ");
string name = Console.ReadLine();
Console.Write("Enter password: ");
string pass = Console.ReadLine();
if (counter == 2) {
Console.WriteLine("Your time is ends! Good luck!");
break;
}
if (UserBase.ContainsKey(name) && UserBase[name] == pass) {
Console.WriteLine("Data is correct! You just entered the system!");
break;
}
else {
counter++;
Console.WriteLine("Wrong data! Try again.");
}
}
Console.ReadLine();
}
}
}