Skip to content

webstalt/console-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Итоговый проект по модулю "Основные конструкции С++"

Авторы: Мария @webstalt, Антон @bacravaj

Описание решения:

Реализована регистрация пользователей и вход по логину-паролю.

Настроена отправка

  • личных сообщений,
  • сообщений в беседы из нескольких юзеров,
  • сообщений всем участникам.

Личные сообщения реализованы так: поиск по логину для того, чтобы написать, переход в переписку, отображение непрочитанных сообщений, отправка сообщения.

Для отправки всем юзерам сообщения отправляются с ключом, к которому у любого пользователя есть доступ по умолчанию. Для отправки в беседу сообщение содержит ключ-id беседы.

Программа реализована в режиме запрос-ответ, и на каждом шаге отображается "помощь" в навигации - выведен список команд, который запускает дальнейшие шаги в приложении.

Описание классов:

User - класс для описания каждого юзера, возможно установить и изменить, отобразить имя, логин и пароль. location: ./user/User

UserBase - класс на основе паттерна синглтон для хранения данных о пользователях и обращения к ним. location: ./user/UserBase

ConversationBase - класс на основе паттерна синглтон, хранит базу сообщений, методы для добавления нового сообщения, чтения, подсчета количества. База данных выполнена с помощью функции map, с помощью этого метода мы можем быстро находить беседу по ключу. location: ./conversation/ConversationBase

ChatEngine - класс на основе паттернов singlton и state. Это движок для запуска приложения, выполняющий работу со всеми вышеперечисленными классами. Основное состояние движка (текущая страница приложения) хранится в _curent_state, и все методы для перехода по страницам вызывают сеттер нового состояния. location: ./engine/ChatEngine. Схема переходов между состояниями и их примерный функционал изображены на рисунке снизу (извините за качество). state_map

ConversationKey - класс содержит уникальные ключи для хранения в базе сообщений. location: ./conversation/ConversationKey

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

P.S. пожалуйста, не создавайте пользователей с какими либо пустыми полями; скорее всего у вас не получится, но программа может и упасть)

Распределение задач:

Мария: ответственна за классы User, UserBase,

Антон: ответственнен за классы ConversationBase, ConversationKey и тестирование функционала,

Cовместная работа: ChatEngine.

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

About

Final proj for C++ course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages