Файл: Лабораторная работа 1 по дисциплине программирование критических сервисов Студент гр. Иб22з Фамилия И. О.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 140
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)Кафедра информационных управляющих системЛабораторная работа № 1по дисциплине«ПРОГРАММИРОВАНИЕ КРИТИЧЕСКИХ СЕРВИСОВ»Студент гр. ИБ-22з ____________________________ Фамилия И.О.(подпись)Проверил ___________________________ Параничев А.В.(оценка и подпись)Санкт-Петербург2023 год Лабораторная работа № 1Создание и тестирование прототипа GUI приложения на языке Python[желтым - для подстановки своих значений; зеленым - прочитать комментарии и удалить перед отправкой; все выделение убрать перед отправкой; файл переименовать по шаблону]Выполним создание GUI приложения на языке Python для процесса [см. таблицу 1] «Авторизация пользователя в системе» с помощью IDE PyCharm.Добавим новый модуль в среде PyCharm: File->New->Python file->Python file с именем gui_login. Код добавления соответствующих графических элементов:from tkinter import *def login():# извлекаем данные из формыuname=username.get()pwd=password.get()# проверяем заполненные данныеif uname == '' or pwd == '':message.set("Заполните пустые поля!!!")else:if uname == "abcd@mail.ru" and pwd == "123456":message.set("Авторизация успешно выполнена!!")else:message.set("Неправильная пара логин-пароль!(")# функция авторизации формы Tk() из библиотеки tkinterdef guest():message.set("Получен гостевой доступ")def loginForm():global login_windowlogin_window = Tk()# установка заглавия страницыlogin_window.title("Авторизация")# установка ширины и высоты окнаlogin_window.geometry("600x400")#login_window.columnconfigure(0, weight = 2) # вес 0го столбца#login_window.columnconfigure(1, weight = 1) # вес 1го столбца# объявление переменных для использования в других функцияхglobal messageglobal usernameglobal passwordusername = StringVar()password = StringVar()
message = StringVar()# Размещение элементов на форме: Label, Entry,lab_enter = Label(login_window, text="Введите логин и пароль для входа в систему",\bg="green2",fg="orange4")lab_uname = Label(login_window, text="Логин")ent_uname = Entry(login_window, textvariable=username)lab_passw = Label(login_window, text="Пароль")ent_passw = Entry(login_window, textvariable=password, show="*")lab_msg = Label(login_window, text="",textvariable=message)btn_log = Button(login_window, text="Авторизоваться", width=20, height=1, bg="green2", command=login)btn_guest = Button(login_window, text="Получить гостевой доступ", width=30, height=1, bg="green2",command=guest)lab_enter.grid(column = 0, row = 0, columnspan = 2)lab_uname.grid(column = 0, row = 1)ent_uname.grid(column = 1, row = 1)lab_passw.grid(column = 0, row = 2)ent_passw.grid(column = 1, row = 2)lab_msg.grid(column = 0, row = 3, columnspan = 2)btn_log.grid(column = 0, row = 4, columnspan = 2)btn_guest.grid(column = 0, row = 5, columnspan = 2)login_window.mainloop()# вызов функции формыif __name__ == '__main__':loginForm()Индивидуальные задания нужно взять по табл. 1. Поменять все отображаемые цвета по табл. 2.Таблица 1Индивидуальные задания (https://pythonru.com/uroki/obuchenie-python-gui-uroki-po-tkinter#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0-Label )
Таблица 2Цветовые решения из библиотеки Tkinter (источник: https://python-scripts.com/tkinter )Скриншот запуска приложения представлен на рис. 1, фрагмент работы приложения показан на рис. 2.Рис. 1. Скриншот запуска модуля «Авторизация пользователя в системе» [поменять на свое по варианту!!!] с помощью IDE PyCharm Free Community для варианта 00Рис. 2. Фрагмент работы приложения среде PyCharm Free Community для варианта 00На рис. 1 и 2 графические элементы отображены с помощью следующих строк кода:
[оформление таблицы, если не вмещается на 1 страницу: указывается "Окончание"]Таблица 1 (Окончание)
В табл. 1 показаны следующие тесты:
message = StringVar()# Размещение элементов на форме: Label, Entry,lab_enter = Label(login_window, text="Введите логин и пароль для входа в систему",\bg="green2",fg="orange4")lab_uname = Label(login_window, text="Логин")ent_uname = Entry(login_window, textvariable=username)lab_passw = Label(login_window, text="Пароль")ent_passw = Entry(login_window, textvariable=password, show="*")lab_msg = Label(login_window, text="",textvariable=message)btn_log = Button(login_window, text="Авторизоваться", width=20, height=1, bg="green2", command=login)btn_guest = Button(login_window, text="Получить гостевой доступ", width=30, height=1, bg="green2",command=guest)lab_enter.grid(column = 0, row = 0, columnspan = 2)lab_uname.grid(column = 0, row = 1)ent_uname.grid(column = 1, row = 1)lab_passw.grid(column = 0, row = 2)ent_passw.grid(column = 1, row = 2)lab_msg.grid(column = 0, row = 3, columnspan = 2)btn_log.grid(column = 0, row = 4, columnspan = 2)btn_guest.grid(column = 0, row = 5, columnspan = 2)login_window.mainloop()# вызов функции формыif __name__ == '__main__':loginForm()Индивидуальные задания нужно взять по табл. 1. Поменять все отображаемые цвета по табл. 2.Таблица 1Индивидуальные задания (https://pythonru.com/uroki/obuchenie-python-gui-uroki-po-tkinter#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B6%D0%B5%D1%82%D0%B0-Label )
| № по журналу | Предметная область | Добавляемые элементы (сами данные взять из 1й лабораторной работы или сформировать снова): для всех вариантов: Button, Entry | |
| 1 | Сервис поиска (Search Service) | системы хранения данных | Checkbutton, Menu |
| 2 | проекторы | Radiobutton, Spinbox | |
| 3 | среды разработки | Checkbutton, Frame | |
| 4 | мотоциклы | Radiobutton, Scrolledtext | |
| 5 | клавиатуры | Checkbutton, Spinbox | |
| 6 | мыши | Radiobutton, Menu | |
| 7 | бытовые вентиляторы | Checkbutton, Scrolledtext | |
| 8 | сканеры | Radiobutton, Frame | |
| 9 | Сервис пользовательских настроек (Account Service) | бытовые нагреватели | Checkbutton, Menu |
| 10 | системные блоки | Radiobutton, Spinbox | |
| 11 | видеокарты | Checkbutton, Frame | |
| 12 | принтеры | Radiobutton, Scrolledtext | |
| 13 | легковые автомобили | Checkbutton, Spinbox | |
| 14 | бытовые вентиляторы | Radiobutton, Menu | |
| 15 | видеорегистраторы | Checkbutton, Scrolledtext | |
| 16 | операционные системы | Radiobutton, Frame | |
| 17 | Сервис оплаты (Checkout Service) | телевизоры | Checkbutton, Menu |
| 18 | грузовые автомобили | Radiobutton, Spinbox | |
| 19 | смартфоны | Checkbutton, Frame | |
| 20 | ноутбуки | Radiobutton, Scrolledtext | |
| 21 | планшеты | Checkbutton, Spinbox | |
| 22 | жесткие диски | Radiobutton, Menu | |
| 23 | холодильники и морозильники | Checkbutton, Scrolledtext | |
| 24 | наушники | Radiobutton, Frame | |
| 25 | радиотелефоны | Checkbutton, Menu | |
Таблица 2Цветовые решения из библиотеки Tkinter (источник: https://python-scripts.com/tkinter )Скриншот запуска приложения представлен на рис. 1, фрагмент работы приложения показан на рис. 2.Рис. 1. Скриншот запуска модуля «Авторизация пользователя в системе» [поменять на свое по варианту!!!] с помощью IDE PyCharm Free Community для варианта 00Рис. 2. Фрагмент работы приложения среде PyCharm Free Community для варианта 00На рис. 1 и 2 графические элементы отображены с помощью следующих строк кода:
-
кнопка с текстом (Button) "Авторизоваться" создается с помощью следующих параметров::-
размеры кнопки: …; -
положение на экране;
-
-
окно редактирования (Entry) для ввода логина-пароля создается следующим образом:-
размеры окна редактирования: ; -
положение на экране:..;
-
-
…-
Frame…
-
-
…-
Menu…
-
| Номер теста п/п | Тестовая функция и значения параметров | Ожидаемый результат | Фактический результат | Результат теста |
| 1 | assertEqual: send_requests("AANDA") | 3 | 3 | OK |
| 2 | assertNotEqual: send_requests("AANDA") | 0 | 3 | OK |
| 3 | assertEqual: send_requests("") | 0 | -1 | Failed |
[оформление таблицы, если не вмещается на 1 страницу: указывается "Окончание"]Таблица 1 (Окончание)
| Номер теста п/п | Тестовая функция и значения параметров | Ожидаемый результат | Фактический результат | Результат теста |
| 4 | | | | |
| 5 | | | | |
| 6 | | | | |
| 7 | | | | |
| 8 | … | … | … | OK |
-
№ 1, 3, 5 и 7 выполнены успешно (ОК), т.к. ожидаемое значение и фактическое совпали; -
№ 2, 4, 6 и 8 выполнены неуспешно (Failed), т.к. в БД нет идентификатора "100500", невозможно добавить и обновить строку с теми данными, которые уже есть в таблице, невозможно удалить строку по несуществующему индексу 11.