public void AuthorizationAdmin(BD dateBase, VictorinaProgram Victorina) { try { string _login, _password; Write("\tВведите логин: "); _login = ReadLine(); Write("\tВведите пароль: "); _password = ReadLine(); List <string> mas = new List <string>(); mas = dateBase.ReadDate("admin.txt"); string[] word = mas[0].Split(' '); if (_login == word[0] && _password == word[1]) { Clear(); MenuAdmin(Victorina); } else { throw new Exception("Вы ввели неверный пароль!"); } } catch (Exception ex) { WriteLine(ex.Message); Write("\tПовторить попытку, нажмите любую клавишу"); ReadKey(); Clear(); AuthorizationAdmin(dateBase, Victorina); } }
void ShowTop(VictorinaProgram Victorina) { WriteLine("Укажите викторину, по которой хотите посмотреть ТОП!"); foreach (Topic t in Victorina._topic) { WriteLine(t.name); } string tema = ReadLine(); List <Lider> _Lid = new List <Lider>(); foreach (User u in Victorina._user) { foreach (Rezult r in u.rez) { if (r.NameTopic == tema) { _Lid.Add(new Lider(u.Login, r)); } } } _Lid.Sort(); int k = 1; foreach (Lider a in _Lid) { WriteLine($"{a.top.Mark}% {a.name} {a.top.TimeTest.ToShortDateString()}"); k++; if (k > 20) { break; } } }
public void ReadAllInfo(VictorinaProgram Vic) { //Считываем все данные с файлов List <string> mas = new List <string>(); //Считываем с файла перечень тем ReadTopic(Vic, "topic.txt"); //Считываем с файла пользователей и информацию по кажому из них mas = ReadDate("users.txt"); foreach (string item in mas) { string[] word = item.Split(' '); Vic._user.Add(new User(word[0], word[1], Convert.ToInt32(word[2]), Convert.ToInt32(word[3]), Convert.ToInt32(word[4]))); } //Считываем с файла достижения по каждому пользователю foreach (User use in Vic._user) { mas = ReadDate(use.Login + ".txt"); foreach (string item in mas) { string[] word = item.Split(' '); use.rez.Add(new Rezult(word[0], Convert.ToInt32(word[1]), Convert.ToInt32(word[2]), Convert.ToInt32(word[3]), Convert.ToInt32(word[4]))); } } //Считываем с файла вопросы ответы по каждой викторине ReadQuestionAnsver(Vic, ""); }
public void MenuAdmin(VictorinaProgram Victorina) { Clear(); Write("\tВы авторизовались как админ: "); WriteLine("\n\n1. Добавить новую викторину\n" + "2. Редактировать существующую викторину\n"); int chose2 = Convert.ToInt32(ReadLine()); switch (chose2) { case 1: AddNewVictorin(Victorina); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuAdmin(Victorina); break; case 2: EditVictorin(Victorina); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuAdmin(Victorina); break; default: WriteLine("Вы ввели неверный пункт меню!"); WriteLine("Нажмите любую клавишу, чтобы повторить попытку"); ReadKey(); MenuAdmin(Victorina); break; } }
//Считываем с файла список тем public void ReadTopic(VictorinaProgram Vic, string arg) { List <string> mas = new List <string>(); mas = ReadDate(arg); foreach (string item in mas) { Vic._topic.Add(new Topic(item)); } }
public void MenuUser(VictorinaProgram Victorina) { Clear(); WriteLine($"Вы авторизовались как - {Login}\n\tМЕНЮ:"); WriteLine("1. Начать новую викторину\n" + "2. Ваши предыдущие результаты\n" + "3. Топ-20\n" + "4. Изменить данные учетной записи\n" + "5. Выход\n"); int chose2 = Convert.ToInt32(ReadLine()); switch (chose2) { case 1: StartNewVictorin(Victorina); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuUser(Victorina); break; case 2: ShowRezalt(); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuUser(Victorina); break; case 3: ShowTop(Victorina); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuUser(Victorina); break; case 4: ChangeDate(Victorina); WriteLine("Нажмите любую клавишу, чтобы вернуться к МЕНЮ:"); ReadKey(); MenuUser(Victorina); break; case 5: throw new Exception("Вы вышли из программы!"); default: WriteLine("Вы ввели неверный пункт меню!"); WriteLine("Нажмите любую клавишу, чтобы повторить попытку"); ReadKey(); MenuUser(Victorina); break; } }
void StartNewVictorin(VictorinaProgram Victorina) { WriteLine("\nДоступные викторины:"); foreach (Topic t in Victorina._topic) { WriteLine(t.name); } WriteLine("\nУкажите Тему викторины или \"1\" если вы хотите играть в смешанную викторину:"); string tema = ReadLine(); Topic tempTopic = Victorina._topic.Find(x => x.name.Contains(tema)); DateTime dt = DateTime.Now; if (tempTopic != null) { int r = tempTopic.VictorinaOpros();//записываем кол-во правильных ответов в переменную rez.Add(new Rezult(tema, (r * 100 / 20), dt.Year, dt.Month, dt.Day)); BD.WriteChangeUserRezult(this); Write($"\n\t\tВаш РЕЗУЛЬТАТ - {r * 100 / 20}%\n"); } else if (Convert.ToInt32(tema) == 1) { List <QuestionAnswer> SmeshQA = new List <QuestionAnswer>(); foreach (Topic t in Victorina._topic) { SmeshQA.AddRange(t._questionAnswers); } int len = SmeshQA.Count(); Topic Smeshanuy = new Topic("Смешанный"); Random rand = new Random(); for (int i = 0; i < 20; i++) { int k = rand.Next(0, len); if ((Smeshanuy._questionAnswers.Find(x => x.Question.Contains(SmeshQA[k].Question))) != null)//если такой вопрос уже есть в списке то берем другой { i--; continue; } else { Smeshanuy._questionAnswers.Add(SmeshQA[k]); } } int r = Smeshanuy.VictorinaOpros(); //записываем кол-во правильных ответов в переменную rez.Add(new Rezult("Смешанный", (r * 100 / 20), dt.Year, dt.Month, dt.Day)); BD.WriteChangeUserRezult(this); Write($"\n\t\tВаш РЕЗУЛЬТАТ - {r * 100 / 20}%\n"); } else { WriteLine("Тема указана неверно!!!"); } }
static void Main(string[] args) { VictorinaProgram Victorina = new VictorinaProgram(); BD dateBase = new BD(); dateBase.ReadTopic(Victorina, @"..\..\..\Victorina\bin\Debug\topic.txt"); dateBase.ReadQuestionAnsver(Victorina, @"..\..\..\Victorina\bin\Debug\"); Utilita Utl = new Utilita(); WriteLine("Чтобы изменить данные в викторине нужно авторизоваться!!!"); Utl.AuthorizationAdmin(dateBase, Victorina); }
public void WriteChangeTopic(VictorinaProgram Victorina)//Перезаписываем изменения в файле перечня Викторин { string filePath = @"..\..\..\Victorina\bin\Debug\topic.txt"; using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, Encoding.Unicode)) { foreach (Topic top in Victorina._topic) { sw.WriteLine(top.name); } } } }
public static void WriteChangeUser(VictorinaProgram Victorina)//Перезаписываем изменения в файле пользователей { string filePath = "users.txt"; using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs, Encoding.Unicode)) { foreach (User us in Victorina._user) { sw.WriteLine(us); } } } }
public void EditVictorin(VictorinaProgram Victorina) { foreach (Topic t in Victorina._topic) { WriteLine(t.name); } WriteLine("Укажите викторину, которую нужно отредактировать:\n"); string tempNameTopic = ReadLine(); Topic tempTopic = Victorina._topic.Find(x => x.name.Contains(tempNameTopic)); tempTopic.Show1(); WriteLine("Укажите номер вопроса, который нужно отредактировать:\n"); int tempQuestion = Convert.ToInt32(ReadLine()); tempTopic._questionAnswers[tempQuestion - 1].Show(); WriteLine("Введите новый вопрос:"); string QuestionNew = ReadLine(); WriteLine("Количество верных ответов:"); int CountAnsNew = Convert.ToInt32(ReadLine()); Dictionary <string, int> tempDicNew = new Dictionary <string, int>(); WriteLine("Варианты ответов (Вариант-0/1) О-лож, 1-истина"); string Ansver1 = ReadLine(); int _Ansver1 = Convert.ToInt32(ReadLine()); tempDicNew.Add(Ansver1, _Ansver1); string Ansver2 = ReadLine(); int _Ansver2 = Convert.ToInt32(ReadLine()); tempDicNew.Add(Ansver2, _Ansver2); string Ansver3 = ReadLine(); int _Ansver3 = Convert.ToInt32(ReadLine()); tempDicNew.Add(Ansver3, _Ansver3); QuestionAnswer tempQA = new QuestionAnswer(QuestionNew, CountAnsNew, tempDicNew); tempTopic._questionAnswers[tempQuestion - 1] = tempQA; WriteLine("\t\tИзменения внесены:\n"); tempTopic._questionAnswers[tempQuestion - 1].Show(); WriteChangeTopicView(tempTopic, tempTopic.name); }
void ChangeDate(VictorinaProgram Victorina) { WriteLine("Какие данные вы хотите изменить: 1- Пароль; 2 - Дату рождения."); int chose3 = Convert.ToInt32(ReadLine()); switch (chose3) { case 1: WriteLine("Введите новый пароль:"); Password = ReadLine(); BD.WriteChangeUser(Victorina); WriteLine("Ваш пароль был изменен!!!"); break; case 2: WriteLine("Введите дату рождения в формате 1985.12.31"); bool fl = false; do { Write($"Текущая дата: {GetBirthDay()}"); string DataPattern = @"^[1-2]{1}[0-9]{3}\.[0,1]{1}[0-9]{1}\.[0-9]{2}$"; //Шаблон 4 символа+ 1 цифра вконце Write("\tВведите дату: "); string _data = ReadLine(); Regex regex = new Regex(DataPattern); if (regex.IsMatch(_data)) { string[] d = _data.Split('.'); SetBirthDay(Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2])); BD.WriteChangeUser(Victorina); WriteLine("Изменения внесены!"); fl = true; } else { WriteLine("Вы ввели неверный формат даты"); } }while (fl == false); break; default: break; } }
//Считываем с файла вопросы-ответы по каждой викторине public void ReadQuestionAnsver(VictorinaProgram Vic, string arg) { List <string> mas = new List <string>(); foreach (Topic top in Vic._topic) { string temp = arg + top.name + ".txt"; mas = ReadDate(temp); foreach (string item in mas) { string[] word = item.Split('?'); string[] word2 = word[1].Trim().Split('|'); Dictionary <string, int> Answer = new Dictionary <string, int>(); for (int i = 1; i < 4; i++) { string[] word3 = word2[i].Split('-'); Answer.Add(word3[0], Convert.ToInt32(word3[1])); } top._questionAnswers.Add(new QuestionAnswer(word[0], Convert.ToInt32(word2[0]), Answer)); } } }
static void Main(string[] args) { VictorinaProgram Victorina = new VictorinaProgram(); //Считываем все данные с файлов BD dateBase = new BD(); dateBase.ReadAllInfo(Victorina); //Меню Авторизации/регистрации bool fl = false; do { try { WriteLine("1 - Авторизоваться; 2- Пройти регистрацию"); int chose1 = Convert.ToInt32(ReadLine()); if (chose1 == 1) { Victorina.Authorization(Victorina); fl = true; } else if (chose1 == 2) { VictorinaProgram.Registration(Victorina); fl = true; } else { throw new Exception("Вы ввели неверный пункт меню"); } } catch (Exception ex) { WriteLine(ex.Message); } }while (fl == false); }
public void Authorization(VictorinaProgram Victorina) { string _login, _password; Write("\tВведите логин: "); _login = ReadLine(); Write("\tВведите пароль: "); _password = ReadLine(); User temp = Victorina._user.Find(x => x.Login.Equals(_login)); if (temp == null) { throw new Exception("Пользователь под таким логином не зарегистрирован!"); } if (temp.Password != _password) { throw new Exception("Вы ввели неверный пароль!"); } else { Clear(); temp.MenuUser(Victorina); } }
public void AddNewVictorin(VictorinaProgram Victorina) { WriteLine("Введите название новой викторины: "); string name = ReadLine(); WriteLine("Количество вопросов: "); int CountQ = Convert.ToInt32(ReadLine()); Topic temp = new Topic(name); for (int i = 0; i < CountQ; i++) { WriteLine("Введите вопрос:"); string Question = ReadLine(); WriteLine("Количество верных ответов:"); int CountAns = Convert.ToInt32(ReadLine()); Dictionary <string, int> tempDic = new Dictionary <string, int>(); WriteLine("Варианты ответов (Вариант-0/1) О-лож, 1-истина"); string Ansver1 = ReadLine(); int _Ansver1 = Convert.ToInt32(ReadLine()); tempDic.Add(Ansver1, _Ansver1); string Ansver2 = ReadLine(); int _Ansver2 = Convert.ToInt32(ReadLine()); tempDic.Add(Ansver2, _Ansver2); string Ansver3 = ReadLine(); int _Ansver3 = Convert.ToInt32(ReadLine()); tempDic.Add(Ansver3, _Ansver3); QuestionAnswer tempQA = new QuestionAnswer(Question, CountAns, tempDic); temp._questionAnswers.Add(tempQA); } Victorina._topic.Add(temp); WriteChangeTopic(Victorina); WriteChangeTopicView(temp, name); temp.Show1(); }
public static void Registration(VictorinaProgram Victorina) { string _login, _password; bool fl = false; do { string LoginPattern = @"^[a-z0-9_-]{4}[0-9]{1}$";//Шаблон 4 символа+ 1 цифра вконце Write("\tВведите логин: "); _login = ReadLine(); Regex regex = new Regex(LoginPattern); if (regex.IsMatch(_login)) { WriteLine("Логин Ок!"); fl = true; } else { WriteLine("Вы ввели неверный формат для логина"); } }while (fl == false); fl = false; do { string PasswodPattern = @"^[a-z0-9_-]{4}[0-9]{1}$";//Шаблон 4 символа+ 1 цифра вконце Write("\tВведите пароль: "); _password = ReadLine(); Regex regex = new Regex(PasswodPattern); if (regex.IsMatch(_password)) { WriteLine("Пароль Ок!"); fl = true; } else { WriteLine("Вы ввели неверный формат для пароля"); } }while (fl == false); fl = false; string[] d = new string[3];//массив для записи даты рождения do { string DataPattern = @"^[1-2]{1}[0-9]{3}\.[0,1]{1}[0-9]{1}\.[0-9]{2}$"; Write("\tВведите дату в формате 1985.12.31: "); string _data = ReadLine(); Regex regex = new Regex(DataPattern); if (regex.IsMatch(_data)) { d = _data.Split('.'); fl = true; } else { WriteLine("Вы ввели неверный формат даты"); } }while (fl == false); Victorina._user.Add(new User(_login, _password, Convert.ToInt32(d[0]), Convert.ToInt32(d[1]), Convert.ToInt32(d[2]))); User temp = Victorina._user[Victorina._user.Count - 1]; BD.CreatDoc(temp); BD.WriteChangeUser(Victorina); Clear(); temp.MenuUser(Victorina); }