Консольное приложение для учета студентов, групп, предметов и оценок. Данные сохраняются между запусками в SQLite, есть отчеты, электронный журнал и экспорт в Excel.
- Учебный и портфолио-проект: демонстрация работы с БД, консольным UX, отчетностью и экспортом данных.
- CRUD для студентов, групп, предметов и оценок
- Поиск/фильтрация/сортировка студентов (группа, ФИО, минимум среднего балла; сортировка по ID/ФИО/среднему)
- Отчеты: средние по студентам и предметам, подробности по предмету, топ-N, пересдачи
- Электронный журнал: сводный, по предмету, по студенту
- Автосохранение после каждого изменения
- Экспорт в CSV для Excel (UTF-8 с BOM)
- C++17
- MSVC (Visual Studio Build Tools / Community)
- SQLite (amalgamation в
third_party/sqlite) - Windows + VS Code (tasks + launch)
- Group: учебная группа
- Student: студент, принадлежит группе
- Subject: учебный предмет
- Grade: оценка по предмету, каждая новая оценка = новая попытка
- Файл БД:
data/data_store.db(создается автоматически) - Таблицы:
groups(id, name)students(id, name, group_id)subjects(id, name)grades(id, student_id, subject_id, value, attempt)
- Включены внешние ключи (
PRAGMA foreign_keys = ON)
- Средний балл по предмету: среднее всех оценок по предмету (все попытки)
- Средний балл студента: сначала среднее по каждому предмету, затем среднее по предметам
- Пересдачи: последняя оценка по предмету ниже проходного балла
- Создать группы (или создавать их при добавлении студентов)
- Добавить студентов и назначить группу
- Добавить предметы
- Внести оценки
- Открыть отчеты и электронный журнал
- Экспортировать данные в CSV при необходимости
- Windows 10/11
- Visual Studio Build Tools или Community с workload
Desktop development with C++
- Откройте папку проекта
Ctrl+Shift+B(задача сборки)
.\build.bat.\build\cpp-gradebook.exeЕсли кириллица отображается некорректно:
chcp 65001- Главное меню: справочники (группы/студенты/предметы), оценки, отчеты, журнал, экспорт
- Все действия выполняются через подсказки в консоли, изменения сохраняются сразу
- Сводный журнал: последняя оценка по каждому предмету для студента
- Журнал по предмету: все попытки, средние, последняя оценка, число попыток
- Журнал по студенту: все предметы, все попытки, средний балл и последняя оценка
- Отчеты: средние по студентам/предметам, подробности по предмету, топ-N, пересдачи
CSV-файлы сохраняются в exports/:
export_groups.csvexport_students.csvexport_subjects.csvexport_grades.csv
Примечания:
- Экспорт идет в UTF-8 с BOM для корректной кириллицы в Excel
- Разделитель
;соответствует RU-локали
src/main.cpp- логика приложенияthird_party/sqlite/- SQLite amalgamationresources/app.rc- ресурс с иконкой приложенияassets/app.png,assets/app.ico- иконка.vscode/- задачи сборки и запускbuild.bat- сборка через MSVCbuild/- exe и объектные файлыdata/- база SQLite (создается автоматически)exports/- CSV-выгрузки
Q: Почему SQLite, а не полноценная СУБД? A: SQLite не требует сервера, прост в разворачивании, идеально подходит для учебного кейса и портфолио.
Q: Почему используется amalgamation? A: Минимум зависимостей и простая сборка в один проект без внешнего менеджера пакетов.
Q: Как считается средний балл студента? A: По каждому предмету берутся все оценки, считается среднее по предмету, затем среднее по предметам.
Q: Как определить пересдачи? A: Если последняя оценка по предмету ниже проходного балла, предмет попадает в пересдачи.
Q: Где хранятся данные?
A: В файле data/data_store.db, создается автоматически при первом запуске.
Q: Почему экспорт в CSV, а не в XLSX? A: CSV проще и универсальнее; Excel корректно открывает UTF-8 BOM.
Q: Как обеспечивается сохранность изменений? A: Все изменения сразу записываются в SQLite (автосохранение).
Q: Какие связи между таблицами? A: Студент связан с группой, оценки связаны со студентом и предметом (foreign keys).
- Нет проверки дублей по именам
- Редактирование оценки не меняет номер попытки
- Импорт данных из CSV
- Отчеты по семестрам
- Роли пользователей и авторизация
- Дополнительные фильтры по предметам и периодам