Code Monkey home page Code Monkey logo

stockmarket's Introduction

Тестовое задание для C++ разработчиков

📈 Легенда


Ты стал новым руководителем отдела биржи. Поздравляем! 🎉

Но выяснилось, что в твоём отделе уже несколько десятков лет торговля ведется по старинке! Все измучены миллионами звонков от трейдеров, выставляющих заявки по телефону. 🤳

Ты хочешь всё это автоматизировать, чтобы клиенты могли торговать через компьютер. Тогда все могли бы сидеть в тишине и обрабатывать их заявки ☺️

К счастью, у тебя есть для этого всё — Linux, C++ и полный гитхаб различных библиотек.

🔮 Что необходимо сделать


Необходимо написать простую биржу с клиент-серверной архитектурой. Для упрощения задачи, биржа будет торговать только долларами (USD) за рубли (RUB).

Сервер должен принимать заявки на покупку или продажу долларов за рубли от разных клиентов по определённой цене.

В случае, если цена на покупку и цена на продажу у нескольких клиентов пересекается — нужно заключать сделки между ними. В этом случае купленный объём будет зачисляться на баланс клиентам.

Решение:


Реализованы следующие возможности:

  • Сервер поддерживает подключения нескольких клиентов одновременно.
  • Даёт возможность просмотра клиентом всех своих активных торговых заявок, всех своих совершенных сделок и своего баланса.
  • Возможность просмотра клиентом котировок 📈
  • Получение отчёта о совершённой сделке в момент её заключения всеми сторонами-участниками. 🤼
  • Возможность отмены активных заявок клиентами. 🚫
  • Авторизацию клиента с паролем. 🔑
  • GUI к бирже на QT. 🤯

🧑‍💻 Реализация

Cmake собирает 3 исполняемых файла:

  • Server - без него клиенты не запустятся)
  • Client - консольный клиент.
  • Gui - Графический интерфейс биржи.
  • GTest - Запуск Unit тестов.

Для сборки проекта необходимы библиотеки:

  • Boost (boost::asio, boost::bind, boost::format)
  • Gtest
  • QT (Qt5 и Qt::Charts)

К основным функциям написана документация и Google тесты.

🧑‍💻 Пример работы

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.