Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программная инженерия. Курсовые / Курсовая работа ООП. Отчёт.pdf
Скачиваний:
0
Добавлен:
04.01.2026
Размер:
924.52 Кб
Скачать

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

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

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

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

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

ВАРИАНТ 24

Выполнил:

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

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

Группы ИКПИ-32

Яковлев М. А.

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

2024 г.

 

Содержание

 

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

3

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

3

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

4

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

4

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

6

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

8

Программа ....................................................................................................................................

14

1.

mainwindow.cpp..............................................................................................

14

2.

mainwindow.h .................................................................................................

22

3.

add_dialog.cpp ................................................................................................

23

4.

add_dialog.h....................................................................................................

24

5.

function.cpp ....................................................................................................

25

6.

function.h........................................................................................................

28

7.

main.cpp .........................................................................................................

30

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

31

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

31

2

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

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

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

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

Интерфейсная часть программы должна содержать следующие компоненты: окно «О программе», главное меню, всплывающее меню, строку состояния, панель инструментов, подсказки по командам меню и панели инструментов.

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

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

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

1.Создание пустого контейнера;

2.Создание контейнера размера n;

3.Конструкторы и операторы копирования и перемещения;

4.Получение элемента по индексу;

5.Вставка элемента в произвольную позицию;

6.Очистка контейнера;

7.Удаление элемента по индексу;

8.Наличие класса итератора и итераторов begin и end.

3

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

Программа состоит из интерфейса и кода.

1.Интерфейс:

1.1.Основное окно программы.

1.2.Главное меню QMenuBar.

1.3.Панель инструментов QToolBar.

1.4.Таблица QTableWidget.

1.5.Строка поиска по таблице QLineEdit.

1.6.Статусная строка QStatusBar.

2.Диалог добавления / редактирования элемента.

2.1.4 метки QLabel: бренд, название, частота процессора и дополнение.

2.2.4 текстовые поля QLineEdit.

3.Диалог просмотра базы данных в CSV-формате.

3.1.Многострочное текстовое поле QTextEdit.

3.2.Кнопка закрытия окна QPushButton.

4.Программа:

4.1.Основной класс формы QT — окно главной программы.

4.2.Класс формы QT — диалог добавления / редактирования записи.

4.3.Класс формы QT — диалог просмотра базы данных в CSV-формате.

4.4.Шаблонный класс контейнера типа vector.

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

Function — класс основной функции.

1.Поля класса:

1.1.Имя: QString name.

1.2.Тип: QString type.

1.3.Количество аргументов: int n_arguments.

1.4.Указатель на массив с аргументами: QString *arguments.

1.5.Комментарий: QString comment.

2.Методы класса:

2.1.Оператор получения аргумента функции по индексу.

2.2.Изменение имени функции: setName.

2.3.Получение имени функции: getName.

2.4.Изменение типа функции: setType.

2.5.Получение типа функции: getType.

2.6.Изменение комментария функции: setComment.

2.7.Получение комментария функции: getComment.

2.8.Изменение числа аргументов: setNArguments.

2.9.Получение числа аргументов: getNArguments.

Vector — класс контейнера выбранного типа.

1.Поля класса:

1.1.Текущий размер массива: int n_.

1.2.Резервируемый размер массива: int m_.

1.3.Указатель на массив с элементами: T * value.

1.4.Стандартное число резервируемых элементов: int standart.

2.Методы класса:

2.1.Оператор получения элемента по индексу.

4

2.2.Получение размера массива: size.

2.3.Вставка элемента в произвольную позицию: insert.

2.4.Добавление элемента в начало: push_front.

2.5.Добавление элемента в конец: push_back.

2.6.Получение булевого значения «пустой ли массив».

2.7.Удаление элемента произвольного индекса: erase.

2.8.Удаление первого и последнего элемента: pop_front, pop_back

MainWindow — класс главного окна.

1.Поля класса:

1.1.Строка, содержащая текущее имя файла: QString file_.

1.2.Цвет типа функции в таблице: QColor FunctionType.

1.3.Цвет комментария функции в таблице: QColor FunctionComment.

1.4.Контейнер с элементами: Vector<Function> main_vector.

2.Методы класса:

2.1.Выбор действия «Новый файл»: on_action_New_triggered.

2.2.Выбор действия «Открыть»: on_action_—pen_triggered.

2.3.Выбор действия «Сохранить»: on_action_Save_triggered.

2.4.Выбор действия «Сохранить как»: on_action_SaveAs_triggered.

2.5.Выбор действия «Объединить»: on_action_Merge_triggered.

2.6.Выбор действия «Добавить запись»: on_action_Add_triggered.

2.7.Выбор действия «Редактировать запись»: on_action_Edit_triggered.

2.8.Выбор действия «Удалить запись»: on_action_Delete_triggered.

2.9.Выбор действия «Очистить»: on_action_Clear_triggered.

2.10.Выбор действия «Отобразить данные»: on_action_ShowData_triggered.

2.11.Выбор действия «О программе»: on_action_About_triggered.

2.12.Выбор действия «Выйти»: on_action_Exit_triggered.

2.13.Двойной клик по таблице: on_tableWidget_cellDoubleClicked.

2.14.Поиск в LineEdit: on_lineEdit_textChanged.

Add_Dialog — класс диалогового окна для добавления / редактирования записи.

1.Методы класса:

1.1.Установка типа и имени функции: setType, setName

1.2.Установка аргументов функции: setArgs.

1.3.Установка комментария функции: setComment.

1.4.Получение данных в результате диалога: getData.

Show_Data — класс диалогового окна для отображения данных в CSV-формате.

1.Методы класса:

1.1.Установка и получение текста в многострочное поле: setText, getText.

1.2.Нажатие кнопки закрытия: on_pushButton_clicked.

5

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

1. Основное окно программы, размер окна меняется (рис. 1).

Рисунок 1. Основное окно программы.

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

2. Диалог добавления / редактирования записи (рис. 2).

Рисунок 2. Диалоговое окно.

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

6

3. Диалог отображения данных в CSV-формате (рис. 3).

Рисунок 3. Диалог отображения данных в CSV-формате.

Текст изменить нельзя. Только для чтения. После нажатия OK окно закрывается.

7