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

  • Разработка приложения «Поиск элементов в массиве»

  • Теоретическая часть Язык программирования PYTHON

  • Списки в Pyhton Список

  • Метод Что делает list.append

  • Способ создания и заполнения одномерного списка

  • Графический интерфейс пользователя

  • Список использованных источников

  • ПОавыав. Российской федерации федеральное государственное бюджетное образовательное


    Скачать 2.44 Mb.
    НазваниеРоссийской федерации федеральное государственное бюджетное образовательное
    АнкорПОавыав
    Дата13.06.2022
    Размер2.44 Mb.
    Формат файлаdocx
    Имя файлаKursovaya_Manokhin.docx
    ТипПояснительная записка
    #588599

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ

    РОССИЙСКОЙ ФЕДЕРАЦИИ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

    УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

    ТЮМЕНСКИЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ

    ТОБОЛЬСКИЙ ИНДУСТРИАЛЬНЫЙ ИНСТИТУТ (филиал)

    Кафедра естественнонаучных и гуманитарных дисциплин

    Направление подготовки

    15.03.04 Автоматизация технологических процессов и производств,

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

    и производств в нефтяной и газовой промышленности

    Разработка приложения «Поиск элементов в массиве»

    на языке программирования Python

    Пояснительная записка

    к курсовой работе по дисциплине

    «Программирование и алгоритмизация»
    Руководитель:

    канд. пед. наук, доцент

    ___________ А.А. Ольштейн

    (подпись)
    Выполнила:

    обучающаяся группы АТПб-21 ___________ А.А.Манохин

    (подпись)
    Тобольск, 2022
    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

    УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ ТЮМЕНСКИЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ ТОБОЛЬСКИЙ ИНДУСТРИАЛЬНЫЙ ИНСТИТУТ (филиал)

    Кафедра естественнонаучных и гуманитарных дисциплин
    ЗАДАНИЕ

    на курсовую работу по дисциплине

    «Программирование и алгоритмизация»
    обучающейся Манохин Артем Александрович

    (Фамилия, И.О. обучающегося)

    Группа АТПб-21

    (наименование группы)

    Направление подготовки 15.03.04 Автоматизация технологических процессов и производств, профиль Автоматизация технологических процессов и производств в нефтяной и газовой промышленности

    1. Тема работы Разработка приложения «поиск элементов в массиве» на языке программирования Python

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

    3. Перечень и объем текстовых, графических и электронных материалов

    Пояснительная записка 20 страниц.

    4. Основная литература

    5. Дата выдачи задания «10» февраля 2022 года

    Задание принял к исполнению

    (подпись обучающегося) (Ф.И.О. обучающегося)
    Отзыв руководителя


    Руководитель работы

    (подпись руководителя) (Ф.И.О. руководителя)
    «» 2022 года

    Оглавление


    Введение 4

    Теоретическая часть 5

    Язык программирования PYTHON 5

    Списки в Pyhton 7

    Функции и методы списка 8

    Способ создания и заполнения одномерного списка 9

    Способы вывода 9

    Практическая часть 10

    Графический интерфейс пользователя 10

    Разбор кода программы 12

    Заключение 21

    Список использованных источников 23


    Введение

    В данной работе будет рассматриваться создание программы с помощью относительно молодого языка программирования Python. Этот язык быстро набирает популярность благодаря своей гибкости и простоте использования. Его используют не только рядовые программисты, он так же актуален и в крупных компаниях таких как Google, Intel, Cisco и др. Несмотря на свою простоту, Python впитал в себя элементы многих языков программирования таких как C++, Java и др., поддерживает большинство существующих платформ, обеспечивая высокую скорость разработки приложений, что делает его очень эффективным. Python продолжает развиваться, являясь на данный момент довольно перспективным как для использования уже состоявшимися программистами, так и для изучения начинающими.

    Теоретическая часть

    Язык программирования PYTHON

    Python – это кросс-платформенный интерпретируемый объектно-ориентированный язык программирования высокого уровня. Так как Python является объектно-ориентируемым языком, почти все данные, включая даже типы данных, являются объектами. В переменных сохраняется не сам объект, а ссылка на него.
    Интерпретатор Python реализован почти для всех платформ и операционных систем. Благодаря этому Python позволяет писать переносимые программы. При этом он не имеет недостатков аналогичных переносимых языков программирования. Например, типы данных С++ на разных платформах могу занимать очень разное количество памяти. Отсутствие необходимости переписывать код программы при переносе ее с одной платформы или ОС на другую является большим плюсом в пользу Python’а при выборе языка программирования.
    В этом языке программирования преобладает минималистический подход. В Python’е как правило есть один очевидный и наиболее простой путь решения поставленной задачи и небольшое количество неочевидных, в то время как в аналогичных языках одна и та же задача имеет несколько альтернативных путей решения. Так же Python является обладателем наиболее простого и удобочитаемого синтаксиса.
    Благодаря минималистическому подходу в программном обеспечении, Python имеет высокую скорость разработки. Код программы, написанной на этом языке, намного короче, чем альтернативный код на других языках. Например, в сравнении с C++ код Python’а меньше примерно на треть. Сокращение размеров кода и сложности его синтаксиса существенно экономит время разработчика, начиная с непосредственно написания кода, заканчивая его отладкой.

    Помимо этого кода Python’а просто выглядит более эстетично и приятно глазу, и намного легче разобрать код, написанный другим человеком.
    Важной чертой Python’а так же является его расширяемость. Он имеет довольно обширные и переносимые стандартные библиотеки, но помимо этого позволяет добавлять библиотеки сторонних разработчиков или разработанные самостоятельно.
    Возможности Python’а обширны. С его помощью можно создавать программы для системного администрирования, так как он имеет встроенные интерфейсы доступа к службам операционных систем, можно разрабатывать графический интерфейс приложений. Благодаря встроенным интернет-модулям возможно создавать сетевые программы. Так же Python имеет интерфейсы доступа к основным реляционным базам данных. И это далеко не весь список возможностей этого языка, в него можно так же включить программирование игр,математических исчеслений, работа с xml-документами и много другое вплоть до разработки искусственного интеллекта .

    Основные типы данных языка Python:

    • логический;

    Логический тип данных может принимать одно из двух значений – True(истина) или False(ложь).

    • числовой;

    Числовой тип данных включает в себя целые (integer), вещественные (float) и комплексные (complex) числа.

    • строковый;

    Строковый тип представляет из себя последовательности символов.

    • списки;

    Списки – это упорядоченные последовательности значений произвольных типов.

    • множества;

    Множества – неупорядоченные наборы значений.

    • словари
      Словари – это отображения, коллекция объектов, доступ к которым осуществляется по ключам.


    Для написания программы в данной работе потребуются следующие типы данных: логический, числовой, строковый, списки и кортежи.
    Основные конструкции языка Python: функции и классы.
    Функции – это изолированные от остальной программы участки кода, они выполняются только когда вызываются и позволяют использовать один и тот же набор инструкций несколько раз. Функции позволяют избежать лишнего дублирования кода, уменьшают и упрощают его, позволяют разбить выполнение сложной задачи на функциональные составляющие. Функции могут принимать параметры (но необязательно), возвращать значение (тоже необязательно). Код функции обязательно должен размещаться до места ее вызова. Описание функции начинается со слова def, далее идет имя функции и в скобках принимаемые ею параметры, завершается строка двоеточием. Далее идет оформленное в виде блока с отступом тело функции – описание тех действий, которые функция должна выполнить.
    Классы представляют собой программные компоненты, которые используются для реализации новых типов объектов. Классы являются основными инструментами объектно-ориентированного программирования в языке Python.

    С помощью классов код разбивается на составляющие, и новая программа пишется с помощью адаптации существующего кода, а не полного его изменения. Классы поддерживают наследование: дочерний класс наследует все атрибуты родительского. Основное назначение классов – создание новых объектов и манипуляция ими.

    Списки в Pyhton

    Список – последовательность элементов, разделенных запятыми, заключенных между квадратными скобками ([]), пронумерованных от 0 слева направо.

    Элементы списка могут быть разного типа данных.

    a = [8, 15, 4, “ФИО”, 9, “группа”]

    print (a)

    Элементы списка можно проиндексировать справа налево, начиная с -1.

    Функции и методы списка

    Для списков доступны основные встроенные функции, а также методы списков.

    Методы работы со списками


    Метод

    Что делает

    list.append(x)

    Добавляет элемент в конец списка.

    list.extend(x)

    Расширет список list, добавляя в конец все элементы списка.

    list.insert(x)

    Вставляет на i-ый элемент значение x.

    List.removed(x)

    Удаляет 1-ый элемент в списке, имеющий значение x.

    list.reverse( )

    Разворачивает список.

    list.copy( )

    Поверхностная копия списка.

    list.clear( )

    Очищает список.


    list.index(x, [start [, end]])

    Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)

    list.count(x)

    Возвращает количество элементов со значением x

    list.sort([key=функция])

    Сортирует список на основе функции

    list. pop ([i])

    Удаляет i-ый элемент в списке и возвращает его. Если индекс не указан, удаляется последний элемент.



    Способ создания и заполнения одномерного списка

    1. Явный вид.

    B = [1, 3, 5]

    Значение, вводимое пользователем, добавляется в конец списка при помощи метода b. append( ).

    1. Список должен быть пустым. b = []

    2. Значение элементов списка одинаковыми значениями.

    k1= [ “С новым годом!”] * 3

    k2= [“Поздравляем!”] * 3

    print(k1)

    print(k2)

    1. Заполнение списка при помощи цикла.

    N = int(input(“Кол-во человек ”))

    s[0] = N

    for I in range (N):

    s[i] = int(input(“s[i] = ”))

    print(“Список отсутствующих”, s)

    1. Преобразование вводимой строки в списке при помощи метода b.split( ).



    Способы вывода

    1 способ. Явный вид.

    print( )

    2 способ. Вывод поэлементно, используя цикл for.

    s = [‘С’, ’о’, ‘б’, ‘ы’, ‘т’, ‘и’, ‘е’]

    print(“Список – ”)

    for I in range(len(s)):

    print(s, [i])
    Строки в Python - упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.

    Практическая часть

    Анкета-методическое средство для получения первичной социологической и социально-психологической информации, оформляемое в виде набора вопросов, логически связанных с центральной задачей исследования. Анкетные опросы проводятся в целях выяснения биографических данных, мнений, оценок, ценностных ориентаций, установок, диспозиций и т. п.
    Графический интерфейс пользователя
    Графический интерфейс пользователя (в дальнейшем GUI) позволяет осуществлять взаимодействие человека с программой в форме диалога с использованием окон, меню и элементов управления (диалоговых панелей, кнопок и т. д.) вместо использования текстовых команд. В настоящее время программы, написанные без использования GUI не актуальны. Разработано много различных вариантов GUI со своими достоинствами и недостатками, поддерживающих различные языки программирования.
    Для языка Python существует много различных GUI-библиотек, их полный список представлен на официальном сайте. Наиболее проверенными и популярными кросс-платформенными библиотеками являются PyQt и Tkinter. PyQt является привязкой Qt к языку Python. Qt помимо классов графического интерфейса содержит много различных модулей, Tkinter – исключительно GUI.

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

    В работе были использованы следующие компоненты PyQt:

    1. окно;

    2. надпись;

    3. командная кнопка;

    4. однострочное текстовое поле;

    5. раскрывающийся список;

    6. менеджер компоновки;

    7. таблица.

    Создание и управление окном производится посредством класса QWidjet. QWidjet является базовым классом для всех компонентов, поэтому любой компонент, не имеющий родителя будет обладать собственным окном.

    Командная кнопка реализуется с помощью класса QPushButton. При нажатии на командную кнопку создается сигнал, при получении которого указанная в методе connect( ) функция выполняет содержащиеся в ней инструкции. В данной программе используется для запуска функций удаления, добавления, редактирования записей и поиска.

    Однострочное текстовое поле предназначено для ввода и редактирования текста небольшого объема, реализуется классом QLineEdit. В данной программе используется для ввода строки, по которой будет осуществляться поиск и для ввода значений новой записи.

    С помощью класса QComboBox реализуется раскрывающийся список, предоставляющий возможность выбора элемента. В данной программе используется для выбора условий поиска по диапазону.
    Класс QGridLayout позволяет выровнять элементы в окне по сетке. В данной программе используется для расположения элементов в обоих окнах.

    Таблица реализуется с помощью класса QTableView. Позволяет отобразить данные из анкеты, не нарушая их структуры. В данной программе используется для визуализации данных анкеты и их редактирования путем ввода нового значения в ячейку.

    Разбор кода программы
    1 – 3 строки: подключение модулей sys, QtCore и QtGui, SQLite3, которые необходимы для создания приложения, использования элементов графического интерфейса, использования sql-команд при работе с анкетой; 4 строка: создание объекта приложения; 5 – 6 строки: создание соединения с базой данных example.db и объекта Cursor для работы с анкетой (рисунок 1).


    7 – 9 строки: функция, заполняющая ячейку таблицы текстом, где входные параметры имя таблицы GUI, индекс ячейки и текст (рисунок 2).



    10 – 14 строки: функция, получающая текст из ячейки таблицы или пустую строку при отсутствии текста в ячейке, где входные параметры имя таблицы GUI и индексы ячейки (рисунок 3).



    15 – 21 строки: функция, заполняющая таблицу значениями из таблицы текущей анкеты, где входные параметры имя таблицы в анкете, имя таблицы GUI, количество полей (столбцов) в таблице, j – счетчик строк, i – счетчик столбцов, row – выборка всех записей из таблицы анкеты(рисунок 4).



    23 строка: создание класса, который будет содержать операции для кнопок; 24 – 34 строки: инициализация входящих параметров класса – имя таблицы GUI, имя текстового поля, количество столбцов, имена раскрывающихся списков, имя таблицы текущей анкеты, списки с именами полей в анкете и именами полей в таблице GUI, строка типа ‘?,?,…,?’ с количеством записей, имя ключевого поля; 35 и 36 строки: получение текущего количества записей в анкете (рисунок 5).



    37 строка: создание функции в классе Operation для добавления записи, где arg – список значений новой строки; 38 и 45 строки: отключение сортировки на время добавления записи; 39 строка: создание новой строки в таблице GUI; 40 – 42 строки: добавление записи в анкете и сохранение изменений; 43 и 44 строки: заполнение новой строки GUI соответствующими значениями из arg (рисунок 6).



    46 строка: создание функции в классе Operation для удаления записи; 47 и 48 строки: получение индекса выбранной строки и текста ключевого поля; 49 строка: удаление строки из таблицы GUI; 50 – 52 строки: удаление строки из таблицы анкеты и сохранение изменений (рисунок 7).



    53 – 58 строки: функция в классе Operation для внесения изменения в запись, где входящие параметры индексы изменяемой ячейки; функция вносит изменения в запись анкеты в соответствии с изменением значений в ячейках таблицы GUI и сохраняет изменения (рисунок 8).



    59 – 69 строки: функция в классе Operation для поиска строк, производит поиск по вхождению подстроки в строку, отображает только те строки GUI, в ячейках которых нашлась искомая подстрока, остальные строки скрывает; k – флажок для строк, которые нужно отобразить; i – счетчик строк; j – счетчик столбцов (рисунок 9).



    70 – 72 строки: функция в классе Operation, сбрасывающая результаты поиска, отображает все строки в таблице GUI (рисунок 10).



    73 строка: создание функции в классе Operation, которая будет проводить поиск по диапазону; k – флажок для строк, которые нужно отобразить; i – счетчик строк; t – значение, по которому проводится сравнение; t2 – значение ячейки, с которой проводится сравнение; 76 – 78 строки: определение номера столбца, по которому проводится сравнение, имя столбца выбирается пользователем в раскрывающемся списке cbox2, выбор знака сравнения выбирается пользователем в раскрывающемся списке cbox1; 79 – 86 строки: отображение всех строк GUI, значения ячеек которых по выбранному столбцу меньше указанного значения; 87 – 94 строки: отображение всех строк GUI, значения ячеек которых по выбранному столбцу больше заданного значения (рисунок 11).



    97 строчка: создание функции, которая будет создавать модальное окно для добавления новой записи; 98 – 101 строчки: функция, которая считывает введенные в текстовые поля значения, вызывает функцию добавления записи класса Operation, передает в нее список значений и закрывает модальное окно (рисунок 12).



    102 – 136 строки: тело функции Ins; 102 – 104 строки: создание модального окна, блокирующего основное; 105 и 122 – 135 строки: создание табличной разметки окна и размещение в ней элементов; 106 – 111 строки: создание текстовых полей для ввода значений новой записи; 112 – 117 строки: создание надписей, которые будут указывать названия колонок таблицы для текстовых полей; 118 – 121 строки: создание кнопки и установка вызова функции Ins0 на ее нажатие, после чего функция Ins0 запустит функцию добавления записи в таблицы анкеты и GUI; 136 строка: отображение модального окна (рисунок 13).



    138 – 141 строки: задание стартовых параметров анкеты – список имен колонок на русском языке, список имен полей анкеты, количество полей в анкеты, имя таблицы анкеты, текущее количество записей в анкете (рисунок 14).

    145 и 146 строки: создание основного окна для таблицы; 146 – 151 строки: создание и заполнение таблицы GUI, установка размеров ячеек и самой таблицы; 152 строка: включение встроенной в таблицу GUI сортировки по столбцам (рисунок 15).



    153 – 163 строки: создание кнопок для управления таблицей (рисунок 16).



    164 – 166 строки: создание раскрывающегося списка для выбора знака сравнения при поиске по диапазону; 167 – 169 строки: создание раскрывающегося списка для выбора столбца для поиска по диапазону; 170 строка: создание текстового поля для ввода значения для поиска (рисунок 17).


    171 – 182 строки: создание табличной разметки окна и размещение в ней элементов; 183 строка: автоматическая установка размеров окна с учетом содержимого (рисунок 18).


    184 строка: создание экземпляра класса Operation с нужными входными параметрами; 185 – 189: вызов функций по щелчку соответствующих им кнопок; 190 – 192 строки: вызов функции изменения соответствующих записей в БД при изменении ячейки таблицы с индексами i, j (рисунок 19).


    193 строка: отображение основного окна; 194 строка: функция модуля sys для завершения программы; 195 строка: сохранение всех изменений в анкете; 196 строка: закрытие соединения с анкетой (рисунок 20).


    Заключение

    В процессе работы были выявлены и рассмотрены основные особенности языка программирования Python:

    1. программное обеспечение;

    2. высокая скорость разработки;

    3. переносимость программ;

    4. библиотеки;

    5. широкие возможности применения;

    6. расширяемость;

    7. удобство использования;

    8. встроенные типы данных;

    9. возможности использования классов.

    В работе были рассмотрены основы подключения к базам данных и взаимодействия с ними. Описаны основные методы и SQL-команды для создания базы данных, соединения с ней, сохранения результатов транзакций и закрытия соединения, удаления, добавления и редактирования записей, осуществления различных выборок из базы данных.
    Так как написанная без графического интерфейса программа не актуальна на данный момент, необходимо было выбрать библиотеку графического интерфейса для написания программы. В результате проведенного сравнения двух разных GUI для языка Python – PyQt и Tkinter – выявлены преимущества библиотеки Qt, которая и была выбрана для написания графического интерфейса.

    Преимущества PyQt:

    1. большая база компонентов;

    2. красивый внешний вид компонентов;

    3. хорошая документация;

    4. универсальность.

    В результате данной работы была написана программа на языке Python, реализующая визуальный интерфейс для готовой базы данных. Благодаря упрощенному синтаксису и структуре языка программа имеет относительно небольшой код – 197 строк. Программа реализована с использованием большого количества функций и одного пользовательского класса.
    Программа имеет простой интерфейс, позволяющий легко выполнить требуемые операции над базой данных. Он состоит одной таблицы, пяти управляющих кнопок, двух раскрывающихся списков и нескольких текстовых полей и надписей. Так же для удобства часть программы имеет собственное модально окно, блокирующее основное.

    Программа позволяет выполнить следующие действия:

    1. удалить выбранную запись одним кликом кнопки;

    2. добавить новую запись посредством модального окна и нажатия двух кнопок;

    3. изменить запись двойным щелчком по таблице;

    4. выполнить поиск по ключевому слову или значению одним кликом соответствующей кнопки;

    5. выполнить поиск по диапазону меньше или больше ключевого значения с помощью выбора двух условий поиска и одного клика соответствующей кнопки;

    6. выполнить сортировку по выбранному полю щелчком на заголовок поля в таблице.

    Список использованных источников

    1.Прохоренок Н.А. Python 3 и PyQt.: Разработка приложений. – Санкт-Петербург: БХВ-Петербург, 2012, 703c.

    2.Лутц М. Изучаем Python: 4-е издание. – Москва: Символ, 2011, 1272c.

    3.Интерактивный учебник языка Python. [электронный ресурс] // Pythontutor. – Амстердам, 2012 – 2014. – URL: http://pythontutor.ru/ (дата обращения 01.05.2015).

    4.Python. Лекция 10. Работа с базой данных. [электронный ресурс] // IdeaFix. – Москва, 2015. – URL: http://ideafix.name/wp-content/uploads/2012/05/Python-10.pdf (дата обращения 14.04.2015).
    5.Прохоренок Н.А. PyQt.: Создание оконных приложений на Python3. – Санкт-Петербург: СамИздат, 2011, 243с.

    6.Райордан Р. Основы реляционных баз данных.: Базовый курс. Теория и практика. – Москва: Русская редакция, 2001, 390с.
    7.Python. Лекция 4. Элементы ООП. [электронный ресурс] // IdeaFix. – Москва, 2015. – URL: http://ideafix.name/wp-content/uploads/2012/03/Python-4.pdf (дата обращения 29.05.2015).
    8.11.13. sqlite3 – DB-API 2.0 interface for SQLite databases. [электронный ресурс] // Python Software Foundation. – Франкфурт-на-Майне, 2015. – URL: https://docs.python.org/2/library/sqlite3.html (дата обращения 14.04.2015).
    9.PyQt4 Reference Guide. [электронный ресурс] // SourceForge. – Маунтин Вью, 2015. – URL: http://pyqt.sourceforge.net/Docs/PyQt4/ (дата обращения 14.04.2015).
    10.Грэг Валтерс. HOW-TO: программа на Python, ч. 7. [электронный ресурс] // Full Circle Magazine #27. – Москва, 2009. – URL: http://help.ubuntu.ru/fullcircle/33/python_ч_7 (дата обращения 14.04.2015)
    11.Сравнение разработки графического интерфейса с помощью библиотек PyQt и Tkinter на примере программы 'Вычислитель дат и дней'. [электронный ресурс] // Лаборатория юного линуксоида. – Киц, 2013. – URL: http://younglinux.info/projects/tkinter-pyqt (дата обращения 6.03.2015)
    12.SQL.ru. [электронный ресурс] // Форумы. – Москва, 2000 – 2015.– URL: http://www.sql.ru/ (дата обращения 03.05.2015).



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