Similar presentations:
Календарь важных событий класса (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.
Спасибоза внимание!
programming