Разработать общее описание системы в соответствии с РД 50-34.698-90 для приложения «Калькулятор».
Решение
Общее описание
Калькулятор состоит из трех модулей – «Графический интерфейс», «Модуль, анализирующий и вычисляющий введенное выражение» (AnalaizerClass.dll) и «Модуль, реализующий математические функции» (CalcClass.dll). После того, как пользователь введет вычисляемое выражение одним из двух вышеописанных способов, управление передается анализирующему модулю, который форматирует выражение, выделяя числа и операторы, проверяет корректность скобочной структуры, а также выявляет неверные с точки зрения математики конструкции (например, 3+*+3), переводит выражение в обратную польскую запись, после чего вычисляет выражения, используя математические функции из модуля CalcClass.
2. Описание интерфейса
2.1 Входные данные
Параметры вызова (формат командной строки): calc.exe [expression], expression – математическое выражение.
Состояние информационного окружения
В папке с программой также находятся файлы CalcClass.dll, AnalaizerClass.dll
2.2 Выходные данные
Коды возврата программы
Число и 0 на новой строке – результат вычислений выражения.
Error: <сообщение об ошибке> и код ошибки на новой строке – сообщение об ошибке в случае несоответствия входного выражения.
Состояние информационного окружения после завершения программы
В папке с программой также находятся файлы CalcClass.dll, AnalaizerClass.dll
Сообщения об ошибках, выдаваемые программой (коды ошибок)
Error 01 at <i> – Неправильная скобочная структура, ошибка на <i> символе
Error 02 at <i> – Неизвестный оператор на <i> символе.
Error 03 – Неверная синтаксическая конструкция входного выражения
Error 04 at <i> – Два подряд оператора на <i> символе.
Error 05 – Незаконченное выражение.
Error 06 – Слишком малое или слишком большое значение числа для int.
Числа должны быть в пределах от -2147483648 до 2147483647
Error 07 – Слишком длинное выражение. Максимальная длина – 65536 символов.
Error 08 – Суммарное количество чисел и операторов превышает 30
Error 09 – Ошибка деления на 0.
2.3 Описание файлов, входящих в пакете калькулятора
CalcClass.dll – библиотека, в которой реализованы все необходимые математические функции.
AnalaizerClass.dll – модуль, в котором реализован синтаксический разбор выражения, а также его вычисление.
calc.exe – графическая оболочка, главный модуль.
Интерфейс пользователя
С одной стороны – это спецификация, и в ней не указывают конкретный вид программы, с другой – конкретный же продукт имеется.
Клавиши «1» «2» «3» «4» «5» «6» «7» «8» «9» «0» «/» «*» «-» «+» «mod» «(» «)» – вводят соответствующий символ в поле выражение
. Клавиша «Сброс» очищает поле «Выражение», клавиша «Стереть» удаляет последний введенный символ. Клавиша «=» начинает выполнение вычислений. «MR», «M+» и «MC» управляют памятью калькулятора, «+/-» – триггер унарного плюса/унарного минуса.
3. Описание архитектуры
В архитектуре системы выделено 3 модуля. Каждый из модулей занимается определенной задачей. Соответственно, Система – это взаимодействие этих 3-х модулей.
4. Функциональные требования
4.1 Требования к программе
Калькулятор должен выполнять следующие арифметические операции: сложение, вычитание, умножение, нахождение частного, нахождение остатка.
Калькулятор должен поддерживать работу с целыми числами в пределах от -2147483648 до 2147483647 (в дальнейшем MININT и MAXINT). В случае выхода за эти пределы должно выдаваться сообщение об ошибке Error 06.
Калькулятор должен иметь память на одно целое число, а также возможность выводить это число на экран, сбрасывать его значение на 0 и прибавлять к нему любое другое число, введенное в поле ввода.
При нажатии на клавишу M+ к числу, записанному в память, прибавляется число, записанное в поле «Результат».
Если в поле «Результат» записан код ошибки, то при нажатии на клавишу M+ должно выдаваться сообщение «Невозможно преобразовать к числу».
При нажатии на кнопку MC число в памяти обнуляется.
При нажатии на кнопку MR число из памяти приписывается в конец выражения в строке «Выражение».
Калькулятор должен предоставлять возможность пользователю работать с операциями унарного плюса и унарного минуса.
Если между нажатиями на кнопку <+/-> проходит менее 3 секунд, то введенный оператор меняется на противоположный.
Если между нажатиями на кнопку <+/-> проходит более 3 секунд, то к выражению дописывается знак «-».
Калькулятор должен иметь графический интерфейс, содержащий кнопки с цифрами и арифметическими операциями, кнопкой равенства, кнопками работы с памятью, кнопками редактирования скобочек и кнопками сброса, переключателем унарного минуса/унарного плюса, текстовыми полями для ввода выражения и вывода результата.
При нажатии на клавишу <Enter> калькулятор должен проводить вычисления выражения.
При нажатии на клавишу <ESC> программа должна прекращать свою работу.
В случае неверно построенного вычисляемого выражения в текстовое окно результат должно выводиться соответствующие сообщение.
4.2 Арифметические операции
Сложение
Для чисел, каждое из которых меньше либо равно MAXINT и больше, либо равно MININT, функция суммирования должна возвращать правильную сумму с точки зрения математики.
Для чисел, сумма которых больше чем MAXINT и меньше чем MININT, а также в случае, если любое из слагаемых больше чем MAXINT или меньше чем MININT, программа должна выдавать ошибку Error 06