SmartCalc-v4.0

Part 1. Реализация SmartCalc v4.0 Необходимо реализовать SmartCalc v4.0:

Программа должна быть разработана на языке Java версии 8 Код программы должен находиться в папке src При написании кода необходимо придерживаться Google Code Style Необходимо разработать Web-приложение Программа должна быть реализована с использованием MVC-фреймворка (Spring) Программа должна быть реализована с использованием паттерна MVC (100% Server-Side Rendering), а также:

не должно быть кода бизнес-логики в коде представлений не должно быть кода интерфейса в контроллере и в модели контроллеры должны быть тонкими

Модель должна быть полностью переиспользована из проекта SmartCalc v3.0 В приложении должен быть реализован раздел справки с описанием интерфейса программы в произвольной форме Программа должна хранить историю операций, позволять загружать выражения из истории и очищать историю целиком История должна сохраняться между запусками приложения На вход программы могут подаваться как целые числа, так и вещественные числа, записанные и через точку, и в экспоненциальной форме записи Вычисление должно производится после полного ввода вычисляемого выражения и нажатия на символ =

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

Не требуется предоставлять пользователю возможность менять масштаб

Область определения и область значения функций ограничиваются по крайней мере числами от -1000000 до 1000000

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

Проверяемая точность дробной части - минимум 7 знаков после запятой У пользователя должна быть возможность ввода до 255 символов Скобочные арифметические выражения в инфиксной нотации должны поддерживать следующие арифметические операции и математические функции:

Арифметические операторы:

Название оператора Инфиксная нотация (Классическая) Префиксная нотация (Польская нотация) Постфиксная нотация (Обратная польская нотация)

Скобки (a + b) (+ a b) a b +

Сложение a + b

  • a b a b +

Вычитание a - b

  • a b a b -

Умножение a * b

  • a b a b *

Деление a / b / a b a b \

Возведение в степень a ^ b ^ a b a b ^

Остаток от деления a mod b mod a b a b mod

Унарный плюс +a +a a+

Унарный минус -a -a a-

Обратите внимание, что оператор умножения содержит обязательный знак *. Обработка выражения с опущенным знаком * является необязательной и остается на усмотрение разработчика

Функции:

Описание функции Функция

Вычисляет косинус cos(x)

Вычисляет синус sin(x)

Вычисляет тангенс tan(x)

Вычисляет арккосинус acos(x)

Вычисляет арксинус asin(x)

Вычисляет арктангенс atan(x)

Вычисляет квадратный корень sqrt(x)

Вычисляет натуральный логарифм ln(x)

Вычисляет десятичный логарифм log(x)

Part 2. Дополнительно. Кредитный калькулятор Предусмотреть специальный режим "кредитный калькулятор" (за образец можно взять сайты banki.ru и calcus.ru):

Вход: общая сумма кредита, срок, процентная ставка, тип (аннуитетный, дифференцированный) Выход: ежемесячный платеж, переплата по кредиту, общая выплата

Part 3. Дополнительно. Депозитный калькулятор Предусмотреть специальный режим "калькулятор доходности вкладов" (за образец можно взять сайты banki.ru и calcus.ru):

Вход: сумма вклада, срок размещения, процентная ставка, налоговая ставка, периодичность выплат, капитализация процентов, список пополнений, список частичных снятий Выход: начисленные проценты, сумма налога, сумма на вкладе к концу срока

Part 4. Дополнительно. Конфигурация и логирование Добавить в приложение настройки:

Добавить считывание настроек из файла конфигурации при запуске программы Вынести в файл конфигурации от 3 параметров на выбор, например цвет заднего фона, размер шрифта и т. д. Добавить описание редактируемых параметров в справку

Добавить в приложение логирование:

В логах хранить историю операций Логи сохранять в папку logs, по одному файлу на период ротации Должна быть возможность настройки периода ротации логов (час/день/месяц) Называть файлы в соответствии со следующим шаблоном: logs_dd-MM-yy-hh-mm-ss (указывается время создания файла)

Part 5. Дополнительно. JS-графики

Компонент, связанный с отрисовкой графиков, реализовать в виде JS-компонента с отрисовкой на стороне клиента

💡 Нажми тут, чтобы поделиться с нами обратной связью на этот проект. Это анонимно и поможет команде Педаго сделать твоё обучение лучше.