Веб-додаток для реєстрації аварійних ситуацій та обліку ремонтних робіт ЖРЕРу

Огляд технологій, які використовувалися для створення веб-додатку. Опис архітектури та роботи елементів проекту журналу реєстрації аварійних ситуацій та обліку ремонтних робіт. Приклад інтерфейсу користувача. Розрахунок собівартості програмного продукту.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 03.07.2014
Размер файла 1,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

if (!ctype_digit($fid)) {exit("$back і виберіть категорію аварійної ситуації!");}

$katname.="[ktname]".$rname;

if ($katnumber=="0") {print"$back і виберіть категорію аварійної ситуації!"; exit;}

if ($name == "" || strlen($name) > $maxname) {print "$back Ваше <B>ім'я пусте, або перевишає $maxname символів!</B></center>"; exit;}

$zag=$_POST['zag'];

if ($zag == "" || strlen($zag) > $maxzag) {print "$back Ви <B>не ввели назву аварійної ситуації, або він перевищує $maxzag символів!</B></center>"; exit;}

if (isset($_POST['type'])) {$type=$_POST['type'];} else {$type="";}

if ($type == "") {print "$back і виберіть відмітку про виконання заходів (<B>Не виконано</B> или <B>Виконано</B>).</B></center>"; exit;}

if ($type!="В" and $type!="Н") {$type="Н";}

$msg=$_POST['msg'];

if ($msg == "" || strlen($msg) > $maxmsg) {print "$back <B>Причини і стислий опис обставин аврії пустий або перевищає $maxmsg символів.</B></center>"; exit;}

if (isset($_POST['gorod'])) {$gorod=$_POST['gorod'];} else {$gorod="";}

if (isset($_POST['phone'])) {$phone=$_POST['phone'];} else {$phone="";}

if (isset($_POST['timez'])) {$timez=$_POST['timez'];} else {$timez="";}

if (isset($_POST['moneyz'])) {$moneyz=$_POST['moneyz'];} else {$moneyz="";}

if (isset($_POST['esk'])) {$esk=$_POST['esk'];} else {$esk="";}

if (isset($_POST['zaxodu'])) {$zaxodu=$_POST['zaxodu'];} else {$zaxodu="";}

if ($days>$maxdays) {$days=$maxdays;}

$deldt=mktime()+$days*86400; // удалити через стільки то днів

$msg=str_replace("|","I",$msg);

$zag=str_replace("|","I",$zag);

$today=mktime();

$stime=$_POST['stime'];

if (!ctype_digit($stime)) {exit("$back и выбирете категорию!");}

// Порівнюю імя з подавшим об'яву з зареєстрованим іменем

$flag="0"; $status="no"; $namesm=strtolower($name);

$lines=file("$datadir/usersdat.php"); $i=count($lines);

do {$i--; $rdt=explode("|", $lines[$i]);

$rdt[0]=strtolower($rdt[0]);

if ($rdt[0]==$namesm) {$email="$rdt[2]"; $flag="yes";

if ($rdt[12]>0) {$vipdays=round(($rdt[12]-$today)/86400);} else {$vipdays="999";}

if ($rdt[10]==="vip" and $vipdays>0) {$status="vip";}}

} while($i > "1");

if (!isset($_COOKIE['wrboardname']) and $flag=="yes") {print"$back ошибка, користувач з таким іменем вже є.<BR><B>Ви не можете подати заявку від його імені.</B>"; exit;}

if ($antiflud=="1") { // АНТІ СПАМ

$linesn = file("$datadir/$fid.dat"); $in=count($linesn);

if ($in > 0) {

$lines=file("$datadir/$fid.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]);

$txtback="$dtf[0]|$dtf[1]|$dtf[2]|$dtf[3]|$dtf[4]|$dtf[5]|";

$txtflud="$katnumber|$katname|$name|$zag|$type|$msg|";

$txtflud=htmlspecialchars($txtflud); $txtflud=stripslashes($txtflud);

$txtflud=str_replace("\r\n","<br>",$txtflud);

if ($txtflud==$txtback) {print"$back Данное объявление уже размещено на доске. Флудить на доске запрещено!"; exit;} }}

// Рандомний код заявки

$z=1; do {$key=mt_rand(10000,99999); if (strlen($key)==5) {$z++;} } while ($z<1);

$text="$katnumber|$katname|$name|$zag|$type|$msg|$date|$deldt|$fid|$status|$key|$today|$gorod|$phone|$timez|$moneyz|$esk|$zaxodu||||||$rname|";

$text=htmlspecialchars($text);

$text=stripslashes($text);

$text=str_replace("\r\n","<br>",$text);

// Очистка тегів!!

$textdt=explode("|", $text);

$katnumber=$textdt[0];

$tdt=explode("[ktname]", $textdt[1]); $katname="$tdt[0]";

$name=$textdt[2];

$zag=$textdt[3];

$type=$textdt[4];

$msg=$textdt[5];

$date=$textdt[6];

$deldt=$textdt[7];

$fid=$textdt[8];

$status=$textdt[9];

$today=$textdt[11];

$gorod=$textdt[12];

$phone=$textdt[13];

$timez=$textdt[14];

$moneyz=$textdt[15];

$esk=$textdt[16];

$zaxodu=$textdt[17];

$smallfoto=$textdt[18];

$foto=$textdt[19];

$fotoksize=$textdt[20];

$fp=fopen("$datadir/$fid.dat","a+");

flock ($fp,LOCK_EX);

fputs($fp,"$text\r\n");

fflush ($fp);//чистка файлового буфера

flock ($fp,LOCK_UN);

fclose($fp);

@chmod("$datadir/$fid.dat", 0644);

// +1 до кол. заявок в категоріях

$lines=file("$datadir/$datafile"); $i=count($lines); $fnomer=$i+1;

do {$i--; $dt=explode("|",$lines[$i]);

if ($fid==$dt[0]) {$fnomer=$i; if ($type=="В") {$dt[3]++;} else {$dt[2]++;} $mtext="$fid|$dt[1]|$dt[2]|$dt[3]|";}

} while($i > 0);

$file=file("$datadir/$datafile");

$fp=fopen("$datadir/$datafile","w");

flock ($fp,LOCK_EX);

ftruncate ($fp,0);//УДАЛЯЄМО СОДЕРЖИМОЄ ФАЙЛ

for ($ii=0;$ii< sizeof($file);$ii++)

{ if ($fnomer!=$ii) {fputs($fp,$file[$ii]);} else {fputs($fp,"$mtext\r\n");} }

fflush ($fp);//очистка файлового буфера

flock ($fp,LOCK_UN);

fclose($fp);

@chmod("$datadir/$datafile", 0644);

// добавляємо в 10-20-ку нових заявок

$newmessfile="$datadir/newmsg.dat";

if (is_file($newmessfile)) {

$file=file($newmessfile); $i=count($file);

if ($showten>"0" & $i<$showten) {

$fp=fopen("$newmessfile","a+");

flock ($fp,LOCK_EX);

fputs($fp,"$text\r\n");

flock ($fp,LOCK_UN);

fclose($fp);

@chmod("$newmessfile", 0644);

} else {

$fp=fopen($newmessfile,"w");

flock ($fp,LOCK_EX);

ftruncate ($fp,0);//УДАЛЯЄМО СОДЕРЖИМОЄ ФАЙЛА

for ($ii=1;$ii<$showten; $ii++) {fputs($fp,$file[$ii]);}

fputs($fp,"$text\r\n");

flock ($fp,LOCK_UN);

fclose($fp);

@chmod("$newmessfile", 0644); }

}

// тестово отправка адміну і користувачу на мило о тому, що заявка добавлена

$headers=null; // Настройки

$headers.="Content-Type: text/html; charset=windows-1251\r\n";

$headers.="From: Адміністратор <".$adminemail.">\r\n";

$headers.="X-Mailer: PHP/".phpversion()."\r\n";

$deldate=date("d.m.Y",$deldt); // конвертуємо дату

if (isset($nameonly)) {$name=$nameonly;} // Тестово

// подготовка і вивод на екран шо відправили

if ($type=="В") {$sptype="Не виконано";} else {$sptype="Виконано";}

$msg=str_replace("\r\n", "<br>", $msg);

$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];

$boardurl="http://$host$self";

$boardurl=str_replace("add.php", "index.php", $boardurl);

// Зібираємо всьо тіло пісьма

$allmsg="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>

<style>BODY {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} TD {FONT-SIZE: 12px;}</style></head>

<body><center><h4>ЖРЕР: Заявка на аварійну ситуацію подана \"<B><a href='$boardurl'>$brdname</a></B>\"</h4>

<table border=1 cellpadding=6 cellspacing=0 width=550 bordercolor='#DBDBDB'>

<tr><td colspan=2 align=center bgcolor='#E4E4E4'><B>Информация</B></td></tr>

<tr bgcolor='#F2F2F2'><td width=117>Ваше ім'я:</td><td width=433><B>$name</B></td></tr>

<tr bgcolor='#F8F8F8'><td>Е-майл:</td><td><B>$email</B></td></tr>

<tr bgcolor='#F2F2F2'><td>Категорія:</td><td>&nbsp;<B>$rname</B> >> <B>$katname</B> >> $sptype</td></tr>

<tr bgcolor='#F8F8F8'><td>Дата створення заявка:</td><td><small>$time</small> - $date г.</td></tr>

<tr bgcolor='#F2F2F2'><td>Дата видалення заявки:</td><td><B>$deldate</B> г.</td></tr>

<tr bgcolor='#F8F8F8'><td>Назва:</td><td><B>$zag</B></td></tr>

<tr bgcolor='#F2F2F2'><td>Причина:</td><td>$msg</td></tr>

</table><center><BR>Ваша заявка <B><font color=navy>успішно розміщена</font></B><BR><BR>

<a href='$boardurl?fid=$fid'>Повернутися в категорії <B>$katname</B></a>";

$printmsg="$allmsg </body></html>";

$allmsg.="<BR><BR><BR>* Це повідомлення згенеровано автоматично, відповідати на нього не подтрібно</body></html>";

if ($sendmail=="1") { // Отправка якшо дозволено

if ($sendmailadmin=="1") {mail("$adminemail", "Нова заявка ($brdname)", $allmsg, $headers);}

if (isset($email) & $flag=="yes") { mail("$email", "Заявка ($brdname)", $allmsg, $headers);} }

// Удаляємо кукі

if (!isset($flag) and $onlyregistr==1) { if (isset($_COOKIE['wrboardname'])) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); }}

print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid\"}; setTimeout('reload()', 2000);</script>$printmsg"; exit;

}

}

//} // if is_file ("$fid.dat")

else { // ГОЛОВНА СТОРІНКА

$rubrika="Реєстрації аварійних ситуацій";

include "$topurl"; addtop(); // подключаємо ШАПКУ

if ($onlyregistr=="1" and !isset($wrboardname))

{ print"<BR><BR><BR><BR><BR><center><font size=-1><B>Шановні користувачі!</B><BR><BR>

На нашому сайті ви можете подати заявку на реєстрацію аварійної ситуації в ЖРЕР<BR><BR><B> Без реєстрації <font color=#FF0000> заборонено!</B></font><BR><BR>

Зареєструватися можно по <B><a href='tools.php?event=reg'>цій ссилці</a></B><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>"; }

else {

if (isset($_GET['fid'])) {$fid=$_GET['fid'];} else {$fid="";}

$today=mktime();

print"<center><TABLE class=bakfon cellPadding=2 cellSpacing=1>

<FORM action='add.php?event=add' method=post name=addForm enctype=\"multipart/form-data\">

<TBODY>

<TR class=toptable><TD height=23 align=middle colSpan=2><B>$rubrika</B></TD></TR>";

print "

<tr class=row1><TD>Категорія і характер аварії:</TD><TD>

<SELECT name=rubrika class=maxiinput>

";

// Блок зщитує всі категорії

$lines=file("$datadir/$datafile"); $imax=count($lines); $i="0"; $r="0";

do {$dt=explode("|", $lines[$i]);

if ($fid==$dt[0]) {$fy="selected";} else {$fy="";}

if ($dt[1]!="R") {print "<OPTION value=\"$i|$dt[0]|$r|$dt[1]|\"$fy>&nbsp;&nbsp; - &nbsp; $dt[1]</OPTION>\r\n";}

else {$r=$dt[2]; print "<OPTION value='0|||||' style='color: #CD8181;'>$dt[2]</OPTION>\r\n";}

$i++;

} while($i < $imax);

print "</SELECT></TD></TR>

<input type=hidden name=stime value='$today'>

<TR class=row2><TD>Назва:<FONT color=#ff0000>*</FONT><BR>(не більше $maxzag символів)</TD>

<TD><INPUT name=zag class=maxiinput maxlength=$maxzag></TD></TR>

<TR class=row1><TD>Причини і стислий опис<br> обставин аварії:</TD>

<TD><TEXTAREA class=maxiinput name=msg style='HEIGHT: 200px; WIDTH: 300px'></TEXTAREA></TD></TR>

<TR class=row1 height=23><TD>Дата і час настання аварії: </TD><TD><INPUT name=timez class=maxiinput maxlength=35></td></tr>

<TR class=row2 height=23><TD>Економічні втрати від аварії <br>(не обов'язково): </TD><TD><INPUT name=moneyz class=maxiinput maxlength=35></td></tr>

<TR class=row1 height=23><TD>Тривалість простою об'єкта від<br> початку аварії до введення <br>в експлуатацію, годин або діб <br>(не обов'язково): </TD><TD><INPUT name=esk class=maxiinput maxlength=35></td></tr>

<TR class=row2 height=23><TD>Заходи, запропоновані комісією<br> з розслідування причин аварії<br>(не обов'язково): </TD><TD><INPUT name=zaxodu class=maxiinput maxlength=35></td></tr>

<TR class=row1><TD>Відмітка про виконання<br> заходів:<FONT color=#ff0000>*</FONT></TD>

<TD><INPUT name=type type=radio value='Н'><B><font color=#EE2200>Н</font></B>е виконано

<INPUT name=type type=radio value='В'><B><font color=#1414CD>В</font></B>иконано </TD></TR>

<TR class=row1 height=23><TD>Ваше ім'я:";

if (isset($wrboardname)) {

print "<input type=hidden name=name value='$wrboardname'></TD><TD><B>$wrboardname</B></td></tr>";

} else {

print "

<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=name class=maxiinput maxlength=30>

<TR class=row2 height=23><TD>Ваш Е-майл:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=email class=maxiinput maxlength=30></td></tr>

<TR class=row1 height=23><TD>Місто:</TD><TD><INPUT name=gorod class=maxiinput maxlength=40></td></tr>

<TR class=row2 height=23><TD>Телефон: <BR>(по шаблону: +38(095)344356)</TD><TD><INPUT name=phone class=maxiinput maxlength=35></td></tr>

";}

print"<TR class=row1><TD>Термін розміщення заявки:</TD>

<TD><SELECT name=days style='FONT-SIZE: 13px'>

<OPTION value=7>7 днів</OPTION>

<OPTION value=14>14 днів</OPTION>

<OPTION selected value=30>30 днів</OPTION>

<OPTION value=60>60 днів</OPTION>

<OPTION value=90>90 днів</OPTION></SELECT>

</TD></TR>

";

if (!isset($wrboardname) and $antispam=="1") {print"<tr class=row1><td align='right'>Захисний код від спамерів:</td><td>";

$rand_key=array("7531","8642","9753","10864","1975","2186","3197","4298");

$imag_key=array("8642","9753","10864","1975","2186","3197","4298","7531");

$rand = mt_rand(0,7); $rnd=$rand_key[$rand]; $ima=$imag_key[$rand];

print"<img src='images/$ima.png' width=300 height=20 border=0>

</td></tr><input name=rand type=hidden value='$rnd'>

<tr class=row2><td align='right'><font color=red>Напишіть код

цифрами:</font></td><td><input name='num' type='text' maxlength=5 size=5></td></tr>";}

print"<TR class=row1><TD colspan=2 align=middle><INPUT class=longok type=submit value=Зареєструвати></TD></TR>

</FORM></TBODY></TABLE>";

}

}

include "images/bottom.html";

?>

<center><small>Powered by KNz-31 Group &copy; 1.0<br></small></center>

</body></html>

Config.php

<? $brdname="ЖРЕР: Зареєструвати аварійну ситуацію"; // тайтл

$brdmaintext=""; // перед тайтлом

$password="admin"; // пароль адм

$sendmail="1"; // тестовий сенд майл

$sendmailadmin="0"; // отправка адміну листів?

$adminemail="davi_davia@mail.ru"; // Емайл адмін.

$fotoadd="0"; // фото не доробив

$fotodir=""; // фото не доробив

$max_file_size="100000"; // фото не доробив

$flagm1="1"; // корекція 1/0

$flagm2="1"; // +1 1/0

$showten="10"; // топ-10

$onlyregistr="0"; //подавати зареєстрованим або читачам?

$maxzag="60"; // Макс.символів категорії

$maxname="45"; // Макс символів в імені?

$maxmsg="1000"; // Макс. символів в тексту заяви

$maxdays="90"; // Макс. термін показу

$qq="7"; // КЗаявок на сторінку

$colrub="2"; // стовбчики

$brdskin="1-4-lite";

$addrem="0"; // фото

$date=date("d.m.Y"); // число.месяц.год

$time=date("H:i:s"); // часы:минуты:секунды

$datadir="./data"; // БД

$datafile="boardbase.dat"; // Імя БД

$back="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><meta http-equiv='Content-Language' content='ru'></head><body><center>Поверніться <a href='javascript:history.back(1)'><B>назад</B></a>"; // назад

$rubrika=""; // тимчасова змінна

?>

Размещено на Allbest.ru

...

Подобные документы

  • Функції обліку зайнятості аудиторії. Створення програмного модуля, який виконуватиме формування електронного реєстру та презентацію вільних та зайнятих аудиторій. Призначення та область застосування програмного продукту. Опис інтерфейсу, тестування.

    курсовая работа [460,5 K], добавлен 21.05.2016

  • Формування електронного реєстру та презентація обліку зайнятості населення. Основні завдання обліку зайнятості (біржі праці). Обґрунтування доцільності створення програмного модуля. Вимоги до програмного продукту. Тестування програмного продукту.

    курсовая работа [399,7 K], добавлен 30.04.2016

  • Дослідження середовища проектування та інструментів LabView: створення, редагування і відладка віртуальних інструментів, панелей, надписів. Логіко-функціональна схема роботи користувача, опис інтерфейсу програми. Економічна доцільність розробки продукту.

    дипломная работа [1,6 M], добавлен 26.10.2012

  • Особливості роботи ресторану та необхідність автоматизації процесів документообігу. Вимоги до продукту, вид інтерфейсу для користувача, додаткові функції при роботі з базою даних та веденням обліку. Вибір операційної системи та її основних компонентів.

    курсовая работа [310,6 K], добавлен 18.09.2012

  • Головні принципи візуального програмування, опис компонентів Delphi, використаних при розробці проекту. Опис програми-додатку "Психологічний тест" та список дій користувача. Алгоритм роботи програми, її форма та ієрархія. Опис графічного інтерфейсу.

    курсовая работа [1,2 M], добавлен 08.06.2010

  • Основні завдання синоптичної метеорології. Призначення та область застосування програмного продукту "Статистика метеоспостережень", функціональні вимоги до нього. Інформаційне забезпечення, структура, опис інтерфейсу. Тестування програмного продукту.

    курсовая работа [3,6 M], добавлен 30.04.2016

  • Створення програмного модуля, який виконуватиме формування електронного підручника та презентацію тестів з пройденого матеріалу по темах, визначених користувачем. Склад та призначення програмних компонентів модуля Unit1.cpp., опис інтерфейсу додатку.

    курсовая работа [381,2 K], добавлен 06.05.2016

  • Вибір методів та засобів створення інформаційної системи для обліку і перегляду продукції на складі. Розробка моделі даних для реляційної бази даних, прикладного програмного забезпечення. Тестування програмного додатку, виявлення можливих проблем.

    курсовая работа [1,1 M], добавлен 22.09.2015

  • Мета створення інформаційних систем обліку, їх роль в управлінні економічним об'єктом. Характеристика та типи облікових задач, що підлягають автоматизації. Програмне забезпечення обліку праці та її оплати засобами універсального програмного продукту.

    контрольная работа [40,1 K], добавлен 05.07.2015

  • Загальна характеристика методів проектування та документації додатків. Розробка інтерфейсу програми для медичного діагностичного центру. Вибір архітектури. Описання логічної структури програми. Розробка структури бази даних проекту, полів таблиць.

    курсовая работа [2,0 M], добавлен 21.08.2015

  • Аналіз інформаційних потоків підприємства торгівлі. Обґрунтування необхідності автоматизації складського обліку автозапчастин. Вимоги до архітектури і продуктивності клієнтської системи. Розробка модулів, алгоритмів, структури даних, інтерфейсу програми.

    дипломная работа [1,6 M], добавлен 12.04.2012

  • Огляд існуючих програмних продуктів. Проходження процедури реєстрації. Побудова та опис логічної моделі. Розробка основних форм інтерфейсу користувача. Тестування методом чорної скриньки. Інсталяція серверної частини системи та клієнтських програм.

    курсовая работа [1,8 M], добавлен 03.06.2021

  • Опис структур даних та вмісту файлів з вхідними, вихідними даними. Проектування програми автоматизації процесу обліку (поставки та видачі) товарів для невеликого магазину. Математична постановка основних задач. Опис програмного інтерфейсу з користувачем.

    курсовая работа [526,9 K], добавлен 07.10.2014

  • Особливості системи онлайн-агрегаторів новин, універсальної програмної платформи Microsoft Window. Використання мови програмування C#, створення бази даних. Розробка програмного продукту, алгоритм його створення. Вихідний код та інструкція користувача.

    дипломная работа [730,9 K], добавлен 21.01.2016

  • Розробка системи, призначеної для автоматизації процесу реєстрації користувачів (студентів-першокурсників) в базі даних Active Directory. Інформаційне, програмне та технічне забезпечення проекту. Керівництво користувача та системного програміста.

    курсовая работа [603,6 K], добавлен 19.11.2013

  • Розробка іспитового стенда для лабораторії, визначення тривалості робіт, ресурсів на її виконання. Характеристика параметрів моделі до оптимізації. Очікувана тривалість робіт за проектом. Причини та критерії оптимізації моделі. Розрахунок бюджету проекту.

    контрольная работа [1,1 M], добавлен 09.11.2015

  • Формування електронного реєстру та презентацію готелів по країнах (регіонах) та містах, визначених користувачем. Структура даного програмного продукту, опис інтерфейсу з користувачем, план тестування, інструкція по експлуатації, функціональні вимоги.

    курсовая работа [199,9 K], добавлен 30.04.2016

  • Аналіз практиці впровадження електронного журналу у школі з виконанням автоматизованої обробки аналізу успішності учнів. Створення програмного забезпечення для ведення електронного обліку успішності школярів за допомогою Microsoft Visual Studio 2008.

    курсовая работа [2,9 M], добавлен 01.12.2010

  • Проектування бази даних реєстрації та ведення обліку автомобілів в ДАІ на прикладі київського МРЕВ ДАІ за допомогою SQL Oracle. Опис інформаційної структури ПО з використанням діючих бізнес-правил та визначенням сутностей, їх атрибутів та зв'язків.

    курсовая работа [159,3 K], добавлен 05.12.2012

  • Огляд існуючого програмного забезпечення для управління дистанційним навчанням. Структура системи дистанційного навчання Moodle, її встановлення та налаштування. Розрахунок експлуатаційних витрат і показників економічного ефекту від розробки проекту.

    дипломная работа [2,1 M], добавлен 16.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.