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

  • 1 Основные теоретические сведения 1.1 Язык программирования Python

  • 1.2 Реляционные базы данных

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

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

  • Приложение A . Примеры работы программы

  • Курсовая по программированию на питоне. курсовая программирование питон. Разработка визуального интерфейса для работы с базой данных на языке программирования Python


    Скачать 1.34 Mb.
    НазваниеРазработка визуального интерфейса для работы с базой данных на языке программирования Python
    АнкорКурсовая по программированию на питоне
    Дата12.05.2022
    Размер1.34 Mb.
    Формат файлаdoc
    Имя файлакурсовая программирование питон.doc
    ТипКурсовая
    #523936

    КУРСОВАЯ РАБОТА


    Дисциплина: Программирование




    Тема: Разработка визуального интерфейса для работы с базой данных на языке программирования Python

    Содержание

    Введение…………………………………………………………………………...4

    1 Основные теоретические сведения.……………………………………………6

    1.1 Язык программирования Python..……………………………………..6

    1.2 Реляционные базы данных………………………………………...…..9

    1.3 Графический интерфейс пользователя…………………………..…..11

    2 Разбор кода программы…………………………………………………...…..13

    Заключение……………………………………………………………………….21

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

    Приложение А. Примеры работы программы…………………………………25
    Введение

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

    В современном мире базы данных используются повсеместно. Это обусловлено необходимостью работать с большими объемами информации практически во всех областях деятельности. Базы данных позволяют структурировать и систематизировать информацию, что облегчает и ускоряет работу с ней. Соответственно, перед многими разработчиками ставятся задачи по использованию баз данных в приложениях. Здесь у начинающих программистов могут возникнуть проблемы. Это связано с отсутствием достаточного количества учебных пособий, литературы и документации на русском языке, а понимание текстов на английском языке может вызвать затруднения, а именно на нем и написана большая часть источников. Понимание основ подключения к базам данных и работе с ними в выбранном языке программирования является актуальным вопросом. Далее в работе будут рассмотрены основы работы с базами данных на примере баз данных SQLite.

    Прогресс не стоит на месте, информационные и компьютерные технологии развиваются, расширяются возможности языков программирования и вместе с тем растут требования к разрабатываемым программам. Современного пользователя уже не устроит программа, работающая в консоли и управляемая текстовыми командами. Теперь программа должна быть не только эффективной, но и максимально удобной в использовании для любого человека, вне зависимости от его уровня знаний в области информационных технологий и программирования. Задача разработчика – обеспечить для рядового пользователя возможность управлять базой данных, не вникая в весь процесс взаимодействия с ней. Для выполнения этой задачи существует графический интерфейс пользователя –Graphical User Interface или, сокращенно, GUI. При создании GUI-приложения необходимо уметь не только создать удобную графическую оболочку для программы, но и связать эту оболочку с действиями, которые будет выполнять программа. В данной работе будут рассмотрены несколько базовых элементов GUI и их привязка к конкретным действиям.

    Целью работы является создание программы на языке Python, которая будет работать с базой данных, содержащей информацию о преподавателях. В рамках поставленной цели будут рассмотрены и реализованы следующие задачи:

    • подключение к готовой базе данных;

    • добавление, удаление и редактирование записей в базе данных;

    • поиск и выборка по базе данных;

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

    Объектом исследования данной работы является создание визуального интерфейса для работы с базой данных, предметом исследования данной работы является использования языка программирования Python для работы с базой данных.

    1 Основные теоретические сведения

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

    Python – это кросс-платформенный интерпретируемый объектно-ориентированный язык программирования высокого уровня. Так как Python является объектно-ориентируемым языком, почти все данные, включая даже типы данных, являются объектами. В переменных сохраняется не сам объект, а ссылка на него [1].

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

    В этом языке программирования преобладает минималистический подход. В Python’е как правило есть один очевидный и наиболее простой путь решения поставленной задачи и небольшое количество неочевидных, в то время как в аналогичных языках одна и та же задача имеет несколько альтернативных путей решения. Так же Python является обладателем наиболее простого и удобочитаемого синтаксиса [2].

    Благодаря минималистическому подходу в программном обеспечении, Python имеет высокую скорость разработки. Код программы, написанной на этом языке, намного короче, чем альтернативный код на других языках. Например, в сравнении с C++ код Python’а меньше примерно на треть [2]. Сокращение размеров кода и сложности его синтаксиса существенно экономит время разработчика, начиная с непосредственно написания кода, заканчивая его отладкой. Помимо этого код Python’а просто выглядит более эстетично и приятно глазу, и намного легче разобрать код, написанный другим человеком.

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

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

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

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

    • числовой;

    • строковый;

    • списки;

    • кортежи;

    • множества;

    • словари.

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

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

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

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

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

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

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

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

    Основные конструкции языка Python: функции и классы.

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

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

    1.2 Реляционные базы данных

    Базы данных (далее БД) создаются для систематизирования и структурирования больших объемов информации, чтобы потом извлекать необходимые данные быстро и в любых сочетаниях. Реляционная база данных – это связанная информация, хранящаяся в двумерных таблицах. Ячейки таблицы являются пересечением строк и столбцов. В БД каждый столбец имеет свое ключевое имя, по которому и происходит обращение к нужному столбцу или элементу в столбце.

    Системы управления базами данных (СУБД) – это программное обеспечение для создания, поддержки БД и доступа к ней. В данной работе будет использоваться СУБД SQLite3, так как язык программирования Python имеет встроенный модуль для работы с SQLite3 и она является наиболее удобной для знакомства с программированием баз данных. SQLite3 поддерживает следующие типы данных: целые числа (integer), вещественные числа (real), строковый тип (text), бинарные данные (blob).

    Доступ к БД осуществляется с помощью объекта-соединения. Объект-соединение получают путем вызова функции connect( ). Если указанной БД для него не существует, то она будет создана. Объект-соединение имеет следующие методы:

    • close( );

    • commit( );

    • rollback( );

    • cursor( ).

    Метод close( ) закрывает соединение с текущей БД [4].

    Метод commit( ) завершает транзакцию и сохраняет изменения. Транзакция – это одна или несколько операций, изменяющих БД [4].

    Метод rollback( ) откатывает начатую транзакцию и восстанавливает исходное состояние БД [4].

    Метод cursor( ) возвращает объект-курсор, использующий данное соединение. Курсор хранит информацию о текущей таблице и записи, может быть связан с выполнением только одного SQL-запроса в текущий момент времени, служит для работы с результатами запроса [4].

    Для работы с БД в программе будет использован атрибут объекта курсора execute( ), который преобразовывает SQL-команду в строке в исполняемый код.

    Основные SQL-команды:

    • создание таблицы в БД – CREATE TABLE <имя таблицы> (<имя поля 1 тип поля>, <имя поля 2 тип поля>, …);

    • добавление записи в таблицу БД – INSERT INTO <имя таблицы> VALUES (‘<значение 1>’, ‘<значение 2>’, …);

    • выборка из таблицы БД по условию – SELECT (список полей, включенных в выборку) FROM <имя таблицы> WHERE <имя поля > = <значение>;

    • выборка из таблицы БД с сортировкой – SELECT (список полей, включенных в выборку) FROM <имя таблицы> ORDER BY <имя поля, по которому производится сортировка>;

    • удаление записей из таблицы БД по условию – DELETE FROM <имя таблицы> WHERE <имя поля> = <значение>;

    • изменение записей в таблице БД по условию – UPDATE <имя таблицы> SET <имя изменяемого поля> = <новое значение> WHERE <имя поля> = <значение>.

    Результаты выборок передаются в виде кортежей.

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

    Графический интерфейс пользователя (в дальнейшем GUI) позволяет осуществлять взаимодействие человека с программой в форме диалога с использованием окон, меню и элементов управления (диалоговых панелей, кнопок и т. д.) вместо использования текстовых команд. В настоящее время программы, написанные без использования GUI не актуальны. Разработано много различных вариантов GUI со своими достоинствами и недостатками, поддерживающих различные языки программирования.

    Для языка Python существует много различных GUI-библиотек, их полный список представлен на официальном сайте. Наиболее проверенными и популярными кросс-платформенными библиотеками являются PyQt и Tkinter. PyQt является привязкой Qt к языку Python. Qt помимо классов графического интерфейса содержит много различных модулей, Tkinter – исключительно GUI. Tkinter более старая и ограниченная библиотека, чем Qt. PyQt более универсален, чем Tkinter, подходит для проектов высокой сложности, имеет более широкую базу компонентов и более красивый их внешний вид, по нему легче найти документацию примеры использования. По результатам сравнения для разработки визуального интерфейса было решено использовать в данной программе PyQt [11].

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

    • окно;

    • надпись;

    • командная кнопка;

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

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

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

    • таблица.

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

    Надпись – элемент, содержащий текст, может применяться для информирования, вывода подсказок, содержания html-текста и т.д., реализуется классом QLabel. В данной программе используется для подписей полей в окне добавления записи в БД.

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

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

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

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

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

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

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



    Рисунок 1

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



    Рисунок 2

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



    Рисунок 3

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



    Рисунок 4

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



    Рисунок 5

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



    Рисунок 6

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



    Рисунок 7

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



    Рисунок 8

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



    Рисунок 9

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



    Рисунок 10

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



    Рисунок 11

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



    Рисунок 12

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



    Рисунок 13

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



    Рисунок 14

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



    Рисунок 15

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



    Рисунок 16

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



    Рисунок 17

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



    Рисунок 18

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



    Рисунок 19

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



    Рисунок 20

    Заключение

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

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

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

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

    • библиотеки;

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

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

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

    • встроенные типы данных

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

    В работе были рассмотрены основы подключения к базам данных и взаимодействия с ними. Описаны основные методы и SQL-команды для создания базы данных, соединения с ней, сохранения результатов транзакций и закрытия соединения, удаления, добавления и редактирования записей, осуществления различных выборок из базы данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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).

    Приложение A. Примеры работы программы



    Рисунок А.1 – Начальное состояние программы



    Рисунок А.2 – Модальное окно для добавления записи



    Рисунок А.3 – Результат поиска



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