пятница, 6 февраля 2015 г.

Калькулятор дат в Delphi

Задание взято из курсовой работы по программированию в Delphi. Приложение и его исходники есть в конце статьи.

Постановка задачи


Разработать калькулятор, работающий с датами в русском, американском и английском форматах. Программа должна уметь вычислять:
  • дата 1-дата 2=количество месяцев;
  • дата 1-дата 2=количество недель;
  • дата 1-дата 2=количество дней;
  • дата 1-дата 2=количество часов;
  • дата 1-дата 2=количество минут;
  • дата 1-дата 2=количество секунд;
  • дата 1-месяцы=дата 2;
  • дата 1-недели=дата 2;
  • дата 1-дни=дата 2;
  • дата 1-часы=дата 2;
  • дата 1-минуты=дата 2;
  • дата 1-секунды=дата 2;
  • дата 1+месяцы=дата 2;
  • дата 1+недели=дата 2;
  • дата 1+дни=дата 2;
  • дата 1+часы=дата 2;
  • дата 1+минуты=дата 2;
  • дата 1+секунды=дата 2.
Нужно обратить внимание на проверку правильности вводимой информации (33 июня не бывает).

Схема алгоритма решения задачи


Для решения поставленной задачи нам необходимо:
  1. Проверить пользовательские данные на правильность ввода вообще и на соответствие их заданному формату даты.
  2. Если значения заданы неверно, прервать выполнение программы, вывести сообщение об ошибке, записать сообщение об ошибке в файл. Если же все правильно, то перейти к п.3.
  3. Вычислить требуемое значение.
  4. Вывести результаты на экран и в лог-файл.
Приведем здесь общую схему работы калькулятора:

Описание используемых компонентов


Для написания программы на форму были помещены такие компоненты среды разработки Delphi:
  • RadioGroup (для выбора формата ввода и вывода даты);
  • поля Edit (для ввода пользовательских значений и вывода полученных результатов);
  • кнопки Button;
  • поле Memo (для вывода логов работы программы);
  • SpeedButton (кнопка для вывода руководства пользователя);
  • Label (Надписи, с помощью которых подпишем поля).
На событие создания формы OnCreate в процедуре TForm1.OnCreate зададим создание файла data.log, который будет создаваться в корневом каталоге диска С.

Все процессы считывания введенных пользователем данных, проверки формата даты, расчетов и вывода на экран и в файл будут происходить в процедуре TForm1.Button1Click, которая вызывается при нажатии кнопки Button1.

При нажатии кнопки Button2 вызывается процедура TForm1.Button2Click, с помощью которой будут выведены на экран логи работы программы.

При нажатии на кнопку SpeedButton вызывается процедура TForm1.SpeedButton1Click. Это процедура обращения к справочной системе. Справочная система разработана с помощью утилиты Hcw.exe. Для этого сначала справочный материал был написан в Microsoft Word, расставлены ссылки в каждом пункте справки, информация сохранена в rtf формате.

Далее, с помощью вышеназванной утилиты была создана справочная система и оглавление к ней. Для связи справочной системы с нашим приложением было введено название help-файла в меню Borland Delphi «Проект» → «Параметры» → «Приложение» → «Файл справки».

Пример результатов работы программы


Например выберем русский формат и вычтем от даты 10.08.2008 дату 30.06.2008. Получим такие результаты:


Если же мы выберем при этом американский формат, то появится сообщение об ошибке, так как при американском формате даты нужно вводить данные в порядке мм.дд.гггг:


Далее можно прибавить к дате 1, к примеру, 20 недель и вычесть 5 месяцев. Получим:


При нажатии на кнопку «Логи» мы увидим логи работы нашей программы:


Полностью просмотреть только что созданный log-файл можно в приложении А.
При нажатии на кнопку помощи мы увидим справочное руководство:


При выборе необходимого нам пункта можно будет почитать интересующий материал.
Ссылка на листинг программы и само приложение находится в конце статьи.

Инструкция пользователю программы


Выполнение операций с датами:

Для вычисления значения дата 1 – дата 2 необходимо ввести обе даты и выбрать формат даты. Для русского и английского формата дата вводится как дд.мм.гггг. Для американского формата – мм.дд.гггг. При несоблюдении правил ввода будет выдано сообщение об ошибке. Затем нажимается кнопка «Расчет». В соответствующих полях появляются значения разности в месяцах, неделях, днях, часах, минутах, секундах.
Для вычисления значения Дата 1 +/- определенное количество месяцев, недель и т.д. необходимо в соответствующее поле ввести нужное число и нажать кнопку «Расчет». При некорректном вводе будет выдано сообщение об ошибке.

Сохранение логов работы:

Программой предусмотрено сохранение логов работы в файл. Туда заносятся даты, вводимые пользователем с клавиатуры, операции с этими датами, результаты операций, а так же сообщения об ошибках.
Просмотреть логи можно, нажав на кнопку «Логи».

Приложение А


Дата 1  -  Дата 2
10.08.2008 - 12.07.2008
0 месяцев
4 недель
29 дней
696 часов
41760 минут
2505600 секунд
10.08.2008 - 0 мес -0 нед -0 дн -0 час -0 мин -0 сек
Результат: 10.08.2008
10.08.2008 + 0 мес +0 нед +0 дн +0 час +0 мин +0 сек
Результат: 10.08.2008
Дата 1  -  Дата 2
10.08.2008 - 12.07.2008
2 месяцев
8 недель
60 дней
1440 часов
86400 минут
5184000 секунд
10.08.2008 - 0 мес -0 нед -0 дн -0 час -0 мин -0 сек
Результат: 10/08/2008
10.08.2008 + 0 мес +0 нед +0 дн +0 час +0 мин +0 сек
Результат: 10/08/2008
Дата 1  -  Дата 2
10.08.2008 - 30.06.2008
1 месяцев
5 недель
41 дней
984 часов
59040 минут
3542400 секунд
10.08.2008 - 0 мес -0 нед -0 дн -0 час -0 мин -0 сек
Результат: 10.08.2008
10.08.2008 + 0 мес +0 нед +0 дн +0 час +0 мин +0 сек
Результат: 10.08.2008
неправильный ввод даты Введите дату в соответствующем формате!!!
неправильный ввод даты Введите дату в соответствующем формате!!!
Дата 1  -  Дата 2
10.08.2008 - 30.06.2008
1 месяцев
5 недель
41 дней
984 часов
59040 минут
3542400 секунд
10.08.2008 - 5 мес -0 нед -0 дн -0 час -0 мин -0 сек
Результат: 13.03.2008
10.08.2008 + 0 мес +20 нед +0 дн +0 час +0 мин +0 сек
Результат: 28.12.2008

Здесь можно скачать листинг программы калькулятора дат и готовое приложение:

.

Вы можете также почитать о программировании в Делфи калькулятора дробных чисел, приложения, вычисляющего корни квадратного уравнения и калькулятора времени.

Комментариев нет:

Отправить комментарий