Скачиваний:
11
Добавлен:
15.08.2023
Размер:
431.42 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет инфокоммуникационных Сетей и систем (иксс)

кафедра программной инженерии и вычислительной техники (пи и вт)

Дисциплина: «Объектно-ориентированное программирование»

Курсовая Работа

вариант №13

Выполнил:

студент 2 курса

дневного отделения

группы ИКПИ-92

Козлов Никита

Санкт-Петербург

2020

Оглавление

Курсовая Работа 1

вариант №13 1

1 Постановка задачи 4

2 Выбор и обоснование типа разрабатываемого контейнера 5

3 Разработка структуры программы 6

4 Разработка собственных классов 7

4.1 dbWindow – класс главного окна и функций яп. 7

Поля класса: 7

Методы класса: 7

4.2 editdialog – класс окна редактирования записей 8

Поля класса: 8

Методы класса: 8

Объекты: 9

4.3 finindb – класс окна поиска по базе данных 9

Поля класса: 9

Методы класса: 9

Объекты: 9

4.4 newitemdialog – класс окна добавления нового элемента 9

Поля класса: 9

Методы класса: 9

Объекты: 9

4.5 FDB – класс базы данных 10

Поля класса: 10

Методы класса: 10

Объекты: 10

4.6 HashTable – класс хэш-таблицы (контейнер) 10

Поля класса: 10

Методы класса: 10

Объекты: 11

4.7 FootbalPlayer – класс описания футбольного игрока 12

5 Разработка интерфейса 13

6 Инструкция пользователю 14

Создание | чтение базы данных: 14

Изменение базы данных: 15

Сохранение базы данных: 16

Слияние баз данных: 16

Поиск по базе данных: 17

Удаление элемента из базы данных: 18

Информация о программе: 19

Комбинации горячих клавиш: 19

7 Код программы 20

CMakeLists.txt 20

dbWindow.h 21

dbwindow.ui 23

dbwindow.cpp 28

editdialog.h 33

editdialog.ui 33

editdialog.cpp 37

finindb.h 38

finindb.ui 38

finindb.cpp 40

newitemdialog.h 41

newitemdialog.ui 41

newitemdialog.cpp 45

FDB.h 46

FDB.cpp 47

FootbalPlayer.h 51

FootbalPlayer.cpp 53

HashTable.h 54

HashTable.cpp 56

main.cpp 59

Структура файлов для базы данных example.dfb 59

1 Постановка задачи

Создать базу данных, работающую на основе контейнера, который следует разработать в процессе выполнения курсовой работы. В качестве прототипа разрабатываемого контейнера можно использовать контейнеры vector или list из библиотеки STL. Для работы с контейнером следует предусмотреть итератор. Остальные требования к контейнеру определяются студентом самостоятельно. 

Разрабатываемая база данных должна быть создана использованием C++ и библиотеки Qt5. Среда программировании Qt Creator.

База данных должна обеспечивать выполнение следующих операций

  • создание базы данных, 

  • объединение баз данных, 

  • добавления и удаления записей, 

  • редактирования записей, 

  • просмотра базы данных, 

  • поиск данных (найти данные, удовлетворяющие заданному критерию), 

  • запись на диск, 

  • чтения с диска. 

Интерфейсная часть программы должна содержать следующие компоненты:

  • окно «ABOUT», 

  • главное меню, 

  • всплывающее меню, 

  • строку состояния, 

  • панель инструментов, 

  • подсказки по командам меню и панели инструментов. 

Пояснительная записка должна содержать:

  • постановку задачи, 

  • обоснование типа разрабатываемого контейнера,

  • разработку структуры программы.

  • разработку отдельных модулей. 

  • выбор и обоснование используемых классов, 

  • разработку собственных классов, 

  • разработку интерфейса пользователя,

  • инструкцию пользователя, 

  • заключение, 

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

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

2 Выбор и обоснование типа разрабатываемого контейнера

В настоящей курсовой работе необходимо разработать контейнер для хранения объектов класса, характеризующего игрока футбольной команды. Контейнер выполнен в виде хэш-таблице, выполненной на базе двусвязного списка из стандартной библиотеки C++. Данный тип контейнера был выбран по нескольким причинам:

  1. Во-первых, хэш-таблица позволяет хранить пары (ключ, значение) что делает удобным конечное использование базы данных.

  2. Во-вторых, хэш-таблица позволяет проводить проверку на вхождение объекта в таблицу за константное время, что так же предоставляет определённое удобство не только при разработке, но и при конечном пользовании.

  3. В-третьих, двусвязный список стандартной библиотеки C++ имеет множество полезных методов, которые облегчат разработку.

Разрабатываемый контейнер обладает следующими функциями:

  1. Создание пары (ключ, значение) для хранения объекта класса FootbalPlayer.

  2. Вызов элемента по ключу.

  3. Удаление элемента.

  4. Замена элемента.

  5. Вывод полной таблицы.

  6. Булевой метод isEmpty() определяющий пуста ли таблица.

  7. Булевой метод isKeyExist() определяющий существует ли передаваемый ключ в таблице.

  8. Метод index_amount() для определения количества ключей, существующих в таблице.

  9. Метод get_index() для получения определённого ключа из списка существующих ключей.

  10. Гетеры для получения информации объекта FotbalPlayer

  11. Защищённый метода hashFunction() для размещения объектов и обработки коллизии.