КурсоваяОбъектно-ориентированное программированиеГод: 2024ТГУ: Тольяттинский государственный университет
👁 13💼 0

Готовая курсовая: распределение тем с учётом предпочтений

Загружена: 24.02.2026 10:12

Автоматизация назначения тем курсовых работ среди студентов с учётом их предпочтений. Раскрыты архитектура приложения, алгоритм распределения (комбинация жадного и случайного методов), тесты и листинг на C++. Практическая ценность — снижение ручной нагрузки преподавателя и справедливое распределение тем.

Содержание

Институт Математики, физики и информационных технологий
Прикладная математика и информатика

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

Введение……………………………………………………………………..3
Описание задачи и проектирование архитектуры программного обеспечения……………………………………………………………………….5
Описание задачи и формализация требований к программному обеспечению………………………………………………………………………5
Проектирование архитектуры программного обеспечения……..7
Реализация программного обеспечения………………………………..10
Тестирование программного обеспечения……………………………..14
4 .   Заключение………………………………………………………………20
Список используемой литературы………………………………………...21
Приложение. Листинг рабочего кода разработанного приложения…….22

Введение

В современном образовательном процессе важную роль играет эффективное распределение курсовых работ среди студентов. Это необходимо для обеспечения равномерной нагрузки и учета предпочтений студентов, что способствует повышению мотивации и качества выполняемых работ. Автоматизация данного процесса позволяет избежать субъективных факторов, уменьшает временные затраты преподавателей и студентов, а также упрощает управление академическими заданиями. Таким образом, разработка приложения для распределения тем курсовых работ является актуальной задачей, способной значительно улучшить образовательный процесс
	Предмет исследования — процесс решения задачи автоматического распределения тем курсовых работ среди студентов с учетом их предпочтений.
	Объект исследования — приложение, предназначенное для автоматического распределения тем курсовых работ.
	Цель курсовой работы — разработать программу для автоматического распределения тем курсовых работ среди студентов с возможностью учета их предпочтений.
	Для достижения поставленной цели необходимо решить следующие задачи:
1.	Исследовать существующие методы и алгоритмы распределения задач и ресурсов.
2.	Разработать структуру данных для хранения информации о студентах, темах и предпочтениях.
3.	Реализовать алгоритм распределения тем с учетом предпочтений студентов.
4.	Провести тестирование программы на различных наборах данных для оценки ее эффективности и корректности работы.
	Методы исследования включают в себя изучение и анализ алгоритмов распределения, программирование на языке C++, тестирование и отладка программного обеспечения. В процессе разработки будут использованы методы объектно-ориентированного программирования, структурированного анализа и проектирования, а также методы тестирования программного обеспечения для обеспечения корректности работы приложения.
	Данная курсовая работа направлена на создание эффективного инструмента для автоматизации процесса распределения тем курсовых работ, что позволит повысить эффективность и объективность данного процесса в образовательных учреждениях.

Заключение

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

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

1.	Лафоре, Р. "Объектно-ориентированное программирование в C++". Издательство Вильямс, 2016.
2.	Бьёрн Страуструп. "Язык программирования C++". Издательство БХВ-Петербург, 2013.
3.	Джосаттис, Н. "C++: The Complete Reference". Osborne/McGraw-Hill, 2012.
4.	Саттер, Х., Александреску, А. "Стандарты и рекомендации по C++". Издательство Вильямс, 2005.
5.	"Документация по стандартной библиотеке C++". https://cplusplus.com/reference/, доступ 27 мая 2024 г.

Подробное описание

📘 О чем эта работа

Проект посвящён созданию приложения на C++ для автоматического распределения тем курсовых работ среди студентов. Предмет — алгоритмы распределения и объектно-ориентированная реализация; объект — программа, принимающая список тем, список студентов и их предпочтения и выдающая назначение тем. Цель — реализовать надежный и простой инструмент, который учитывает персональные предпочтения и обеспечивает равномерность распределения.

📚 Что внутри

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

  • Описание требований и проектирование: структура данных для студентов и тем, требования к валидации входных данных и ограничения (количество тем ≥ количество студентов, проверка наличия тем и уникальности имён).
  • Реализация на C++: использованы стандартные контейнеры vector, string, map, а также библиотеки ctime и cstdlib для случайной генерации.
  • Кодовые модули и функции: inputTopics (ввод тем), inputStudents (ввод студентов и парсинг предпочтений через запятую), assignTopics (реализация комбинированного алгоритма — сначала жадное назначение доступных предпочтений, затем случайное распределение оставшихся тем), displayAssignments и main с последовательностью выполнения.
  • Тестовый вариант и тесты: набор unit-тестов (testSingleStudentSingleTopic, testMultipleStudentsSingleTopic, testMultipleStudentsMultipleTopics, testNoPreferredTopics, testPreferredAndRandomTopics) с использованием assert для проверки корректности различных сценариев.
  • Приложение и листинг: в приложении приведены два варианта кода — рабочий режим и тестовый режим с ассертами; подробно показан разбор строк предпочтений, удаление назначенных тем и работа с вектором remainingTopics.

📊 Для кого подходит

Проект полезен студентам по направлениям прикладная математика и информатика, программирование, ООП; подходит для выполнения курсовых/практических заданий по предметам «Объектно-ориентированное программирование» и «Разработка ПО». Код можно использовать как демонстрацию методов валидации вводимых данных, работы с контейнерами STL и тестирования простых алгоритмов распределения.

✨ Особенности

Главные преимущества проекта: конкретная практическая реализация комбинированного алгоритма (жадный + случайный), готовые функции для ввода и парсинга предпочтений студентов, включённый набор тестов и готовый листинг кода на C++. Хранилище реализовано в памяти (векторы), но архитектура позволяет заменить его на БД при необходимости. Реализована проверка наличия тем в списке и предотвращение дублирования назначений.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура проекта соответствует общим требованиям курсовых по ООП: введение, задачи, проектирование, реализация, тестирование, заключение и список литературы. Код легко адаптируется под локальные шаблоны отчёта.

Можно адаптировать?
Да. Парсер предпочтений и механизм хранения легко заменяются: можно подключить ввод из CSV/Excel, добавить БД для хранения тем и расширить стратегию распределения (линейное программирование, оптимизация по метрикам).

Технические примечания

  • Алгоритм assignTopics: сначала проходит цикл по студентам и их preferredTopics и назначает тему, если она ещё доступна, затем случайно распределяет оставшиеся темы через srand/time.
  • Разбор предпочтений: строки с темами разделяются запятыми, проводится проверка наличия темы в перечне topics перед добавлением в preferredTopics.
  • Тестовый набор использует assert для проверки сценариев: единственная тема, недостаток тем, все студенты с уникальными предпочтениями, отсутствие предпочтений у части студентов.

Файл включает полный листинг рабочей и тестовой версий на C++, рекомендации по расширению (логирование, GUI/CLI удобства, подключение БД) и подробные примеры входных данных и ожидаемого вывода. Проект даёт готовую основу для внедрения автоматизированного процесса распределения тем в учебных департаментах.