Проектирование календаря важных событий класса (Python)
Задачи
1.58M
Category: programmingprogramming

Календарь важных событий класса (Python)

1. Проектирование календаря важных событий класса (Python)

Выполнил: Ларионов Никита Евгеньевич
4 «Ф» класс школы №444 г. Москвы
Руководитель : Борцов Александр Антонович,
онлайн наставник по программированию Python

2.

Цель
Разработать удобное и понятное
приложение календаря для
событий класса.

3. Задачи


Определить функциональные
требования будущего приложения
Выбрать язык программирования
Выбрать библиотеки
Продумать структуру проекта
Написать код
Протестировать код

4.

Функциональные требования

5.

Выбор языка
Python:
• Лёгкий в понимании
• Компактный
• Большое количество
библиотек
• Много информации

6.

Выбор библиотек
• tkinter - для создания
графического интерфейса
• Datetime – для управления
датами
• Calendar – для правильного
отображения календарной
сетки.
• Json – для хранения событий
календаря

7.

Хранение и обработка
информации
[
{
Алгоритмы работы
с данными
1. Добавление нового события
2. Удаление события
3. Отображение событий
месяца
4. Обработка ошибок
"name": "Классный час",
"description": "Классный час, на котором мы обсудим
последние события класса",
"date": "2026-01-24",
"type": "Урок",
"responsible": "Учитель"
},
{
"name": "Поход в музей",
"description": "После пятого урока идём в исторический
музей",
"date": "2026-01-30",
"type": "Мероприятие",
"responsible": "Все ученики"
}
]

8.

Добавление нового события
Для добавления нового события
использовалась функция add_event,
которая выполняла следующие
действия:
1. Получение от пользователя даты
2. Получение всех данных события
3. Вызов функции записи в файл
4. Обновление интерфейса для
отображения события на экране
def add_event(self):
if not self.selected_date:
messagebox.showwarning("Предупреждение", "Выберите дату в календаре!")
return
name = self.event_name_var.get().strip()
description = self.event_desc_text.get("1.0", "end").strip()
event_type = self.event_type_var.get()
responsible = self.responsible_var.get()
if not name:
messagebox.showwarning("Предупреждение", "Введите название события!")
return
new_event = Event(name, description, self.selected_date, event_type,
responsible)
self.events.append(new_event)
self.update_calendar()
self.display_events_for_date(self.selected_date)
self.save_events()
messagebox.showinfo("Успех", "Событие добавлено!")
self.clear_event_form()

9.

Удаление события
def delete_event(self):
selection = self.events_tree.selection()
if not selection:
messagebox.showwarning("Предупреждение", "Выберите событие
для удаления!")
return
if not self.selected_date:
return
item = self.events_tree.item(selection[0])
event_name = item['values'][0]
if messagebox.askyesno("Подтверждение", f"Удалить событие
'{event_name}'?"):
self.events = [
event for event in self.events
if not (event.event_date == self.selected_date and
event.name == event_name)
]
self.update_calendar()
self.display_events_for_date(self.selected_date)
self.save_events()
messagebox.showinfo("Успех", "Событие удалено!")
self.clear_event_form()
Для удаления события
использовалась функция
delete_event:
1. Доставание события из
дерева событий
2. Нахождение события в
основном списке событий
3. Удаление записи из списка
4. Сохранение словаря в файл
5. Обновление календаря

10.

Отображение событий
Чтобы отображать события была
создана функция update_calendar:
1.Получить текущий месяц и год
2.Сброс календарной сетки
3.Заполнение числами месяца
4.Определение стилей каждого дня
5.Визуальное оформление кнопок

11.

Валидация ошибок
• Проверка обязательных полей
• Корректность формата ввода
даты
• Проверка наличия json файла
• Защита от некоренных операций
• Валидация пользовательского
ввода

12.

Выводы
Добавив в свое приложение новое событие, я
протестировал работу «Календаря важных событий
класса» и убедился, что оно работает.

13.

Спасибо
за внимание!
English     Русский Rules