1.10M

Презентация_курсовой_онлайн_квизы

1.

КОЛЛЕДЖ МИРОВОЙ ЭКОНОМИКИ
И ПЕРЕДОВЫХ ТЕХНОЛОГИЙ
Курсовой проект по теме:
«Система проведения онлайн
викторин»
студента очной формы обучения
специальности
09.02.07 Информационные системы и программирование,
квалификация программист
4 курса группы
______
Фамилии Имени Отчества
Руководитель курсового проекта
преподаватель
Рядинский Артем Евгеньевич
Москва 2026
-квизов и

2.

Актуальность темы исследования
▪
Онлайн -викторины применяют в обучении, на мероприятиях и в
корпоративном тестировании для проверки знаний и вовлечения
▪
Ручная проверка ответов отнимает время и даёт ошибки
проверяет ответы автоматически и сразу показывает результат
▪
Организатору нужна статистика: число прохождений, средний балл,
таблица лидеров
▪
Результаты и данные участников требуют разграничения доступа и
защиты от подмены
Решение —веб -приложение на Django с
реляционной базой данных:
организаторы создают квизы, участники
проходят их онлайн, результаты
считаются и хранятся автоматически.
—система

3.

Цель, объект и предмет курсовой работы
Цель:
Спроектировать базу данных и разработать веб
-приложение для
проведения онлайн
-квизов и викторин с автоматической
проверкой ответов и защитой данных
Объект: процесс проведения онлайн
-квизов и викторин.
данных и веб -приложение для их проведения.
Предмет:
база
Задачи исследования
▪
▪
▪
▪
▪
Проанализировать предметную область и выделить сущности
Спроектировать базу данных (ER
-диаграмма) и привести её к 3НФ
Реализовать модель безопасности: роли, права доступа, журнал аудита
Разработать веб
-приложение на Django для создания и прохождения
квизов
Наполнить базу тестовыми данными и провести тестирование

4.

Среда и средства разработки
Преимущества
▪
Django: ORM, готовая
авторизация и админ
▪
SQLite: не нужен сервер,
база —один файл
SQLite 3
▪
PyCharm: отладка,
терминал, просмотр БД
PyCharm 2025.1
▪
HTML + CSS: простые
страницы без JavaScript
Python 3.13
Django 6.1
HTML + CSS
-панель

5.

ER-ДИАГРАММА
13 таблиц
12 сущностей и промежуточная таблица
Квиз –Тег
15 связей
1 : 1 —Пользователь и Профиль
1 : N —12 связей через внешние ключи
M : N —Квиз и Тег
Центральная сущность
—Квиз: с ним
связаны категория, сложность, теги,
автор, вопросы и прохождения

6.

СОЗДАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ
class Quiz(models.Model):
title = models.CharField(max_length=200)
description = models.TextField(blank=True)
category = models.ForeignKey(
Category, on_delete=models.PROTECT)
difficulty = models.ForeignKey(
Difficulty, on_delete=models.PROTECT)
tags = models.ManyToManyField(Tag, blank=True)
author = models.ForeignKey(
User, on_delete=models.CASCADE)
is_published = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
indexes = [models.Index(fields=["title"])]
$ python manage.py makemigrations
$ python manage.py migrate
▪
Таблицы описаны
классами в
models.py
▪
Миграции
создают их в
SQLite

7.

УСТАНОВКА ВЕРНЫХ СВЯЗЕЙ МЕЖДУ ТАБЛИЦАМИ
Реализация в
Django
При удалении
—Профиль
OneToOneField
CASCADE
—Вариант
ForeignKey
CASCADE
ForeignKey
PROTECT
Роль —Профиль
ForeignKey
PROTECT
M:N
Квиз —Тег
ManyToManyField
CASCADE
1 : N (журнал)
Пользователь
ForeignKey
SET_NULL
Тип связи
Пример
1:1
Пользователь
1:N
Квиз —Вопрос
ответа
1:N
(справочник)
Категория, Сложность
1:N
(справочник)
—Квиз
—Запись аудита
▪
PROTECT —нельзя удалить запись справочника, пока на неё ссылаются квизы
▪
CASCADE —вопросы, варианты и результаты удаляются вместе с квизом
▪
SET_NULL —журнал аудита сохраняется после удаления пользователя

8.

СООТВЕТСТВИЕ ТАБЛИЦ 3НФ
1НФ
2НФ
3НФ
Атомарные
значения
Нет частичных
зависимостей
Нет транзитивных
зависимостей
Списки тегов и ответов
разнесены по строкам;
теги вынесены в
таблицу Квиз –Тег
Данные прохождения,
вопроса и выбранного
ответа разделены на
отдельные таблицы
Категория, сложность и
роль —справочники; в
таблицах хранятся
только их id
▪
Пример: Квиз → Категория → Описание категории
хранится один раз в справочнике Категория
▪
Каждый детерминант
соответствует и BCNF
—транзитивная зависимость; описание
—потенциальный ключ (id или поле UNIQUE), поэтому схема

9.

ЗАПОЛНЕНИЕ ТАБЛИЦ ДАННЫМИ
8
8
32
119
25
пользователей
квизов
вопроса
вариантов
ответа
прохождений
$ python manage.py fill_test_data
Тестовые данные созданы!
Администратор: admin
Организаторы: organizer1, organizer2
Участники:
ivan, maria, petr, olga, alex
▪
▪
Своя команда Django заполняет все таблицы за
один запуск
Данные одинаковые при каждом запуске
удобно для проверки на чистой базе
—

10.

ТЕСТИРОВАНИЕ
$ python manage.py test
Found 6 test(s).
Creating test database...
......
Ran 6 tests in 2.782s
OK
▪
Автотесты:
▪
Ручная проверка:
ролями
▪
Ограничения БД:
CHECK, UNIQUE, внешние
ключи и триггеры отклоняют неверные данные
▪
Чистая база:
подсчёт баллов, роли, доступ, поиск
все страницы под тремя
migrate + fill_test_data без ошибок
Участник открывает страницу организатора
—ошибка 403

11.

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
▪
Участник: регистрация
разбором ошибок
▪
Организатор:
▪
Администратор:
→ поиск квиза
создание квиза
→ прохождение
→ вопросы
→ публикация
→ статистика
роли пользователей, все квизы, журнал аудита
2. Прохождение квиза
1. Список квизов, поиск и фильтры
→ результат с
3. Результат и разбор ответов

12.

Заключение
Выводы по теме исследования:
▪ Спроектирована БД из 13 таблиц, приведённая к 3НФ
▪ Разработано веб
-приложение на Django с тремя ролями и
автопроверкой ответов
▪ Реализована защита: хэши паролей, права по ролям, журнал
аудита, ограничения целостности
Дальнейшие перспективы развития проекта
▪ Время проведения квиза и ограничение по времени
▪ Лимит попыток для честной таблицы лидеров
▪ Размещение на хостинге и переход на PostgreSQL

13.

КОЛЛЕДЖ МИРОВОЙ ЭКОНОМИКИ
И ПЕРЕДОВЫХ ТЕХНОЛОГИЙ
СПАСИБО ЗА ВНИМАНИЕ!
English     Русский Правила