Проект консольный чат

Структура проекта

За основу взяты материалы из вебинара "Кодим вместе с ментором" А. Золотых.

Функционал разделен на 3 части:

  • User Класс пользователя. Содержимое класса разбито на 2 составляющие: заголовочный файл User.h в папке include и исполняемый файл User.cpp в папке src. Заголовочный файл содержит поля логина(уникальный), пароля и имени, конструктор и деструктор класса, а также функциии для работы с ними: геттеры, сеттеры и функции show() для вывода информации на экран. Функции названы по их функционалу, но также в коде присутствуют доп. комментарии на конкретную рреализацию и проверки. Среди особенностей можно выделить установку пароля при регистрации с подтверждением пароля, пароль должен удовлетворять правилам(длина, цифры, символы). Пароль можно поменять, но для этого надо ввести старый пароль. Также было принято рещение добавить друзей пользователя, для того чтобы пользователь мог писать своим друзьям. Для хранения логинов друзей используется vector. Есть функции для добавления и удаления друзей соответственно.
  • Message. Класс сообщения. Имеет поля from, to, которые являются логинами отправителя и получателя соответственно, и поле text - содержит текст сообщения. Методы классы реализованы только в виде геттеров.
  • Chat. Основной класс чата. Содержит bool поле для контроля работы чата, список(массив) пользователей класса User, список сообщений типа Message, указатель на текущего юзера. Методы разбиты на публичные и приватные, публичные доступны пользователю чата, а приватные защищены. В приватные добавлены функции регистрации нового пользователя signUp, вход в чат уже существующего пользователя signIn, показать чат, написать сообщение и функционал по работе с друзьями: добавить нового пользователя друга, удалить, показать список друзей и их количество. Публичные методы - старт чата и показать меню. Меню разделено на 2 части - сначала вход/регистрация/выход, затем пользовательское меню с выбором действий: 1 - показать all чат(сообщения для всех), 2 - написать сообщение, 3 - показать число друзей, 4 - показать список друзей, 5 - добавить друга по логину, 6 - удалить друга по логину, 0 - выход. Добавлены проверки по наличию пользователей, можно ли удалить или добавить такого пользователя и т.д.

Функция main запускает чат бесконечным циклом пока чат не остановится(статус - false). Если указатель на текущего пользователя - nullptr, показывается стартовый чат, если нет - показывается меню пользователя.

Дополнительный функционал

Реализованы функции проверки, подтверждения пароля, а также функционал с друзьями пользователя.

Также добавлены исключения(файл Exception.h). Исключения срабатывают при использовании уже существующего логина при регистрации или использования all в качестве логина.

Имитация командной работы

Реализовано по бранчам:

  • oleg1 - реализован класс User
  • oleg2 - реализован класс Message
  • oleg3 - Pull requst классов User и Message.Реализация основы чата(функции signIn, signUp)
  • oleg4 - Реализация друзей (Friends)
  • oleg5 - Финальная версия перед сдачей задания.

Project build:

Билд черех Cmake

cd SFConsoleChat
mkdir build
cd build 
cmake ../
make 

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

cd build
./Chat