Админ

воскресенье, 10 ноября 2013 г.

Программа для расчёта стоимости деревянных срубов, или Об одном (не)удачном проекте

|
Есть среди моих проектов один, который я могу в равной мере считать как одной из самых больших своих удач, так и откровенным провалом. Удачей его делают осознание хорошо сделанной работы и то, что я на нём научился многим вещам и сделал многое из того, чего не делал раньше. Провалом он может считаться потому, что по независящим от меня причинам оказался никому не нужен.
Собственно говоря, я и пишу о нём в том числе и для того, чтобы проверить: вдруг найдётся кто-то, кому эта программа могла бы ещё пригодиться.

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

Заказчиком проекта в 2007 году стала одна организация, которая занималась строительством загородных домов из дерева. Фирме была нужна программа, которая бы позволяла, во-первых, нарисовать план деревянного сруба (основы для будущего дома) и, во-вторых, посчитать стоимость материалов и работ. В эпоху повального господства компьютеров эти люди продолжали рисовать планы вручную на бумаге, а расчёты делали при помощи калькулятора. Разумеется, ручная работа отнимала много времени, причём если клиенту фирмы что-то не нравилось, нужно было перерисовывать план и пересчитывать стоимость заново. Процесс согласования проекта мог растянуться на несколько дней, за которые клиент мог передумать и уйти к конкурентам. Тем более, что многие клиенты — люди далеко не бедные, а они не любят ждать.

Для меня это был совершенно новый опыт, раньше я никаким образом с этой сферой не соприкасался. Этот проект не имел никакого отношения к моей основной работе, так что занимался я им в основном дома, по вечерам после работы.

Реализация

Для хранения данных была выбрана СУБД Firebird. Она бесплатна, не требует лицензирования, не слишком требовательна к серверу и идеально подходит для небольших организаций (у клиента было всего несколько компьютеров — это была небольшая частная фирма). Серверную часть и базу можно разместить даже на обычной персоналке, лишь бы она была доступна через локальную сеть (именно так мы тогда сами делали на работе для некоторых проектов).


В тот период я увлекался созданием необычных заставок для своих программ. Это ещё не самое экзотическое из того, что я тогда сделал
Заставка программы

Структура программы

Данные в программе образуют чёткую иерархию. На самом верхнем уровне находится список клиентов фирмы.


Выделение шрифтом позволяет мгновенно увидеть, кто из клиентов уже успел сделать заказ, а кто пока нет
Список клиентов

С каждым клиентом можно связать несколько проектов (планов), например, если он хотел построить сразу дом и баню, или если он делал несколько разных заказов в разное время, или, наконец, если он хотел рассмотреть разные варианты и никак не мог выбрать, какой проект ему больше нравится.


Список проектов выбранного клиента

После создания или выбора клиента из списка можно просматривать и добавлять его проекты. Каждый проект предполагает наличие плана здания.

Для рисования планов был написан с нуля самодельный векторный графический редактор. Интерфейс пользователя навеян ныне забытым векторным графическим редактором Micrografx Draw 6, который в свои лучшие времена (конец 90-х) на равных конкурировал с Corel Draw. Я его очень любил и продолжал пользоваться ещё довольно долго после того, как разработчик канул в Лету (вернее, был поглощён и уничтожен Corel).

План рисуется мышкой, целиком масштабируется в достаточно широких пределах. Над объектами можно выполнять различные действия: перемещать, менять размер в заданных пределах (определяемых типом объекта), поворачивать на 90° (свободное вращение не подразумевается, да оно и не нужно), привязывать к конкретным координатам, чтобы избежать случайного перемещения и т. д.


Действия над объектами на плане

Пользователь может использовать разные типы объектов, например, капитальная стена, вынос, столб и т. п., а также разнообразные объекты, которые не относятся непосредственно к строительству, но которые нужно учитывать при создании плана. Например, можно заранее отвести место под печь или стенной шкаф. Список таких объектов пополняется пользователем самостоятельно. Эти объекты всегда рисуются на плане в виде прямоугольников. Я планировал дать возможность пользователям загружать в программу свои изображения для таких предметов, но эта возможность проходила по разряду приятных, но необязательных дополнений, и она так и не была реализована.


Работа с планом здания: добавление объекта

Для меня, как для программиста, самым интересным было то, что этот редактор внутри имеет объектно-ориентированную структуру, то есть каждый видимый объект на плане является и «объектом» в смысле программного кода. Это открывает различные возможности для модернизации. Так, редактор изначально замышлялся как универсальный, то есть там не было никакой привязки к планам зданий и т. д., но за счёт наследования объектов стало возможным указать, что вот этот объект является капитальной стеной, а вон тот — балкой или печкой. На плане все эти объекты выделяются либо цветом, либо границей, либо штриховкой. Цифры показывают высоту стен в венцах (для заказчика это было более информативно, чем в метрах).

После создания плана можно посчитать стоимость проекта. Стоимость вычисляется по некоторым формулам и зависит, во-первых, от плана (который определяет количество материала и сложность работ), во-вторых, от общих параметров проекта, например, тип бревен (круглые или плоские), тип стыков (бывают соединения типа «чашка» или «лапа»), дополнительной обработки и т. д., а в-третьих, конечно, от цен на рынке стройматериалов.

Расчёт приводится с полной расшифровкой — в виде всех исходных слагаемых и итоговой суммы, так что пользователь в любой момент может видеть все подробности.


Все цены, разумеется, давно и безнадёжно устарели
Расчёт стоимости с полной расшифровкой

Ну, и, наконец, пользователь может настраивать все параметры и коэффициенты для расчётов, которые применяются в программе. Никакие цифры в самой программе не хранятся, так что, например, при изменении расценок на стройматериалы или стандартной длины бревна сумма тут же будет пересчитана.


Параметры, коэффициенты и прочие настройки

Все расчёты можно вывести в документ, чтобы распечатать и отдать клиенту или просто чтобы сохранить у себя в виде твёрдой копии.


Расчёты в виде документа

После того, как клиент фирмы выразит своё согласие с планом и суммой, наступает момент подписания документа. План и итоговая сумма выводятся в виде документа (полную расшифровку можно приложить).


План печатается в трёх видах: отдельно с потолочными балками, с половыми балками и без балок. Дело в том, что если вывести все балки на одном плане, то он станет нечитаемым
Итоговый документ

Что из этого вышло

Вот такая у меня получилась программа. Она была готова примерно на 90%, а может, и больше: там оставались какие-то мелкие доработки. Но уже наступил 2008 год. Думаю, никому не нужно объяснять, чем печально знаменит этот год для отечественного бизнеса и сколько организаций тогда прогорело. И однажды вдруг стало ясно, что отдавать готовую программу уже некому, и никаких денег я за неё не получу. Некоторое время я по инерции продолжал что-то понемногу дорабатывать, хотя уже без особого энтузиазма.

Так я остался с почти готовой программой, на которую потратил несколько месяцев жизни (повторяю, делалось всё по вечерам, поэтому получилось не слишком быстро). Она работает:  делает всё, что перечислено выше (проверял, пока делал скриншоты для статьи).

Никому сейчас такая программа не нужна, а?

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

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

Пожалуйста, не используйте в сообщениях ненормативную лексику и нарушающие закон темы

К началу