Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Курсовая работа на тему «Разработка программного обеспечения для быстрого поиска принтеров на территории колледжа»

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

СОДЕРЖАНИЕ

Введение

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

Раздел 2. Разработка программного обеспечения

2.1 Разработка спецификации программного обеспечения

.2 Разработка кода программного продукта на основе готовой спецификации

.3 Отладка программных модулей с использованием специализированных программных средств

.4 Тестирование программного обеспечения

.5 Оптимизация программного кода

.6 Разработка компонентов проектной и технической документации с использованием графических языков спецификаций

Заключение

Список использованных источников

Приложение

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

ВВЕДЕНИЕ

Цель курсового проекта: разработка программного обеспечения.

Задачи : Разработка программы на языке Delphi

Создание удобного интерфейса

Углубление знаний о языке программирования Delphi.

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

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

.        Название модели.

.        Инвентарный номер.

.        Скорость печати.

.        Кабинет расположения принтера.

.        Преподаватель.

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

РАЗДЕЛ 1. ВОЗМОЖНОСТИ СРЕДЫ ПРОГРАММИРОВАНИЯ DELPHI ПРИ РАЗРАБОТКЕ ПРИЛОЖЕНИЯ С ВИЗУАЛЬНЫМ ИНТЕРФЕЙСОМ

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI), или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).

В сочетании с Borland Kylix, программисты Delphi могут создавать из одного исходного текста приложения и для Windows и для Linux, и это открывает новые возможности и увеличивает потенциальную отдачу от усилий, вложенных в изучение Delphi.

В Delphi используется кросс-платформенная библиотека компонентов CLX и визуальные дизайнеры для создания высокопроизводительных приложений для Windows, которые повторной компиляцией можно легко превратить в приложения для Linux.является первым языком программирования, обладающим простой в использовании средой для быстрой разработки приложений, разрушающей барьеры между языками высокого уровня, и языками, на низком уровне разговаривающими с системой на языке битов и байтов.

При создании графического интерфейса приложений Delphi, у вас все возможности языка программирования Object Pascal, «завернутого» в среду RAD.

Такие компоненты окна графического пользовательского интерфейса, как формы, кнопки и списки объектов, включены в состав Delphi. Это означает, что вам не нужно писать никакого кода при добавлении их в ваше приложение. Вы просто «кладёте» их на вашу Форму, как в графическом редакторе. Вы можете также добавить на Форму элементы управления ActiveX, для создания в считанные минуты специализированных программ таких, например, как веб-браузеры. Delphi позволяет разработчикам дизайна внедрять в интерфейс новые элементы и кодировать их события одним щелчком мыши. поставляется в различных конфигурациях, настроенных на потребности различных предприятий. В Delphi вы можете писать программы для Windows быстрее и легче, чем это было возможно раньше.

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

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

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

Таблица Delphi StringGrid также обладает очень важным и полезным свойством, характерным для компонентов с графическими возможностями — Canvas(канва).

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

РАЗДЕЛ 2. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Разработка спецификации программного обеспечения

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

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

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

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

Температура компьютера не должна выходить за рамки значения температуры -20 + 35 градусов по цельсию;

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

Программа должна иметь удобный и понятный интерфейс для работы с самой программой.

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

2.2 Разработка кода программного продукта на основе готовой спецификации

Было разработано главное окно программы, Данные представлены в виде таблицы, поэтому основная часть формы занимает таблица StrinGrid. На форме были расположены кнопки, они отображены на (Рисунок 1).

Рисунок 1 — Главная форма программы

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

программный код визуальный интерфейс

Кнопка «Открыть» позволяет открыть диалоговое окно с информацией о принтерах колледжа. Причем в заголовке отображено назначение диалогового окна. Оно отображено на рисунке 2. Для этого окна были установлены фильтры для открытия различных типов документов: текстовые файлы, все файлы (рисунок 3). Для реализации этой кнопки используется код:

procedure TForm2.Button1Click(Sender: TObject); //Кнопка ОткрытьOpenDialog1.Execute then begin:=OpenDialog1.FileName ;(f,s);(f);:=0;not eof(f) do

readln (f);

readln (f);

readln (f);

readln (f);

readln (f);

inc(k);

SG1.cells[0,0]:=’Заголовок 1 столбца’;.cells[0,1]:=’Заголовок 1 столбца’;

for i:= 1 to SG1.RowCount-1 do

begin

for j:= 0 to SG1.ColCount-1 do begin

readln(f,x);

SG1.Cells[j,i]:=x;

end;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

readln(f,x);;

closefile(f);

end(‘Вы не выбрали файл’);

end;

Рисунок 2 — Открытие данных о принтерах

Рисунок 3 — Установленные фильтры

Кнопка «Добавить» позволяет открыть другую форму «Добавление» (Рисунок 4), которое содержит текстовые поля и 2 кнопки: «Добавить» — добавляет на форму строку с данными указанными в тестовых полях и «Вернуться» — возвращается на главную форму. Для реализации этой кнопки используется код:

procedure TForm2.Button6Click(Sender: TObject);

begin.show;;TForm2.Button7Click(Sender: TObject);n: integer;

a: string;

begin:=inputbox (‘Поиск’,’Введите инвентарный номер, которых хотите удалить’,’1′);

n:=0 ;SG1 do begini:=1 to RowCount — 1 do

if (cells [1,i]=a) then n:=i;n <> 0 then begini := n to RowCount-1 do

for j := 0 to ColCount — 1 do

cells [j,i]:=cells [j,i+1];:=RowCount — 1;showmessage (‘Нет такого инвентарного номера’);

end;

end;

Рисунок 4 — форма «Добавления»

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

Кнопка «Удалить» просит пользователя указать инвентарный номер и по этому номеру удаляет строку из таблицы. Для реализации этой кнопки используется код:

procedure TForm2.Button7Click(Sender: TObject);n: integer;

a: string;

begin:=inputbox (‘Поиск’,’Введите инвентарный номер, которых хотите удалить’,’1′);

n:=0 ;SG1 do begini:=1 to RowCount — 1 do

if (cells [1,i]=a) then n:=i;n <> 0 then begini := n to RowCount-1 do

for j := 0 to ColCount — 1 do

cells [j,i]:=cells [j,i+1];:=RowCount — 1;showmessage (‘Нет такого инвентарного номера’);

end;;

Кнопка «Сохранить» сохраняет данные в открытом ранее пользователем файле. Для этого была описана глобальная переменная s в которой сохраняется путь к файлу при работе. Для реализации этой кнопки используется код:

TForm2.Button2Click(Sender: TObject); //сохранить

begin

if s <> » then begin

assignfile(f,s);

rewrite(f);

for i:=1 to SG1.RowCount-1 do

begin

for j:=0 to SG1.ColCount-1 do

writeln(f,SG1.cells[j,i]);

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

writeln(f,»);

end;

closefile(f)

end

else

showmessage (‘Вы не выбрали файл.’+#10#13+’Нужно открыть файл или создать новый и нажать кнопку «Сохранить как»‘);;

Кнопка «Сохранить как» сохраняет данные введенные в таблице как отдельный новый файл (Рисунок 5). Для реализации этой кнопки используется код:

procedure TForm2.Button3Click(Sender: TObject); //сохранить какSaveDialog1.Execute then begin

S:=SaveDialog1.FileName+’.txt’;

assignfile(f,s);

rewrite(f);

for i:=1 to SG1.RowCount-1 do

begin

for j:=0 to SG1.ColCount-1 do

writeln(f,SG1.cells[j,i]);

writeln(f,»);

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

end;

closefile(f)

end

showMessage(‘Вы не выбрли файл’);

end;

Рисунок 5 — сохранение файла.

 

procedure TForm2.Button4Click(Sender: TObject);.show;;

Рисунок 6 — О программе

Кнопка «Об авторе» открывает информацию об авторе созданной программы (Рисунок 7). Для реализации этой кнопки используется код:

procedure TForm2.Button5Click(Sender: TObject);.show;;

Рисунок 7 — Об авторе программы

Кнопка «Выход» закрывает программу. Для реализации этой кнопки используется код:

procedure TForm2.BitBtn1Click(Sender: TObject);

begin.close;;

2.3 Отладка программных модулей с использованием специализированных программных средств

Отладка ПС — это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. В программе был использован способ «Трассировка». Это процесс выполнения программы по шагам (step-by-step), инструкция за инструкцией. Во время трассировки программист дает команду: выполнить очередную инструкцию программы. Ниже приведены фрагменты из кода программы позволяющие избежать ошибок.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

Для кнопки «Открыть» :

… //Условия для открытия файла(‘Вы не выбрали файл’);

Для кнопки «Удалить»:

If…///Удаление строки(‘Нет такого инвентарного номера’);

Для кнопки «Сохранить как»:

If…//Сохранение файла

showMessage(‘Вы не выбрали файл’);

2.4 Тестирование программного обеспечения

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

Тестирование программы приведено ниже:

При запуске программы открывается главная форма программы (Рисунок 8).

Рисунок 8 — Главная форма

При нажатии на кнопку «Открыть» открывается окно (Рисунок 9) и заполняется таблица выбранными данными (Рисунок 10).

Рисунок 9 — Работа кнопки «Открыть»

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

Рисунок 10 — Заполнение таблицы

Если файл не был выбран появляется окно (Рисунок 11).:

Рисунок 11 — Сообщение об ошибке

При нажатии на кнопку добавить открывается следующая форма (Рисунок 11).:

Рисунок 12 — Форма «Добавление»

В эти строки можно ввести данные и они добавятся в таблицу.

При нажатии на кнопку «Удалить» пользователю предлагается ввести Инвентарный номер, по которому удалится выделенная строка, если номер выбран не правильно, выводится сообщение об ошибке (Рисунок 13).

Рисунок 13 — Работа кнопки «Удалить»

Кнопки «Сохранить» сохраняет данные в документе. Кнопка «Сохранить как» сохраняет документ в выбранном пользователем документе (Рисунок 14).

Рисунок 14 — Сохранение документа

Кнопки «Об программе» и «Об авторе» открывают информацию об программе и ее разработчике. (Рисунок 15-16).

Рисунок 15 — О программе

Рисунок 16 — Об авторе

На формах (Рисунок 12, 15, 16) расположенная кнопка «Вернуться» возвращает пользователя на главную форму. Расположенная на главной форме кнопка «Выход» закрывает программу.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

2.5 Оптимизация программного кода

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

procedure TForm2.Button3Click(Sender: TObject); //позволяет сохранить файл с новым именем

begin

if SaveDialog1.Execute then begin

S:=SaveDialog1.FileName+’.txt’;

assignfile(f,s);

rewrite(f);

for i:=1 to SG1.RowCount-1 do

for j:=0 to SG1.ColCount-1 do

writeln(f,SG1.cells[j,i]);

writeln(f,»);;

closefile(f)

end

else

showMessage(‘Вы не выбрали файл’);//Сообщение выводимое на экран в случае не выбранного файла для сохранения

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

end;

2.6 Разработка компонентов проектной и технической документации с использованием графических языков спецификаций

Блок-схема детализируемой программы (в соответствии с ГОСТ 19.701-90).

Рисунок 17 — блок схема программы

ЗАКЛЮЧЕНИЕ

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

В созданной программе были указаны сведения о принтере:

.        Название модели.

.        Скорость печати.

.        Кабинет расположения принтера.

.        Преподаватель.

Были углублены знания о возможностях Delphi, работы с таблицами StringGrid и другими возможностями данной программы.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Культин Н.Б. Embarcadero Delphi.

2. Дмитрий Осипов Базы данных и Delphi. Теория и практика.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

. Рубанцев Валерий. Описание книги Delphi в примерах, играх и программах.

. Сергей Бобровский. Технологии Delphi 2006. Новые возможности.

. Михаил Голованов, Евгений Веселов. Создание компонентов в среде Delphi. Руководство разработчика.

. Иван Хладни. Внутренний мир Borland Delphi.

. А. Я. Архангельский. Программирование в Delphi для Windows.

. А. Чиртик, В. Борисок, Ю. Корвель. Трюки и эффекты.

9. М. Е. Фленов. Delphi глазами хакера <http://programmersclub.ru/bookhaker>.

. Д. Тейлор, Дж. Мишель, Дж. Пенман. Delphi, библиотека программиста <http://programmersclub.ru/bookdelphias>.

ПРИЛОЖЕНИЕ   Листинг программы

Form 2TForm2.BitBtn1Click(Sender: TObject);.close;;TForm2.Button1Click(Sender: TObject); //Кнопка ОткрытьOpenDialog1.Execute then begin:=OpenDialog1.FileName ;(f,s);(f);:=0;not eof(f) do

readln (f);

readln (f);

readln (f);

readln (f);

readln (f);

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

inc(k);

readln (f);;(f);(f,s);(f);.ColCount:=5;.rowCount:=k;

SG1.cells[0,0]:=’Заголовок 1 столбца’;.cells[0,1]:=’Заголовок 1 столбца’;

for i:= 1 to SG1.RowCount-1 do

begin

for j:= 0 to SG1.ColCount-1 do begin

readln(f,x);

SG1.Cells[j,i]:=x;

end;

readln(f,x);;

closefile(f);

end(‘Вы не выбрали файл’);

end;TForm2.Button2Click(Sender: TObject); //сохранить

if s <> » then begin

assignfile(f,s);

rewrite(f);

for i:=1 to SG1.RowCount-1 do

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

begin

for j:=0 to SG1.ColCount-1 do

writeln(f,SG1.cells[j,i]);

writeln(f,»);(f)

end

else

showmessage (‘Вы не выбрали файл.’+#10#13+’Нужно открыть файл или создать новый и нажать кнопку «Сохранить как»‘);

end;TForm2.Button3Click(Sender: TObject); //сохранить какSaveDialog1.Execute then begin

S:=SaveDialog1.FileName+’.txt’;

assignfile(f,s);

rewrite(f);

for i:=1 to SG1.RowCount-1 do

begin

for j:=0 to SG1.ColCount-1 do

writeln(f,SG1.cells[j,i]);

writeln(f,»);

end;

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

closefile(f)

end

showMessage(‘Вы не выбрали файл’);;TForm2.Button4Click(Sender: TObject);.show;;TForm2.Button5Click(Sender: TObject);.show;;TForm2.Button6Click(Sender: TObject);.show;;TForm2.Button7Click(Sender: TObject);n: integer;

a: string;

begin:=inputbox (‘Поиск’,’Введите инвентарный номер, которых хотите удалить’,’1′);

n:=0 ;SG1 do begini:=1 to RowCount — 1 do

if (cells [1,i]=a) then n:=i;n <> 0 then begini := n to RowCount-1 do

for j := 0 to ColCount — 1 do

cells [j,i]:=cells [j,i+1];:=RowCount — 1;showmessage (‘Нет такого инвентарного номера’);

end;;TForm2.FormCreate(Sender: TObject);.Color:=rgb(255, 214, 155);;TForm2.SG1Click(Sender: TObject);;TForm2.SG1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;

State: TGridDrawState);

var

s:string;

h: integer;

begin

with Sender as TStringGrid do

Canvas.FillRect(Rect);

DrawText (Canvas.Handle,

PChar(Cells[ACol, ARow]),

Length(Cells[ACol, ARow]),

Rect, DT_WORDBREAK or

DT_EXPANDTABS);

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

end;;TForm3.Button1Click(Sender: TObject);.Hide;;TForm3.FormCreate(Sender: TObject);.Color:=rgb(255, 214, 155);;TForm4.Button1Click(Sender: TObject);Form2 do begin

SG1.rowcount:=SG1.RowCount+1;

SG1.Cells [0, SG1.rowcount-1]:= Form4.edit1.Text;

SG1.Cells [1, SG1.rowcount-1]:= Form4.edit2.Text;

SG1.Cells [2, SG1.rowcount-1]:= Form4.edit3.Text;

SG1.Cells [3, SG1.rowcount-1]:= Form4.edit4.Text;

SG1.Cells [4, SG1.rowcount-1]:= Form4.edit5.Text;

ShowMessage (‘Строка была добавлена в таблицу’);

end;;TForm4.Button2Click(Sender: TObject);.Hide;;TForm4.FormCreate(Sender: TObject);.Color:=rgb(255, 214, 155);;_programmeTForm1.Button1Click(Sender: TObject);.Hide;;TForm1.FormCreate(Sender: TObject);.Color:=rgb(255, 214, 155);;.

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

664

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке