Прототип калькулятора
Скачать архив файлов с кодом можно по ссылке: Calculate.zip
Функции:
- Представленный калькулятор на PHP выполняет основные операции: сложение, вычитание, деление, умножение.
- Осуществляется проверка на корректность введенных пользователями данных. Проверяем:
- все ли поля заполнены;
- не оказался ли пользователь шутником и не пытается ли к 5 прибавить слово «котлеты»;
- не пытается ли пользователь нарушить математические законы и поделить на ноль;
- При отсутствии ошибок на экран выводится ответ — результат вычислений.
- Если выявлена ошибка, то выводится сообщение об ошибке.
Процесс приготовления калькулятора:
Ну что — засучим рукава, достанем из своих умных голов необходимые ингредиенты и испечем вкусный калькулятор?!
- Для начала создадим файл calculator.php.
- В файле calculator.php создим html-форму с полями для ввода операндов и выпадающим списком для выбора оператора:
- Форма с кнопкой создана. Но что это за кнопка, после нажатия на которую ничего не происходит? Исправим ситуацию — вдохнем жизнь в кнопку:
- Для начала проверим, были ли нажата кнопка submit и переданы данные формы методом post. Если передача данных осуществлена успешно, то инициализируем переменные: $number1, $number2 и $operation и передадим в качестве значений post-данные первого введенного операнда $_POST[‘number1’], второго введенного операнда $_POST[‘number1’] и оператора $_POST[‘operation’] соответственно.
- Проверяем, все ли поля формы заполнены, если нет, то инициализируем переменную $error_result, в которую передаем сообщение об ошибке:
- Если на этом этапе ошибка не найдена и все поля формы заполнены, проверяем являются ли операнды числами. Если все в порядке, то используя конструкцию switch находим выбранный пользователем оператор и производим соответствующее оператору вычисление — сложение, вычитание, умножение или деление. Здесь все просто. Кстати, в случае, если пользователь решит повеселиться и выберет оператор деления, а в качестве второго операнда введет ноль, то мы предусмотрительно выведем ему напоминание о том, что на ноль делить нельзя. А все почему? Потому что добавим проверку деления на ноль, в том случае, если case: ‘divide’:
- Заключительный этап — вывод результата на экран. Если переменная $error_result инициализирована, то выводим ее на экран, если нет — выводим на экран результат вычислений, записанный в переменной $result:
- Вишенка на на нашем торте не влияет на функциональность калькулятора, но повышает аппетит пользователя. И называется она — css-стили! Чтобы приступить к украшательству калькулятора, создадим файл со стилями «styles.css» и укажем его в header файла calculator.php:
Осталось только сотворить во вновь созданном файле красоту и прописать стили для элементов. Моя вишенка выглядит так:
<head> <meta charset = "UTF-8"> <link rel="stylesheet" href="styles.css"> <!-- добавляем ссылку на файл со стилями --> </head>
<!DOCTYPE HTML>
<html lang="ru">
<head>
<meta charset = "UTF-8">
</head>
<body>
<h1>Прототип калькулятора</h1>
<!-- а вот и наша форма -->
<form action="" method="post" class="calculate-form">
<input type="text" name="number1" class="numbers" placeholder="Первое число"> <!-- поле для ввода первого числа -->
<select class="operations" name="operation"> <!-- список с операндами -->
<option value='plus'>+ </option>
<option value='minus'>- </option>
<option value="multiply">* </option>
<option value="divide">/ </option>
</select>
<input type="text" name="number2" class="numbers" placeholder="Второе число"> <!-- поле для ввода второго числа -->
<input class="submit_form" type="submit" name="submit" value="Получить ответ"> <!-- кнопка -->
</form>
</body>
</html>
О небольшом антураже в виде заголовка и метатегов для интерпретации нашей формы браузером я умолчу, так как это не совсем по делу.. Что, уже проболталась? Ну тогда двигаемся дальше!
При создании формы используем post метод для передачи данных. Так как мы используем процедурный подход и предполагаем размещать основной скрипт в том же файле, то оставляем action — атрибут формы пустым.
<?php
if(isset($_POST['submit'])){
// инициализация
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
$operation = $_POST['operation'];
// Валидация
if(!$operation || (!$number1 && $number1 != '0') || (!$number2 && $number2 != '0')) {
$error_result = 'Не все поля заполнены';
}
// если все поля формы заполнены, проверяем, являются ли числами введенные пользователем значения
else {
if(!is_numeric($number1) || !is_numeric($number2)) { //если операнды — не являются числами
$error_result = "Операнды должны быть числами"; // инициализируем переменную с ошибкой
}
else // если ошибок не найдено
switch($operation){ // проверяем какой оператор был выбран
case 'plus': // если выбран оператор сложения, то вычисляем сумму
$result = $number1 + $number2;
break;
case 'minus': // если выбран оператор вычитания, то вычисляем разность
$result = $number1 - $number2;
break;
case 'multiply': // если выбран оператор умножения, то вычисляем произведение
$result = $number1 * $number2;
break;
case 'divide': // если выбран оператор сложения
if( $number2 == '0') // проверям не является ли второй делитель нулевым
$error_result = "На ноль делить нельзя!";
else
$result = $number1 / $number2; // если второй делитель не ноль, выполняем деление
break;
}
}
if(isset($error_result)) {
echo "Ошибка: $error_result";
}
else {
echo "Ответ: $result";
}
На этом калькулятор можно считать полноценным и завершенным!
Скачать архив файлов с кодом можно по ссылке: Calculate.zip