Skip to content

qqzii/test-task--icode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

Система учёта Групп, Студентов и Преподавателей

DataBase Project

Проект включает 4 файла:


В базе данных содержится 5 основных таблиц и 3 вспомогательне, служащие для связи основных таблиц

Основные таблицы

  1. Поля таблицы Студенты
  • Первичный ключ
  • ФИО
  • Дата рождения
  • Является старостой или нет
  • Средний рейтинг
id full_name birth_date headman rating
PrimaryKey Char Date Boolean Float
  1. Поля таблицы Преподаватели
  • Первичный ключ
  • ФИО
  • Дата рождения
  • ID преподаваемого предмета
id full_name birth_date subject_id
PrimaryKey Char Date ForeignKey

Модели Преподаватель и Студент наследуются от родителя Человек 3. Поля таблицы Человек

  • Первичный ключ
  • ФИО
  • Дата рождения
id full_name birth_date
PrimaryKey Char Date
  1. Поля таблицы Предметы
  • Первичный ключ
  • Название предмета
id full_name
PrimaryKey Char
  1. Поля таблицы Группы
  • Первичный ключ
  • ID старосты
  • ID куратора
  • Название кафедры
  • Дата выпуска
id headman_name_id curator_id title end_date
PrimaryKey ForeignKey ForeignKey Char Date

Вспомогательные таблицы

  1. Поля таблицы связывающей Студентов и Предметы
  • Первичный ключ
  • ID студента
  • ID предмета

Таблица нужна для того, чтобы у студентов были предметы, которые они посещают дополнительно вне занятий со своей группой

id student_id subject_id
PrimaryKey ManyToMany ManyToMany
  1. Поля таблицы связывающей Студентов и Группы
  • Первичный ключ
  • ID группы
  • ID студента

Таблица нужна для того, чтобы знать какой студент числится в какой группе

id group_id student_id
PrimaryKey ManyToMany ManyToMany
  1. Поля таблицы связывающей Группы и Предметы
  • Первичный ключ
  • ID группы
  • ID предмета

Таблица нужна для того, чтобы знать какие предметы у группы являются основными

id group_id subject_id
PrimaryKey ManyToMany ManyToMany

Прорамма реализована с помощью библиотеки PeeWee работающей на ORM peeweelogo

Связи и наследование моделей

  1. Наследование моделей
  • BaseModel наследуется от библиотечной Model
  • Human наследуется от BaseModel
  • Teacher и Student наследуются от Human
  • все остальные модели наследуются от BaseModel
  1. Связи моделей
  • Teacher обращается по внешнему ключу к Subjects
  • Group обращается по внешним ключам к Teacher и Student
  • Student связан ManyToMany с Subject
  • Group связан ManyToMany с Subject и Student

Архитектура консольного приложения основана на обращении к пользователю с помощью нумерованных списков и реализации различных функций взависимости от его выбора

Функции

  • Главная функция main_loop

Зацикленная функция, в которой содержатся все остальные, прервется только если пользователь выберет соответствующую опцию в главном меню

  • main_menu()

Отображение главного меню, содержащего 3 пункта: выбор таблицы, выбор действия и выход

Возвращает три значения: action - номер введенного действия, table - номер введенной таблицы, out - булево значение для выхода/не выхода из системы

  • action_choice и table_choice

Отображение меню и выбор действия и таблицы соответственно

  • choice(request, qty)

Зацикленный ввод выбора пользователя, пока он не введет корректное значение

Принимает два значения: request - текст меню выбора, qty - количество пунктов ответа

Возращает answer - ответ который ввел пользователь

  • selection_check(answer, key, qty)

Проверяет введеный выбор пользователя на ввод удовлетворяющего числа

Принимает три значения: answer - ввод пользователя, key - ключ для внесение в него информации о том, правильный ли ввод ввел пользователь, qty - количество вариантов ответа

Возращает два значения: answer - ответ пользователя, key - булево значение для цикла в choice()

  • redirect(action, table)

Принимает два значения: action и table - выбор пользователя и переправляет на функции, взависимости от выбора

  • view(table, key_for_view=True):

Функция подготавливает данные для отображения таблиц, когда пользователь функцию просмотра таблиц

Принимает table - для отображения определенной таблицы и необязательный аргумент key_for_view для определения нужно ли полное отображение или не полное

  • draw_table(columns, model)

Отрисовка таблицы

Принимает два значения: columns - словарь с заголовками колонок и их шириной в символах, model - модель для отрисовки

  • subject_group(), student_group(), student_subject()

Отрисовка вспомогательных таблиц

  • prepare_fields(data)

Принимает один аргумент - data, собирающий данные о введенных данных при добавлении в модель и пропускает через validation() - валидацию

  • validation(field_type, count, message)

Валидация данных введенных пользователем

Принимает три аргумента: field_type - тип поля, в которое вводятся данные, count - ключ, применяющийся для разных задач, message - сообщение, которое выводится пользователю

  • removal(model, model_name, table)

Удаление данных

Принимает три аргумента: model - модель, model_name - имя модели, table - номер таблицы

  • human_definition(model_name, name)

При удалении из одной модели может понадобится удаление и из другой. Эта функция помогает в этом, сравнивая имена в разных таблицах и при нахождении совпадений возращает response - булево значение нашло или нет, id_found - ID найденного объекта

Принимает два аргумента: model_name - модель, name - имя человека

В файле содержатся словари с заготовленными фразами для вывода на экран. text_base(category, n) принимает два аргумента: category - категория сообщения и n - идентификатор


Тестовое задание подготовлено для Students Lab от iCode, 2021

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages