Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace YobaTask
- {
- class Program //задачи 1.4.1 - 1.4.3.2, все названия классов и методов как в условии
- {
- class User
- {
- private string login;
- private string password;
- private List<Book.Note> allNotes = new List<Book.Note>();
- public User(string _login, string _password)
- {
- login = _login;
- password = _password;
- GreenText("Пользователь {0} создан", login);
- }
- public string Login
- {
- get { return login; }
- }
- public string Pass
- {
- get { return password; }
- }
- public List<Book.Note> AllNotes
- {
- get { return allNotes; }
- set { allNotes = value; }
- }
- ~User()
- {
- Console.WriteLine("Пользователь {0} удален", login);
- }
- public class Book
- {
- private string id;
- public Book(string userlogin)
- {
- id = userlogin;
- Console.WriteLine("Книга пользователя {0} создана", id);
- }
- public string Id
- {
- get { return id; }
- }
- public class Note
- {
- private string note;
- public Note(string noteText)
- {
- note = noteText;
- }
- public string NoteText
- {
- get { return note; }
- set { note = value; }
- }
- }
- }
- }
- static bool isLoggedIn;
- static User currentUser;
- static List<User> AllUsers = new List<User>();
- static List<User.Book> AllBooks = new List<User.Book>();
- static List<string> commands = new List<string> { "1)AddUser", "2)Login", "3)List", "4)AddNote", "5)ShowAllNotes", "6)Books", "7)Logout", "8)Test", "? - список команд" };
- static void Main(string[] args)
- {
- ListCommands(); //сразу выводим список команд
- while (true)
- {
- var key = Console.ReadKey(true);
- if (char.IsDigit(key.KeyChar) || key.KeyChar == '?')
- {
- GetCommands(key);
- }
- else //если это не цифра или вопросительный знак, значит юзер что-то пишет
- {
- var message = Console.ReadLine();
- GetCommands(message);
- }
- }
- }
- static void ListCommands()
- {
- Console.WriteLine("Доступные комманды:");
- foreach (string s in commands)
- {
- Console.WriteLine(s);
- }
- }
- static void GetCommands(string message)
- {
- switch (message)
- {
- case "AddUser":
- AddUser();
- break;
- case "?":
- ListCommands();
- break;
- case "Login":
- LogIn();
- break;
- case "List":
- List();
- break;
- case "AddNote":
- AddNote();
- break;
- case "ShowAllNotes":
- ShowAllNotes();
- break;
- case "Books":
- Books();
- break;
- case "Logout":
- LogOut();
- break;
- case "Test":
- Test1422();
- break;
- }
- }
- static void GetCommands(ConsoleKeyInfo key)
- {
- switch (key.KeyChar)
- {
- case '1':
- AddUser();
- break;
- case '?':
- ListCommands();
- break;
- case '2':
- LogIn();
- break;
- case '3':
- List();
- break;
- case '4':
- AddNote();
- break;
- case '5':
- ShowAllNotes();
- break;
- case '6':
- Books();
- break;
- case '7':
- LogOut();
- break;
- case '8':
- Test1422();
- break;
- }
- }
- static void AddUser()
- {
- while (true)
- {
- Console.WriteLine("Введите имя пользователя (login):");
- string login = Console.ReadLine();
- if (string.IsNullOrEmpty(login))
- {
- RedText("Логин не может быть пустым!");
- continue;
- }
- else if (AllUsers.Any(a => a.Login == login))
- {
- RedText("Пользователь с таким логином уже существует!");
- continue;
- }
- Console.WriteLine("Введите пароль (password):");
- string password = Console.ReadLine();
- if (string.IsNullOrEmpty(password))
- {
- RedText("Пароль не может быть пустым!");
- continue;
- }
- User newUser = new User(login, password);
- AllUsers.Add(newUser);
- break;
- }
- }
- static void LogIn()
- {
- while (!isLoggedIn)
- {
- Console.WriteLine("Введите имя пользователя (login):");
- string login = Console.ReadLine();
- if (string.IsNullOrEmpty(login))
- {
- RedText("Логин не может быть пустым!");
- continue;
- }
- Console.WriteLine("Введите пароль (password):");
- string password = Console.ReadLine();
- if (string.IsNullOrEmpty(password))
- {
- RedText("Пароль не может быть пустым!");
- continue;
- }
- if(AllUsers.Any(a => a.Login == login && a.Pass == password))
- {
- currentUser = AllUsers.Find(a => a.Login == login && a.Pass == password);
- isLoggedIn = true;
- GreenText("Успешный вход!");
- }
- else
- {
- RedText("Неверный логин или пароль!");
- }
- }
- }
- static void LogOut()
- {
- if (isLoggedIn)
- {
- Console.WriteLine("До свидания, {0}!", currentUser.Login);
- isLoggedIn = false;
- currentUser = null;
- }
- }
- static void List()
- {
- if (AllUsers.Count > 0)
- {
- Console.WriteLine("Текущие пользователи:");
- foreach (User u in AllUsers)
- {
- Console.WriteLine(u.Login);
- }
- }
- else
- {
- Console.WriteLine("Список пользователей пуст!");
- }
- }
- static void AddNote()
- {
- if (isLoggedIn)
- {
- Console.WriteLine("Введите текст:");
- string text = Console.ReadLine();
- if (!AllBooks.Exists(a => a.Id == currentUser.Login))
- {
- AllBooks.Add(new User.Book(currentUser.Login));
- }
- currentUser.AllNotes.Add(new User.Book.Note(text));
- GreenText("Заметка добавлена!");
- }
- else
- {
- RedText("Вход не выполнен!");
- }
- }
- static void ShowAllNotes()
- {
- if (isLoggedIn)
- {
- if (currentUser.AllNotes.Count > 0)
- {
- int i = 1;
- foreach (User.Book.Note n in currentUser.AllNotes)
- {
- Console.WriteLine("{0}) {1}", i, n.NoteText);
- i++;
- }
- }
- else
- {
- Console.WriteLine("Заметок нет!");
- }
- }
- else
- {
- RedText("Вход не выполнен!");
- }
- }
- static void Books()
- {
- if (AllBooks.Count > 0)
- {
- Console.WriteLine("Созданные книги:");
- foreach (User.Book b in AllBooks)
- {
- Console.WriteLine("Книга пользователя {0}", b.Id);
- }
- }
- else
- {
- Console.WriteLine("Список созданных книг пуст!");
- }
- }
- static void Test1422()
- {
- User u = new User("test user","passs"); //указать параметры которые вы указали в объявление конструктора
- u = null;
- GC.Collect();
- }
- #region text styles
- static void RedText(string text, params object[] post)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine(text, post);
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- static void GreenText(string text, params object[] post)
- {
- Console.ForegroundColor = ConsoleColor.Green;
- Console.WriteLine(text, post);
- Console.ForegroundColor = ConsoleColor.Gray;
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement