|
контрольная. Хромушкин Александр Николаевич 70174241
Хромушкин Александр Николаевич 70174241
Задание № 2
Разработка экспертной системы
| С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI)
| формулировка
| Некоторый банк хочет внедрить систему управления счетами клиентов, поддерживающую следующие операции:
Пополнение счета клиента. Снятие денег со счета. Запрос остатка средств на счете. Перевод денег между счетами клиентов. Начисление процентов всем клиентам.
| Методические указания
| Необходимо реализовать такую систему. Первоначально у банка 1 кли- ент. Клиент(ы) банка идентифицируются именами (уникальная строка, не содержащая пробелов). Вам необходимо задать в качестве имени клиента
– свою фамилию на английском языке с большой буквы. На вашу фами- лию должен быть открыт счет с суммой равной вашему ID.
Ivanov 70121903
В отдельном поле должна быть предусмотрена возможность ввода про- стых команд, которые поддерживают следующие операции:
|
| DEPOSIT name sum
| Зачислить сумму sum на счет клиента name. Если клиента нет, то он создает- ся и на него заводится счет с указан- ной суммой.
|
| WITHDRAW name sum
| Снять сумму sum со счета клиента name. Если клиента, то счет создается. Баланс при выполнении такой опера- ции у вновь созданного клиента дол- жен быть отрицательный.
|
| BALANCE name
| Узнать остаток средств на счету кли- ента name. Для каждого запроса BALANCE программа должна вывести остаток на счету данного клиента. Ес- ли же у клиента с запрашиваемым именем не открыт счет в банке, выво- дится сообщение «NO CLIENT». Если пользователь не указал имя клиента – то выводится баланс всех существую- щих клиентов.
|
| TRANSFER name1 name2 sum
| Перевести сумму sum со счета клиента name1 на счет клиента name2. Если у какого-либо клиента, то он заводится в
системе и ему создается счет с переве-
|
|
|
|
| денной суммой.
|
| INCOME p
| Начислить всем клиентам, у которых открыты счета, p% от суммы счета. Проценты начисляются только клиен- там с положительным остатком на сче- ту, если у клиента остаток отрицатель- ный, то его счет не меняется. После начисления процентов сумма на счету остается целой, то есть начисляется только целое число денежных единиц. Дробная часть начисленных процентов отбрасывается.
|
|
ПРОГРАММА ДОЛЖНА ОБРАБАТЫВАТЬ ТЕКСТОВЫЕ КОМАНДЫ ИЗ ЛЕВОГО ПОЛЯ ТОЛЬКО ПОСЛЕ НАЖАТИЯ КНОПКИ «Calculate».
То есть, пользователь СНАЧАЛА вводит желаемые команды, при этом каждая новая команда вводится с новой строки, а ПОТОМ нажимает на кнопку «Calculate». Результат должен быть выведен в поле справа.
Количество команд, которые может ввести пользователь за один раз – не более 20. При необходимости следует предусмотреть прокрутку в поле. Пользователю допускается вводить «пустые строки» - несколько раз нажимать на кнопку «enter». При нажатии клавиши ввода «enter», фокус не должен переходить на кнопку «Calculate».
Формат и внешний вид окна определяет разработчик. Для «очистки» ле- вого и правого полей можно предусмотреть кнопку «Clear», при этом данные о ранее введенных клиентах не должны быть потеряны.
ВАЖНО:
Команды вводятся пользователем только большими буквами. Сама ко- манда, имя клиента, суммы (числа) разделяются пробелами. Предполагается, что пользователь такой системы грамотный и коман- ды с аргументами вводит без ошибок в рамках их вышесформулирован- ного синтаксиса. Как только для несуществующего ранее клиента проводится операция пополнения (DEPOSIT), снятия (WITHDRAW) или перевода денег (TRANSFER), он вносится в систему, ему заводится счет с указанным балансом. Все дальнейшие операции проводятся только с этим счетом. Сумма на счету может быть как положительной, так и отрицательной, при этом всегда является целым числом.
Программу сохранить под именем exercise_2.py
| Входные дан- ные
| Преподаватель вводит текст в текстовый файл resourse_2.txt (5-6 абзацев) и сохраняет его.
| Выходные
| Выведите ответ на задание № 1 в текстовый файл result_2.txt.
|
данные
| Damme 4
Is 3
Name 3
Van 3
Bond 2
claude 2
hi 2
my 2
james 1
jean 1
what 1
| ЗАДАНИЕ № 3
Разработка аналитической системы
| С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI)
| формулировка
| Разработать калькулятор со стандартным и расширенным функционалом. Стандартный функционал
Арифметические действия + - * /. Возможность ввода отрицательного числа Возведение в степень. Извлечение квадратного корня. Работа с памятью, состоящей из одной ячейки. Должна быть кнопка сброса и кнопка «=» (равно).
Расширенный функционал
Наличие кнопки/меню перехода в расширенный режим Возможность работы с несколькими ячейками памяти. Количество ячеек памяти выбирается согласно методическим указаниям. Отображение последовательности математических операций и цифр в n-строчном «дисплее», с возможностью «прокрутки». Количество строк «дисплея» калькулятора выбирается согласно методическим
указаниям.
Реализация «инженерных» функций расширенного режима. Кон- кретный перечень функций выбирается согласно методическим ука- заниям.
| Методические указания
| Необходимо разработать программу и GUI для реализации стандартных функций калькулятора. Примерный вид внешнего интерфейса представлен на рисунке.
|
|
Конкретная компоновка элементов интерфейса, внешний вил, цветовая па- литра, максимальное количество отображаемых цифр, число отображаемых строк на «дисплее» калькулятора могут отличаться от представленного ри- сунка и должны согласовываться с руководителем курсовой работы.
Функционал «инженерного» режима работы калькулятора добавляется при нажатии на кнопку перехода в расширенный режим, либо выбора соответ- ствующего пункта меню.
Расширенный режим работы определяется внешним видом «цифрового дисплея», количеством ячеек памяти (кнопки M+, M-, MS, MR, MS) и кнопками, отвечающими за дополнительные функции.
Количество строк «цифрового дисплея» должно определяться как после- довательная сумма всех цифр ID студента. Суммирование отдельных цифр числа должно осуществляться до получения однозначного числа, состоя- щей из 1-й цифры. Данный процесс рекомендуется реализовать с помощью рекурсивной функции. Для данной функции должна быть предусмотрена специальная кнопка .
|
| Например: обучающийся Иванов Иван Иванович, имеет ID 80121986 Сумма всех цифр равна:
8+0+1+2+1+9+8+6=35;
3+5=8
Следовательно, «цифровой дисплей» калькулятора должен иметь 8 строк.
Если после последовательного суммирования ID получилась цифра «1», например, для ID=82121986:
8+2+1+2+1+9+8+6=37;
3+7=10
1+0=1
В этом случае количество строк «цифрового дисплея» должно быть равно 10.
Таким образом, в зависимости от ID число «цифровых строк» дисплея калькулятора может варьироваться от 2-х до 10.
Количество ячеек памяти калькулятора должно определяться как после- довательная сумма последних 3-х чисел ID. Суммирование отдельных цифр числа должно осуществляться до получения однозначного числа, со- стоящей из 1-й цифры. Данный процесс также рекомендуется реализовать с помощью рекурсивной функции.
Например: обучающийся Иванов Иван Иванович, имеет ID 80121986 Сумма последних трёх цифр равна:
9+8+6=23;
2+3=5
Следовательно, должно быть предусмотрено 5 ячеек памяти для работы с (M+, M-, MС, MR, MS).
|
| Если после последовательного суммирования 3-х цифр ID получилась цифра «1», например, для ID=82121001:
0+0+1=1;
В этом случае количество ячеек памяти должно быть равно 2.
Таким образом, в зависимости от ID число ячеек памяти (и соответствую- щих кнопок, реализующий данный функционал) калькулятора может варь- ироваться от 2-х до 9.
Дополнительные функции расширенного режима, которые должны быть реализованы определяются в соответствие с таблицей по первой бук- ве Фамилии обучающегося
|
| Первая
буква фамилии
| Наименова-
ние функ- ции
| Описание функции
|
| А
| Pi,
sin,tan,exp, n!, Frac
| Число Пи, синус, тангенс, экспонента, факто-
риал; отсекает целую часть, оставляет дроб- ную
| Б
| asin, acos,
atg, log_xy, n!
| Арксинус, арккосинус, арктангенс, логарифм по основанию, факториал
| В
| //, ctg, 10х,
asin, acos
| Целочисленное деление, котангенс, 10 в сте-
пени х, арксинус, арккосинус
| Г
| F – E, y√x, lg10
| переключает ввод чисел в экспоненциальном представлении и обратно, y-ый корень числа
x, где y обычно является положительным це- лым числом, десятичный логарифм
| Д
| gcd(a, b); tanh, Ln, X3
| Возвращает наибольший общий делитель a и b; гиперболический тангенс, натуральный ло- гарифм по основанию «e»; возвести в степень
3
| Е
| hypot(x, y),
isqrt(), Sinh, Mod
| функция вычисляет гипотенузу треугольника c катетами x и y; Возвращает целочисленный квадратный корень аргумента, округлённый вниз; гиперболический синус, вычислить
остаток от деления одного числа на другое
| Ж
| tanh, Ln, X3,
| гиперболический тангенс, натуральный лога-
|
|
|
| Frac
| рифм по основанию «e», возвести в степень 3;
отсекает целую часть, оставляет дробную
|
| З
| sinh-1, exp,
asin, acos
| обратный гиперболический синус, экспонен-
та, арксинус, арккосинус
| И
| Mod, tanh, asin, acos
| вычислить остаток от деления одного числа на другое, гиперболический тангенс; арксинус,
арккосинус
| К
| Ln, X3,
Dms, sin
| натуральный логарифм по основанию «e», возвести в степень 3; переводит из десятично-
го вида в формат в градусы, минуты, секунды; синус
| Л
| Х3, asin,
acos
| Возведение в куб, арксинус, арккосинус
| М
| Sinh, Mod,
y√x, lg10
| гиперболический синус, вычислить остаток от деления одного числа на другое; y-ый корень
числа x, где y обычно является положитель- ным целым числом, десятичный логарифм
| Н
| deg, y√x, lg10, sin, cos
| перевод угла в градусах, минутах и секундах в десятичные доли градуса; y-ый корень числа x, где y обычно является положительным це- лым числом, десятичный логарифм; синус,
косинус
| О
| Int, Pi, tanh, Ln, X3
| отображает целую часть десятичного числа, число Пи, выдает значение Pi для расчетов; гиперболический тангенс, натуральный лога-
рифм по основанию «e», возвести в степень 3
| П
| Inv, sin, cos, tan
| обратная функция для sin, cos, tan, переключа-
ет интерфейс на другие функции; синус; коси- нус; тангенс
| Р
| Dms, sin, cos, tan
| переводит из десятичного вида в формат в градусы, минуты, секунды; синус; косинус;
тангенс
| С
| Dms, 10^x, Pi, tanh, Ln
| переводит из десятичного вида в формат в градусы, минуты, секунды; возведение десяти в произвольную степень, число Пи, гипербо-
лический тангенс, натуральный логирифм
| Т
| F – E, acos,
atg, log_xy, n!
| переключает ввод чисел в экспоненциальном
представлении и обратно; арккосинус, арктан- генс, логорифм по основанию, факториал
| У
| Pi,
sin,tan,exp, asin, acos
| Число Пи, синус, тангенс, экспонента, аркси- нус, арккосинус
| Ф
| Mod, tanh, Ln, X3, exp, asin, acos
| вычислить остаток от деления одного числа на другое, гиперболический тангенс, натураль-
ный логарифм по основанию «e», возвести в степень 3, экспонента, арксинус, арккосинус
| Х
| pow(a, b),
n!, F – E,
acos
| функция выполняет возведение числа a в сте- пень b и возвращает затем вещественный ре- зультат; вычисление факториала; переключа- ет ввод чисел в экспоненциальном представ-
лении и обратно; арккосинус
| Ц
| Pi, sin,tan,
| Число Пи, синус, тангенс; Округляет число до
|
|
|
| floor()
| ближайшего целого, но в меньшую сторону
|
| Ч
| sin, cos, tan,
Ln, X3
| синус; косинус; тангенс; натуральный лога-
рифм по основанию «e», возвести в степень 3
| Ш
| Mod, tanh, F – E, acos
| вычислить остаток от деления одного числа на другое, гиперболический тангенс, переключа-
ет ввод чисел в экспоненциальном представ- лении и обратно; арккосинус
| Щ
| F – E, acos, tanh, Ln, X3
| переключает ввод чисел в экспоненциальном представлении и обратно; арккосинус; гипер-
болический тангенс, натуральный логарифм по основанию «e», возвести в степень 3
| Э
| tanh, Ln, X3, log_xy, n!
| гиперболический тангенс, натуральный логи- рифм, возведение в куб, логорифм по основа-
нию, факториал
| Ю
| X3, 10^x,
Pi, tanh
| возведение в куб, возведение десяти в произ- вольную степень, число Пи, гиперболический
тангенс
| Я
| tanh, asin, acos, F – E
| гиперболический тангенс; арксинус, арккоси- нус, переключает ввод чисел в экспоненци-
альном представлении и обратно
|
Примерный внешний вид, реализующий данный функционал может быть следующим:
|
|
ВАЖНО:
Программа должна использовать распространенные библиотеки. Если с согласия руководителя предполагается для реализации дополнительных функций и отрисовки интерфейса использование сторонних библиотек, то в пояснительной записке к курсовой работе должно быть представлено обоснование и подробное их описания. При разработке программы следует использовать принципы объектно- ориентированного программирования. Калькулятор должен работать и корректно выдавать результат. Размер кнопок, цветовая палитра, расположение и т.п. определяется са- мостоятельно. Внешний вид калькулятора не оценивается, однако следует придерживаться традиционных компоновок. При намеренном выполнении некорректных операций, например, извле- чение квадратного корня из отрицательного числа, калькулятор должен на цифровой дисплей выдавать соответствующее сообщение об ошибке. Если же программу останавливает интерпретатор – то проверяемая функция считается не до конца отработанной.
Программу «Калькулятор» сохранить под именем exercise_3.py
| Входные дан- ные
| Преподаватель с помощью мыши вводит числа и выполняет арифметиче- ские операции.
Преподаватель с помощью мыши вводит числа и выбирает заявленные до- полнительные функции.
Преподаватель вводит намеренно некорректные операции (попытка деле- ния на 0)
| Выходные данные
| На цифровом дисплее должен отображаться результат, либо сообщение об ошибке при некорректной операции. Проверяется количество строк в «цифровом дисплее» калькулятора и коли- чество ячеек памяти.
| ЗАДАНИЕ № 4
Задача о Ха- нойских баш- нях
|
С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ (GUI)
| формулировка
| Модифицированная задача о Ханойских башнях:
Существует 8 шпинделей, пронумерованых от 8 до 1 слева направо. На каждом шпинделе надеты диски, в количестве, равном соответствующей цифре из ID студента. Все диски имеют разные диаметры. Диаметр диска равен M * 10 + N, где М – номер шпинделя, на котором надет диск, а N – это номер диска на шпинделе, считая сверху вниз.
Необходимо визуально изобразить предложенную задачу. Диски на шпинделях сделать случайных цветов. На каждом диске отобра- жать цифру, равную его диаметру. Диаметр диска также показывать его фактическим размером в пикселях. Необходимо вычислить, за какое минимальное количество итера- ций переместятся все диски на шпиндель номер 1 по следующим правилам:
а) За одну итерацию можно переместить не более одного диска б) Диски можно класть только с большего на меньший
в) Со шпинделя номер 8 можно перекладывать диски только на шпиндели 7 и 6
г) Со шпинделя номер 1 можно перекладывать диски только на шпиндели номер 2 и 3
д) Со шпинделей от 2 по 7 можно перекладывать диски только на два соседних шпинделя.
Необходимо отобразить начальное и конечное расположение дисков на шпинделях, для этого под изображением Ханойских башен предусмот- реть две кнопки «Начало» и «Окончание». При нажатии на нее, в надписи под схемой должен выводится текст «Итерация ХХ», где ХХ – номер ите- рации (либо 0, либо номер итоговой итерации, соответственно). Необходимо графически отобразить четыре промежуточные итера- ции перекладывания дисков. Для этого:
а) общее количество итераций признаётся равным 100%,
б) ID студента делится на 4 двузначных числа, каждое из которых обозначает итерацию, соответствующую этому проценту выполнения об- щей задачи.
в) Под изображением Ханойских башень предусмотреть четыре по- ля для ввода цифр с процентами выполнения. По-умолчанию добавить туда числа из п. б)
г) Под каждым полем для ввода предусмотреть кнопку, при нажатии на которую схема Ханойской башни отображает расположение дисков на соответствующей итерации. Также в надписи под схемой должен выводит- ся текст «Итерация ХХ», где ХХ – номер итерации
|
| 5. Дать возможность пользователю изменять проценты в полях для ввода цифр, и по нажатию соответствующей кнопки просматривать расположе- ние дисков на данной итерации.
| Методические указания
| Так как задача алгоритмически достаточно проста, то основная часть рабо- ты над задачей студента сводится к правильной визуализации полученных результатов, а также оптимальному поиску промежуточных результатов.
Схема ханойских башен должна выглядеть примерно таким образом:
(В данном примере расположение дисков соответствует ID студента 70256421)
Так как размер диска должен соответствовать его номеру на шпинделе и номеру самого шпинделя, умноженного на 10, то как нетрудно догадаться, максимальный диаметр диска может быть 89. Поэтому для правильной ви- зуализации без наложения дисков рекомеднуется выдерживать расстояние между шпинделями примерно в 100-120 пикселей (для окна формата 1280х1024).
Поскольку диски близких размеров будут отличаться всего на один пик- сель, то для контроля на каждом диске необходимо проставить его диамер в виде цифры. Так как в конце задачи все диски будут находиться на пер- вом шпинделе, а общее количество дисков теоретически может быть равно 72, то рекомендуется сделать толщину одного диска примерно равной 10- 12 пикселям, для указанного окна.
Остальные элементы управления под схемой Ханойской башни рекоменду- ется выстраивать в следующем порядке:
На данном рисунке также видно, как следует разбивать ID студента для выведения промежуточных итогов. При нажатии на кнопки, нужно пока- зать итерации, соответствующие 70%, 25%, 64% и 21% выполнения задачи. Уточнение
Если по какому-либо проценту получается дробная итерация, то необходи- мо её визуализировать как промежуточный этап переноса диска. При этом диск изобразить в воздухе, между тем шпинделем, с которого он снят, и тем, на который он переносится. Номер итерации в таком случае отобра-
жать как дробный, с округлением до 3 цифр после нуля.
|
|
| Программу сохранить под именем
| exercise_4.py
|
|
| Входные дан- ные
| Идентификатор студента. Промежуточные проценты, вводимые преподавателем в соответсвующие поля над кнопками.
| Выходные данные
| На цифровом дисплее должно отображаться окно с начальным расположе- нием дисков на шпинделях Ханойских башень. Шпиндели пронумерованы, на дисках также обозначены соответствующие диаметры. Под ней отобра- жается шесть кнопок и четыре поля для ввода цифр. В нижней части экрана демонстрируется надпись «Итерация 0» При нажатии на любую из шести имеющихся кнопок, либо при заполнении поля ввода другими данными и нажатии на кнопку, схема ханойских ба- шень меняется, для отображения соответствующей итерации. Надпись в
нижней части экрана также меняется.
| |
|
|