Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

3.2.2. Задание № 2

Интерфейс для модуля шифрования

С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI)

формулировка

Необходимо реализовать оконное приложение, которое позволит обычным пользователям пользоваться работой шифровального модуля.

Методические указания

Необходимо реализовать оконное приложение на tkinter.

Примерный внешний вид приложения:

Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

Возможности приложения:

возможность загрузить txt-файл с зашифрованными строками. Файл для загрузки выбирается в диалоговом окне, которое возникает при нажатии кнопки «загрузить файл» (по умолчанию – encrypt.txt);

возможность увидеть расшифрованные строки на экране в нередактируемом текстовом поле;

если сообщение больше, чем помещается в поле, то поле должно скроллится;

если сообщение помещается в поле ввода, то интерфейс скроллинга должен быть скрыт;

возможность добавить новую строку путём ввода этой строки во второе текстовое поле и нажатия кнопки «Добавить»;

возможность сохранить новый набор строк обратно в открытый файл, предварительно их зашифровав, путём нажатия кнопки «зашифровать и сохранить». Исходный файл при этом перезаписывается;

возможность добавить строки, не загружая файл, после чего зашифровать добавленные строки и сохранить результат в новый файл. Целевой файл выбирается в открывающемся стандартном диалоговом окне сохранения файла (по умолчанию называется encrypt_2.txt);

строка состояния в нижней части окна, для сообщений об ошибках

ошибками считаются ситуации, когда:

открытие файла было неуспешно по любой причине (выводится «не удалось открыть файл»);

файл открылся, но в нём находятся символы, кроме шифруемого набора и символа переноса строки (если, например, ошибка на строке номер 5, выводится: «файл содержит недопустимые символы на стр. №5»);

если в момент сохранения файл недоступен для записи, выводится «файл недоступен для записи»;

Аспекты функционала окна, зависящие от студенческого ID:

количество строк в окне вывода расшифрованных сообщений расчитывается как 10 + (рекурсивная сумма цифр ID). Рекурсивная сумма цифр считается путём подсчёта суммы цифр числа, потом суммы цифр его суммы цифр, и так до тех пор, пока не останется 1 цифра. То есть, для ID 70525968 это будет 7 + 0 + 5 + 2 + 5 + 9 + 6 + 8 = 42 => 4 + 2 = 6, и в итоге 10 + 6 = 16 строк

количество строк в окне ввода новых сообщений рассчитывается как 3 + (остаток от деления ID на 4)

В интерфейсе программы строки текстовых полей должны быть пронумерованы. Например:

Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

программа импортирует модуль cypher.py из первого задания и опирается на его функционал, в том числе на шифрование с использованием студенческого id

Программу сохранить под именем app.py

Входные данные

Проверяющий запускает app.py , вводит несколько строк, сохраняет новый файл encrypt_2.txt, после чего загружает этот файл обратно в программу через интерфейс и проверяет расшифровку строк. Так же проверяется открытие файла с нетекстовыми символами (ошибка) и сохранение файла, открытого в текстовом редакторе (так же ошибка).

Выходные данные

Программа работает и выдаёт ошибки по спецификации

3.2.3. Задание № 3

Разработка веб-сервиса

WEB-ИНТЕРФЕЙС

формулировка

Создайте сервер на flask, который при запуске будет открывать Web-сервер по стандартному для flask адресу 127.0.0.1:5000

Сервер обеспечивает Web-интерфейс к модулю шифрования, одновременно поддерживая логирование запросов.

Методические указания

Сервер должен поддерживать следующий функционал:

GET-запрос по адресу с учётом Вашего ID, например 127.0.0.1:5000/70525968. По этому запросу должна открываться HTML-форма для ввода и сохранения сообщений из приведённого ниже шаблона:

Шаблон страницы:

<!DOCTYPE html>

<HTML>

<BODY>

<FORM method=»POST»>

    <LABEL>Введите сообщение:</LABEL><br>

    <TEXTAREA style=»width:95%» name=»text»></TEXTAREA><br>

    <INPUT type=’submit’ value=»Отправить»></SUBMIT>

</FORM>

</BODY>

</HTML>

Внешний вид страницы:

Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

Обработка посланной формы (фактически POST-запрос по тому же адресу, который отправляет браузер на основании формы). Сервер должен зашифровать и сохранить текст из формы в файл messages.csv (дополняя существующую базу файлов), и вернуть пользователю страницу с подтверждением результата из приведённого ниже шаблона (полученный из формы текст передаётся в шаблон через значение msg)

Шаблон и вид страницы:

<!DOCTYPE html>

<HTML>

<BODY>

<p>Сообщение сохранено:</p>

<p>{{msg}}</p>

</BODY>

</HTML>

Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ Витте

Сервер хранит тексты в файле messages.csv, сохраняя не только сам текст, но так же индекс полученного сообщения, время его отправки и IP-адрес отправителя. То есть в messages.csv 4 значения на каждой строке.

GET-запрос по адресу 127.0.0.1:5000/reset стирает все сообщения на сервере (стирает csv-файл). В браузер выходится простейший шаблон, рапортующий о выполненном сбросе (код шаблона ниже):

<!DOCTYPE html>

<HTML>

<BODY>

<p>messages.csv стёрт</p>

</BODY>

</HTML>

Методические указания «Организация подготовки, выполнение и защита курсовой работы» для МУ ВиттеЗапрос по адресу 127.0.0.1:5000/get_all.json позволяет выкачать с сервера информацию о всех сообщениях в формате json. Возвращается список сообщений messages, в котором каждое сообщение кодируется как json-объект с ключами id, datetime, ip, text.
Справа: пример возможного результата при просмотре из браузера Firefox (используя встроенный функционал просмотра json-выгрузок)

Расшифровка и зашифровка сообщений производится через написанный ранее модуль cypher.py.

Программу сохранить под именем srv.py

Папку templates с шаблонами приложить к ответу

Процедура проверки

Проверяющий запускает сервер, начинает с запроса на reset, после чего заходит на адрес по ID студента. Отправляет несколько сообщений, проверяет созданный csv-файл messages.csv, проверяет json-выгрузку.

Выходные данные

Сервер работает, создавая и модифицируя содержимое messages.csv в зависимости от спецификации.

3.2.4. Задание № 4

Приложение для управления контентом

С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI)

формулировка

Сделать приложение, которое будет управлять содержимым csv-файла на сервере.

Методические указания

Сделайте улучшение приложения из задания 2.

Приложение должно требовать от пользователя в диалоге выбрать файл имеено формата *.csv, и давать ошибку при попытке загрузки файла другого типа.

Если csv-файл отсутствует, его можно создать из приложения, так же как текстовый файл в задании 2.  

В окне вывода расшифрованной информации нужно выводить не просто тексты, а табличку из 4 колонок, заполняемую данными из csv-файла (то есть колонки id, время выгрузки, ip-адрес и расшифрованный текст).

Добавление новой строки в приложении оформляется как полноценный пост на сервере, то есть добавляет новую строку с новым id и с отметкой текущего времени. В качестве ip-адреса указывается слово admin.

При наведении мышки на ряд в таблице, слева от ряда возникают 2 стрелочки — вверх и вниз, и крестик. При нажатии стрелочки вверх запись движется в таблице вверху, при нажатии стрелочки вниз – вниз. При нажатии крестика сообщение удаляется.

Если сообщение уже первое или последнее в списке, то соответствующая стрелочка должна быть неактивна. При наведении мышки на другой ряд, стрелочки и крестик переключаются на новый ряд.

Приложение опирается на cypher.py при расшифровке сообщений из csv-файла и в процессе зашифровки сообщений при сохранении csv-файла.

Изменения, вносимые в messages.csv в приложении, тут же отражаются на сервере и наоборот.

Программу сохранить под именем admin.py

Процедура проверки

Проверяющий запускает сервер и административное приложение. Загружает в приложение используемый сервером файл messages.csv. Выполняет команды добавления и удаления строк в приложении, проверяет правильность форматов данных в окне приложения, в файле messages.csv, а так же правильность выгрузок с сервера.

Ожидаемый результат

Работа интерфейса admin.py согласно спецификации. Бесшовная интеграция админки и сервера.

Оцените статью:
Помощь студентам дистанционного обучения: примеры работ, ВУЗы, консультации
Заявка на расчет