Advertisement
Guest User

Roma's Homework

a guest
Apr 12th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace YobaTask
  6. {
  7.     class Program //задачи 1.4.1 - 1.4.3.2, все названия классов и методов как в условии
  8.     {
  9.  
  10.         class User
  11.         {
  12.             private string login;
  13.             private string password;
  14.             private List<Book.Note> allNotes = new List<Book.Note>();
  15.  
  16.             public User(string _login, string _password)
  17.             {
  18.                 login = _login;
  19.                 password = _password;
  20.                 GreenText("Пользователь {0} создан", login);
  21.             }
  22.  
  23.             public string Login
  24.             {
  25.                 get { return login; }
  26.             }
  27.             public string Pass
  28.             {
  29.                 get { return password; }
  30.             }
  31.             public List<Book.Note> AllNotes
  32.             {
  33.                 get { return allNotes; }
  34.                 set { allNotes = value; }
  35.             }
  36.  
  37.             ~User()
  38.             {
  39.                 Console.WriteLine("Пользователь {0} удален", login);
  40.             }
  41.  
  42.             public class Book
  43.             {
  44.                 private string id;
  45.  
  46.                 public Book(string userlogin)
  47.                 {
  48.                     id = userlogin;
  49.                     Console.WriteLine("Книга пользователя {0} создана", id);
  50.                 }
  51.  
  52.                 public string Id
  53.                 {
  54.                     get { return id; }
  55.                 }
  56.  
  57.                 public class Note
  58.                 {
  59.                     private string note;  
  60.                                      
  61.                     public Note(string noteText)
  62.                     {
  63.                         note = noteText;
  64.                     }
  65.                     public string NoteText
  66.                     {
  67.                         get { return note; }
  68.                         set { note = value; }
  69.                     }                  
  70.                 }
  71.             }
  72.  
  73.         }
  74.  
  75.         static bool isLoggedIn;
  76.         static User currentUser;
  77.         static List<User> AllUsers = new List<User>();
  78.         static List<User.Book> AllBooks = new List<User.Book>();
  79.  
  80.         static List<string> commands = new List<string> { "1)AddUser", "2)Login", "3)List", "4)AddNote", "5)ShowAllNotes", "6)Books", "7)Logout", "8)Test", "? - список команд" };
  81.  
  82.         static void Main(string[] args)
  83.         {
  84.             ListCommands(); //сразу выводим список команд
  85.             while (true)
  86.             {
  87.                 var key = Console.ReadKey(true);
  88.                 if (char.IsDigit(key.KeyChar) || key.KeyChar == '?')
  89.                 {
  90.                     GetCommands(key);
  91.                 }
  92.                 else //если это не цифра или вопросительный знак, значит юзер что-то пишет
  93.                 {
  94.                     var message = Console.ReadLine();
  95.                     GetCommands(message);
  96.                 }
  97.             }
  98.         }
  99.  
  100.         static void ListCommands()
  101.         {
  102.             Console.WriteLine("Доступные комманды:");
  103.             foreach (string s in commands)
  104.             {
  105.                 Console.WriteLine(s);
  106.             }
  107.         }
  108.  
  109.         static void GetCommands(string message)
  110.         {
  111.             switch (message)
  112.             {
  113.                 case "AddUser":
  114.                     AddUser();
  115.                     break;
  116.                 case "?":
  117.                     ListCommands();
  118.                     break;
  119.                 case "Login":
  120.                     LogIn();
  121.                     break;
  122.                 case "List":
  123.                     List();
  124.                     break;
  125.                 case "AddNote":
  126.                     AddNote();
  127.                     break;
  128.                 case "ShowAllNotes":
  129.                     ShowAllNotes();
  130.                     break;
  131.                 case "Books":
  132.                     Books();
  133.                     break;
  134.                 case "Logout":
  135.                     LogOut();
  136.                     break;
  137.                 case "Test":
  138.                     Test1422();
  139.                     break;
  140.             }
  141.         }
  142.  
  143.         static void GetCommands(ConsoleKeyInfo key)
  144.         {
  145.             switch (key.KeyChar)
  146.             {
  147.                 case '1':
  148.                     AddUser();
  149.                     break;
  150.                 case '?':
  151.                     ListCommands();
  152.                     break;
  153.                 case '2':
  154.                     LogIn();
  155.                     break;
  156.                 case '3':
  157.                     List();
  158.                     break;
  159.                 case '4':
  160.                     AddNote();
  161.                     break;
  162.                 case '5':
  163.                     ShowAllNotes();
  164.                     break;
  165.                 case '6':
  166.                     Books();
  167.                     break;
  168.                 case '7':
  169.                     LogOut();
  170.                     break;
  171.                 case '8':
  172.                     Test1422();
  173.                     break;
  174.             }
  175.         }
  176.  
  177.         static void AddUser()
  178.         {
  179.             while (true)
  180.             {
  181.                 Console.WriteLine("Введите имя пользователя (login):");
  182.                 string login = Console.ReadLine();
  183.                 if (string.IsNullOrEmpty(login))
  184.                 {
  185.                     RedText("Логин не может быть пустым!");
  186.                     continue;
  187.                 }
  188.                 else if (AllUsers.Any(a => a.Login == login))
  189.                 {
  190.                     RedText("Пользователь с таким логином уже существует!");
  191.                     continue;
  192.                 }
  193.                 Console.WriteLine("Введите пароль (password):");
  194.                 string password = Console.ReadLine();
  195.                 if (string.IsNullOrEmpty(password))
  196.                 {
  197.                     RedText("Пароль не может быть пустым!");
  198.                     continue;
  199.                 }
  200.                 User newUser = new User(login, password);
  201.                 AllUsers.Add(newUser);
  202.                 break;
  203.             }
  204.         }
  205.  
  206.         static void LogIn()
  207.         {
  208.             while (!isLoggedIn)
  209.             {
  210.                 Console.WriteLine("Введите имя пользователя (login):");
  211.                 string login = Console.ReadLine();
  212.                 if (string.IsNullOrEmpty(login))
  213.                 {
  214.                     RedText("Логин не может быть пустым!");
  215.                     continue;
  216.                 }              
  217.                 Console.WriteLine("Введите пароль (password):");
  218.                 string password = Console.ReadLine();
  219.                 if (string.IsNullOrEmpty(password))
  220.                 {
  221.                     RedText("Пароль не может быть пустым!");
  222.                     continue;
  223.                 }
  224.                 if(AllUsers.Any(a => a.Login == login && a.Pass == password))
  225.                 {
  226.                     currentUser = AllUsers.Find(a => a.Login == login && a.Pass == password);
  227.                     isLoggedIn = true;
  228.                     GreenText("Успешный вход!");
  229.                 }
  230.                 else
  231.                 {
  232.                     RedText("Неверный логин или пароль!");
  233.                 }
  234.             }
  235.         }
  236.  
  237.         static void LogOut()
  238.         {
  239.             if (isLoggedIn)
  240.             {
  241.                 Console.WriteLine("До свидания, {0}!", currentUser.Login);
  242.                 isLoggedIn = false;
  243.                 currentUser = null;
  244.             }
  245.         }
  246.  
  247.         static void List()
  248.         {
  249.             if (AllUsers.Count > 0)
  250.             {
  251.                 Console.WriteLine("Текущие пользователи:");
  252.                 foreach (User u in AllUsers)
  253.                 {
  254.                     Console.WriteLine(u.Login);
  255.                 }
  256.             }
  257.             else
  258.             {
  259.                 Console.WriteLine("Список пользователей пуст!");
  260.             }
  261.         }
  262.  
  263.         static void AddNote()
  264.         {
  265.             if (isLoggedIn)
  266.             {
  267.                 Console.WriteLine("Введите текст:");
  268.                 string text = Console.ReadLine();
  269.                 if (!AllBooks.Exists(a => a.Id == currentUser.Login))
  270.                 {
  271.                     AllBooks.Add(new User.Book(currentUser.Login));
  272.                 }                
  273.                 currentUser.AllNotes.Add(new User.Book.Note(text));
  274.                 GreenText("Заметка добавлена!");
  275.             }
  276.             else
  277.             {
  278.                 RedText("Вход не выполнен!");
  279.             }
  280.         }
  281.  
  282.         static void ShowAllNotes()
  283.         {
  284.             if (isLoggedIn)
  285.             {
  286.                 if (currentUser.AllNotes.Count > 0)
  287.                 {
  288.                     int i = 1;
  289.                     foreach (User.Book.Note n in currentUser.AllNotes)
  290.                     {
  291.                         Console.WriteLine("{0}) {1}", i, n.NoteText);
  292.                         i++;
  293.                     }
  294.                 }
  295.                 else
  296.                 {
  297.                     Console.WriteLine("Заметок нет!");
  298.                 }
  299.             }
  300.             else
  301.             {
  302.                 RedText("Вход не выполнен!");
  303.             }
  304.         }
  305.  
  306.         static void Books()
  307.         {
  308.             if (AllBooks.Count > 0)
  309.             {
  310.                 Console.WriteLine("Созданные книги:");
  311.                 foreach (User.Book b in AllBooks)
  312.                 {
  313.                     Console.WriteLine("Книга пользователя {0}", b.Id);
  314.                 }
  315.             }
  316.             else
  317.             {
  318.                 Console.WriteLine("Список созданных книг пуст!");
  319.             }
  320.         }
  321.  
  322.         static void Test1422()
  323.         {
  324.             User u = new User("test user","passs"); //указать параметры которые вы указали в объявление конструктора
  325.             u = null;
  326.             GC.Collect();
  327.         }
  328.  
  329.         #region text styles
  330.  
  331.         static void RedText(string text, params object[] post)
  332.         {
  333.             Console.ForegroundColor = ConsoleColor.Red;
  334.             Console.WriteLine(text, post);
  335.             Console.ForegroundColor = ConsoleColor.Gray;
  336.         }
  337.  
  338.         static void GreenText(string text, params object[] post)
  339.         {
  340.             Console.ForegroundColor = ConsoleColor.Green;
  341.             Console.WriteLine(text, post);
  342.             Console.ForegroundColor = ConsoleColor.Gray;
  343.         }
  344.  
  345.         #endregion
  346.     }
  347. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement