ДЗ-7. Запись полученных логина и пароля в файл, авторизация по уже имеющимся логин-паролю (чтение файлов)

ДЗ-5-6-7. Задание «Генератор пароля и логина». 2018-19 уч.г.

Необходимо создать программу, которая будет опрашивать пользователя (получать его фамилию, имя и год рождения), генерировать ему логин (на латинице, тогда как ФИО пользователь вводит на русском языке), предлагать ему выбрать сложность пароля и сгенерировать пароль заданной сложности (и/или длины) ИЛИ проверить и принять предложенный самим пользователем пароль. Далее необходимо сохранить пару логин-пароль в текстовые файлы в папку проекта (отдельный файл для логинов LOG.txt, отдельный для паролей PSWD.txt). Также необходимо реализовать процесс авторизации (переход на следующую форму по ранее созданному логину/паролю).

Рекомендации по выполнению:

ДЗ-5. Генерация случайного пароля.

Генерация случайного пароля. Программа должна давать пользователю возможность генерировать пароль различной сложности и длины, в зависимости от настроек, установленных пользователем.

1-й режим: словарь символов включает буквы латинского алфавита (большие и малые) и цифры. Программа может генерировать пароль фиксированной длины (не менее 6 символов) и различной сложности. Сложность задает пользователь. Категории сложности пароля:

· легкий – только цифры ИЛИ только буквы;

· сложный – цифры, большие и малые буквы.

2-й режим: словарь символов включает буквы латинского алфавита (большие и малые), цифры. Программа может генерировать пароль регулируемой длины (длину пароля задает пользователь, не менее 6 символов) и различной сложности. Сложность задает пользователь. Категории сложности пароля:

· легкий – только цифры ИЛИ только буквы;

· средний – цифры и буквы (буквы могут быть ИЛИ большие, ИЛИ малые);

· сложный – цифры, большие и малые буквы.

ДЗ-6. Транслит.

Транслирование ФИО, написанных на русском языке, в вариант написания латиницей.

Необходимо иметь два словаря (массива строк) типа string:

DRus – словарь букв русского алфавита.

string[] DRus = new string [33]{“а”,”б”,“в” …”э”,”ю”,”я”}; //всего 33 символа, индексы от 0 до 32/

DEng – словарь символов латинского алфавита транслирующих соответствующие русские буквы.

string[] DEng = = new string [33] {“a”,”b”,”c”…”z”}; // ТАК ЗАДАВАТЬ НЕ ВЕРНО!, ведь в таком случае в словаре всего 26 символов, индексы от 0 до 25. Очевидно, что DRus и DEng друг другу НЕ соответствуют, и не понятно, какое символосочетание подходит к русским буквам.

Задавать DEng нужно иначе. Длина данного массива должна быть равна длине массива DRus,и массив должен содержать в соответствии со следованием в DRus букв русского алфавита подходящие сочетания символов из латинского алфавита.

Самое главное – соблюдать четкое соответствие по индексам букв русского алфавита и их транлитных аналогов. Также же важно помнить, что одной букве русского алфавита может соответствовать сочетание нескольких символов алфавита латинского (я – ya, ж – zh и т.д.)

Index DRus 0 1 2 3 30 31 32
  а б в г   э ю я
  a b v g   e u ya
Index DEng 0 1 2 3 30 31 32

 

Затем необходимо проходить по строке с русским словом, узнавать индексы каждой русской буквы в слове, и по этим самым индексам подставлять на место русских букв их транслит-аналог.

Для поиска индексов букв слова необходимо использовать двойной цикл: внешний цикл «бегает» по слову, внутренний — по русскому словарю. Сами найденные индексы записываются в массив типа int по длине равный кол-ву букв в слове.

Для подстановки символов используется один цикл. По индексам из массива индексов букв ищутся символы в словаре DЕng и записываются в новую строку.

Пример. Пусть введена фамилия «ямщиков» (поправка на все малые буквы – пусть у нас разрешен только нижний регистр, при выполнении задания лучше учитывать оба регистра). Транслируем это слово:

1. Проверяя каждую букву слова со словарем русский букв, узнаем индексы букв и сохраним их в массив.

Буквы   string FirstName = “ямщиков”; я м щ и к о в
Индексы букв, найденные в словаре DRus   int[] slovoL = new int[slovo.Length]; 32 13 26 10 11 15 2

 

2. Возьмем найденные индексы, узнаем по ним символы или символосочетания из второго словаря, запишем найденное в новую строку.

string TransFirstName = “”;

//в цикле по длине массива

for (int i=0; i<slovoL.Length; i++)

{ TransFirstName += DEng[slovoL[i]]; }

//данная конструкция позволит подставлять в значение индекса словаря Deng значения из массива slovoL, которые в свою очередь являются индексами оригинальных букв русского словаря, тогда по найденным индексам мы получим символосочетания латинского словаря, соответствующие русским буквам

 

ДЗ-7. Файлы и авторизация.

Работа с текстовыми файлами.

Чтобы работать с текстовыми файлами, необходимо подключить библиотеку System.IO и использовать классы StreamReader и StreamWriter.

using System.IO; //в самой верхней части программы, подо всеми уже подключенными библиотеками

Подробный пример записи-чтения в файл представлен на диске Q/Groups/ИСАУ/ПЯВУ, папка проекта «Файл».

 

ДЗ-7. Запись полученных логина и пароля в файл, авторизация по уже имеющимся логин-паролю (чтение файлов)

В корневой папке проекта (имя_проекта/bin/debug), рядом с exe-файлом необходимо создать два текстовых файла (расширение *.txt): первый файл назвать «log», второй файл назвать «pswd». В первый файл будут записываться полученные логины, во второй – полученные пароли.

 ВАЖНО! Записывать полученную пару логин-пароль в файлы, соблюдая порядок, иными словами номер записи (номер строки) пароля1 для логина 1 в файлах должен совпадать.

ПРАВИЛЬНО

Имеется три пары логин-пароля:        tanya-123456;    sunM-654asd; user123-1q2w3e

 

НЕ ПРАВИЛЬНО

Файл log.txt Файл pswd.txt Файл log.txt Файл pswd.txt
tanya 123456 tanya  
sunM 654asd sunM 123456
user123 1q2w3e user123 1q2w3e

 

После того, как логин-пароли записаны, необходимо реализовать метод авторизации. Необходимо вводить логин-пароль, открывать на чтение файл с логинами, искать введенный логин. Если логин найден, то далее необходимо открывать на чтение файл с паролями и по номеру строки найденного логина считывать и сравнивать с введенным пароль. Если все совпадает, пользователю открывается доступ к новой форме. Если не совпадает – программа отказывает в доступе и предлагает зарегистрироваться.

 

Дополнительные задания (на доп.баллы):

· проверять при записи логин-пароля на уже существующий логин, отказывать в такой записи.

· предлагать пользователю на выбор несколько вариантов логина;

· нарисовать блок-схему работы вашего приложения.


 

Подсказка по чтению и записи в текстовый файл (в кавычках указывается полный путь к файлу с его полным именем и расширением)


Записывание

       StreamWriter wr = new StreamWriter("file.txt");

       wr.WriteLine(textBox1.Text);

       wr.Close();

Дописывание  

       StreamWriter wr = File.AppendText("file_2.txt");

       wr.WriteLine(textBox1.Text);

       wr.Close();

       

Чтение до конца

       StreamReader re = new StreamReader("file_2.txt");

       string s = re.ReadToEnd();

       textBox1.Text += s;

       listBox1.Items.Add(s);

       re.Close();

 

Чтение построчно

       StreamReader re = File.OpenText("file_2.txt");

       textBox1.Text = "";

       listBox1.Items.Clear();

       string s;

       while (!re.EndOfStream)

       {

           s = re.ReadLine();

           textBox1.Text += s;

           listBox1.Items.Add(s);

       }

       re.Close();

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: