Skip to content

Zerrant2/TLab1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа №1 по дисциплине "Технологии программирования"

Цели работы

  1. Знакомство с системой контроля версий Git и методологией Git Flow.
  2. Изучение понятий CI/CD и настройка автоматического тестирования с помощью GitHub Actions.
  3. Разработка модульных тестов (Unit Testing) с использованием библиотеки pytest.
  4. Реализация принципов ООП на языке Python.

Описание проекта

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

Индивидуальное задание (Вариант №5)

В рамках лабораторной работы были реализованы следующие дополнения:

  1. Класс XMLDataReader: Реализовано чтение входных данных из формата XML.
    • Наследуется от абстрактного класса DataReader.
    • Поддерживает корректную обработку кодировки UTF-8.
  2. Класс CalcFirstQuartile: Реализован расчет студентов, попадающих в первую квартиль распределения по рейтингу.
    • Вычисляет 25% студентов с наименьшим средним баллом.

Технологии

  • Язык: Python 3.10
  • Тестирование: Pytest
  • Линтер: Pycodestyle (соблюдение стандарта PEP8)
  • CI/CD: GitHub Actions (автоматический запуск тестов при каждом пуше)

Запуск проекта

1. Клонирование репозитория

git clone https://github.com/ВАШ_НИКНЕЙМ/PTLab1.git
cd PTLab1

2. Установка зависимостей

pip install -r requirements.txt

3. Запуск тестов

python -m pytest test

4. Запуск программы

python src/main.py -p data/data.txt

classDiagram class DataReader { <> +read(path: str) DataType }

UML-диаграмма классов

classDiagram
    class DataReader {
        <<abstract>>
        +read(path: str) DataType
    }

    class TextDataReader {
        +read(path: str) DataType
    }

    class XMLDataReader {
        +read(path: str) DataType
    }

    class CalcRating {
        +__init__(data: DataType)
        +calc() RatingType
    }

    class CalcFirstQuartile {
        +__init__(data: DataType)
        +calc() RatingType
    }

    DataReader <|-- TextDataReader
    DataReader <|-- XMLDataReader
    CalcRating <.. CalcFirstQuartile : использует
Loading

Выводы В ходе выполнения лабораторной работы я: Настроил рабочее окружение с использованием Anaconda и Git. Реализовал автоматическое тестирование кода при помощи GitHub Actions. Научился работать с ветками в Git (Feature Branch Workflow). Расширил функционал программы, добавив поддержку формата XML и новый алгоритм расчета. Обеспечил покрытие кода модульными тестами.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages