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

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

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

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

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

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

ВАРИАНТ 24

Выполнил:

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

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

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

Яковлев М. А.

Содержание

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

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

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

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

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

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

Программа 16

1. mainwindow.cpp 16

2. mainwindow.h 24

3. add_dialog.cpp 25

4. add_dialog.h 26

5. function.cpp 27

6. function.h 30

7. main.cpp 32

Заключение 33

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    4. Таблица QTableWidget.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. Имя: QString name.

    2. Тип: QString type.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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