Advertisement
holllowknight

ДЗ: База данных

Apr 1st, 2020 (edited)
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.32 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace GamersBD
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             const int CommandAdd = 1;
  14.             const int CommandDelete = 2;
  15.             const int CommandPrintInfo = 3;
  16.             const int CommandBan = 4;
  17.             const int CommandUnban = 5;
  18.             const int CommandExit = 6;
  19.  
  20.             bool isRunning = true;
  21.             PlayersDatabase playersDatabase = new PlayersDatabase();
  22.  
  23.             Console.WriteLine($"{CommandAdd} Добавить игрока");
  24.             Console.WriteLine($"{CommandDelete} Удалить игрока");
  25.             Console.WriteLine($"{CommandPrintInfo} Вывести информацию о игроках");
  26.             Console.WriteLine($"{CommandBan} Забанить игрока");
  27.             Console.WriteLine($"{CommandUnban} Разбанить игрока");
  28.             Console.WriteLine($"{CommandExit} Выйти из программы");
  29.  
  30.             while (isRunning)
  31.             {
  32.                 Console.Write("Введите команду: ");
  33.                 int command = GetNumberFromUser();
  34.  
  35.                 switch (command)
  36.                 {
  37.                     case CommandAdd:
  38.                         playersDatabase.AddPlayer();
  39.                         break;
  40.  
  41.                     case CommandDelete:
  42.                         playersDatabase.DeletePlayer();
  43.                         break;
  44.  
  45.                     case CommandPrintInfo:
  46.                         playersDatabase.PrintInfo();
  47.                         break;
  48.  
  49.                     case CommandBan:
  50.                         playersDatabase.Ban();
  51.                         break;
  52.  
  53.                     case CommandUnban:
  54.                         playersDatabase.Unban();
  55.                         break;
  56.  
  57.                     case CommandExit:
  58.                         isRunning = false;
  59.                         break;
  60.                 }
  61.             }
  62.         }
  63.  
  64.         public static int GetNumberFromUser()
  65.         {
  66.             string userInput;
  67.             int userNumber;
  68.             bool isNumber = false;
  69.  
  70.             do
  71.             {
  72.                 userInput = Console.ReadLine();
  73.                 isNumber = int.TryParse(userInput, out userNumber);
  74.             }
  75.             while (isNumber == false);
  76.  
  77.             return userNumber;
  78.         }
  79.     }
  80.  
  81.     class Player
  82.     {
  83.         private static int _nextNumber;
  84.         private bool _isBanned;
  85.  
  86.         public Player(string nickName, int level = 1)
  87.         {
  88.             UniqueNumber = _nextNumber++;
  89.             NickName = nickName;
  90.             Level = level;
  91.             _isBanned = false;
  92.         }
  93.  
  94.         public int UniqueNumber { get; private set; }
  95.         public string NickName { get; private set; }
  96.         public int Level { get; private set; }
  97.  
  98.         public void PrintInfo()
  99.         {
  100.             Console.WriteLine($"Номер: {UniqueNumber}\tУровень {Level}\tНик {NickName}\t" + (_isBanned ? "забанен" : ""));
  101.         }
  102.  
  103.         public void Ban()
  104.         {
  105.             _isBanned = true;
  106.         }
  107.  
  108.         public void Unban()
  109.         {
  110.             _isBanned = false;
  111.         }
  112.     }
  113.  
  114.     class PlayersDatabase
  115.     {
  116.         private List<Player> _players;
  117.  
  118.         public PlayersDatabase()
  119.         {
  120.             _players = new List<Player>();
  121.         }
  122.  
  123.         public void AddPlayer()
  124.         {
  125.             Console.WriteLine("Добавляем игрока");
  126.             Console.WriteLine("Введите имя игрока");
  127.             string name = Console.ReadLine();
  128.             Console.WriteLine("Введите уровень игрока");
  129.             int level = Program.GetNumberFromUser();
  130.             Player newPlayer = new Player(name, level);
  131.             _players.Add(newPlayer);
  132.             Console.Write("Добавлен игрок ");
  133.             newPlayer.PrintInfo();
  134.         }
  135.  
  136.         public void Ban()
  137.         {
  138.             Console.WriteLine("Введите уникальный номер игрока, которого нужно забанить");
  139.             bool isPlayerExist = TryGetPlayer(out Player player);
  140.  
  141.             if (isPlayerExist)
  142.             {
  143.                 Console.WriteLine($"Баним игрока под номером {player.UniqueNumber}");
  144.                 player.Ban();
  145.             }
  146.         }
  147.  
  148.         public void Unban()
  149.         {
  150.             Console.WriteLine("Введите уникальный номер игрока, которого нужно разбанить");
  151.             bool isPlayerExist = TryGetPlayer(out Player player);
  152.  
  153.             if (isPlayerExist)
  154.             {
  155.                 Console.WriteLine($"Снимаем бан с игрока под номером {player.UniqueNumber}");
  156.                 player.Unban();
  157.             }
  158.         }
  159.  
  160.         public void DeletePlayer()
  161.         {
  162.             Console.WriteLine("Введите уникальный номер игрока, которого нужно удалить");
  163.             bool isPlayerExist = TryGetPlayer(out Player player);
  164.  
  165.             if (isPlayerExist)
  166.             {
  167.                 Console.WriteLine($"Удаляем игрока под номером {player.UniqueNumber}");
  168.                 _players.Remove(player);
  169.             }
  170.         }
  171.  
  172.         public void PrintInfo()
  173.         {
  174.             Console.WriteLine();
  175.             Console.WriteLine("Информация о игроках:");
  176.  
  177.             for (int i = 0; i < _players.Count; i++)
  178.             {
  179.                 _players[i].PrintInfo();
  180.             }
  181.  
  182.             Console.WriteLine();
  183.         }
  184.  
  185.         private bool TryGetPlayer(out Player player)
  186.         {
  187.             player = null;
  188.             int playerNumber = Program.GetNumberFromUser();
  189.  
  190.             for (int i = 0; i < _players.Count; i++)
  191.             {
  192.                 if (_players[i].UniqueNumber == playerNumber)
  193.                 {
  194.                     player = _players[i];
  195.                     return true;
  196.                 }
  197.             }
  198.  
  199.             Console.WriteLine($"Игрок с номером {playerNumber} отсутствует в базе данных");
  200.             return false;
  201.         }
  202.     }
  203. }
  204.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement