Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Улучшаем калькулятор.
Наш калькулятор не предохранен от попыток выполнения арифметических действий над текстом и от деления на ноль. Предохраним его от этого, а также научимся ставить пароль на проект. Проверка ввода чисел в текстовое поле Давайте запустим наш калькулятор в том виде, который он получил в 4.5 Dim Чис1 As Double 'Переменная, содержащая число из текстового поля Число1 Dim Чис2 As Double 'Переменная, содержащая число из текстового поля Число2 Dim Рез As Double 'Переменная-результат, предназначенный для текстового поля Результат _____________________________________________________________________________ Private Sub Кл_сложения_Click() Чис1 = Число1.Text 'Значения исходных данных переходят в переменные из текстовых полей Чис2 = Число2.Text Рез = Чис1 + Чис2 'Обработка переменных для получения результата Результат.Text = Рез 'Значение результата переходит из переменной в текстовое поле End Sub ………………………….. Попробуем ввести в верхнее текстовое поле вместо числа какую-нибудь ерунду, например, КУ-КУ. Щелкнем по кнопке сложения. Visual Basic выдает сообщение об ошибке " Type mismatch" - несовпадение типов числовой переменной Чис1 и вводимой текстовой информации. Все верно. Теперь подумаем - хорошо ли это, что Visual Basic реагирует на ваши неправильные действия собственными сообщениями об ошибке? Для вас, которые уже что-то умеют в программировании и делают калькулятор исключительно для собственного удовольствия, может быть и хорошо. Ну а представьте, что вы решили похвастаться калькулятором перед своей подругой, которая знакома с программированием только понаслышке, и она, работая на нем, допустила такую же ошибку? Что она подумает, увидев неожиданно возникшее окно с непонятными английскими словами? Вы думаете, она поймет, что это сообщение об ошибке? Скорее всего она подумает, что это сломался компьютер. И на какие кнопки, скажите на милость, ей нажимать? " Ну и гадость твой калькулятор! " - скажет она наконец и будет сто раз права. Та же проблема стоит и перед всеми профессиональными программистами, которые создают свои продукты для использования людьми, не обязанными ничего знать о программировании. Программист обязан сделать так, чтобы на все неправильные действия пользователя реагировал не Visual Basic своими непонятными сообщениями, а сама программа, причем понятно, по-русски, и тут же давала возможность исправиться. Для этого в Visual Basic должны быть средства. И они там есть. Что нам нужно сейчас? Нам нужно средство, которое определяло бы, число ли записано в текстовом окне или же все, что угодно, но только не число. Это функция IsNumeric. Ее аргумент может быть любого типа, в том числе и строкой. Функция анализирует строку и если видит, что она состоит из цифр, знака минус и запятой таким образом, что получается число (и больше ничего в строке нет), то функция получает значение True, что означает " Правда", в противном случае - False, что означает " Ложь". Проверим: Оператор Debug.Print IsNumeric(" КУ-КУ") печатает False. Оператор Debug.Print IsNumeric(" -67, 3") печатает True. Раз так, то функцию IsNumeric можно включать в логические выражения и использовать в качестве условия оператора If. Например, If IsNumeric(" -67, 3") Then MsgBox (" Это число") Else MsgBox (" Это не число") что означает: " Если -67, 3 - число, то …" Поэтому же совсем не обязательно писать If IsNumeric(" -67, 3") = True Then ….
Алгоритм работы калькулятора с проверкой звучит примерно так: Если в текстовом поле Число1 введено число и в текстовом поле Число2 введено число, то делай все, что положено, иначе выдавай сообщение " Вводите только числа". Процедура сложения с учетом этого алгоритма будет выглядеть так: Private Sub Кл_сложения_Click() If IsNumeric (Число1) And IsNumeric (Число2) Then Чис1 = Число1.Text Чис2 = Число2.Text Результат.Text = Чис1 + Чис2 Else MsgBox (" Вводите только числа") End If End Sub Здесь я немного сэкономил на переменной Рез. Поскольку мы ее никак не обрабатываем, я обошелся без нее. Процедуры для остальных действий пишутся аналогично. Запрет деления на ноль Вторая ошибка, на которую реагирует Visual Basic, это деление на ноль. От нее мы избавимся, если запретим компьютеру делить на ноль, записав вместо оператора Результат.Text = Чис1 / Чис2 такой: If Чис2 < > 0 Then Результат.Text = Чис1 / Чис2 Else MsgBox (" На ноль делить нельзя") Вот как будет выглядеть теперь процедура деления: Private Sub Кл_деления_Click() If IsNumeric(Число1) And IsNumeric(Число2) Then Чис1 = Число1.Text Чис2 = Число2.Text If Чис2 < > 0 Then Результат.Text = Чис1 / Чис2 Else MsgBox (" На ноль делить нельзя") Else MsgBox (" Вводите только числа") End If End Sub Как видите, здесь в состав многострочного If входит однострочный. Ставим пароль на калькулятор Ваш калькулятор стал достаточно надежен и удобен. Теперь его не стыдно показать друзьям. Ну а защищаться от врагов будем паролем. Наша задача - сделать так, чтобы при попытке запустить калькулятор на экране появлялось приглашение ввести пароль, известный только вам. При попытке ввода неправильного пароля, программа должна заканчивать свою работу. Поскольку приглашение на ввод пароля должно появляться раньше всего остального, то программируем его в процедуре Form_Load, в самом начале. Предварительно объявим строковую переменную для хранения пароля и выдумаем сам пароль, например, " калям". Dim Parol As String 'Переменная-пароль Private Sub Form_Load() Parol = InputBox(" Введите пароль") If Parol < > " калям" Then MsgBox (" Пароль неверный! "): End End Sub Новый для вас оператор End делает всего одну вещь - вызывает завершение программы. Запустите проект и проверьте, как он работает. То же самое можно было бы запрограммировать короче, без использования переменной: Private Sub Form_Load() If InputBox(" Введите пароль") < > " калям" Then MsgBox (" Пароль неверный! "): End End Sub Вообще, переменные нужны, если нужна неоднократная обработка какой-то информации: складывать что-то, затем сравнивать это что-то с чем-то другим и т.д. В нашем же случае пароль нужен всего один раз, для сравнения, так что можно обойтись и без переменной. Вы скажете: Кто угодно перед запуском моей программы посмотрит в ее текст и сразу же увидит пароль. Совершенно верно. Чтобы текст программы не был виден, преобразуйте проект в исполнимый файл, как мы это делали в 2.13. Сделаем так, чтобы в случае ввода пароля в текстовое поле там появлялись не буквы пароля, а звездочки. В этом случае никто из-за вашей спины не сможет пароль подсмотреть. Для этого достаточно до ввода пароля выполнить строку Text1. PasswordChar = " * "
|