Эту задачу можно решить и в Delphi, и в PHP и других языках. Просто в случае Delphi программа может работать на Windows/
Wine и тогда помимо основной ОС ничего не нужно, а в случае PHP нужно запускать веб-сервер.
Тогда если выбирать самый простой и, при этом, являющийся масштабируемым вариантом, то проще отталкиваться от Delphi:
- язык Delphi прост в освоении
- Delphi распространён среди ВУЗов и, как правило, среди разработчиков корпоративного ПО
- В Delphi быстро и легко создаются программы c графическим интерфейсом
- Для Delphi есть бесплатный аналог Lazarus для запуска на других платформах помимо Windows/x86
Что необходимо для Delphi/Lazarus:
- иметь лицензию для разработки в Delphi или использовать Lazarus
- иметь компоненты для создания XLS/ODS, PDF.
- разработать ПО предметной области в виде подключаемой библиотеки .DLL (.so для Unix). Эту библиотеку можно использовать впоследствии при помощи сторонних средств и языков программирования, включая тот же PHP.
- скорее всего, данные нужно будет хранить в базе данных. Тогда нужно освоить основы языка SQL (это просто). Из самых простых вариантов СУБД - использование (как правило, бесплатное) SQLite, которая широко распространена на ОС мобильных устройств.
- написать техническую документацию для последующей поддержки написанного ПО другими лицами
- выбрать тип свободной лицензии
Проектирование ПО
Предполагая написание ПО в Delphi/Lazarus, предложу написание подключаемой библиотеки таким образом, чтобы работа в ней происходила исключительно с данными, не затрагивая каких-либо особенностей языка и, уж тем более, графической основы Delphi - VCL. Это позволит оперировать с этой библиотекой на уровне обработки данных, а всю графическую часть и взаимодействие с пользователем - выполнять в основной части программы.
Схематично это можно отобразить так:
Пользователь <-> графический интерфейс программы на Delphi <-> библиотека DLL (расчёты)
^
|
v
СУБД/файлы
Библиотека должна получать на входе набор данных в виде массива/составных структур данных (записей). Также и на выходе.
Оформление расчётов в библиотеке позволит программе быть более жизнеспособной и гибкой.