/
NSir
/
student-progress-visualizer
Обзор
Документация
Войти
/
NSir
/
student-progress-visualizer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.py
102 строки
3 KB
NSir
Initial commit
23 май 2026, 19:41
23 май 2026, 19:41
9a83b4d
Код
Авторство
О чём код?
from data_loader import load_excel_files from processor import ( prepare_progress_data, get_student_data, get_group_average_data, get_stream_average_data, list_students, list_groups, ) from visualizer import plot_progress from utils import data_dir, reports_dir 1 def print_menu() -> None: print("\nВизуализатор прогресса студентов") print("1 — Показать список студентов") print("2 — Построить график отдельного студента") print("3 — Построить график группы") print("4 — Построить график всего потока") print("0 — Выход") def main() -> None: try:1 raw_data = load_excel_files(data_dir()) data = prepare_progress_data(raw_data) except Exception as error: print(f"Ошибка загрузки данных: {error}") return while True: print_menu() choice = input("Выберите пункт меню: ").strip() if choice == "1": print("\nСписок студентов:") print(list_students(data).to_string(index=False)) elif choice == "2": student_id = input("Введите индивидуальный номер студента: ").strip() try: student_data = get_student_data(data, student_id) student_name = ( student_data.iloc[0]["Фамилия"] + " " + student_data.iloc[0]["Имя"] ) output_path = reports_dir() / f"student_{student_id}.png" plot_progress( student_data, title=f"Прогресс студента: {student_name}", output_path=output_path, ) print(f"График сохранён: {output_path}") except Exception as error: print(f"Ошибка: {error}") elif choice == "3": print("Доступные группы:", ", ".join(list_groups(data))) group_id = input("Введите номер группы: ").strip() try: group_data = get_group_average_data(data, group_id) output_path = reports_dir() / f"group_{group_id}.png" plot_progress( group_data, title=f"Средний прогресс группы {group_id}", output_path=output_path, ) print(f"График сохранён: {output_path}") except Exception as error: print(f"Ошибка: {error}") elif choice == "4": stream_data = get_stream_average_data(data) output_path = reports_dir() / "stream.png" plot_progress( stream_data, title="Средний прогресс всего потока", output_path=output_path, ) print(f"График сохранён: {output_path}") elif choice == "0": print("Работа завершена.") break else: print("Неизвестный пункт меню. Повторите ввод.") if __name__ == "__main__": main()