Простая система регистрации с 3 операциями - C#
Формулировка задачи:
Решил сделать одно тестовое задание. Нужно реализовать простую систему регистрации с 3 операциями:
- «register username password» — зарегистрировать нового пользователя с именем «username» и установить для него пароль «password». Если такой пользователь уже есть в базе данных, необходимо выдать ошибку «fail: user already exists». Иначе нужно вывести сообщение «success: new user added».
- «login username password» — войти в систему от имени пользователя «username» с паролем «password». Если такого пользователя не существует в базе данных, необходимо выдать «fail: no such user». Иначе, если был введен неправильный пароль, нужно выдать «fail: incorrect password». Иначе, если пользователь уже находится в системе в данный момент, необходимо вывести «fail: already logged in». Иначе нужно вывести сообщение «success: user logged in».
- «logout username» — выйти из системы пользователем «username». Если такого пользователя не существует, необходимо вывести «fail: no such user». Иначе, если пользователь не находится в системе в данный момент, следует выдать «fail: already logged out». Иначе необходимо выдать сообщение «success: user logged out».
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test { class Program { static void Main(string[] args) { int k = int.Parse(Console.ReadLine()); // кол-во вводимых строк List<string> logged = new List<string>(); Dictionary<string, string> d = new Dictionary<string, string>(); for (int i = 0; i < k; i++) { string[] s = Console.ReadLine().Split(); string l = s[1]; switch (s[0]) { case "register": if (d.ContainsKey(l)) Console.WriteLine("fail: user already exists"); else { d.Add(l, s[2]); Console.WriteLine("success: new user added"); } break; case "login": string p = s[2]; if (d.ContainsKey(l)) { string pass; d.TryGetValue(l, out pass); if (!logged.Contains(l)) if (p == pass) { Console.WriteLine("success: user logged in"); logged.Add(l); } else Console.WriteLine("fail: incorrect password"); else Console.WriteLine("fail: already logged in"); } else Console.WriteLine("fail: no such user"); break; case "logout": if (d.ContainsKey(l)) if (logged.Contains(l)) { Console.WriteLine("success: user logged out"); logged.Remove(l); } else Console.WriteLine("fail: already logged out"); else Console.WriteLine("fail: no such user"); break; } } Console.ReadKey(); } } }
Решение задачи: «Простая система регистрации с 3 операциями»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication9 { class Program { static void Main(string[] args) { RegSystem registerSystem = new RegSystem(); registerSystem.LogMessage += registerSystem_LogMessage; //you code goes here } static void registerSystem_LogMessage(string msg) { Console.WriteLine(msg); } } public class RegSystem { private HashSet<UserInfo> _db; public RegSystem() { _db = new HashSet<UserInfo>(); } public void Register(string username, string password) { var user = _db.FirstOrDefault(x => x.Name == username); if (user == null) { _db.Add(new UserInfo(username, password)); OnLogMessage("success: new user added"); } else { OnLogMessage("fail: user already exists"); } } public void Login(string username, string password) { var user = _db.FirstOrDefault(x => x.Name == username); if (user == null) { OnLogMessage("fail: no such user"); return; } if (user.Password != password) { OnLogMessage("fail: incorrect password"); return; } if (user.Online) { OnLogMessage("fail: already logged in"); return; } user.Online = true; OnLogMessage("success: user logged in"); } public void Logout(string username) { var user = _db.FirstOrDefault(x => x.Name == username); if (user == null) { OnLogMessage("fail: no such user"); return; } if (!user.Online) { OnLogMessage("fail: already logged out"); return; } user.Online = false; } #region log public event Action<string> LogMessage; private void OnLogMessage(string cause) { if (LogMessage != null) LogMessage(cause); } #endregion log } public class UserInfo { public string Name { get; set; } public string Password { get; set; } public bool Online { get; set; } public UserInfo(string name, string password) { Name = name; Password = password; Online = false; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д