Аннотация 2
ВВЕДЕНИЕ 6
1. ВВЕДЕНИЕ В ПРЕДМЕТНУЮ ОБЛАСТЬ 7
1.1 Терминология 7
1.2 ACM/ICPC 7
2. ПОСТАНОВКА ЗАДАЧИ 9
2.1 Цель выпускной квалификационной работы 9
2.2 Задачи выпускной квалификационной работы 9
2.3 Конечный результат выпускной квалификационной работы 9
3 АНАЛИЗ АНАЛОГОВ 10
3.1 SPOJ 10
3.2 TOPH 11
3.3 PC2 12
3.4 Kattis 12
3.5 Вывод 13
4. РАЗРАБОТКА ТРЕБОВАНИЙ К ПРОГРАММНОМУ КОМПЛЕКСУ 15
4.1 Группы пользователей 15
4.2 Требования к функциональным характеристикам 16
4.3 Требования к реализации 17
4.4 Требования к начальному комплекту 17
4.5 Требования к составу и параметрам технических средств 17
4.6 Требования к схеме организации данных 17
5. ПРОЕКТИРОВАНИЕ И РАЗРАБОТКА ПРИЛОЖЕНИЯ 19
5.1 Построение диаграммы использования 19
5.2 Проектирование базы данных 20
5.2.1 Выделение сущностей и атрибутов 20
5.3 Выбор инструментов для разработки приложения 24
5.3.1 Классификация платформ 24
5.3.2 ASP.NET Core 26
5.3.3 Django 27
5.3.4 Rails 29
5.3.5 PHP 30
5.3.5 Вывод 30
5.4 Организация данных 31
5.4.1 Oracle Database 32
5.4.2 Microsoft SQL Server 33
5.4.3 PostgreSQL 33
5.4.4 MySQL 33
5.4.5 Вывод 34
6. РЕАЛИЗАЦИЯ 35
6.1 Пример внешнего вида и соответствующего интерфейса 35
6.2 Модели 38
6.3 Работа с СУБД 39
6.4 Работа с пользователями 40
ЗАКЛЮЧЕНИЕ 42
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 43
ПРИЛОЖЕНИЕ А. Исходный код 45
Олимпиада по программированию - соревнование, в котором принимают участие, обычно, студенты, в личном или командном зачете. Тур олимпиады происходит следующим образом: каждой команде или участнику выдается компьютер и некоторое количество задач. Для участников задача выглядит как некоторое описание проблемы и поясняющий пример. Участникам необходимо написать программу, решающую данную задачу и послать ответ, где он будет проверен на правильность путем прохождения заранее составленного множества тестов и на удовлетворение дополнительным условиям, таким как время выполнения и затраченная память. Побеждает команда или участник, решивший правильно наибольшее число задач. В качестве дополнительных показателей могут считаться количество неудачных попыток, которое должно быть минимальным, и общее затраченное время.
Можно заметить, что такое же программное обеспечение можно использовать для автоматизации проверки работ студентов вводных курсов языков программирования, фреймворков и библиотек: в обоих случаях часто встречаются задачи с консольным интерфейсом и детерминированными выходными данными. Примерами курсов, для которых выполненные задания смогут проверяться автоматически: вводный курс C++, введение в ROS, операционные системы семейства Unix, Linux и основы распределенной обработки и др.
В ходе выпускной квалификационной работы:
• Были рассмотрены существующие программные решения;
• Были выдвинуты требования к системе;
• Были рассмотрены платформы для реализации веб-приложения;
• Были рассмотрены варианты организации хранения данных;
• Была выбрана архитектура;
• Реализована системе.
Полученное решение веб-приложение может быть использовано для проведения спортивных состязаний по программированию, онлайн-олимпиад по программированию или для автоматизации проверки работ студентов вводных курсов языков соответствующих дисциплин.