Advertisement
AziLif

База данных игроков (ООП)

Jul 9th, 2025
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.85 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Menu menu = new Menu();
  10.         }
  11.     }
  12. }
  13.  
  14. class Menu
  15. {
  16.     const string CommandDeletePlayer = "1";
  17.     const string CommandAddPlayer = "2";
  18.     const string CommandBanOrUnBanPlayer = "3";
  19.     const string CommandShowAllPlayers = "4";
  20.     const string CommandExit = "5";
  21.  
  22.     public Menu()
  23.     {
  24.         Dictionary<int, Player> scrollOfPlayers = new();
  25.  
  26.         Database userInformation = new(scrollOfPlayers);
  27.  
  28.         bool isWork = true;
  29.  
  30.         while (isWork)
  31.         {
  32.             Console.WriteLine("\nВыберите пункт меню, для работы с базой данных:\n" +
  33.                 "1 - Удалить игрока\n" +
  34.                 "2 - Добавить игрока\n" +
  35.                 "3 - Забанить или разбанить игрока\n" +
  36.                 "4 - Показать всех игроков\n" +
  37.                 "5 - Выход из программы");
  38.  
  39.             Console.WriteLine("\nВведите число");
  40.  
  41.             string userInput = Console.ReadLine();
  42.  
  43.             switch (userInput)
  44.             {
  45.                 case "1":
  46.                     userInformation.DeletePlayer(scrollOfPlayers);
  47.                     break;
  48.  
  49.                 case "2":
  50.                     userInformation.AddPlayer(scrollOfPlayers);
  51.                     break;
  52.  
  53.                 case "3":
  54.                     userInformation.BanOrUnBanPlayer(scrollOfPlayers);
  55.                     break;
  56.  
  57.                 case "4":
  58.                     userInformation.ShowAllPlayers(scrollOfPlayers);
  59.                     break;
  60.  
  61.                 case "5":
  62.                     isWork = false;
  63.                     Console.WriteLine("До встречи!");
  64.                     break;
  65.  
  66.                 default:
  67.                     ShowMessage();
  68.                     break;
  69.             }
  70.         }
  71.     }
  72.  
  73.     public void ShowMessage()
  74.     {
  75.         Console.ForegroundColor = ConsoleColor.Red;
  76.         Console.WriteLine("Внимательнее пожалуйста, вы не выбрали пункт меню!");
  77.         Console.ResetColor();
  78.     }
  79. }
  80.  
  81. class Database
  82. {
  83.     private Dictionary<int, Player> _scrollOfPlayersWithUniqueNumber = new();
  84.  
  85.     public Database(Dictionary<int, Player> scrollOfPlayersWithUniqueNumber)
  86.     {
  87.         _scrollOfPlayersWithUniqueNumber = scrollOfPlayersWithUniqueNumber;
  88.     }
  89.  
  90.     public Dictionary<int, Player> AddPlayer(Dictionary<int, Player> playerInformation)
  91.     {
  92.         string numberWriteMessage = "Введите номер:";
  93.         string LevelWriteMessage = "Введите уровень:";
  94.  
  95.         int uniqueNumber = 0;
  96.         int level = 0;
  97.  
  98.         RecordData(numberWriteMessage, ref uniqueNumber);
  99.  
  100.         if (VerificationUserInput(playerInformation, uniqueNumber))
  101.         {
  102.             RecordData(LevelWriteMessage, ref level);
  103.  
  104.             Console.WriteLine("Введите имя:");
  105.  
  106.             string name = Console.ReadLine();
  107.  
  108.             bool isBan = false;
  109.  
  110.             Player newPlayer = new Player(level, name, isBan);
  111.  
  112.             playerInformation.Add(uniqueNumber, newPlayer);
  113.         }
  114.  
  115.         return playerInformation;
  116.     }
  117.  
  118.     public bool VerificationUserInput(Dictionary<int, Player> playerInformation, int uniqueNumber)
  119.     {
  120.         if (playerInformation.ContainsKey(uniqueNumber))
  121.         {
  122.             Console.WriteLine("Такой номер уже есть. Введите дугой.");
  123.  
  124.             return false;
  125.         }
  126.  
  127.         return true;
  128.     }
  129.  
  130.     public void RecordData(string text, ref int number)
  131.     {
  132.         Console.WriteLine(text);
  133.  
  134.         bool isWork = true;
  135.  
  136.         while (isWork)
  137.         {
  138.             string uniqueNumber = Console.ReadLine();
  139.  
  140.             if (int.TryParse(uniqueNumber, out number) == false || number < 0)
  141.             {
  142.                 Console.WriteLine("Неверный ввод!");
  143.                 Console.WriteLine("Введите число еще раз");
  144.             }
  145.             else
  146.             {
  147.                 isWork = false;
  148.             }
  149.         }
  150.     }
  151.  
  152.     public void DeletePlayer(Dictionary<int, Player> playerInformation)
  153.     {
  154.         if (playerInformation.Count <= 0)
  155.         {
  156.             Console.WriteLine("Игроков не добавлено");
  157.         }
  158.         else
  159.         {
  160.             Console.WriteLine("Введите номер игрока для удаления:");
  161.  
  162.             string uniqueNumber = Console.ReadLine();
  163.  
  164.             if (int.TryParse(uniqueNumber, out int number) && number > 0)
  165.             {
  166.                 CheckForPlayerPresence(playerInformation, number);
  167.             }
  168.             else
  169.             {
  170.                 Console.WriteLine("Неправильный ввод.");
  171.             }
  172.         }
  173.     }
  174.  
  175.     public void CheckForPlayerPresence(Dictionary<int, Player> playerInformation, int userInput)
  176.     {
  177.         if (playerInformation.ContainsKey(userInput) && playerInformation.TryGetValue(userInput, out Player player))
  178.         {
  179.             playerInformation.Remove(userInput);
  180.  
  181.             Console.WriteLine("Игрок удален");
  182.         }
  183.         else
  184.         {
  185.             Console.WriteLine("Такого игрока нет");
  186.         }
  187.     }
  188.  
  189.     public string ShowPlayerStatus(Player player)
  190.     {
  191.         string ban = "Забанен.";
  192.         string UnBan = "Не забанен.";
  193.  
  194.         if (player.IsBan == false)
  195.         {
  196.             return UnBan;
  197.         }
  198.         else
  199.         {
  200.             return ban;
  201.         }
  202.     }
  203.  
  204.     public void BanOrUnBanPlayer(Dictionary<int, Player> playerInformation)
  205.     {
  206.         string ban = "1";
  207.         string unBan = "2";
  208.  
  209.         Console.WriteLine("Введите номер игрока для изменения статуса:");
  210.  
  211.         int uniqueNumber = Convert.ToInt32(Console.ReadLine());
  212.  
  213.         if (playerInformation.ContainsKey(uniqueNumber) && playerInformation.TryGetValue(uniqueNumber, out Player player))
  214.         {
  215.             Console.WriteLine($"Текущий статус игрока - {ShowPlayerStatus(player)}.");
  216.  
  217.             Console.WriteLine($"Что делаем дальше? Забанить - {ban}, разбанить - {unBan}.");
  218.  
  219.             string userInput = Console.ReadLine();
  220.  
  221.             if (userInput == ban)
  222.             {
  223.                 player.BanPlayer();
  224.  
  225.                 Console.WriteLine("Игрок забанен.");
  226.             }
  227.             else
  228.             {
  229.                 player.UnBanPlayer();
  230.  
  231.                 Console.WriteLine("Игрок разбанен.");
  232.             }
  233.  
  234.         }
  235.         else
  236.         {
  237.             Console.WriteLine("Такого игрока нет.");
  238.         }
  239.     }
  240.  
  241.     public void ShowAllPlayers(Dictionary<int, Player> uniqueNumberOfPlayer)
  242.     {
  243.         if (uniqueNumberOfPlayer.Count <= 0)
  244.         {
  245.             Console.WriteLine("Игроки отсутствуют.");
  246.         }
  247.         else
  248.         {
  249.             foreach (var player in uniqueNumberOfPlayer)
  250.             {
  251.                 uniqueNumberOfPlayer.TryGetValue(player.Key, out Player playerStatus);
  252.  
  253.                 Console.WriteLine($"\n{player.Key}. {player.Value.Name}, уровень - {player.Value.Level}. {ShowPlayerStatus(playerStatus)}.");
  254.             }
  255.         }
  256.     }
  257. }
  258.  
  259. class Player
  260. {
  261.     public Player(int level, string name, bool isBanned)
  262.     {
  263.         Name = name;
  264.         Level = level;
  265.         IsBan = isBanned;
  266.     }
  267.  
  268.     public string Name { get; private set; }
  269.     public int Level { get; private set; }
  270.     public bool IsBan { get; private set; }
  271.  
  272.     public void BanPlayer()
  273.     {
  274.         IsBan = true;
  275.     }
  276.  
  277.     public void UnBanPlayer()
  278.     {
  279.         IsBan = false;
  280.     }
  281. }
  282.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement