Файл: Операции, производимые с данными (Типы структур данных и предметная область).pdf
Добавлен: 30.03.2023
Просмотров: 366
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Типы структур данных и предметная область
1.2 Линейный односвязный список
1.3 Алгоритмы для производимых операций
2. Программная реализация информационно-справочной системы для работы с данными
2.1 Инструменты для разработки
2.3 Руководство пользователя и тестирование программы
Рисунок 8 – Блок-схема алгоритма процесса добавления заявки на вклад в список
Рисунок 9 – Блок-схема алгоритма процесса удаления заявки на вклад из списка
- Получение информации о данных. Предполагается, что все вклады содержатся в файле текстового формата. Вся подробная информация о данных находится в этом файле. При вызове данной функции пользователь имеет возможность ознакомиться с количеством добавленных вкладов (а в случае наличия большого числа вкладов эта функция довольно удобна). Блок-схема приведена на рисунке 10.
- Сохранение данных в файл. После произведения некоторых манипуляций в приложении пользователь может сохранить результат своей работы в файл и в дальнейшем считать сохраненные данные из этого файла для возобновления и продолжения работы (рисунок 11).
Рисунок 10 – Блок-схема алгоритма процесса получения информации о данных
Рисунок 11 – Блок-схема алгоритма процесса сохранения заявок на вклады в файл
- Считывание данных из файла. При вызове данной функции информация из файла, содержащего вклады, выводится непосредственно в окне приложения (рисунок 12).
- Поиск вкладов по заданному критерию. Поиск может быть осуществлен по двум критериям: по дате открытия вклада и названию тарифа. Пользователь может выбрать любой из этих двух критериев. Далее пользователь задает данные для поиска, происходит вызов функции поиска, после чего появляется окно с найденными вкладами по заданному критерию. Если поиск неудачен, в окне указывается сообщение о том, что нет найденных вкладов (рисунок 13).
Рисунок 12 – Блок-схема алгоритма процесса считывания заявок на вклады из файла
Рисунок 13 – Блок-схема алгоритма процесса поиска заявок на вклады по заданному критерию.
2. Программная реализация информационно-справочной системы для работы с данными
2.1 Инструменты для разработки
Для программной реализации был выбран высокоуровневый язык программирования общего назначения Python; версия языка – 3.7.
Python был создан Гвидом Ван Россумом в конце 80-х годов и остается одним из самых простых и эффективных языков программирования на сегодняшний день [15., 20.]. Он может использоваться как для начальных шагов в программировании, так и для решения серьезных научных задач. Python является интерпретируемым и объектно-ориентированным языком, поддерживающим при этом несколько парадигм программирования, в том числе функциональную и императивную [16.]. Основными архитектурными чертами языка можно назвать автоматическое управление памятью, динамическую типизацию и удобные высокоуровневые структуры данных (такие, как кортежи, множества, словари и списки) [18., 19.]. В Python имеются встроенные типы: булевый, строка, Unicode-строка, целое число произвольной точности, число с плавающей запятой, комплексное число и многие другие [22.]. Код в Python организовывается в функции и классы, которые могут объединяться в модули (они в свою очередь могут быть объединены в пакеты). Все значения, в том числе встроенные коллекции и типы данных, функции, методы, модули, классы являются объектами [21.].
Для создания графического интерфейса приложения используется библиотека Python 3 Tkinter.
Tkinter – это пакет для Python, предназначенный для работы с библиотекой Tk [22.]. Библиотека Tk содержит компоненты графического интерфейса пользователя (graphical user interface – GUI), написанные на языке программирования Tcl.
Под графическим интерфейсом пользователя (GUI) подразумеваются все те окна, кнопки, текстовые поля для ввода, скроллеры, списки, радиокнопки, флажки и др., которые можно увидеть на экране, открывая то или иное приложение. Через них происходит взаимодействие с программой и управление ею. Все эти элементы интерфейса называются виджетами (widgets).
Модуль Tkinter включает следующие классы:
- Button (кнопка);
- Radiobutton (радиокнопка)
- Checkbutton (флажок);
- Entry (однострочное поле для ввода);
- Text (многострочное поле для ввода);
- Label (метка);
- Scale (ползунок);
- Scrollbar (полоса прокрутки);
- Frame (виджет для группировки других виджетов);
- LabelFrame (аналог Frame, только с заголовком);
- Listbox (список);
- Canvas (поле для рисования);
- PanedWindow (элемент разделения окна);
- Menu (главное меню);
- Tk (главное единственное окно);
- Toplevel (дочернее окно).
Существует множество библиотек для GUI. Tk далеко не самая популярная, хотя с ее использованием написано немало проектов. Тем не менее, данная библиотека является наиболее простой и удобной, поэтому для создания графического интерфейса в программе была использована именно эта библиотека.
Программное приложение состоит из одного главного окна (которое можно закрыть/свернуть/развернуть). В левой части окна на панели выводится список вкладов, в правой части представлен функционал приложения: текстовые поля для введения данных и создания заявок по вкладам; кнопки для выполнения функций приложения. Для вывода сообщений об ошибках используются дополнительные миниатюрные окна, появляющиеся на экране пользователя.
Для хранения и обработки данных можно также использовать файлы. В языке Python можно взаимодействовать с файлами, выполняя их чтение или запись [17.]. Файл – это именованная область диска, предназначенная для длительного хранения данных в постоянной памяти (например, на жёстком диске).
Чтобы прочитать или записать данные в файл, сначала нужно его открыть. После окончания работы файл необходимо закрыть, чтобы освободить связанные с ним ресурсы. Поэтому в Python операции с файлами выполняются в следующем порядке: открытие файла, чтение или запись файла, закрытие файла.
Для работы с файлами в Python существует несколько режимов [21.]: ′r′ – открытия файла для чтения, ′w′ – открытие файла для записи и т. д.
В разрабатываемом приложении файл будет использован в качестве базы данных, в которой будут содержаться все заявки. Пользователь имеет возможность считать данные из файла, сохранить данные в файл или же удалить какую-либо заявку из базы данных.
2.2 Разработка приложения
Программное приложение состоит из одного главного окна (которое можно закрыть/свернуть/развернуть). В левой части окна на панели выводится список вкладов, в правой части представлен функционал приложения: текстовые поля для введения данных и создания вкладов; кнопки для выполнения функций приложения. Для вывода сообщений об ошибке используются дополнительные миниатюрные окна, появляющиеся на экране пользователя.
В главном окне приложения отражены все необходимые функции (рисунок 14). Пользователь может ввести в соответствующее текстовое поле название банка, название тарифа, дату открытия вклада, валюту, срок (количество лет, на которое выдается вклад), процентную ставку, условия вклада.
Рисунок 14 – Главное окно программы
Диаграмма классов приведена на рисунке 15. Имеется четыре класса: ListNode, LinkedList, Deposit и Bank. Помимо классов, в программе также реализован ряд функций, обеспечивающих функционал приложения.
Классы ListNode и LinkedList отвечают за реализацию структуры данных линейный односвязный список (узел и список, соответственно). В них реализованы основные методы работы со списком:
- append(self, item) – метод добавления в конец списка;
- append_asc_order(self, item) – метод добавления в конец списка с сохранением упорядоченности (в лексикографическом порядке по названию банка);
- length(self) – метод, возвращающий длину списка;
- search(self, equal, x) – метод поиска значения, сравнимого с x при помощи функции equal;
- delete(self, item_id) – метод удаления элемента из списка по номеру.
Рисунок 15 – Диаграмма классов приложения
Класс Deposit описывает банковский вклад. Он имеет атрибуты bank_name (название банка), tariff_name (название тарифа), currency (валюта), deposit_date (дата открытия вклада; по умолчанию 01.01.2019), time (срок – количество лет хранения вклада), percent (процентная ставка), conditions (условия вклада). Также в классе имеется набор методов: метод show (self) предназначен для вывода на список формы, метод tar_eq (self, num) является функцией для проверки соответствия названия тарифа переданному значению, метод date_eq (self, date) работает по аналогии с предыдущим для проверки соответствия даты открытия вклада переданному значению.
Класс Bank описывает информацию о вкладах. Его атрибутами являются список вкладов catalogue и имя файла filename, в котором содержится информация о вкладах. Метод show (self, filename) выводит данные в файл; метод getDepositsOf (self, a) предназначен для нахождения вкладов по названию тарифа или дате открытия вклада.
Исходный код проекта расположен в двух файлах.
-
-
-
- LinkedList.py – файл для хранения классов ListNode и LinkedList, предназначенных для описания узла односвязного списка и непосредственно самого односвязного списка;
- main.py – файл для хранения классов Bank и Deposit, а также для построения графического интерфейса приложения; главный модуль программы.
-
-
2.3 Руководство пользователя и тестирование программы
Для запуска программы пользователю необходимо иметь набор средств, описанных в подразделе 2.1, а именно – интерпретатор языка Python версии 3.1.x или старше, а также библиотеку Tkinter, установленную в качестве пакета для Python для более ранних версий языка (начиная с 3.0.x). Простую загрузку и установку любой общедоступной библиотеки Python можно выполнить с помощью менеджера пакетов pip. Он представляет собой инструмент для управления библиотеками Python. Непосредственный процесс загрузки и установки выполняется при помощи команды pip3 install <название библиотеки>.
Если код главной программы находится в файле с расширением *.py на рабочем столе пользователя (рисунок 16), то для запуска программы достаточно открыть ее в стандартной среде разработки языка IDLE, после чего выбрать пункт меню Run и далее Run Module (рисунок 17).
Рисунок 16 – Файл программы на рабочем столе пользователя
Рисунок 17 – Запуск программы из среды разработки языка
Запуск программы может быть осуществлен способом, описанным в предыдущем абзаце, однако есть и другой способ, без демонстрации пользователю программного кода. Через командную строку необходимо перейти в директорию с файлом (выполнив команду cd <путь к файлу>), после чего ввести команду python code.py (где code.py – имя файла программы).
Следует отметить, что оба способа подразумевают, что программный модуль с реализацией односвязного списка расположен там же, где и модуль главной программы.
В данной работе проведено ручное тестирование – несколько снимков экрана с комментариями. В качестве скриншотов используется состояние программы в процессе эмуляции действий пользователя – клики по активным элементам, в т.ч. кнопкам, набор текста в поля ввода и т.д.
Для добавления информации о вкладе необходимо заполнить все поля и нажать на кнопку «Добавить вклад». После этого текстовые поля сразу же очищаются, а вклад с соответствующими ему атрибутами появляется в левой части окна (рисунок 18).
Данные при добавлении в список сортируются по названию банка.
Рисунок 18 – Окно программы после добавления вклада
Чтобы удалить вклад, необходимо выбрать нужный вклад в списке слева, выделив его левой кнопкой мыши, а после этого нажать на кнопку «Удалить вклад». После выполненного действия удаленный вклад пропадает из списка. В случае, когда пользователь нажимает на кнопку «Удалить вклад», не выбрав сам вклад, появляется сообщение об ошибке (рисунок 19).
Рисунок 19 – Окно с ошибкой в случае попытки удаления невыбранного вклада
Приложение позволяет выполнять поиск среди вкладов по названию тарифа или дате открытия вклада. Чтобы выполнить поиск, необходимо отметить желаемый способ поиска, ввести название тарифа или дату открытия вклада, по которым нужно выполнить поиск и нажать на кнопку «Поиск», после чего появляется окно с информацией о найденных вкладах (рисунки 20, 21).