Автоматизированное проектирование натяжных потолков

 












Автоматизированное проектирование натяжных потолков

Содержание


Введение

Автоматизированное проектирование натяжных потолков

Текст программы

Описание программы

Входными данными являются:

Описание применения

Руководство программиста

Заключение

Приложения

Введение


Со времён суммирующей машины Блеза Паскаля до появления первых ЭВМ компьютеры совершили огромный скачок вперёд - как по части сложности, так с точки зрения вычислительной мощности. И вместе с ростом мощностей росла и полезность применения компьютеров в тех или иных областях жизни человека. Так компьютер проник в сферу производства. Безусловно, первые компьютеры могли позволить себе далеко не все предприятия, и их цена ставила вопрос о целесообразности для конкретной организации введения в работу такого технического новшества. Но постепенно, с ростом количества компьютеров и повышением их мощностей, а также постепенным снижением их стоимости, компьютеры получали всё большее и большее распространение и внедрялись в новые сферы деятельности.

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

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

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

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

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

Автоматизированное проектирование натяжных потолков


Основанием для разработки программы, автоматизирующей проектирование натяжных потолков, является задание на дипломный проект, выданное учреждением образования "Гомельский государственный машиностроительный колледж" 21 марта 2011 года.

Программа предназначена для автоматизации действий, выполняемых специалистами-проектировщиками фирм, занимающихся установкой натяжных потолков.

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


Рисунок 1 Прямоугольник


(1)


Рисунок 2 Параллелограмм


(2)


Рисунок 3 Трапеция


(3)


Рисунок 4 Треугольник


(4)


Рисунок 5 Круг


(5)


Рисунок 6 Эллипс


(6)


Рисунок 7 Правильный n-угольник


(7)


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

Алгоритм находит наивысшую точку в массиве координат точек, образующих спроектированный многоугольник, и сравнивает её со всеми остальными точками в цикле, на каждой итерации увеличивая результат на следующее выражение:


(8)


По завершении цикла модуль итогового значения делится на два, образуя результат.

Для решения задачи предлагаются следующие входные и выходные данные:

·длины сторон (м.);

·длина высоты (м.);

·количество сторон;

·радиус (м.);

·координаты точек;

·Ф. И.О. заказчика;

·количество светильников;

·количество труб;

·стоимость светильника (долл.);

·стоимость трубы (долл.);

·стоимость квадратного метра (долл.).

Выходные данные:

·площадь потолка комнаты (м. кв.);

·площадь натяжного потолка (м. кв.);

·общая стоимость заказа (долл.);

·сумма задатка (долл.).

Разрабатываемая программа должна предоставлять пользователю следующие возможности:

ввод данных;

2хранение данных, необходимых для расчётов;

вычисление площадей потолков простой формы по шаблону;

графическое проектирование и вычисление площадей потолков сложной формы;

просмотр результатов;

расчёт стоимости установки потолка;

вывод отчётов с результатами вычислений в текстовые файлы *. txt и графические файлы *. bmp.

Результатом расчётов являются следующие значения:

·площадь потолка комнаты (м. кв.);

·площадь натяжного потолка (м. кв.);

·общая стоимость заказа (долл.);

·сумма задатка (долл.).

Результаты работы программы должны выводиться на экран монитора и по желанию пользователя экспортироваться в текстовые файлы *. txt и графические файлы *. bmp.

Для написания данной программы был выбран язык программирования Object Pascal в среде программирования Borland Delphi 7.0 под управлением 64-разрядной операционной системы Windows. Язык и среда выбраны по ряду важных причин, влияющих на ход разработки программы и на саму программу в целом:

Логичная и совершенная реализация принципов объектно-ориентированного программирования;

2Лёгкий в освоении синтаксис;

Возможность быстрого создания привлекательного пользовательского интерфейса с использованием стандартного набора компонентов;

Создание оптимизированного кода при компиляции. exe-файла, в результате чего он занимает сравнительно небольшой объём памяти;

Возможность полноценного использования функций WinAPI в разрабатываемых приложениях.

Указанные возможности и особенности позволяют сделать вывод о целесообразности выбора именно этих языка и среды.

Для нормального функционирования программы необходим следующий набор технических средств и программного обеспечения:

  • процессор Intel Pentium IV 1.0 ГГц или выше;
  • монитор SVGA, поддерживающий разрешение не менее 1024х768;
  • объём оперативной памяти 256 Мб и более;
  • свободное место на жёстком диске 20 Мб и более;
  • манипулятор типа "мышь";
  • клавиатура;
  • операционная система версии Windows XP и выше.

Для обоснования сметной стоимости программы и срока возврата инвестиций необходимо рассчитать следующие показатели. Расчёт будет производиться согласно Постановлению Министерства труда и социальной защиты Республики Беларусь от 27 июня 2007 г. "Об утверждении укрупнённых норм затрат труда на разработку программного обеспечения".


Таблица 1 - Перечень и объём функций программного обеспечения

Код функцииНаименование (содержание) функцийОбъём функции строк исходного кода (LOC) по каталогу Viуточнённый Vу101Организация ввода информации10056102Контроль, предварительная обработка и ввод информации290168107Организация ввода/вывода информации в интерактивном режиме170112303Обработка файлов750448305Формирование файла1100644506Обработка ошибочных и сбойных ситуаций970514507Обеспечение интерфейса между компонентами1120644707Графический вывод результатов330196Итого48302782

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

С = 1 + 0,08 + 1,26 = 1,34


Программа является развитием определенного параметрического ряда ПО. Новизна программы соответствует категории Б: Н = 1,00

При разработке программы доля используемых стандартных модулей составила менее 20%: Т = 0,9

Новизне программы категории Б соответствует следующее распределение трудоёмкости по стадиям:


КТЗ=0,10; КЭП=0, 20; KТП=0,30; КРП=0,30; КВН=0,10


Нормативная трудоемкость разработки ПО (Т) определяется согласно нормам затрат труда на разработку программного обеспечения и составляет 25 чел. - дн.


Таблица 2 - Расчет общей трудоёмкости разработки ПО

ПоказателиТЗЭПТПРПВНИтого1234567Коэффициенты удельных весов трудоемкости стадии разработки ПО (K) 0,100, 200,400, 200,101Распределение нормативной трудоемкости программного обеспечения (ТН) по стадиям, чел. - дн. 25913330Коэффициент сложности ПО (KС) 2,342,342,342,342,34-Коэффициент, учитывающий использование стандартных модулей (КТ) 0,9-Коэффициент, учитывающий новизну ПО (KН) 1,001,001,001,001,00-Общая трудоемкость ПО (ТО) чел. - дн. 24711125

Итого время на разработку программы ПП=8*25=200 часов, в том числе машинное время ТМ=11*8=72 часа.

Определение стоимости машинного времени производится на основании данных из таблицы 3.


Таблица 3 - Исходная информация для определения стоимости машинного времени

ПоказательУсловное обозначениеЕдиницы измеренияЗначение, руб. 1234Балансовая стоимость компьютераБКРублей1500000Мощность, потребляемая компьютеромМККВт0,3Полезный фонд времени работы компьютера за годFKЧас2050Балансовая стоимость принтераБПРублей300000Продолжение таблицы 3Мощность, потребляемая принтеромМПКВт0,05Полезный фонд времени работы принтера за годFПЧас. 500Стоимость 1кВт/часСРублей611Площадь на 1 рабочее место SPMМ26Стоимость 1м2 производственной площадиСПЛРублей34802Норма амортизации для оборудованияНАОПроценты20Норма амортизации для зданийНАПЛПроценты1Отчисления на текущий ремонт оборудования (в процентах от балансовой стоимости) POПроценты3,1

Определение стоимости потребляемой электроэнергии осуществляется по формуле (9):


, руб. (9)

СЭЛ= (0.3*2050+0.05*500) *611*0.8*1.05=328500 руб.


где КВР - коэффициент, учитывающий использование по времени (КВР=0,8);

КС - коэффициент, учитывающий потери в сети (КС=1,05).

Определение суммы амортизационных отчислений осуществляется по формуле (10):


, руб. (10)

САО= (1500000+300000) *20/100+6*34802*1/100= 362088 руб.


натяжной потолок графическое проектирование

Определение затрат на текущий ремонт оборудования осуществляется по формуле (11):


, руб. (11)

ЗР= (1500000+300000) *3,1/100= 55800 руб.


Результаты расчётов сводятся в таблицу 4.

Расчёт затрат на 1 машино-час ведётся, исходя из полезного фонда времени работы компьютера за год, то есть итог графы 3 таблицы 3, делённой на полезный фонд времени работы компьютера (FK).


Таблица 4 - Расчёт затрат на 1 машино-час

ПоказательУсловное обозначениеЗначение, рублей. На год (ЗМГ) на 1 машино-час (СМЧ) стоимость потребляемой электроэнергииСЭЛ328500160,3сумма ежегодных амортизационных отчислений. САО362088176,7Затраты на текущий ремонт оборудованияЗР5580027,2Итого: 746388364,2

Затраты на один машино-час, руб.


, руб. (12) СМЧ =746388/2050= 364,2 руб.


Расчёт стоимости машинного времени осуществляется по формуле (13):


, руб. (13)


где ТМ - машинное время работы компьютера в расчёте на программу;

СМЧ - стоимость 1 машино-часа - итог графы 4 таблицы 4.


CMВР= 88*364,2 = 32049,6 руб. (14)


Расчёт затраты на материалы и покупные комплектующие изделия сводятся в таблицу 5.


Таблица 5 - Расчёт затрат на материалы

НаименованиеТехническая характеристикаКоличествоОтпускная цена, в рубляхСумма, рублей12345CD-диск700 mb119001900Тонер для лазерного принтера201603200Бумага А420501000Итого: 6100Транспортно-заготовительные расходы (ТЗР) 160Всего с учётом ТЗР6260

Таблица 6 - Расчет затрат на оплату труда

Вид работТрудоёмкость, часКвалификационный разрядЧасовая тарифная ставка, руб. Прямая зарплата, руб. Техническое задание 1666755108080Эскизный проект3266755216160Технический проект5666755378280Рабочий проект1666755108080Внедрение программы86675554040Итого864640Премии и доплаты (13% от прямой заработной платы) 112400Итого, основная заработная плата977040

ЧТС6=3550 * 1,73 * 1,1 = 6755 руб.


Таблица 7 - Расчёт отпускной цены программы

Наименование статей затратСумма, руб. Обоснование расчёта1231 Затраты на материалы6260Таблица 52 Стоимость машинного времени32049,6Формула 143 Основная заработная плата програм - миста977040Таблица 64 Дополнительная заработная плата программиста12701513% от п.35 Итого, фонд оплаты труда (ФОТ) 1104055п.3+п.46 Отчисление в фонд социальной защиты населения и Белгосстрах386419,2535% от п.57 Накладные расходы29311230% от п.38 Полная себестоимость1821895,3п.1+п.2+п.5+п.6+п.79 Плановые накопления182189,510% п.810 Цена разработчика (оптовая цена) 2004084,8п.8+п.911 Налог на добавленную стоимость (НДС) 40081720% от п.1012 Итого стоимость ПП с НДС (Отпускная цена) 2404902п.10+п.11

Отпускная цена программы принимается равной 2404900 руб.

Определение годовых эксплуатационных расходов при ручном решении задачи.

Годовые эксплуатационные расходы при ручной обработке информации определяются по формуле (15):


ЗР = ТР * к * tЧР, руб. (15)


где ТР - трудоёмкость разового решения задачи вручную (5 ч.);

к - периодичность решения задачи в течение года (300);ЧР - среднечасовая ставка работника, осуществляющего ручной расчет задачи (5500);


ЗР=5*300*5500=3300000 руб.


Для расчёта годовых текущих затрат, связанных с эксплуатацией программы, необходимо определить время решения данной задачи на ЭВМ. Время решения задачи на ЭВМ определяется по формуле (16):


ТЗ= (ТВВР) * (1+dПЗ) /60, ч. (16)


где ТВВ - время ввода в ЭВМ исходных данных, необходимых для решения задачи, мин.;

ТР - время вычислений, мин.;

dПЗ - коэффициент, учитывающий подготовительно-заключительное время (dПЗ=0,25).

Время ввода в ЭВМ исходных данных может быть определено по формуле (17):


ТВВ =KZ*HZ/100, мин. (17)


где KZ - среднее количество знаков, набираемых с клавиатуры при вводе исходных данных (KZ=3);

HZ - норматив набора 100 знаков, мин. (HZ=6).

ТЗ=0,07 ч.

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

Затраты на заработную плату пользователя программы:


ЗП=ТЗ*к*tЧП, руб. (18)


где ТЗ - время решения задачи на ЭВМ;

tЧП - среднечасовая ставка пользователя программы.

В состав затрат, связанных с решением задачи включаются также затраты, связанные с эксплуатацией ЭВМ.


ЗП=0,06 *300*5500=99000 руб.


Затраты на оплату аренды ЭВМ для решения задачи определяются по следующей формуле (55):


ЗАЗ*к*СМЧ, руб. (19)

ЗА=0,06 *300*364,2=6556 руб.


Годовые текущие затраты, связанные с эксплуатацией, определяются по формуле (20):


ЗТ=ЗП+ЗА, руб. (20)


где ЗП - затраты на заработную плату пользователя программы;

ЗА - затраты на плату аренды ЭВМ при решении задачи.


ЗТ=99000 + 6556= 105556 руб.


Ожидаемый прирост прибыли в результате внедрения задачи взамен ручного ее расчета укрупнен, но может быть определен по формуле (21):


ПУ= (ЗРТ) * (1-СНП),руб. (21)


где СНП - ставка налога на прибыль (СНП =24%).


ПУ= (3300000 - 105556) * (1-0,24) = 2363887 руб.


Годовой экономический эффект от сокращения ручного труда при обработке информации определяется по формуле (22):


ЭФ=ПУ-Е*КОУ-Е* (КЗПР), руб. (22)

ЭФ=2363887 - 0,25* (51,2 + 2404900) =1762662 руб.


где Е - коэффициент эффективности, равный ставке за кредиты на рынке долгосрочных кредитов (Е=0,25);

КЗ - дополнительные затраты пользователя, единовременного характера, необходимые для эксплуатации программы, определяются по формуле (23):


КЗ =БК*ТЗ/FК, руб. (23)

КЗ =1500000*0,07 /2050=51,2 руб.


Срок возврата инвестиций определяется по формуле (24):


ТВОУ= (КЗПР) /ПУ (24)

ТВ= (51,2 + 2404900) / 2363887= 1 год


Результаты расчета сводятся в таблицу 8.


Таблица 8 - Технико-экономические показатели проекта

Наименование показателяВариантыручноймашинный1 Трудоёмкость решения задачи, час50,062 Периодичность решения задачи, раз/год3003003 Годовые текущие затраты, связанные с решением задачи, руб. 33000001055564 Отпускная цена программы, руб. - 24049005 Прирост условной прибыли, руб. -23638876 Годовой экономический эффект, руб. - 17626627 Срок возврата инвестиций, лет - 1

Принимаем стоимость программы 2404900 рублей. Срок возврата инвестиций составит 12 месяцев.


Автоматизированное проектирование натяжных потолков

Текст программы


Модуль "MainUnit" - главное окно программы:

unit MainUnit;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, MMSystem, jpeg, StdCtrls, XPMan, IniFiles, ComCtrls,;= class (TForm): TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TXPManifest;: TGroupBox;: TLabel;: TLabel;: TLabel;: TLabel;: TGroupBox;: TLabel;: TGroupBox;: TCheckBox;: TLabel;: TImage;: TImage;: TCheckBox;: TLabel;CloseBtnClick (Sender: TObject);MinBtnClick (Sender: TObject);AboutBtnClick (Sender: TObject);FormCreate (Sender: TObject);HelpBtnClick (Sender: TObject);OptBtnClick (Sender: TObject);CalcBtnClick (Sender: TObject);FormClose (Sender: TObject; var Action: TCloseAction);LogFileChBoxClick (Sender: TObject);ClearLogLblClick (Sender: TObject);CalcAreaBtnClick (Sender: TObject);CalcPriceBtnClick (Sender: TObject);MainBtnClick (Sender: TObject);SoundsChBoxClick (Sender: TObject);OptSaveLblClick (Sender: TObject);

{ Private declarations }

{ Public declarations };EnableFog;DisableFog;FormAppear;FormDisappear;EventLog (Event: String);: TMainForm;: Real;: Real;: String; // переменная, хранящая текущую дату

Time: String; // переменная, хранящая текущее время

ErrorString: String;: Boolean;: Boolean;: Boolean;: Boolean;: Boolean;: Boolean;: Boolean;: Byte;: Boolean;: TIniFile; // INI-файл программы

LogFile: TextFile; // текстовый лог-файл действий пользователя: Boolean; // переменная, хранящая состояние лог-файла: Byte; // перкменная, хранящая размер лог-файла: Boolean; // переменная, хранящая состояние звукового сопровождения: Boolean; // переменная, хранящая состояние меню "Расчёт": array [1.151] of Char = ('q','w','e','r','t','y','u','i','o', // массив для защиты от некорректного ввода

'p','a','s','d','f','g','h','j','k',

'l','z','x','c','v','b','n','m','й',

'ц','у','к','е','н','г','ш','щ','з',

'х','ъ','ф','ы','в','а','п','р','о',

'л','д','ж','э','я','ч','с','м','и',

'т','ь','ь','б','ю','ё','Q','W','E',

'R','T','Y','U','I','O','P','A','S',

'D','F','G','H','J','K','L','Z','X',

'C','V','B','N','M','Й','Ц','У','К',

'Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф',

'Ы','В','А','П','Р','О','Л','Д','Ж',

'Э','Я','Ч','С','М','И','Т','Ь','Б',

'Ю','Ё','! ','@','#','$','%','^','&',

'*',' (',') ','-','_','=','+','/','\',

'{','}',' [','] ','"','<','>','; ',': ',

'№','? ','. ','~','`','''',' ');: array [1.10] of Char = ('1','2','3','4','5','6','7','8','9','0');ClosingUnit, FogUnit, CADUnit, BigFogUnit, CADUnitWTools;

{$R *. dfm}FormAppear; // процедура, анимирующая появление форм

var: Byte;MainForm. Active = TRUE theni: = 0 to 255 do. AlphaBlendValue: = i;. ProcessMessages;(1);CADForm. Active = TRUE theni: = 0 to 255 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;CADFormWTools. Active = TRUE theni: = 0 to 255 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;ClosingForm. Active = TRUE theni: = 0 to 255 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;;;FormDisappear; // процедура, анимирующая закрытие форм: Byte;MainForm. Active = TRUE theni: = 255 downto 0 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;CADForm. Active = TRUE theni: = 255 downto 0 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;CADFormWTools. Active = TRUE theni: = 255 downto 0 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;ClosingForm. Active = TRUE theni: = 255 downto 0 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;;EnableFog; // процедура анимации затемнения формы: Byte;MainForm. Active = TRUE then. Show;i: = 0 to 150 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;CADForm. Active = TRUE then. Show;i: = 0 to 150 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;CADFormWTools. Active = TRUE then. Show;i: = 0 to 150 do. AlphaBlendValue: = i;. ProcessMessages;(1);;;;DisableFog; // процедура анимации снятия затемнения формы. Close;. Close;;EventLog (Event: String); // процедура добавления событий в лог-файл: TFileStream;: Real;: Real;: Real;: = DateToStr (SysUtils. Date);: = TimeToStr (SysUtils. Time);(LogFile);(LogFile, '' + Date + ' ' + Time + Event);(LogFile);(LogFile);: = TFileStream. Create ('ActionLog. txt', fmOpenRead);: = SizeStream. Size;. Free;SizeInB < 1024 then. ClearLogLbl. Caption: = 'Очистить лог-файл (' + FloatToStr (SizeInB) + ' байт) ': = SizeInB / 1024;SizeInKb < 1024 then. ClearLogLbl. Caption: = 'Очистить лог-файл (' + FloatToStrF (SizeInKb, ffFixed, 4,2) + ' Кбайт) ': = SizeInKb / 1024;. ClearLogLbl. Caption: = 'Очистить лог-файл (' + FloatToStrF (SizeInMb, ffFixed, 4,2) + ' Мбайт) ';;;GUIHide; // процедура скрытия элементов интерфейса. AboutGrBox. Visible: = FALSE;. HelpGrBox. Visible: = FALSE;. OptGrBox. Visible: = FALSE;. LogoImg. Visible: = FALSE;;CalcMenuClose; // процедура анимации закрытия меню "Расчёт": Byte;: = FALSE;. CalcAreaBtn. Visible: = FALSE;. CalcPriceBtn. Visible: = FALSE;i: = 1 to 49 do. OptBtn. Top: = MainForm. OptBtn. Top - 1;. AboutBtn. Top: = MainForm. AboutBtn. Top - 1;. HelpBtn. Top: = MainForm. HelpBtn. Top - 1;. ProcessMessages ();(1);;;TMainForm. FormCreate (Sender: TObject); // обработка события запуска программы

// MainForm. DoubleBuffered: =TRUE;;. Visible: = TRUE;. Show;

CalcMenuOpened: = FALSE;. Caption: = 'Данная программа разработана в качестве дипломного проекта по заказу ИП Торопова И.Н. ' + Chr (10) +

'Разработчик - Евгений Богданов, группа Пк-41. ' + Chr (10) +

'УО "Гомельский Государственный Машиностроительный Колледж", 2011 г. ';(LogFile,'ActionLog. txt');

if not FileExists ('ActionLog. txt') then(LogFile);(LogFile);;(' Программа запущена');: = TIniFile. Create (ExtractFilePath (ParamStr (0)) + 'Settings. ini');. WriteInteger ('Position', 'X', MainForm. Left);. WriteInteger ('Position', 'Y', MainForm. Top);: = INI. ReadBool ('LogFile', 'LogFileDisabled', LogFileDisabled);LogFileDisabled = TRUE then. Checked: = TRUE;

EventLog (' ВЕДЕНИЕ ЛОГ-ФАЙЛА ОТКЛЮЧЕНО В ОДНОЙ ИЗ ПРЕДЫДУЩИХ СЕССИЙ');

end. Checked: = FALSE;: = INI. ReadBool ('Sounds', 'SoundsEnabled', SoundsEnabled);SoundsEnabled = TRUE then. Checked: = TRUE. Checked: = FALSE;. Free;;;TMainForm. MinBtnClick (Sender: TObject); // обработка нажатия кнопки "Свернуть"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);(Application. Handle, SW_MINIMIZE);;TMainForm. CloseBtnClick (Sender: TObject); // обработка нажатия кнопки "Закрыть"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);;: = 1;. Show;;TMainForm. MainBtnClick (Sender: TObject); // обработка нажатия кнопки "Главная"LogFileDisabled = FALSE then(' Раздел "Главная"');SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);;. Visible: = TRUE;;TMainForm. CalcBtnClick (Sender: TObject); // обработка нажатия кнопки "Расчёт"// : Byte; // // LogFileDisabled = FALSE then //

EventLog (' Раздел "Расчёт"'); //

if CalcMenuOpened = FALSE then // // SoundsEnabled = TRUE then // (PChar ('Sounds/MenuOpening. wav'), 0, SND_ASYNC); // : = TRUE; // i: = 1 to 49 do // // . Top: = OptBtn. Top + 1; // . Top: = AboutBtn. Top + 1; // . Top: = HelpBtn. Top + 1; // . ProcessMessages (); // (1); // ; // . Visible: = TRUE; // . Visible: = TRUE; // ; // ; //

// TMainForm. CalcAreaBtnClick (Sender: TObject); // обработка нажатия кнопки "Вычисление площади"// LogFileDisabled = FALSE then //

EventLog (' Подраздел "Расчёт"/"Вычисление площади"'); //

if SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // ; // ; // . PriceGrBox. Visible: = FALSE; // . TempBtn. Visible: = TRUE; // . CADBtn. Visible: = TRUE; // . Show; // . Close; // ; //

// TMainForm. CalcPriceBtnClick (Sender: TObject); // обработка нажатия кнопки "Вычисление стоимости"// LogFileDisabled = FALSE then //

EventLog (' Подраздел "Расчёт"/"Вычисление стоимости"'); //

if SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // ; // ; // . TempBtn. Visible: = FALSE; // . CADBtn. Visible: = FALSE; // . PriceGrBox. Visible: = TRUE; // . SRoomLEdit. Text: = FloatToStrF (SRoom, ffFixed, 5,2); // . SCeilLEdit. Text: = FloatToStrF (SCeil, ffFixed, 5,2); // . Show; // . Close; // ; // TMainForm. OptBtnClick (Sender: TObject); // обработка нажатия кнопки "Настройки"// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // CalcMenuOpened = TRUE then // ; // LogFileDisabled = FALSE then // (' Раздел "Настройки"'); // ; // . Visible: = TRUE; // ; //

// TMainForm. LogFileChBoxClick (Sender: TObject); // обработка события включения/выключения ведения лог-файла// LogFileChBox. Checked = TRUE then // : = TRUE // // : = FALSE; // ; //

// TMainForm. ClearLogLblClick (Sender: TObject); // обработка нажатия кнопки "Очистить лог-файл// SoundsEnabled = TRUE then // (PChar ('Sounds/LogFileClear. wav'), 0, SND_ASYNC); // (LogFile); // (' Лог-файл очищен'); // ; //

// TMainForm. SoundsChBoxClick (Sender: TObject); // обработка события включения/выключения звукового сопровождения// SoundsChBox. Checked = TRUE then // : = TRUE // // : = FALSE; // ; // TMainForm. OptSaveLblClick (Sender: TObject); // обработка нажатия кнопки "Сохранить настройки"// : = TIniFile. Create (ExtractFilePath (ParamStr (0)) + 'Settings. ini'); // . WriteBool ('LogFile', 'LogFileDisabled', LogFileChBox. Checked); // . WriteBool ('Sounds', 'SoundsEnabled', SoundsChBox. Checked); // LogFileChBox. Checked = TRUE then //

EventLog (' ВЕДЕНИЕ ЛОГ-ФАЙЛА ОТКЛЮЧЕНО') // // (' ВЕДЕНИЕ ЛОГ-ФАЙЛА ВКЛЮЧЕНО'); //

if SoundsChBox. Checked = TRUE then //

EventLog (' Звуковое сопровождение включено') // // (' Звуковое сопровождение отключено'); // (' Настройки сохранены'); // . Free; //

end; // TMainForm. HelpBtnClick (Sender: TObject); // обработка нажатия кнопки "Справка"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);CalcMenuOpened = TRUE then;LogFileDisabled = FALSE then(' Раздел "Справка"');;. Visible: = TRUE;;TMainForm. AboutBtnClick (Sender: TObject); // обработка нажатия кнопки "О программе"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);CalcMenuOpened = TRUE then;LogFileDisabled = FALSE then(' Раздел "О программе"');;. Visible: = TRUE;;TMainForm. FormClose (Sender: TObject; var Action: TCloseAction); // обработка события закрытия программы

begin(' Программа закрыта');

Append (LogFile);(LogFile, '');(LogFile);(LogFile);;;.

Модуль "CADUnit" - окно расчётов:CADUnit;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, MMSystem, jpeg, StdCtrls, Math, IniFiles;= class (TForm): TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TImage;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TGroupBox;: TImage;: TLabeledEdit;: TLabeledEdit;: TLabel;: TImage;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabel;: TGroupBox;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabeledEdit;: TLabel;: TLabel;: TLabeledEdit;: TImage;: TImage;: TGroupBox;: TImage;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabel;: TLabeledEdit;: TImage;: TImage;: TImage;: TLabel;: TGroupBox;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabeledEdit;: TLabel;: TLabeledEdit;: TImage;: TImage;: TLabel;: TGroupBox;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabel;: TLabeledEdit;: TLabel;: TGroupBox;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabeledEdit;: TLabel;: TLabeledEdit;: TImage;: TImage;: TLabel;: TGroupBox;: TImage;: TImage;: TLabeledEdit;: TImage;: TLabel;: TLabeledEdit;: TImage;: TLabel;: TLabeledEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TGroupBox;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabel;: TLabeledEdit;: TLabeledEdit;: TLabel;: TImage;: TImage;: TImage;: TImage;: TImage;: TLabeledEdit;: TLabeledEdit;: TImage;: TImage;FormActivate (Sender: TObject);BackBtnClick (Sender: TObject);CADMinBtnClick (Sender: TObject);CADCloseBtnClick (Sender: TObject);FormClose (Sender: TObject; var Action: TCloseAction);TempBtnClick (Sender: TObject);TempBtnMouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);TempBtnMouseLeave (Sender: TObject);CADBtnMouseMove (Sender: TObject; Shift: TShiftState; X,: Integer);CADBtnMouseLeave (Sender: TObject);CADBtnClick (Sender: TObject);RectBtnClick (Sender: TObject);ParallBtnClick (Sender: TObject);TrapBtnClick (Sender: TObject);TriangleBtnClick (Sender: TObject);CircleBtnClick (Sender: TObject);EllipseBtnClick (Sender: TObject);PolyBtnClick (Sender: TObject);RectALEditChange (Sender: TObject);RectBLEditChange (Sender: TObject);RectALEditEnter (Sender: TObject);RectBLEditEnter (Sender: TObject);RectCalcLblClick (Sender: TObject);ParallBLEditChange (Sender: TObject);ParallBLEditEnter (Sender: TObject);ParallHLEditChange (Sender: TObject);ParallHLEditEnter (Sender: TObject);ParallCalcLblClick (Sender: TObject);TrapALEditChange (Sender: TObject);TrapBLEditChange (Sender: TObject);TrapALEditEnter (Sender: TObject);TrapBLEditEnter (Sender: TObject);TrapHLEditChange (Sender: TObject);TrapHLEditEnter (Sender: TObject);TrapCalcLblClick (Sender: TObject);TriangleBLEditChange (Sender: TObject);TriangleBLEditEnter (Sender: TObject);TriangleHLEditChange (Sender: TObject);TriangleHLEditEnter (Sender: TObject);TriangleCalcLblClick (Sender: TObject);CircleRLEditChange (Sender: TObject);CircleRLEditEnter (Sender: TObject);CircleCalcLblClick (Sender: TObject);EllipseALEditChange (Sender: TObject);EllipseALEditEnter (Sender: TObject);EllipseBLEditChange (Sender: TObject);EllipseBLEditEnter (Sender: TObject);EllipseCalcLblClick (Sender: TObject);PolyALEditChange (Sender: TObject);PolyALEditEnter (Sender: TObject);PolyNLEditChange (Sender: TObject);PolyNLEditEnter (Sender: TObject);PolyCalcLblClick (Sender: TObject);CustomerLEditChange (Sender: TObject);SRoomLEditChange (Sender: TObject);LampLEditChange (Sender: TObject);PipeLEditChange (Sender: TObject);SquareLEditChange (Sender: TObject);PriceCalcLblClick (Sender: TObject);LampPriceLEditChange (Sender: TObject);PipePriceLEditChange (Sender: TObject);

{ Private declarations }

{ Public declarations };InputCheck (CheckString: String);: TCADForm;: Real;: Real;: Real;: Real;: Byte;: Real;: String;: Real;: Real;: Byte;: Byte;: Real;: Real;: Real;: Real;: Real;MainUnit, FogUnit, ClosingUnit, CADUnitWTools;

{$R *. dfm}SaveResults (Shape: String; a: Real; b: Real; h: Real; r: Real; n: Byte; S: Real); // процедура для сохранения результатов расчётов по шаблону: TextFile;: String;: TSYSTEMTIME;: = DateToStr (SysUtils. Date);(LocalTime);: = '' + Date + ' ' + IntToStr (LocalTime. wHour) + '-' + IntToStr (LocalTime. wMinute) + '-' + IntToStr (LocalTime. wSecond) + ' ' + Shape + '. txt';(ResFile, NameString);not FileExists (NameString) then(ResFile);(ResFile);;(ResFile);(ResFile, Date);(ResFile, Time);(ResFile, Shape);a <> 0 then(ResFile, 'Сторона ''а'' = ' + FloatToStr (a) + ' м. ');b <> 0 then(ResFile, 'Сторона ''b'' = ' + FloatToStr (b) + ' м. ');h <> 0 then(ResFile, 'Высота ''h'' = ' + FloatToStr (h) + ' м. ');r <> 0 then(ResFile, 'Радиус ''r'' = ' + FloatToStr (r) + ' м. ');n <> 0 then(ResFile, 'Количество сторон ''b'' = ' + IntToStr (n));(ResFile, ' Площадь потолка = ' + FloatToStr (S) + ' кв. м. ');(ResFile);(ResFile);;InputCheck (CheckString: String); // процедура, проверяющая корректность вводимых значений: Boolean;: Boolean;: Byte;: Boolean;: Byte;: Byte;: = FALSE;: = FALSE;: = TRUE;: = TRUE;: = FALSE;: = 0;Length (CheckString) = 0 then

begin: = TRUE;: = 'Это поле обязательно для ввода. ';

if LogFileDisabled = FALSE then(' Попытка ввода пустой строки');;Empty = FALSE thenIsWord = TRUE theni: = 1 to Length (CheckString) doj: = 1 to 26 doIllChar [j] = CheckString [i] then

begin: = FALSE;: = 'Вводимое значение не может содержать символов латинского алфавита. ';

if LogFileDisabled = FALSE then(' Попытка ввода латинских букв');;;i: = 1 to Length (CheckString) doj: = 61 to 86 doIllChar [j] = CheckString [i] then

begin: = FALSE;: = 'Вводимое значение не может содержать символов латинского алфавита. ';

if LogFileDisabled = FALSE then(' Попытка ввода латинских букв');;;i: = 1 to Length (CheckString) doj: = 120 to 150 doIllChar [j] = CheckString [i] then

begin: = FALSE;: = 'Вводимое значение не может содержать знаков препинания. ';

if LogFileDisabled = FALSE then(' Попытка ввода знаков препинания');;;i: = 1 to Length (CheckString) doj: = 1 to 10 doIllNum [j] = CheckString [i] then

begin: = FALSE;: = 'Вводимое значение не может содержать цифр. ';

if LogFileDisabled = FALSE then(' Попытка ввода цифр');;;i: = 1 to Length (CheckString) do(CheckString [i] = ' ') and (CheckString [i + 1] = ' ') then

begin: = FALSE;: = 'Вводимое значение не может содержать двух пробелов подряд. ';

if LogFileDisabled = FALSE then(' Попытка ввода двух пробелов подряд');;;;CheckString [1] = ',' then

begin: = FALSE;: = 'Вводимое значение не должно начинаться с запятой. ';LogFileDisabled = FALSE then(' Попытка ввода строки, которая начинается с запятой');

end;(CheckString [1] = '0') and (CheckString [2] <> ',') and (IsCoordinate = FALSE) then

begin: = FALSE;: = 'Вводимое значение не может начинаться с нуля, не будучи дробным. ';LogFileDisabled = FALSE then(' Попытка ввода строки, которая начинается с нуля и не содержит дроби');

end;(CheckString [1] = '0') and (CheckString [2] = '0') then

begin: = FALSE;: = 'Перед запятой не может быть двух и более нулей. ';LogFileDisabled = FALSE then(' Попытка ввода строки, которая содержит два и более нулей перед запятой');

end;i: = 1 to Length (CheckString) doCheckString [i] = ',' then(CommaCounter);CommaCounter > 1 then

Check: = FALSE;: = 'Десятичная дробь не может содержать две и более запятых. ';LogFileDisabled = FALSE then(' Попытка ввода числа, которое содержит более одной запятой');

end;;IsWord = FALSE theni: = 1 to Length (CheckString) doj: = 1 to 151 doIllChar [j] = CheckString [i] then: = FALSE;: = TRUE;

if IsInt = FALSE then: = 'Вводимое значение не должно содержать букв, пробелов и знаков препинания, кроме запятой. ': = 'Вводимое значение не должно содержать букв, пробелов и знаков препинания. ';LogFileDisabled = FALSE then(' Попытка ввода строки, которая содержит буквы, пробелы и знаки препинания');

end;;;(IsInt = TRUE) and (CommaCounter <> 0) then: = FALSE;IsCoordinate = TRUE then

ErrorString: = 'Координата не может быть дробной': = 'Количество не может быть выражено дробью. ';LogFileDisabled = FALSE then(' Попытка ввода строки, которая содержит нецелочисленное значение');

end;(IsCoordinate = TRUE) and (IsX = TRUE) and (HasLetters = FALSE) {and (IsWord = FALSE) } thenStrToFloat (CheckString) > 898 then

Check: = FALSE;: = 'Введённая координата выходит за пределы диапазона. ';LogFileDisabled = FALSE then(' Попытка ввода координаты, выходящей за пределы диапазона по X');

end;;(IsCoordinate = TRUE) and (IsY = TRUE) and (HasLetters = FALSE) and (IsWord = FALSE) thenStrToFloat (CheckString) > 446 then

Check: = FALSE;: = 'Введённая координата выходит за пределы диапазона. ';LogFileDisabled = FALSE then(' Попытка ввода координаты, выходящей за пределы диапазона по Y');

end;;(Check = TRUE) and (IsCoordinate = FALSE) and (IsWord = FALSE) thenStrToFloat (CheckString) = 0 then

Check: = FALSE;: = 'Вводимое значение не должно быть равно нулю. ';

NilCheck: = FALSE;LogFileDisabled = FALSE then

EventLog (' Попытка ввода числа, равного нулю');

end: = TRUE;;(Check = TRUE) and (NilCheck = TRUE) then: = TRUE;LogFileDisabled = FALSE then

EventLog (' Введены корректные данные');;;;LocalGUI (Parameter: Byte; Show: Boolean); // процедура, отвечающая за отображение и скрытие элементов интерфейса

begin. TempBtn. Visible: = FALSE;. CADBtn. Visible: = FALSE;(Parameter = 11) and (Show = TRUE) then. ChooseLbl. Visible: = TRUE;. CircleBtn. Visible: = TRUE;. EllipseBtn. Visible: = TRUE;. ParallBtn. Visible: = TRUE;. PolyBtn. Visible: = TRUE;. RectBtn. Visible: = TRUE;. TrapBtn. Visible: = TRUE;. TriangleBtn. Visible: = TRUE;;(Parameter = 11) and (Show = FALSE) then. ChooseLbl. Visible: = FALSE;. CircleBtn. Visible: = FALSE;. EllipseBtn. Visible: = FALSE;. ParallBtn. Visible: = FALSE;. PolyBtn. Visible: = FALSE;. RectBtn. Visible: = FALSE;. TrapBtn. Visible: = FALSE;. TriangleBtn. Visible: = FALSE;;(Parameter = 111) and (Show = FALSE) then. RectGrBox. Visible: = FALSE;. ParallGrBox. Visible: = FALSE;. TrapGrBox. Visible: = FALSE;. TriangleGrBox. Visible: = FALSE;. CircleGrBox. Visible: = FALSE;. EllipseGrBox. Visible: = FALSE;. PolyGrBox. Visible: = FALSE;;;TCADForm. FormActivate (Sender: TObject); // обработка события активации формы

begin. Caption: = 'Выберите эту опцию, если проектируемый потолок имеет одну из стандартных форм: прямоугольник, параллелограмм, трапеция, треугольник, круг, эллипс, правильный многоугольник. ' + Chr (10) +

'Эта опция подходит для самых простых потолков. ';. Caption: = 'Выберите эту опцию, если проектируемый потолок имеет сложную форму, которую невозможно рассчитать с помощью стандартных форм. ' + Chr (10) +

'Эта опция подходит для потолков, которые осложнены внешними и внутренними углами. ';

TempHelpLbl. Visible: = FALSE;. Visible: = FALSE;;: = FALSE;LogFileDisabled = FALSE then(' Окно расчётов');

EventLog (' Диалог выбора режима расчёта');

end;. Visible: = FALSE;;TCADForm. BackBtnClick (Sender: TObject); // обработка нажатия кнопки "Назад"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);;: = 3;. Show;;TCADForm. CADMinBtnClick (Sender: TObject); // обработка нажатия кнопки "Свернуть"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);(Application. Handle, SW_MINIMIZE);;TCADForm. CADCloseBtnClick (Sender: TObject); // обработка нажатия кнопки "Закрыть"SoundsEnabled = TRUE then(PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC);;: = 2;. Show;;TCADForm. FormClose (Sender: TObject; var Action: TCloseAction); // обработка события закрытия формыLogFileDisabled = FALSE then(' Окно расчётов закрыто');(11, FALSE);(12, FALSE);(111, FALSE);;TCADForm. TempBtnClick (Sender: TObject); // обработка нажатия кнопки "Выбрать шаблон потолка из стандартных форм"// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // ; // (11, TRUE); // ; // LogFileDisabled = FALSE then //

EventLog (' Выбран расчёт потолка стандартной формы'); // ; //

// TCADForm. TempBtnMouseMove (Sender: TObject; Shift: TShiftState; X, // отображение подсказки к кнопке "Выбрать шаблон потолка из стандартных форм"

Y: Integer); // // : Byte; // // TempHelpLbl. Visible = TRUE then // // i: = 107 to 137 do // // . Top: = i; // ; // ; // . Visible: = TRUE; // ; //

// TCADForm. TempBtnMouseLeave (Sender: TObject); // скрытие подсказки к кнопке "Выбрать шаблон потолка из стандартных форм"// : Byte; // // . Visible: = FALSE; // i: = 137 downto 107 do // // . Top: = i; // . ProcessMessages (); // (1); // ; // ; // TCADForm. CADBtnClick (Sender: TObject); // обработка нажатия кнопки "Спроектировать потолок вручную"// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (12, TRUE); // LogFileDisabled = FALSE then //

EventLog (' Выбрано проектирование потолка сложной формы'); //

FormDisappear; // . Close; // . Show; // ; //

// TCADForm. CADBtnMouseMove (Sender: TObject; Shift: TShiftState; X, // отображение подсказки к кнопке "Спроектировать потолок вручную": Integer); // // . Visible: = TRUE; // ; //

// TCADForm. CADBtnMouseLeave (Sender: TObject); // скрытие подсказки к кнопке "Спроектировать потолок вручную"// . Visible: = FALSE; // ; // TCADForm. RectBtnClick (Sender: TObject); // обработка выбора прямоугольника// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (11, FALSE); // . Visible: = TRUE; // . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // LogFileDisabled = FALSE then //

EventLog (' Выбран шаблон прямоугольника'); //

end; //

// TCADForm. RectALEditChange (Sender: TObject); // обработка ввода данных в RectALEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 300; // (RectALEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (RectALEdit. Text); // (RectAccImgA. Visible = TRUE) and (RectAccImgB. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. RectALEditEnter (Sender: TObject); // отображение подсказки к RectALEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. RectBLEditChange (Sender: TObject); // обработка ввода данных в RectBLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 330; // (RectBLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (RectBLEdit. Text); // (RectAccImgA. Visible = TRUE) and (RectAccImgB. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. RectBLEditEnter (Sender: TObject); // отображение подсказки к RectBLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. RectCalcLblClick (Sender: TObject); // // (RectAccImgA. Visible = TRUE) and (RectAccImgB. Visible = TRUE) then // // : = a * b; // . Text: = FloatToStr (S); // S >= 50 then // . Visible: = TRUE; // ; // . Visible: = TRUE; // ('Потолок по шаблону ''прямоугольник''', a, b, 0, 0, 0, S); // ; // TCADForm. ParallBtnClick (Sender: TObject); // обработка выбора параллелограмма// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (11, FALSE); // . Visible: = TRUE; // . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // LogFileDisabled = FALSE then //

EventLog (' Выбран шаблон параллелограмма'); //

end; //

// TCADForm. ParallBLEditChange (Sender: TObject); // обработка ввода данных в ParallBLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 300; // (ParallBLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (ParallBLEdit. Text); // (ParallAccImgB. Visible = TRUE) and (ParallAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. ParallBLEditEnter (Sender: TObject); // отображение подсказки к ParallBLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. ParallHLEditChange (Sender: TObject); // обработка ввода данных в ParallHLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 330; // (ParallHLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (ParallHLEdit. Text); // (ParallAccImgB. Visible = TRUE) and (ParallAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. ParallHLEditEnter (Sender: TObject); // отображение подсказки к ParallHLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. ParallCalcLblClick (Sender: TObject); // // (ParallAccImgB. Visible = TRUE) and (ParallAccImgH. Visible = TRUE) then // // : = b * h; // . Text: = FloatToStr (S); // S >= 50 then // . Visible: = TRUE; // ; // . Visible: = TRUE; // ('Потолок по шаблону ''параллелограмм''', 0, b, h, 0, 0, S); // ; // TCADForm. TrapBtnClick (Sender: TObject); // обработка выбора трапеции// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (11, FALSE); // . Visible: = TRUE; // . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // LogFileDisabled = FALSE then // (' Выбран шаблон трапеции'); // ; //

// TCADForm. TrapALEditChange (Sender: TObject); // обработка ввода данных в TrapALEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 300; // (TrapALEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (TrapALEdit. Text); // (TrapAccImgA. Visible = TRUE) and (TrapAccImgB. Visible = TRUE) and (TrapAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. TrapALEditEnter (Sender: TObject); // отображение подсказки к TrapALEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. TrapBLEditChange (Sender: TObject); // обработка ввода данных в TrapBLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 330; // (TrapBLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (TrapBLEdit. Text); // (TrapAccImgA. Visible = TRUE) and (TrapAccImgB. Visible = TRUE) and (TrapAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. TrapBLEditEnter (Sender: TObject); // отображение подсказки к TrapBLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. TrapHLEditChange (Sender: TObject); // обработка ввода данных в TrapHLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 360; // (TrapHLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (TrapHLEdit. Text); // (TrapAccImgA. Visible = TRUE) and (TrapAccImgB. Visible = TRUE) and (TrapAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. TrapHLEditEnter (Sender: TObject); // отображение подсказки к TrapHLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. TrapCalcLblClick (Sender: TObject); // обработка нажатия кнопки "Рассчитать площадь"// (TrapAccImgA. Visible = TRUE) and (TrapAccImgB. Visible = TRUE) and (TrapAccImgH. Visible = TRUE) then // // : = (h / 2) * (a + b); // . Text: = FloatToStr (S); // S >= 50 then // . Visible: = TRUE; // ; // . Visible: = TRUE; // ('Потолок по шаблону ''трапеция''', a, b, h, 0, 0, S); // ; // TCADForm. TriangleBtnClick (Sender: TObject); // обработка выбора треугольника// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (11, FALSE); // . Visible: = TRUE; // . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // LogFileDisabled = FALSE then //

EventLog (' Выбран шаблон треугольника'); //

end; //

// TCADForm. TriangleBLEditChange (Sender: TObject); // обработка ввода данных в TriangleBLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 300; // (TriangleBLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (TriangleBLEdit. Text); // (TriangleAccImgB. Visible = TRUE) and (TriangleAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Enabled: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. TriangleBLEditEnter (Sender: TObject); // отображение подсказки к TriangleBLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. TriangleHLEditChange (Sender: TObject); // обработка ввода данных в TriangleHLEdit// . Visible: = FALSE; // . Visible: = FALSE; // . Top: = 330; // (TriangleHLEdit. Text); // GenCheck = TRUE then // // . Visible: = FALSE; // . Enabled: = TRUE; // . Visible: = TRUE; // : = StrToFloat (TriangleHLEdit. Text); // (TriangleAccImgB. Visible = TRUE) and (TriangleAccImgH. Visible = TRUE) then // . Visible: = TRUE; // // // // . Visible: = FALSE; // . Visible: = FALSE; // . Caption: = ErrorString; // . Visible: = TRUE; // ; // ; //

// TCADForm. TriangleHLEditEnter (Sender: TObject); // отображение подсказки к TriangleHLEdit// . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // ; //

// TCADForm. TriangleCalcLblClick (Sender: TObject); // обработка нажатия кнопки "Рассчитать площадь"// (TriangleAccImgB. Visible = TRUE) and (TriangleAccImgH. Visible = TRUE) then // // : = (h / 2) * b; // . Text: = FloatToStr (S); // S >= 50 then // . Visible: = TRUE; // ; // . Visible: = TRUE; // ('Потолок по шаблону ''треугольник''', 0, b, h, 0, 0, S); // ; // TCADForm. CircleBtnClick (Sender: TObject); // обработка выбора круга// SoundsEnabled = TRUE then // (PChar ('Sounds/OnSection. wav'), 0, SND_ASYNC); // (11, FALSE); // . Visible: = TRUE; // . Visible: = TRUE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // . Visible: = FALSE; // LogFileDisabled = FALSE then //

EventLog (' Выбран шаблон круга'); //

end; //

//


Описание программы


Программа автоматизированного проектирования натяжных потолков предназначена для автоматизации действий, выполняемых специалистами-проектировщиками. Для этого в программе реализованы следующие функции: ввод данных, вычисление площадей потолков простой формы по шаблону, графическое проектирование и вычисление площадей потолков сложной формы, просмотр результатов, расчёт стоимости установки потолка, вывод отчётов с результатами вычислений в текстовые файлы *. txt и графические файлы *. bmp.

Алгоритм работы программы можно представлен в виде диаграммы вариантов использования и диаграммы последовательности.

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

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

В качестве технологического подхода при разработке программы был выбран каскадно-возвратный подход, позволяющий вернуться к предыдущим стадиям разработки или уточнить принятые ранее решения.

В программе используются следующие глобальные переменные:

·GenCheck - переменная, использующаяся при проверке корректности ввода;

·SRoom - переменная, хранящая площадь потолка комнаты;

·SCeil - переменная, хранящая площадь натяжного потолка;

·Date - переменная, получающая текущую дату для сохранения в лог-файл;

·Time - переменная, получающая текущее время для сохранения в лог-файл;

·ErrorString - переменная, хранящая строку с сообщением об ошибке;

·Check - переменная, использующаяся при проверке корректности ввода;

·IsInt - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение должно быть целым числом;

·IsCoordinate - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой;

·IsX - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой X;

·IsY - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой Y;

·IsWord - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является словом;

·Parameter - переменная, передающая на форму с диалогом закрытия программы информацию о том, откуда она была вызвана;

·INI - ini-файл программы, в который сохраняются её настройки;

·LogFile - текстовый файл, в который сохраняются все действия пользователя;

·LogFileDisabled - переменная, сигнализирующая о том, что ведение лог-файла включено/отключено;

·LogFileSize - переменная, получающая размер лог-файла;

·SoundsEnabled - переменная, сигнализирующая о том, что звуковое сопровождение включено/отключено;

·CalcMenuOpened - переменная, сигнализирующая о том, что открыто меню расчётов.

Программа, реализующая решение поставленной задачи, состоит из ряда процедур и функций, которые в процессе выполнения взаимодействуют друг с другом:

Процедуры, описанные в модуле MainUnit:

·procedure FormAppear - процедура анимации появления форм на экране;

·procedure FormDisappear - процедура анимации закрытия или скрытия форм с экрана;

·procedure EnableFog - процедура включения "тумана" на неактивных формах;

·procedure DisableFog - процедура отключения "тумана";

·procedure EventLog (Event: String) - процедура добавления данных в лог-файл;

·procedure GUIHide - процедура скрытия определённых элементов интерфейса формы MainForm;

·procedure CalcMenuClose - процедура закрытия меню расчётов

·procedure TMainForm. FormCreate (Sender: TObject) - процедура обработки события создания формы MainForm;

·procedure TMainForm. MinBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Свернуть" на форме MainForm;

·procedure TMainForm. CloseBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Закрыть" на форме MainForm;

·procedure TMainForm. MainBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Главная";

·procedure TMainForm. CalcBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Расчёт";

·procedure TMainForm. CalcAreaBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Вычисление площади" в меню "Расчёт";

·procedure TMainForm. CalcPriceBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Вычисление стоимости" в меню "Расчёт";

·procedure TMainForm. CalcContBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Составление договора" в меню "Расчёт";

·procedure TMainForm. OptBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Настройки";

·procedure TMainForm. LogFileChBoxClick (Sender: TObject) - процедура обработки события включения/выключения ведения лог-файла в меню "Настройки";

·procedure TMainForm. ClearLogLblClick (Sender: TObject) - процедура обработки нажатия кнопки "Очистить лог-файл" в меню "Настройки";

·procedure TMainForm. SoundsChBoxClick (Sender: TObject) - процедура обработкисобытия включения/выключения звукового сопровождения в меню "Настройки";

·procedure TMainForm. OptSaveBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Сохранить настройки" в меню "Настройки";

·procedure TMainForm. HelpBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Справка";

·procedure TMainForm. AboutBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "О программе";

·procedure TMainForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура обработки события закрытия главной формы.

Процедуры, описанные в модуле CADUnit:

·procedure SaveResults (Shape: String; a: Real; b: Real; h: Real; r: Real; n: Byte; S: Real) - процедура сохранения результатов расчётов по шаблону;

·procedure InputCheck (CheckString: String) - процедура, проверяющая корректность вводимых данных;

·procedure LocalGUI (Parameter: Byte; Show: Boolean) - процедура, отвечающая за отображение и скрытие элементов интерфейса;

·procedure TCADForm. FormActivate (Sender: TObject) - процедура, обрабатывающая событие активации формы CADForm;

·procedure TCADForm. BackBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Назад" на форме CADForm;

·procedure TCADForm. CADMinBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Свернуть" на форме CADForm;

·procedure TCADForm. CADCloseBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Закрыть" на форме CADForm;

·procedure TCADForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура обработки события закрытия формы CADForm;

·procedure TCADForm. TempBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. TempBtnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура, отображающая подсказку к кнопке "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. TempBtnMouseLeave (Sender: TObject) - процедура, скрывающая подсказку к кнопке "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. CADBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Спроектировать потолок вручную";

·procedure TCADForm. CADBtnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура, отображающая подсказку к кнопке "Спроектировать потолок вручную";

·procedure TCADForm. CADBtnMouseLeave (Sender: TObject) - процедура, скрывающая подсказку к кнопке "Спроектировать потолок вручную";

·procedure TCADForm. RectBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме прямоугольника;

·procedure TCADForm. RectALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле RectALEdit;

·procedure TCADForm. RectALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле RectALEdit;

·procedure TCADForm. RectBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле RectBLEdit;

·procedure TCADForm. RectBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле RectBLEdit;

·procedure TCADForm. RectCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном прямоугольника;

·procedure TCADForm. ParallBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме параллелограмма;

·procedure TCADForm. ParallBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле ParallBLEdit;

·procedure TCADForm. ParallBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallBLEdit;

·procedure TCADForm. ParallHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле ParallHLEdit;

·procedure TCADForm. ParallHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallHLEdit;

·procedure TCADForm. ParallCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном параллелограмма;

·procedure TCADForm. TrapBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме трапеции;

·procedure TCADForm. TrapALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapALEdit;

·procedure TCADForm. TrapALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallHLEdit;

·procedure TCADForm. TrapBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapBLEdit;

·procedure TCADForm. TrapBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TrapBLEdit;

·procedure TCADForm. TrapHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapHLEdit;

·procedure TCADForm. TrapHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TrapHLEdit;

·procedure TCADForm. TrapCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном трапеции;

·procedure TCADForm. TriangleBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме треугольника;

·procedure TCADForm. TriangleBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TriangleBLEdit;

·procedure TCADForm. TriangleBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TriangleBLEdit;

·procedure TCADForm. TriangleHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TriangleHLEdit;

·procedure TCADForm. TriangleHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TriangleHLEdit;

·procedure TCADForm. TriangleCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном треугольника;

·procedure TCADForm. CircleBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме круга;

·procedure TCADForm. CircleRLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CircleRLEdit;

·procedure TCADForm. CircleRLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле CircleRLEdit;

·procedure TCADForm. CircleCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном круга;

·procedure TCADForm. EllipseBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме эллипса;

·procedure TCADForm. EllipseALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле EllipseALEdit;

·procedure TCADForm. EllipseALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле EllipseALEdit;

·procedure TCADForm. EllipseBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле EllipseBLEdit;

·procedure TCADForm. EllipseBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле EllipseBLEdit

·procedure TCADForm. EllipseCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном эллипса;

·procedure TCADForm. PolyBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме правильного многоугольника;

·procedure TCADForm. PolyALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PolyALEdit;

·procedure TCADForm. PolyALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле PolyALEdit;

·procedure TCADForm. PolyNLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PolyNLEdit;

·procedure TCADForm. PolyNLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле PolyNLEdit;

·procedure TCADForm. PolyCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном правильного многоугольника;

·procedure TCADForm. CustomerLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CustomerLEdit;

·procedure TCADForm. SRoomLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле SRoomLEdit;

·procedure TCADForm. LampLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле LampLEdit;

·procedure TCADForm. PipeLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PipeLEdit;

·procedure TCADForm. SquareLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле SquareLEdit;

·procedure TCADForm. PriceCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать стоимость";

·procedure TCADForm. LampPriceLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле LampPriceLEdit;

·procedure TCADForm. PipePriceLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PipePriceLEdit;

Процедуры, описанные в модуле CADUnitWTools:

·procedure TCADFormWTools. FormCreate (Sender: TObject) - процедура обработки события создания формы CADFormWTools;

·procedure TCADFormWTools. FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) - процедура обработки нажатия левой или правой кнопкой мыши над рабочей областью формы CADFormWTools;

·procedure TCADFormWTools. FormPaint (Sender: TObject) - процедура перерисовки формы CADFormWTools;

·procedure TCADFormWTools. FormMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура обработки движения мыши над рабочей областью формы CADFormWTools;

·procedure TCADFormWTools. BGImgTopMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgTop;

·procedure TCADFormWTools. BGImgLeftMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgLeft;

·procedure TCADFormWTools. BGImgRightMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgRight;

·procedure TCADFormWTools. BGImgBottomMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgBottom;

·procedure TCADFormWTools. ScaleTopMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleTop;

·procedure TCADFormWTools. ScaleLeftMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleLeft;

·procedure TCADFormWTools. ScaleRightMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleRight;

·procedure TCADFormWTools. ScaleBottomMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleBottom;

·procedure TCADFormWTools. CoordXLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CoordXLEdit;

·procedure TCADFormWTools. CoordYLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CoordYLEdit;

·procedure TCADFormWTools. CoordXLEditEnter (Sender: TObject) - процедура передачи в процедуру InputCheck информации о том, что вводимое в поле CoordXLEdit значение следует проверить на корректность;

·procedure TCADFormWTools. CoordYLEditEnter (Sender: TObject) - процедура передачи в процедуру InputCheck информации о том, что вводимое в поле CoordYLEdit значение следует проверить на корректность;

·procedure TCADFormWTools. PointAddLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Добавить точку";

·procedure TCADFormWTools. NewBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Создать новый чертёж";

·procedure TCADFormWTools. CalcBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать площадь";

·procedure TCADFormWTools. SaveBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Сохранить проект в. bmp-файл";

·procedure TCADFormWTools. OKBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "ОК";

·procedure TCADFormWTools. BackBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Назад";

·procedure TCADFormWTools. CADMinBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Свернуть";

·procedure TCADFormWTools. CADCloseBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Закрыть".

Процедуры, описанные в модуле ClosingUnit:

·procedure TClosingForm. FormActivate (Sender: TObject) - процедура, обрабатывающая событие активации формы ClosingForm;

·procedure TClosingForm. YesBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Да";

·procedure TClosingForm. NoBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Нет";

·procedure TClosingForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура, обрабатывающая событие закрытия формы ClosingForm.

Программа состоит из следующих форм:

·MainForm - главная форма, содержащая элементы меню и настройки программы;

·CADForm - форма расчётов, содержащая расчёт стоимости установки потолка и расчёт площадей по шаблону;

·CADFormWTools - форма графического проектирования;

·ClosingForm - форма-диалог закрытия программы;

·FogForm - форма-"туман";

·BigFogForm - форма-"туман".

Вспомогательные модули BigFogUnit. pas, CADUnit. pas, CADUnitWTools. pas, ClosingUnit. pas, FogUnit. pas подключаются к основному MainUnit. pas независимо друг от друга и состоят из простых компонентов: TImage, TLabel, TGroupBox, TLabeledEdit, TPaintBox.

Для корректной работы программы необходим следующий набор аппаратного и программного обеспечения:

  • процессор Intel Pentium IV 1.0 ГГц или выше;
  • монитор SVGA, поддерживающий разрешение не менее 1024х768;
  • объём оперативной памяти 256 Мб и более;
  • свободное место на жёстком диске 20 Мб и более;
  • манипулятор типа "мышь";
  • клавиатура;
  • операционная система версии Windows XP и выше.

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

·файл ActionLog. txt;

·файл CEILING. exe;

·файл Help. chm;

·файл Settings. ini;

·папку Sounds;

·файл Sounds/LogFileClear. wav;

·файл Sounds/MenuOpening. wav;

·файл Sounds/OnSection. wav;

·файл Sounds/ Window. wav.

Для запуска программы необходимо запустить файл CEILING. exe.

Входными данными являются:

·длины сторон (м.);

·длина высоты (м.);

·количество сторон;

·радиус (м.);

·координаты точек;

·Ф. И.О. заказчика;

·количество светильников;

·количество труб;

·стоимость светильника (долл.);

·стоимость трубы (долл.);

·стоимость квадратного метра (долл.).

Выходные данные:

·площадь потолка комнаты (м. кв.);

·площадь натяжного потолка (м. кв.);

·общая стоимость заказа (долл.);

·сумма задатка (долл.).


Автоматизированное проектирование натяжных потолков


Описание применения


Программа разработана для автоматизации проектирования натяжных потолков.

Программа предоставляет пользователю следующие возможности:

ввод данных;

9хранение данных, необходимых для расчётов;

вычисление площадей потолков простой формы по шаблону;

графическое проектирование и вычисление площадей потолков сложной формы;

просмотр результатов;

расчёт стоимости установки потолка;

вывод отчётов с результатами вычислений в текстовые файлы *. txt и графические файлы *. bmp.

Программа используется специалистами-проектировщиками фирм, занимающихся установкой натяжных потолков.

Рабочие места пользователей должны быть оборудованы аппаратным и программным обеспечением, имеющим следующие характеристики:

  • процессор Intel Pentium IV 1.0 ГГц или выше;
  • монитор SVGA, поддерживающий разрешение не менее 1024х768;
  • объём оперативной памяти 256 Мб и более;
  • свободное место на жёстком диске 20 Мб и более;
  • манипулятор типа "мышь";
  • клавиатура;
  • операционная система версии Windows XP и выше.

Эксплуатация программы предусматривает соблюдение правил техники безопасности и охраны труда при работе на ПЭВМ.

Общие требования техники безопасности:

-к работе на ПЭВМ допускаются лица, знакомые с их устройством и правилами эксплуатации;

-основной опасностью при работе является поражение электрическим током, которое может произойти при неисправности ПЭВМ или несоблюдении техники безопасности;

-особую осторожность следует соблюдать в обращении с монитором, предохранять его от ударов, царапин и других повреждений;

-продолжительность непрерывной работы не должна превышать 30 минут с 10-минутным перерывом. Общая продолжительность работы за компьютером не должна превышать в день 4 часа;

-запрещается:

§включать ПЭВМ, корпуса блоков которых не закрыты крышками;

§передвигать блоки, касаться разъемов розеток, касаться частями тела экрана или тыльной стороны машины;

§работать на ПЭВМ мокрыми руками, в сырой одежде и обуви, класть на блоки ПЭВМ книги, тетради и другие предметы, а также опираться на них;

§приступать к работе на ПЭВМ, имеющей какие-либо повреждения корпуса, нарушения изоляции проводов, а также нарушения целостности вилок, розеток;

§оставлять без присмотра работающую ПЭВМ;

§работать на ПЭВМ во время грозы;

§принимать пищу на рабочем месте.

Требования безопасности перед началом работы:

следует осмотреть и привести в порядок рабочее место;

-убрать с рабочего места все посторонние предметы, которые могут отвлекать внимание и затруднять работу;

проверить правильность установки стола, стула, угол наклона экрана монитора, положение клавиатуры и, при необходимости, произвести их переустановку в целях исключения неудобных поз и длительных напряжений тела. Особо обратить внимание на то, что дисплей должен находиться на расстоянии не менее 50 см от глаз (оптимально 60 - 70 см), плоскость его экрана должна быть перпендикулярна направлению взгляда и центр экрана должен быть ниже уровня (или на уровне) глаз оператора (рис.1);


Рисунок 1 Правильное положение при работе за компьютером


проверить правильность расположения оборудования:

§кабели электропитания ПЭВМ и другого оборудования (включая переноски и удлинители) должны находиться с тыльной стороны рабочего места;

§источник бесперебойного питания для исключения вредного влияния его повышенных магнитных полей должен быть максимально возможно удален от оператора;

-проверить надежность подключения к системному блоку разъемов периферийного оборудования;

-убедиться в отсутствии засветок, отражений и бликов на экране монитора;

убедиться в отсутствии ярко освещенных предметов в поле зрения;

убедиться в отсутствии пыли на экране монитора, при необходимости протереть их специальной салфеткой;

включить оборудование рабочего места в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых на рабочем месте работ;

убедиться в отсутствии дрожания и мерцания изображения на экране монитора;

установить яркость, контрастность, цвет и размер символов, фон экрана, обеспечивающие наиболее комфортное и четкое восприятие изображения.

Требования безопасности при выполнении работ:

в течение рабочего дня содержать в порядке и чистоте рабочее место;

-не закрывать вентиляционные отверстия ПЭВМ;

при необходимости временного прекращения работы корректно закрыть все активные задачи;

соблюдать правила эксплуатации оборудования;

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

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

Во время работы запрещается:

прикасаться к задней панели системного блока при включенном питании;

-переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;

закрывать оборудование бумагами и посторонними предметами;

допускать скапливание бумаг на рабочем месте;

производить отключение питания во время выполнения активной задачи;

допускать попадание влаги на поверхности устройств;

производить самостоятельно вскрытие и ремонт оборудования;

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

Требования безопасности в аварийных ситуациях:

обо всех неисправностях в работе оборудования и аварийных ситуациях сообщать непосредственному руководителю;

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

при поражении работника электрическим током принять меры по его освобождению от действия тока путем отключения электропитания и до прибытия врача оказать потерпевшему первую медицинскую помощь;

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

Требования безопасности по окончании работы:

произвести закрытие всех выполняемых на ПЭВМ задач;

-отключить питание в последовательности, установленной инструкциями по эксплуатации на оборудование с учетом характера выполняемых работ;

убрать со стола рабочие материалы и привести в порядок рабочее место.

Требования к микроклимату помещений при эксплуатации ПЭВМ и параметрам физических факторов:

-при выполнении основной работы на ПЭВМ (категория I) уровень шума не должен превышать 50 дБ;

-в помещениях, где работают инженерно-технические работники, осуществляющие лабораторный, аналитический или измерительный контроль (категория II), уровень шума не должен превышать 60 дБ;

-допустимые уровни напряженности электрического поля тока промышленной частоты 50 Гц, создаваемые монитором, клавиатурой, системным блоком, манипулятором типа "мышь", изделием в целом не должны превышать 15,0 кВ/м;

-интенсивность инфракрасного (ИК) и видимого излучения от экрана монитора не должна превышать 0,1 Вт/м2 в видимом (400 - 760 нм) диапазоне, 0,05 Вт/м2 в ближнем ИК диапазоне (760 - 1050 нм), 4 ВТ/м2 в дальнем (свыше 1050 нм) ИК диапазоне;

Требования к освещению помещений и рабочих мест с ПЭВМ:

-естественное освещение должно осуществляться через светопроемы, ориентированные преимущественно на север и северо-восток и обеспечивать коэффициент естественной освещенности (КЕО) не ниже 1,5%;

-искусственное освещение в помещениях эксплуатации ПЭВМ должно осуществляться системой общего равномерного освещения;

-освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк;

-в качестве источников света при искусственном освещении должны применяться преимущественно люминесцентные лампы. Допускается применение ламп накаливания в светильниках местного освещения;

-общее освещение следует выполнять в виде сплошных или прерывистых линий светильников, расположенных сбоку от рабочих мест, параллельно линии зрения пользователя при рядном расположении ПЭВМ. При периметральном расположении компьютеров линии светильников должны располагаться локализовано над рабочим столом ближе к его переднему краю, обращенному к пользователю.

Требования к размещению компьютерной техники на рабочем месте:

-каждое рабочее место должно быть автономным;

-размещать дисплей и системный блок ПЭВМ следует на максимально возможном расстоянии от пользователя.


Рисунок 4 Рекомендуемая компоновка рабочего места


Обозначения:

- рабочее место оператора;

- клавиатура;

- дисплей;

- системный блок ПЭВМ;

- принтер;

- розетки питания;

- сетевые кабели питания блоков ПЭВМ.

Требования к организации и оборудованию рабочих мест с ПЭВМ:

-рабочие места с ПЭВМ допускается располагать по периметру помещения или рядами;

-экран монитора должен находиться от глаз пользователя на оптимальном расстоянии 600 - 700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов;

-высота рабочей поверхности стола для пользователей должна регулироваться в пределах 680 - 800 мм, при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм;

-конструкция рабочего стула (кресла) должна обеспечивать:

Требования к организации медицинского обслуживания пользователей ПЭВМ:

-профессиональные пользователи ПЭВМ должны проходить обязательные предварительные и периодические медицинские осмотры в порядке и сроки, установленные Постановлением Минздрава Республики Беларусь;

-к непосредственной работе на ПЭВМ допускаются лица, не имеющие медицинских противопоказаний.

Все последние годы интенсивно обсуждается проблема энергосбережения. По статистике, при работе в типичных офисных приложениях процессор современного компьютера использует всего лишь 5% своей мощности. Остальные 95% требуются только для "тяжелых" задач - сложных математических вычислений, работы с видеоматериалами или современных трехмерных игр. И если потребление энергии процессором постоянно остается максимальным - это означает, что большая часть ее расходуется впустую, и впустую же выделяется большая часть тепла, образующегося при работе процессора.

Для персонального компьютера эти проблемы не слишком актуальны - даже максимальная мощность, потребляемая процессором, довольно невелика и, снижая ее, много киловатт-часов не сэкономишь.

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

Подобные технологии имеют положительные аспекты:

·за счет уменьшения потребления электричества увеличивается время автономной работы от батарей;

·за счет уменьшения выделения тепла снижается шумность компьютера: вентилятор работает на меньших оборотах, во время простоев процессора может отключаться совсем;

·за счет снижения требований к системе охлаждения снижается и общий вес компьютера;

·процессор с поддержкой технологии энергосбережения дешевле и производительнее, чем процессор с постоянно низким тепловыделением.

Чтобы работа была комфортной и безопасной необходимо позаботиться об аппаратном оборудовании компьютера. Как правило, наибольший вред здоровью пользователя компьютера наносят устройства ввода-вывода: монитор, клавиатура, мышь.

Большинство производителей используют промышленный стандарт VESA DPMS (Display Power Management Signaling). Он определяет нормированные методы поддержки мониторами трех энергосберегающих режимов:

Stand-by - экономит до 40% мощности и позволяет быстро восстановить работоспособность;

Suspend - отключает цепи накала трубки монитора и имеет большее время восстановления работоспособности;

Active-off - еще большее время восстановления работоспособности, но отключает все, кроме средств восстановления работоспособности и блока питания. В этом режиме мониторы обычно потребляют менее 5 Вт.

При выборе монитора используется ряд стандартов:

MPR 1990: 10 - монитор соответствует шведскому стандарту по излучениям, а также по переменным электрическому и магнитным полям;

MPR II - Стандарты и рекомендации по низкочастотным электромагнитным полям и электрическому потенциалу. Такой знак далеко не полностью отражает все условия стандарта MPR 1990: 10;

ISO 9241-3 - обозначает международный стандарт, который удовлетворяет эргономическим требованиям к дисплеям и стоит на страже вашего зрения;

TCO (расшифровываются как соответствие требованиям Шведского союза профессиональных служащих по визуальным эргономическим параметрам и переменным электрическим полям). В сравнении с MPRII в ТСО'92 (был разработан специально для мониторов и определяет величину максимально допустимых электромагнитных излучений при работе монитора, и функции энергосбережения) допустимые уровни электромагнитного излучения более жесткие, так как замер показателей производится не в 50 см от экрана, как в MPRII, а в 30. TCO 95 и TCO 99 представляют собой универсальные стандарты, регулирующие воздействие всех вредных факторов. В ТСО'95 и ТСО'99 представлены электромагнитные параметры, эргономические, энергосберегающие и экологические. Стандарт TCO95 существует вместе с TCO92 и не отменяет последний. TCO99 предъявляет более жесткие требования, чем TCO95 в области эргономики, энергия, излучений, экологии, пожарной, электрической безопасности;

EN 55022 Европейский стандарт по методам измерений и допустимым значениям излучений для изделий информационных технологий;

EN 50082-1 Европейский стандарт по электромагнитной совместимости;

EN 60950 Европейский стандарт по безопасности для изделий информационных технологий (электро - и пожаробезопасность), является частью TЪV/GS-рекомендации;

TЬV/GS Маркировка, подтверждающая прохождение испытаний по безопасности. Изделия с маркировкой GS соответствуют требованиям EN 60950, ZH1/618;

СЕ Европейская маркировка, которая определяет соответствие изделия требованиям стандартов EN 50081-1 (европейский стандарт по электромагнитной совместимости), EN 55022, EN 50082-1 и EN 60950.

В настоящее время большое распространение получили ЖК-мониторы, которые отличаются высоким качеством и не большой стоимостью.

ЖК-мониторы имеют ряд достоинств:

·ЖК мониторы более экономичные;

·у них нет электромагнитного излучения в сравнении c ЭЛТ-мониторами, и они практически безвредны для человека;

·они не мерцают, как ЭЛТ-мониторы;

·они легкие и не такие объемные;

·у них большая видимая область экрана.

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

Применение принтеров так же приводит к потреблению электроэнергии. Существует 2 вида принтеров: струйные и лазерные.

Современные струйные принтеры выводят текст и графические изображения высокого качества и стоят более чем вдвое дешевле лазерных. Кроме того, они компактнее, не так шумят и потребляют меньше электроэнергии, чем их лазерные собратья. Исследования International Data Corporation показывают, что это одна из причин, по которым объемы продаж струйных принтеров растут быстрее, чем печатающих устройств всех других типов.

Выпуск новой линии профессиональных ПК ESPRIMO 5925 EPA компанией Fujitsu Siemens Computers продолжает тенденцию в области создания энергоэкономичных ПК. Новые профессиональные ПК, которые поставляются в форм-факторе Microtower для ESPRIMO P5925 EPA и в форм-факторе Small Form Factor для ESPRIMO E5925 EPA, - это сочетание проверенной эргономичности и энергосберегающих функций, которыми отличаются все решения Fujitsu Siemens Computers, новейшего набора микросхем Intel и экономии электроэнергии до 80%. Благодаря этим технологиям данные компьютеры потребляют на 45% меньше электроэнергии по сравнению с аналогичными системами двухлетней давности.

Новые профессиональные ПК объединяют в себе экологичные материалы и технологии, технические инновации и максимальную производительность. Технология Intel Active Management 3.0 упрощает процесс централизованного управления устройствами даже в выключенном состоянии, что позволяет сократить общее энергопотребление. Кроме того, данные ПК работают необычайно тихо благодаря зарекомендовавшей себя системе охлаждения, используемой в корпусах ESPRIMO, спроектированных и разработанных Fujitsu Siemens Computers.

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


Руководство программиста


Программа автоматизированного проектирования натяжных потолков предназначена для автоматизации действий, выполняемых специалистами-проектировщиками.

Программа предоставляет пользователю следующие возможности: ввод данных, вычисление площадей потолков простой формы по шаблону, графическое проектирование и вычисление площадей потолков сложной формы, просмотр результатов, расчёт стоимости установки потолка, вывод отчётов с результатами вычислений в текстовые файлы *. txt и графические файлы *. bmp.

Для работы программы следует использовать следующие технические средства и программное обеспечение:

  • процессор Intel Pentium IV 1.0 ГГц или выше;
  • монитор SVGA, поддерживающий разрешение не менее 1024х768;
  • объём оперативной памяти 256 Мб и более;
  • свободное место на жёстком диске 20 Мб и более;
  • манипулятор типа "мышь";
  • клавиатура;
  • операционная система версии Windows XP и выше.

Для инсталляции программы достаточно скопировать со сменного носителя в рабочую директорию следующие файлы и папки:

·файл ActionLog. txt;

·файл CEILING. exe;

·файл Help. chm;

·файл Settings. ini;

·папку Sounds;

·файл Sounds/LogFileClear. wav;

·файл Sounds/MenuOpening. wav;

·файл Sounds/OnSection. wav;

·файл Sounds/ Window. wav.

Входными данными являются: длины сторон, длина высоты, количество сторон, радиус, координаты точек, Ф. И.О. заказчика, количество светильников, количество труб, стоимость светильника, стоимость, стоимость квадратного метра. Результатом работы программы являются следующие выходные значения: площадь потолка комнаты, площадь натяжного потолка, общая стоимость заказа и сумма задатка.

В программе используются следующие глобальные переменные:

·GenCheck - переменная, использующаяся при проверке корректности ввода;

·SRoom - переменная, хранящая площадь потолка комнаты;

·SCeil - переменная, хранящая площадь натяжного потолка;

·Date - переменная, получающая текущую дату для сохранения в лог-файл;

·Time - переменная, получающая текущее время для сохранения в лог-файл;

·ErrorString - переменная, хранящая строку с сообщением об ошибке;

·Check - переменная, использующаяся при проверке корректности ввода;

·IsInt - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение должно быть целым числом;

·IsCoordinate - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой;

·IsX - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой X;

·IsY - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является координатой Y;

·IsWord - переменная, сообщающая процедуре проверки корректности ввода о том, что проверяемое значение является словом;

·Parameter - переменная, передающая на форму с диалогом закрытия программы информацию о том, откуда она была вызвана;

·INI - ini-файл программы, в который сохраняются её настройки;

·LogFile - текстовый файл, в который сохраняются все действия пользователя;

·LogFileDisabled - переменная, сигнализирующая о том, что ведение лог-файла включено/отключено;

·LogFileSize - переменная, получающая размер лог-файла;

·SoundsEnabled - переменная, сигнализирующая о том, что звуковое сопровождение включено/отключено;

·CalcMenuOpened - переменная, сигнализирующая о том, что открыто меню расчётов.

Программа, реализующая решение данной задачи, состоит из ряда процедур и функций, которые в процессе выполнения программы взаимодействуют друг с другом:

Процедуры, описанные в модуле MainUnit:

·procedure FormAppear - процедура анимации появления форм на экране;

·procedure FormDisappear - процедура анимации закрытия или скрытия форм с экрана;

·procedure EnableFog - процедура включения "тумана" на неактивных формах;

·procedure DisableFog - процедура отключения "тумана";

·procedure EventLog (Event: String) - процедура добавления данных в лог-файл;

·procedure GUIHide - процедура скрытия определённых элементов интерфейса формы MainForm;

·procedure CalcMenuClose - процедура закрытия меню расчётов

·procedure TMainForm. FormCreate (Sender: TObject) - процедура обработки события создания формы MainForm;

·procedure TMainForm. MinBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Свернуть" на форме MainForm;

·procedure TMainForm. CloseBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Закрыть" на форме MainForm;

·procedure TMainForm. MainBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Главная";

·procedure TMainForm. CalcBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Расчёт";

·procedure TMainForm. CalcAreaBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Вычисление площади" в меню "Расчёт";

·procedure TMainForm. CalcPriceBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Вычисление стоимости" в меню "Расчёт";

·procedure TMainForm. CalcContBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Составление договора" в меню "Расчёт";

·procedure TMainForm. OptBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Настройки";

·procedure TMainForm. LogFileChBoxClick (Sender: TObject) - процедура обработки события включения/выключения ведения лог-файла в меню "Настройки";

·procedure TMainForm. ClearLogLblClick (Sender: TObject) - процедура обработки нажатия кнопки "Очистить лог-файл" в меню "Настройки";

·procedure TMainForm. SoundsChBoxClick (Sender: TObject) - процедура обработкисобытия включения/выключения звукового сопровождения в меню "Настройки";

·procedure TMainForm. OptSaveBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Сохранить настройки" в меню "Настройки";

·procedure TMainForm. HelpBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Справка";

·procedure TMainForm. AboutBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "О программе";

·procedure TMainForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура обработки события закрытия главной формы.

Процедуры, описанные в модуле CADUnit:

·procedure SaveResults (Shape: String; a: Real; b: Real; h: Real; r: Real; n: Byte; S: Real) - процедура сохранения результатов расчётов по шаблону;

·procedure InputCheck (CheckString: String) - процедура, проверяющая корректность вводимых данных;

·procedure LocalGUI (Parameter: Byte; Show: Boolean) - процедура, отвечающая за отображение и скрытие элементов интерфейса;

·procedure TCADForm. FormActivate (Sender: TObject) - процедура, обрабатывающая событие активации формы CADForm;

·procedure TCADForm. BackBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Назад" на форме CADForm;

·procedure TCADForm. CADMinBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Свернуть" на форме CADForm;

·procedure TCADForm. CADCloseBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Закрыть" на форме CADForm;

·procedure TCADForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура обработки события закрытия формы CADForm;

·procedure TCADForm. TempBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. TempBtnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура, отображающая подсказку к кнопке "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. TempBtnMouseLeave (Sender: TObject) - процедура, скрывающая подсказку к кнопке "Выбрать шаблон потолка из стандартных форм";

·procedure TCADForm. CADBtnClick (Sender: TObject) - процедура обработки нажатия кнопки "Спроектировать потолок вручную";

·procedure TCADForm. CADBtnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура, отображающая подсказку к кнопке "Спроектировать потолок вручную";

·procedure TCADForm. CADBtnMouseLeave (Sender: TObject) - процедура, скрывающая подсказку к кнопке "Спроектировать потолок вручную";

·procedure TCADForm. RectBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме прямоугольника;

·procedure TCADForm. RectALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле RectALEdit;

·procedure TCADForm. RectALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле RectALEdit;

·procedure TCADForm. RectBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле RectBLEdit;

·procedure TCADForm. RectBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле RectBLEdit;

·procedure TCADForm. RectCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном прямоугольника;

·procedure TCADForm. ParallBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме параллелограмма;

·procedure TCADForm. ParallBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле ParallBLEdit;

·procedure TCADForm. ParallBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallBLEdit;

·procedure TCADForm. ParallHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле ParallHLEdit;

·procedure TCADForm. ParallHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallHLEdit;

·procedure TCADForm. ParallCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном параллелограмма;

·procedure TCADForm. TrapBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме трапеции;

·procedure TCADForm. TrapALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapALEdit;

·procedure TCADForm. TrapALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле ParallHLEdit;

·procedure TCADForm. TrapBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapBLEdit;

·procedure TCADForm. TrapBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TrapBLEdit;

·procedure TCADForm. TrapHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TrapHLEdit;

·procedure TCADForm. TrapHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TrapHLEdit;

·procedure TCADForm. TrapCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном трапеции;

·procedure TCADForm. TriangleBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме треугольника;

·procedure TCADForm. TriangleBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TriangleBLEdit;

·procedure TCADForm. TriangleBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TriangleBLEdit;

·procedure TCADForm. TriangleHLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле TriangleHLEdit;

·procedure TCADForm. TriangleHLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле TriangleHLEdit;

·procedure TCADForm. TriangleCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном треугольника;

·procedure TCADForm. CircleBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме круга;

·procedure TCADForm. CircleRLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CircleRLEdit;

·procedure TCADForm. CircleRLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле CircleRLEdit;

·procedure TCADForm. CircleCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном круга;

·procedure TCADForm. EllipseBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме эллипса;

·procedure TCADForm. EllipseALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле EllipseALEdit;

·procedure TCADForm. EllipseALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле EllipseALEdit;

·procedure TCADForm. EllipseBLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле EllipseBLEdit;

·procedure TCADForm. EllipseBLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле EllipseBLEdit

·procedure TCADForm. EllipseCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном эллипса;

·procedure TCADForm. PolyBtnClick (Sender: TObject) - процедура, обрабатывающая выбор шаблона в форме правильного многоугольника;

·procedure TCADForm. PolyALEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PolyALEdit;

·procedure TCADForm. PolyALEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле PolyALEdit;

·procedure TCADForm. PolyNLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PolyNLEdit;

·procedure TCADForm. PolyNLEditEnter (Sender: TObject) - процедура, отображающая подсказку к данным, вводимым в поле PolyNLEdit;

·procedure TCADForm. PolyCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать" с шаблоном правильного многоугольника;

·procedure TCADForm. CustomerLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CustomerLEdit;

·procedure TCADForm. SRoomLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле SRoomLEdit;

·procedure TCADForm. LampLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле LampLEdit;

·procedure TCADForm. PipeLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PipeLEdit;

·procedure TCADForm. SquareLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле SquareLEdit;

·procedure TCADForm. PriceCalcLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать стоимость";

·procedure TCADForm. LampPriceLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле LampPriceLEdit;

·procedure TCADForm. PipePriceLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле PipePriceLEdit;

Процедуры, описанные в модуле CADUnitWTools:

·procedure TCADFormWTools. FormCreate (Sender: TObject) - процедура обработки события создания формы CADFormWTools;

·procedure TCADFormWTools. FormMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) - процедура обработки нажатия левой или правой кнопкой мыши над рабочей областью формы CADFormWTools;

·procedure TCADFormWTools. FormPaint (Sender: TObject) - процедура перерисовки формы CADFormWTools;

·procedure TCADFormWTools. FormMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура обработки движения мыши над рабочей областью формы CADFormWTools;

·procedure TCADFormWTools. BGImgTopMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgTop;

·procedure TCADFormWTools. BGImgLeftMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgLeft;

·procedure TCADFormWTools. BGImgRightMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgRight;

·procedure TCADFormWTools. BGImgBottomMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на BGImgBottom;

·procedure TCADFormWTools. ScaleTopMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleTop;

·procedure TCADFormWTools. ScaleLeftMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleLeft;

·procedure TCADFormWTools. ScaleRightMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleRight;

·procedure TCADFormWTools. ScaleBottomMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - процедура скрытия координат указателя мыши при наведении на ScaleBottom;

·procedure TCADFormWTools. CoordXLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CoordXLEdit;

·procedure TCADFormWTools. CoordYLEditChange (Sender: TObject) - процедура, обрабатывающая ввод данных в поле CoordYLEdit;

·procedure TCADFormWTools. CoordXLEditEnter (Sender: TObject) - процедура передачи в процедуру InputCheck информации о том, что вводимое в поле CoordXLEdit значение следует проверить на корректность;

·procedure TCADFormWTools. CoordYLEditEnter (Sender: TObject) - процедура передачи в процедуру InputCheck информации о том, что вводимое в поле CoordYLEdit значение следует проверить на корректность;

·procedure TCADFormWTools. PointAddLblClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Добавить точку";

·procedure TCADFormWTools. NewBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Создать новый чертёж";

·procedure TCADFormWTools. CalcBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Рассчитать площадь";

·procedure TCADFormWTools. SaveBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Сохранить проект в. bmp-файл";

·procedure TCADFormWTools. OKBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "ОК";

·procedure TCADFormWTools. BackBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Назад";

·procedure TCADFormWTools. CADMinBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Свернуть";

·procedure TCADFormWTools. CADCloseBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Закрыть".

Процедуры, описанные в модуле ClosingUnit:

·procedure TClosingForm. FormActivate (Sender: TObject) - процедура, обрабатывающая событие активации формы ClosingForm;

·procedure TClosingForm. YesBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Да";

·procedure TClosingForm. NoBtnClick (Sender: TObject) - процедура, обрабатывающая нажатие кнопки "Нет";

·procedure TClosingForm. FormClose (Sender: TObject; var Action: TCloseAction) - процедура, обрабатывающая событие закрытия формы ClosingForm.

Программа состоит из следующих форм:

·MainForm - главная форма, содержащая элементы меню и настройки программы;

·CADForm - форма расчётов, содержащая расчёт стоимости установки потолка и расчёт площадей по шаблону;

·CADFormWTools - форма графического проектирования;

·ClosingForm - форма-диалог закрытия программы;

·FogForm - форма-"туман";

·BigFogForm - форма-"туман".

Вспомогательные модули BigFogUnit. pas, CADUnit. pas, CADUnitWTools. pas, ClosingUnit. pas, FogUnit. pas подключаются к основному MainUnit. pas независимо друг от друга и состоят из простых компонентов: TImage, TLabel, TGroupBox, TLabeledEdit, TPaintBox.

Никаких ограничений и требований на режим работы и запуска программы не налагается. Для контроля правильности выполнения программы в случае некорректно введенных данных предусмотрены сообщения пользователю, подробно описывающие ошибку во вводимых данных. Какие-либо средства восстановления программы после сбоя не предусмотрены.

Чтобы начать расчёты, необходимо нажать кнопку меню "Расчёт" и выбрать один из режимов работы - расчёт площадей либо расчёт стоимости монтажа потолка.

При вводе некорректных данных пользователь будет извещён об этом соответствующим подробным сообщением и не сможет продолжать расчёты до тех пор, пока не введёт корректные данные.

При отсутствии необходимых для работы файлов ActionLog. txt и Settings. ini программа автоматически создаст их с начальными параметрами. В случае отсутствия файла ActionLog. txt предыдущих логи действий пользователя будут потеряны. В случае отсутствия файла Settings. ini пользовательские настройки будут сброшены на начальные. При этом выполнение программы не будет нарушено ошибками. В случае отсутствия файлов звукового сопровождения в папке Sounds программа заменит их стандартным звуком операционной системы Windows, не завершая своего выполнения.

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

Поскольку программа не требует ни дополнительных предэксплуатационных настроек, ни специализированных технических и программных средств, какие-либо сообщения программисту не предусмотрены.

Заключение


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

Преимуществами использования программы являются: очень высокая степень точности результата; значительное снижение трудоёмкости процесса вычислений; простая в освоении система графического проектирования, позволяющая спроектировать потолки произвольной формы; высокая степень надёжности программы.

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

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

Приложения


Приложение А


ДИАГРАММА ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ

Приложение Б


ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТИ


Автоматизированное проектирование натяжных потолков Содержание Введение Автоматизированное проектирован

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ