Главная страница
Навигация по странице:

  • Студент

  • Оглавление Анализ заданий курсовой работы

  • Разработка программного продукта для решения прикладных задач. Разработка экспертной системы 2.3. Разработка аналитической системы

  • 2.4. Разработка логико-аналитической системы ВыводыСписок литературыПриложения

  • Исходные данные к заданиям курсовой работы Исходные данные задачи № 1

  • Исходные данные задачи№2

  • Исходные данные задачи №3

  • 1.2 Анализ методических указаний, входных и выходных данных к заданиям курсовой работы Задание № 1

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

  • 1.3 Выбор и обоснование необходимых библиотек и среды разработки

  • 2.1 Работа с наборами данных (Задание №1)

  • Задание №1 успешно выполнено

  • Задача №2 успешно выполнена 2.3. Разработка аналитической системы (Задание №3)

  • Задание №3 успешно выполнено

  • Приложения Приложение А: Листинг заданий Задание №1

  • Разработка программного продукта для решения прикладных задач. Тема курсовой работы Разработка программного продукта для решения прикладных задач


    Скачать 1.19 Mb.
    НазваниеТема курсовой работы Разработка программного продукта для решения прикладных задач
    АнкорРазработка программного продукта для решения прикладных задач
    Дата06.03.2023
    Размер1.19 Mb.
    Формат файлаdocx
    Имя файлаOtchet.docx
    ТипКурсовая
    #971818
    страница1 из 3
      1   2   3

    Аннотация

    Тема курсовой работы: «Разработка программного продукта для решения прикладных задач»

    ЦЕЛЬ И ЗАДАЧИ ДИСЦИПЛИНЫ

    Цель:

    изучение теоретических и практических основ построения и организации функционирования программных комплексов, их программного обеспечения и способов эффективного применения современных высокоуровневых

    методов программирования

    Задачи:

    - получение теоретических и практических навыков решения прикладных

    информационных задач с использованием методик программирования

    высокого уровня

    - разработка программных продуктов (структурной и функциональной схем

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

    программ, стратегии тестирования и тестовых данных и т.п.);

    Студент: Брянцев Вячеслав Павлович

    Руководитель работы: Блощук Андрей Алексеевич

    Курсовая направлена на проверку знаний и умений студента, таких как: работа с наборами данных; разработка экспертной системы; разработка аналитической системы (расширенного калькулятора); построение интерфейса программ.

    Для заданных заданий были придуманы, разработаны и оптимизированы свои методы решения задач.

    Оглавление

    1. Анализ заданий курсовой работы

      1. Исходные данные к заданиям курсовой работы

      2. Анализ методических указаний, входных и выходных данных к заданиям курсовой работы

      3. Выбор и обоснование необходимых библиотек и среды разработки

    2. Разработка программного продукта для решения прикладных задач.

      1. Разработка экспертной системы

    2.3. Разработка аналитической системы

    2.4. Разработка логико-аналитической системы

    Выводы

    Список литературы

    Приложения:

    Приложение А. Листинг текстов заданий

    Приложение Б. Образцы GUI заданий



    1. Анализ данных заданий курсовой работы

    Задания курсовой созданы для проверки умений и знаний студентов и представляют собой ступеньки, от самого легкого к самом сложному. Чтобы решить все задачи работы необходимо использовать несколько библиотек. Для решения данных заданий будет использована среда разработки – PyCharm.
    Для разработки интерфейса будут применены следующие графические библиотеки: PyQT5, TKinter

    1.1 Исходные данные к заданиям курсовой работы

    Исходные данные задачи № 1 - txt. файл, в который преподаватель пишет свой текст для проверки работы программы; Слова должны быть отсортированы по убыванию их количества появления в тексте, а при одинаковой частоте появления — в лексикографическом порядке; Вывод должен осуществляться в текстовый файл result_1.txt

    Исходные данные задачи№2 –клиент банка; Количество команд, которые может ввести пользователь за один раз – не более 20; ID с фамилией владельца счёта, кол-во денег — это сумма цифр ID студента; Команды вводятся пользователем только большими буквами. Сама команда, имя клиента, суммы разделяются пробелами.

    Исходные данные задачи №3

    Стандартный функционал

    1. Арифметические действия + - * /.

    2. Возможность ввода отрицательного числа

    3. Возведение в степень.

    4. Извлечение квадратного корня.

    5. Работа с памятью, состоящей из одной ячейки.

    6. Должна быть кнопка сброса и кнопка «=».

    Программа должна быть сохранена под именем exercise_3.py

    1.2 Анализ методических указаний, входных и выходных данных к заданиям курсовой работы

    Задание № 1 –каким образом можно добиться желаемого результата сортировки данных.

    Входные данные – импровизированный текст в файле resourse_1.txt.

    Выходные данные – отсортированные слова из файла resourse_1.txt в result_1.txt

    Задание № 2 –информация о том, как действует банк, его функционал и возможности

    Входные данные – команды, вводимые пользователем в предусмотренное для этого окно ввода.

    Выходные данные – результаты команд, которые напечатал пользователь.

    Задание № 3 – необходимо разработать калькулятор с дополнительными инженерными функциями, слотами памяти (их количество равняется сумме последних 3 цифр ID студента, в данном случае – 5) и возможностью изменять режим цифрового дисплея на стандартный или расширенный.

    Входные данные – введённые преподавателем числа и выполнение арифметических операций.

    Выходные данные – на дисплее отображается результат подсчёта программы или сообщение об ошибке, если была использована некорректная операция. В случае включённого режима расширенного дисплея, каждая операция должна быть написана с новой строки. Количество строк фиксировано и равняется сумме всех цифр ID студента – 9 ед.

    Задание №4 – модифицированная задача о Ханойских башнях. 8 стержней. Стартовое расположение дисков равняется цифре в ID студента. Должна быть возможность вывода стартового, конечного положения всех дисков. Должна быть возможность вывода конкретной итерации (в процентах), представленная в четырёх ячейках. Если итерация – дробная, необходимо показать диск, который должен быть перемещён, в воздухе, между двумя стержнями (с которого и на который он перемещается).

    1.3 Выбор и обоснование необходимых библиотек и среды разработки

    Для выполнения поставленных перед студентом задач средой разработки была выбрана программа PyCharm. Необходимые библиотеки:
    PyQT5 – как наиболее востребованная и перспективная графическая библиотека на данный промежуток времени. В частности, из-за возможности быстрого и доступного создания дизайна программ в PyQT5 Designer.
    TKinter – как наиболее удобная, ввиду меньших требований к месту на жёстком диске, а также возможностью отрисовки множества различных объектов.
    Дополнительные библиотеки:
    collections - необходим для решения первой задачи. Конкретнее, нам необходим метод counter, который является подклассом словаря. С его помощью проводится быстрый подсчёт одинаковых слов в исходном файле.

    String - необходим также для решения первой задачи. Метод string. punctuation из данного модуля используется для решения проблемы с пунктуационными и любыми другими символами, позволяет их убрать.

    Sys - используется в связке с PyQT5 для того, чтобы вернуть вызывающему процессу число, обозначающее статус завершения программы.

    Math - используется для решения третьей задачи, поскольку позволяет применять функции: asin, acos, atg, log, factorial, необходимые для решения дополнительной задачи.

    Copy – для создания копий переменных. Необходим в решении четвёртой задачи.

    2. Разработка программного продукта для решения прикладных задач

    2.1 Работа с наборами данных (Задание №1)

    В первом задании необходимо показать умение работать с текстовыми данными. Необходимо проанализировать и отсортировать текст, который преподаватель вписывает в resourse_1.txt и вывести в result_1.txt

    Шаг 1. Определяем необходимые библиотеки.


    Шаг 2. Открываем файл result_txt для записи.



    Шаг 3. Открываем файл resourse_1.txt для чтения и считываем его содержимое. Затем – разбиваем по пробелам.


    Шаг 4. Создаём переменную, которая будет включать в себя все пунктуационные знаки. Проходимся по созданному ранее списку всех слов из текстового файла, удаляя их.


    Шаг 5. Создаём переменную-счётчик, после чего приравниваем список к словарю. Тем самым, мы получаем словарь, где уже подсчитаны все слова и отсортированы в порядке убывания.



    Шаг 6. Сортируем словарь по убыванию. Если несколько слов встречаются одинаковое число раз, то сортируем в лексикографическом порядке. Удаляем все лишние символы и закрываем файл для записи.



    Задание №1 успешно выполнено

    2.2 Разработка экспертной системы (Задание №2)

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

    Шаг 1. Импортируем необходимые библиотеки и GUI, сделанный при помощи PyQT Designer.



    Шаг 2. Создаём класс. При его запуске, происходит инициализация программы: установка GUI, задаётся фиксированный размер окна. Затем кнопки подключаются к двум соответствующим функциям.



    Шаг 3. Функция по очистке окна ввода и окна вывода программы.



    Основная функция программы будут подробнее расписана в приложении А.

    Задача №2 успешно выполнена

    2.3. Разработка аналитической системы (Задание №3)

    В третьей задаче необходимо написать калькулятор со следующими возможностями:
    - Расширенный режим цифрового дисплея
    - Расширенный (инженерный) режим работы калькулятора
    - Пять ячеек памяти

    Библиотеки, необходимые для решения данной задачи.



    Шаг 1. Инициализация переменных.

    Шаг 2. Создание класса, инициализация стартовых параметров: фиксированный размер экрана, подключение кнопок к функциям.






    Шаг 3. Настройка логики работы калькулятора.
    Данная функция отвечает за выведение цифр, по нажатию на соответствующую клавишу, на экран. Далее происходит проверка: включён ли расширенный режим работы дисплея или нет. Данная функция отвечает за простые математические действия, вызывается по нажатию на клавишу «=».
    Данная функция отвечает за отображение операторов (команд) на экране, а также за математические действия.


    Далее представлены функции калькулятора, выполняющие те или иные арифметические операции. Они будут представлены в приложении А.

    Задание №3 успешно выполнено

    2.4. Разработка аналитической системы (Задание №4)

    Шаг 1. Импортируем библиотеки и создаём окно программы.

    Шаг 2. Через словарь задаём цвета для дисков.


    Цвет диска в дальнейшем будет зависеть от его диаметра.

    Шаг 3. Задаём размеры дисков. Размеры дисков выставляются по формуле (M * 10 + N), где M – номер шпинделя (8-1 слева-направо), а N – номер диска на шпинделе сверху-вниз.
    Шаг 5. Функции по отрисовке шпинделей и дисков
    Обе функции не принимают какие-либо данные. Расположение выбрано вручную.

    Шаг 6. Функции, отвечающие за перенос дисков.









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

    Шаг 7. Функции, отвечающие за отрисовку стартовой и конечной позиций дисков.





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

    Шаг 8. Функция, осуществляющая показ конкретной итерации.



    Функция получает число, введённое пользователем в одну из ячеек. После этого вычисляются проценты от общего числа итераций по формуле:
    X * (409934 / 100)
    Где X – число, введённое пользователем.
    Если пользователь вводит числа больше сотни, ему принудительно присваивается максимальное количество итераций.

    Далее идёт проверка на целостность итерации. Если остаток от деления на единицу равен нулю – итерация цельная, выполняется обычный алгоритм.
    Если остаток от деления всё же присутствует, то число дробное.

    Исходя из этого, мы прогоняем алгоритм два раза: с текущими значениями и (число итераций + 1), дабы найти тот диск, что должен быть перемещён. Мы передаём данные о том, между какими шпинделями (начиная с нуля) он находится, а также какой имеет размер.

    После этого мы производим отрисовку диска в воздухе.



    Выводы

    Данная практика является эффективным средством для проверки своих собственных сил. Благодаря ней, я открыл для себя новую графическую библиотеку – PyQT5 – и научился с ней работать. Узнал про модуль collections и научился применять некоторые его методы.
    Также она дала мне знания работы с графическими библиотеками в целом.

    Я смог лучше понять процесс программирования в целом и на Python в частности.


    Список литературы

    1. https://python-scripts.com/tkinter

    2. https://pythonworld.ru/gui/pyqt5-firstprograms.html

    3. https://habr.com/ru/sandbox/153546/

    4. https://docs.python.org/3/library/tkinter.html

    5. https://doc.qt.io/qtforpython/

    6. https://docs.python.org/3/library/collections.html

    7. https://docs.python.org/3/library/copy.html

    8. https://docs.python.org/3/library/math.html

    9. https://docs.python.org/3/library/string.html



    Приложения

    Приложение А: Листинг заданий

    Задание №1

    from collections import Counter
    import string

    """
    Данная программа реализует подсчёт числа
    Одинаковых слов в предложенном ей тексте
    Автор: Брянцев Вячеслав Павлович
    Дата написания: 24.04.2021
    """

    if __name__ == '__main__':
    # Открываем файл для записи.
    write_in_file = open('result_1.txt', 'w')

    # Создаём список из данных в файле и разделяем список по пробелам.
    with open('resourse_1.txt') as f:
    file_list = f.read()
    file_list = file_list.split()

    # Создаём переменную, которая будет отвечать за удаление всех пунктуационных символов.
    # Удаляем все лишние символы, оставляя только слова.
    # Задаём начало счётчика перед циклом.
    tt = str.maketrans(dict.fromkeys(string.punctuation))
    i = 0
    while i != len(file_list):
    file_list[i] = file_list[i].translate(tt)
    i += 1

    # Функция Counter из модуля Collections - это вид словаря, позволяющий, в данном случае, подсчитать количество слов.
    c = Counter(file_list)
    file_list = dict(c)

    # Сортировка словаря по значениям (индекс 1). Если индексы одинаковые - по алфавиту.
    # После этого идёт перевод в тип string.
    # Затем производится "удаление" лишних символов - скобок, кавычек, запятых.
    for i in sorted(file_list.items(), key=lambda para: (para[1], para[0]), reverse=True):
    local_str = str(i)
    local_str = local_str.translate(tt)
    write_in_file.write(local_str + '\n')

    # Закрываем ранее открытый файл.
    write_in_file.close()
      1   2   3


    написать администратору сайта