реферат Проектирование информационных систем на базе MySQL и Internet

Министерство образования Российской Федерации


            Нижегородский Государственный Технический Университет


                      Нижегородский Вечерний Факультет


      Кафедра: Компьютерные технологии в проектировании и производстве



                               Курсовая работа


                               по дисциплине:

                   «Проектирование информационных систем»

                    Проектирование информационных систем

                          На базе MySQL и Internet



                                                       Выполнили:
                                                       Греков В.В.
                                                       Певченко Г.П.
                                                       группа 99-ИКУ

                                                       Проверил:
                                                       Штанюк А.А.



                                  г.Кстово

                                    2003


                                 Содержание


1 Задание
2 Анализ задания
3 Проектирование базы данных
4 Разработка CGI-программ и HTML-документов
5 Схема размещения информации на Internet узле
6 Контрольный пример
7 Выводы
8 Список литературы



                                   Задание

       Разработать информационную систему для реализации конкурсного отбора
   кадров на базе программного обеспечения MySQL и Internet.



                               Анализ задания

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

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



                         Проектирование базы данных

                   Реализация базы данных с помощью MySQL.

    После запуска MySQL в командной строке создаем базу данных Konti:
    C:\mysql\bin\mysqladmin create Konti

    После этого в созданной базе создаем таблицы t1 и t2:

    Создание таблицы t1:

    use Konti
    create table t1(prof varchar(30) not null primary key,  knkrs  int  not
null, ed varchar(30) not null, cpc varchar  (30)  not  null,  crok  int  not
null);

    Поле “prof” - является ключевым и содержит наименование вакансии.
    Поле “knkrs” - содержит количество анкет, заявленных на данную
                       вакансию.
    Поле “ed” - содержит сведения о необходимом образовании претендента на
                       данную вакансию.
   Поле “cpc” - содержит сведения о необходимой специализации претендента
                    на данную вакансию.
   Поле “crok” - содержит сведения о необходимом опыте работы претендента
                    по своей специализации.

    Создание таблицы t2:

    create table t2(fio varchar(30) not null primary key,  eda  varchar(30)
not null, cpca varchar(30) not null, croka int not null, adress  varchar(60)
not null, vak varchar(30) not null);

    поле “fio” (ключевое поле) – фамилия имя и отчество претендента;
    поле “eda” – образование претендента;
    поле “cpca” – специальность претендента;
    поле “croka” – срок работы претендента по специальности;
    поле “adress” – адрес претендента;
    поле “vak” – выбранная вакансия претендента;



                  Разработка CGI-программ и HTML-документов

    Файл Kontinental-HH.htm - главная страница.
    Содержит две кнопки:
     - "Просмотр вакансий" – запускает скрипт list.cgi и предназначена  для
       пользователя информационной системы - предоставляет ему  возможность
       ознакомиться со списком  вакансий  на  предприятии,  узнать  текущий
       конкурс на нее и заполнить анкету;
     -  "База  данных”  (пароль)  –   запускает   скрипт   BDvakans.cgi   и
       предназначена для администратора  -  предоставляет  ему  возможность
       вносить в базу данных  новые  вакансии,  удалять  занятые,  а  также
       редактировать   список   присланных    анкет,    отбирая    наиболее
       перспективные для деятельности предприятия.

    Kontinental-HH.htm
    <html>
    <head><title>Континенталь-НН" --><title>Проектирование информационных систем на базе MySQL и Internet</title></head>
    <body bgcolor="#faf1d8">
    <center><h1><font color="#800000">ОАО "Континенталь-НН"
®</font></h1></center>
    <p ALIGN="center"><font size="5"><strong><font color="#800000">Отдел
кадров</font></strong></font></p>
    <p ALIGN="center"><font size="2"><strong>ПРОФЕССИОНАЛЬНЫЙ ПОДХОД К
ЧЕЛОВЕЧЕСКИМ РЕСУРСАМ</font></strong></p>
    <table border="0">
    <tr><td><blockquote class="text">
    Сегодняшний день и перспективные задачи, стоящие перед организацией,
требуют от её сотрудников новых и современных решений. Администрация
предприятия проводит целенаправленную работу по привлечению в наши ряды
высокопрофессиональных специалистов по всем направлениям деятельности.<br>
    Если Вы, ознакомившись со списком вакансий, увидели для себя
возможности к самореализации, наша кадровая служба с интересом ознакомится
с Вашим резюме.<br>
    В любом случае, заполнив анкету, Вы сможете попасть в банк данных
нашего отдела кадров и рассчитывать на встречное предложение с нашей
стороны.
    </blockquote>
    </td></tr>
    </table>
    <form action="http://myserver/cgi-bin/list.bat">
    <center><input type="submit" value="Просмотр вакансий"></center>
    </form>
    <br>
    <form action="http://myserver/cgi-bin/BDvakans.bat" method="post">
    <center><input type="submit" value="База данных">
    <input type="password" name="111" ></center>
    <center>Введите пароль для доступа <br><font size="2">(Временно пароль
не используется)</font></center>
    </form>
    </td></tr></table>
    </html>


    Файл list.cgi – исполняемая программа.
    Выводит список вакансий и конкурс на них на основе данных  таблицы  t1.
Имеет 1 кнопку:
    - “Заполнить анкету" – запускает скрипт anketa.cgi и  передает  в  него
данные о выбранной вакансии.

    list.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Список Вакансий для пользователя");
     print qq{<body bgcolor="#faf1d8">};
     print "<center><h1>Перечень вакансий</h1></center>";
     print "<center>Выберите вакансию и заполните анкету</center>";
     print "<br>";

     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t1;");
     $rows=$sth->execute();
     print "<form action=../../index.html"http://myserver/cgi-bin/anketa.bat\">";
     print "<center><table border=1>";
     print qq{<tr ALIGN="center"><th> № </th>
                      <th>Вакансия</th><th> Конкурс <br>на
место</th>
                      <th>Ваш<br>выбор</th></font></tr>};
     for($i=0;$i<$rows;$i++)
     {
      ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
      $i++;
      print "<tr>
      <td ALIGN=../../index.html"center\">$i</td>";
      $i--;
      print"<td>$bakans</td>
      <td><center>$knkrs</center></td>
      <TD><center><INPUT type=../../index.html"radio\" name=../../index.html"vibor\"
value=../../index.html"vib$i\"></center></TD>
      </tr>";
     }
     $sth->finish();
     $dbh->disconnect();
     print"</table></center>";
     print "<br>";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"Заполнить
анкету\"></center\>";
     print "<br>";
     print "<center>Анкеты претендентов будут рассмотрены 25 января
2003г.</center>";
     print "</FORM>";

    print end_html();



    Файл anketa.cgi – исполняемая программа.
    Выводит перечень основных требований к кандидату на вакансию на  основе
данных таблицы t1 и  предлагает  претенденту  заполнить  анкетные  данные  о
себе.
    Имеет 2 кнопки:
     - “Отправить" – запускает скрипт itog.cgi и передает в  него  анкетные
       данные претендента;
     - "Очистить форму" – стирает  из  формы  ошибочно  введенные  анкетные
       данные.

    anketa.cgi

    use CGI qw(:standard);
    use DBI;
    print header();
    print start_html("Анкета");
    print qq{<body bgcolor="#faf1d8">};
    my $pas=param("vibor");
     $var=$pas;
     $var=~ s/\D+//;
    if ($pas eq "")  {print qq{<p ALIGN="center"><font
size="5"><strong><font color="#800000">
             <br> Вы забыли выбрать
вакансию!</font></strong></font></p>};
     print "<br>";
     print "<center><table border=0>";
     print "<tr><td><FORM action=../../index.html"http://myserver/cgi-bin/list.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"Назад\"></center\>";
     print "</FORM></td>";
     print "<td><FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\>";
     print "</FORM></td></tr>";
     print "</table></center>";
             goto quit;
             }
     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t1;");
     $rows=$sth->execute();

    print "<center><h1>Заполните анкетные данные</h1></center>";
    print qq{<p ALIGN="center"><font size="5">};
    print "<center><u>Основные требования к кандидату</u></center>";
    for($i=0;$i<$var+1;$i++)
    {
     ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
     if ($i==$var)
     {
    print "<center><table>";
    print "<TR><TD>Образование</TD><TD>- $ed</TD></TR>";
    print "<TR><TD>Специальность</TD><TD>- $Cpc</TD></TR>";
    print "<TR><TD>Срок работы по специальности, лет </TD><TD>-
$Crok</TD></TR>";
    print "</center></table>";
     }
    }
    print "</font></p>";

     $sth->finish();
     $dbh->disconnect();

    print "<form action=../../index.html"http://myserver/cgi-bin/itog.bat\">";
    print "<center><table>";
    print "<TR><TD>Фамилия имя отчество</TD><TD><input
name=../../index.html"fio\"></TD></TR>";
    print "<TR><TD>Образование</TD>
         <TD><SELECT name=../../index.html"ed\">
               <OPTION value=../../index.html"высшее0\" selected>высшее
         <OPTION value=../../index.html"нез/высшее1\">нез/высшее
               <OPTION value=../../index.html"ср. техническое2\">ср. техническое
               <OPTION value=../../index.html"ср. специальное3\">ср. специальное
               <OPTION value=../../index.html"среднее4\">среднее
               </SELECT>
         </TD></TR>";
    print "<TR><TD>Специальность</TD><TD><input name=../../index.html"cpc\"></TD></TR>";
    print "<TR><TD>Стаж работы по специальности, лет </TD><TD><input
name=../../index.html"crok\"></TD></TR>";
    print "<TR><TD>Адрес</TD><TD><input name=../../index.html"adress\"></TD></TR>";
    print "<TR><TD><BR></TD></TR>";

    print qq{<INPUT type="hidden" name="vib" value=$pas>};

    print "<TR><TD><input type=../../index.html"submit\" value=../../index.html"Отправить\"></TD>
         <TD><INPUT type=../../index.html"reset\" value=../../index.html"Очистить форму\"></TD></TR>";
    print "</table></center>";
    print "</form>";

    quit:
    print end_html();



    Файл itog.cgi – исполняемая программа.
    Проверяет  введенные   анкетные   данные   на   соответствие   основным
требованиям к претенденту, при выполнении которых заносит их в таблицу t2  и
увеличивает  значение  конкурса  на  выбранную  вакансию  в  таблице  t1,  в
противном случае выводит  мотивированное  сообщение  об  отказе  в  принятии
анкеты.
    Имеет 2 кнопки:
     - “Назад" - запускает скрипт itog.cgi;
     - "На главную" - запускает скрипт Konti.cgi.

    itog.cgi

    use CGI qw(:standard);
    use DBI;
    print header();
    print start_html("Добавление Анкеты");
    print qq{<body bgcolor="#faf1d8">};
     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t1;");
     $rows=$sth->execute();
     $fio=param('fio');
     $eda=param('ed');
     $eda0=$eda;
     $eda=~ s/\d+//;
     $eda0=~ s/\D+//;
     $cpca=param('cpc');
     $cpca=~ tr/А-Я/а-я/;
     $croka=param('crok');
     $adress=param('adress');
     $var=param('vib');
     $var=~ s/\D+//;
     print "<br>";
    print qq{<p ALIGN="center"><font size="4"><strong><font
color="#800000">};
    for($i=0;$i<$var+1;$i++)
    {
     ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
     if ($i==$var)
     {
     if ($ed="высшее") {$ed0=0;} elsif ($ed="нез/высшее") {$ed0=1;} elsif
($ed="ср. техническое")  {$ed0=2;} elsif ($ed="ср. специальное") {$ed0=3;}
else {$ed0=4;}
     if ($eda0 > $ed0) {$fe=1;} else {$fe=0;}
     if ($cpca ne $Cpc) {$fcp=1;} else {$fcp=0;}
     if ($croka < $Crok) {$fcr=1;} else {$fcr=0;}
     if ($fe==1 or $fcp==1 or $fcr==1) {print qq{Извините, $fio, но Ваша
анкета не принята к рассмотрению из-за несоответствия  указанных в ней
данных требованиям к кандидату};}
     else {
       my $sth=$dbh->prepare("SELECT * FROM t2;");
       my $rows=$sth->execute();
       $flag=0;
       for($j=0;$j<$rows;$j++)
        {
      ($fio2,$eda2,$cpca2,$croka2,$adress2,$vak2)=$sth->fetchrow_array;
          if ($fio2 eq $fio)
          {
           $flag=1;
           $knkrs=$knkrs-1;
           $sql="update t1 set knkrs='$knkrs' where prof='$bakans';";
           $dbh->do($sql);
          }
        }
       $knkrs=$knkrs+1;
       $sql="update t1 set knkrs='$knkrs' where prof='$bakans';";
       $dbh->do($sql);
       $sth->finish();
        if ($flag==0)   {
        print qq{Уважаемый, $fio, Ваша анкета принята для участия в
конкурсе.<br><br>Желаем успеха!};
        $sql="INSERT INTO
t2(fio,eda,cpca,croka,adress,vak)values('$fio','$eda','$cpca','$croka','$adr
ess','$bakans')";
        $dbh->do($sql);
               }
        else {
    print qq{Уважаемый, $fio, в базе данных уже имеется анкета на Ваше имя,
фамилию, отчество. Если Вы хотите заполнить новую анкету - измените свои
ФИО дополнив, например, цифровым символом ($fio-2).<br><br>};
       }
          }
     }
    }
     print qq{</font></strong></font></p>};

     $sth->finish();
     $dbh->disconnect();
     print "<br>";

     print "<center><table border=0>";
     print "<tr><td><FORM action=../../index.html"http://myserver/cgi-bin/anketa.bat\">";
     print qq{<INPUT type="hidden" name="vibor" value="vibor$var">};
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"Назад\"></center\>";
     print "</FORM></td>";

     print "<td><FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\>";
     print "</FORM></td></tr>";
     print "</table></center>";

    print end_html();


    Файл BDvakans.cgi – исполняемая программа.
    Выводит список вакансий  на  основе  данных  таблицы  t1  и  предлагает
администратору добавить новые вакансии или удалить уже занятые.
    Имеет 3 кнопки:
     - “Добавить" - запускает скрипт Addvakan.cgi;
     - “Удалить" - запускает скрипт vakdel.cgi;
     - “На главную" - запускает скрипт Konti.cgi.;
    и 2 ссылки:
     - “Список вакансий" - запускает скрипт BDvakans.cgi;
     - “Список анкет" - запускает скрипт BDankets.cgi.

    BDvakans.cgi

        use CGI qw(:standard);
         use DBI;
         print header();
         print start_html("Список Вакансий");
         print qq{<body bgcolor="#faf1d8">};
         my $pass=param("111");
         if (111)
        {
         print "<center><h1>База данных</h1></center>";
         print "<center>";
         print qq{<A href="http://myserver/cgi-bin/BDvakans.bat"><font
    size="5">Список вакансий</A>};
         print "       ";
         print qq{<A href="http://myserver/cgi-bin/BDankets.bat">Список
    анкет</font></A>};
         print "</center>";

         print "<FORM action=../../index.html"http://myserver/cgi-bin/Addvakan.bat\">";
         print "<center><table border=0>";
         print qq{<tr><td><p ALIGN="center"><font size="5"><strong><font
    color="#800000">Список вакансий
       </font></strong></font></td>};
         print "<td><center><INPUT type=../../index.html"submit\"
    value=../../index.html"Добавить\"></center\></td></tr></p>";
         print "</table></center>";
         print "</FORM>";

         $dbh=DBI->connect("dbi:mysql:konti");
         $sth=$dbh->prepare("SELECT * FROM t1;");
         $rows=$sth->execute();
         print "<form action=../../index.html"http://myserver/cgi-bin/vakdel.bat\">";
         print "<center><table border=1>";
         print qq{<tr ALIGN="center"><th> № </th>
                           <th>Вакансия</th>
                           <th>Пометить<br>на удаление</th></font></tr>};
         for($i=0;$i<$rows;$i++)
         {
          ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
          $i++;
          print"<tr>
           <td ALIGN=../../index.html"center\">$i</td>
           <td>$bakans</td>
           <TD><center><INPUT type=../../index.html"checkbox\" name=../../index.html"vdel$i\"
    value=../../index.html"vdel$i\"></center></TD>
           </tr>";
          $i--;
         }
         $sth->finish();
         $dbh->disconnect();
         print "</table></center>";
         print "<br>";
         print "<center><table border=0>";
         print "<tr><td><center><INPUT type=../../index.html"submit\"
    value=../../index.html"Удалить\"></center\></td>";
         print "</FORM>";

         print "<td><FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
         print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
    главную\"></center\></td></tr>";
         print "</FORM>";
         print "</table></center>";
        }
        else
        {
         print h1("Неправильный пароль!!!");
        }

    print end_html();

    Файл BDankets.cgi – исполняемая программа.
    Выводит  список  анкет  на  основе  данных  таблицы  t2  и   предлагает
администратору удалить наименее перспективные.
    Имеет 2 кнопки:
     - “Удалить" - запускает скрипт ankdel.cgi;
     - “На главную" - запускает скрипт Konti.cgi;
    и 2 ссылки:
     - “Список вакансий" - запускает скрипт BDvakans.cgi;
     - “Список анкет" - запускает скрипт BDankets.cgi.


    BDankets.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Список Анкет");
     print qq{<body bgcolor="#faf1d8">};
     my $pass=param("111");
     print "<center><h1>База данных</h1></center>";
     print "<center>";
     print qq{<A href="http://myserver/cgi-bin/BDvakans.bat"><font
size="5">Список вакансий</A>};
     print "       ";
     print qq{<A href="http://myserver/cgi-bin/BDankets.bat">Список
анкет</font></A>};
     print "</center>";

     print qq{<p ALIGN="center"><font size="5"><strong><font
color="#800000">Список анкет    </font></strong></font>};

     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t2;");
     $rows=$sth->execute();
     print "<form action=../../index.html"http://myserver/cgi-bin/ankdel.bat\">";
     print "<center><table border=1>";
     print qq{<tr ALIGN="center"><th> № </th>
                      <th>Фамилия Имя Отчество</th>
                      <th>Образование</th>
                      <th>Специальность</th>
                      <th>Срок работы по спец-ти</th>
                      <th>Адрес</th>
                      <th>Вакансия</th>
                      <th>Пометить<br>на удаление</th></font></tr>};
     for($i=0;$i<$rows;$i++)
     {
      ($fio,$eda,$cpca,$croka,$adress,$vak)=$sth->fetchrow_array;
      $i++;
      print"<tr>
      <td><center>$i</center></td>
      <td><center>$fio</center></td>
      <td><center>$eda</center></td>
      <td><center>$cpca</center></td>
      <td><center>$croka</center></td>
      <td><center>$adress</center></td>
      <td><center>$vak</center></td>
      <TD><center><INPUT type=../../index.html"checkbox\" name=../../index.html"vdel$i\"
value=../../index.html"vdel$i\"></center></TD>
      </tr>";
      $i--;
     }
     $sth->finish();
     $dbh->disconnect();
     print "</table></center>";
     print "<br>";
     print "<center><table border=0>";
     print "<tr><td><center><INPUT type=../../index.html"submit\"
value=../../index.html"Удалить\"></center\></td>";
     print "</FORM>";

     print "<td><FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\></td></tr>";
     print "</FORM>";
     print "</table></center>";

    print end_html();

    Файл Addvakan.cgi – исполняемая программа.
    Предлагает администратору форму для внесения данных для новой вакансии
    Имеет 2 кнопки:
     - “Отправить данные" - запускает скрипт Dob.cgi и передает в него
       данные новой вакансии;
     - “Очистить форму" - стирает из формы ошибочно введенные данные.

    Addvakan.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Добавление Вакансии");
     print qq{<body bgcolor="#faf1d8">};
    print "<center><h1>Заполните данные для новой вакансии</h1></center>";
    print "<form action=../../index.html"http://myserver/cgi-bin/Dob.bat\">";
    print "<center><table>";
    print "<TR><TD>Должность</TD><TD><input name=../../index.html"profv\"></TD></TR>";
    print "<TR><TD>Образование</TD>
         <TD><SELECT name=../../index.html"edv\">
               <OPTION value=../../index.html"высшее\" selected>высшее
         <OPTION value=../../index.html"нез/высшее\">нез/высшее
               <OPTION value=../../index.html"ср. техническое\">ср. техническое
               <OPTION value=../../index.html"ср. специальное\">ср. специальное
               <OPTION value=../../index.html"среднее\">среднее
               </SELECT>
         </TD></TR>";
    print "<TR><TD>Специальность</TD><TD><input name=../../index.html"cpcv\"></TD></TR>";
    print "<TR><TD>Стаж работы по специальности, лет </TD><TD><input
name=../../index.html"crokv\"></TD></TR>";
    print "<TR><TD><BR></TD></TR>";
    print "<TR><TD><input type=../../index.html"submit\" value=../../index.html"Отправить данные\"></TD>
         <TD><INPUT type=../../index.html"reset\" value=../../index.html"Очистить форму\"></TD></TR>";
    print "</table></center>";
    print "<br>";
    print "</form>";
    print end_html();



    Файл Dob.cgi – исполняемая программа.
    Служебная программа для проверки наличия введенных данных и их внесения
в таблицу t1. При  отсутствии  данных  предлагает  вернуться  назад  или  на
главную страницу.
    Имеет 2 кнопки:
     - “Назад" - запускает скрипт Addvakan.cgi;;
     - “На главную" - запускает скрипт Konti.cgi;;
    и 2 ссылки:
     - “Список вакансий" - запускает скрипт BDvakans.cgi;
     - “Список анкет" - запускает скрипт BDankets.cgi.



    Dob.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Добавление Вакансии");
     print qq{<body bgcolor="#faf1d8">};
     print "<center><h1>База данных</h1></center>";
     print "<center>";
     print qq{<A href="http://myserver/cgi-bin/BDvakans.bat"><font
size="5">Список вакансий</A>};
     print "       ";
     print qq{<A href="http://myserver/cgi-bin/BDankets.bat">Список
анкет</font></A>};
     print "</center>";
     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t1;");

     my $profv=param("profv");
     my $edv=param("edv");
     my $cpcv=param("cpcv");
     my $crokv=param("crokv");
        $crokv=~ s/\D+//;
     if ($profv ne "")
    {
    $sql=qq{insert into t1(prof, knkrs, ed, cpc, crok) values
('$profv',0,'$edv','$cpcv','$crokv');};
    $dbh->do($sql);
    print "<br>";
     $sth->finish();
     $dbh->disconnect();
    }
    else {print qq{<br><center><font size="4">Вы не ввели данные. Повторите
ввод.</font></center><br>};}

     print "<center><table border=0>";
     print "<tr><td><FORM action=../../index.html"http://myserver/cgi-
bin/Addvakan.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"Назад\"></center\>";
     print "</FORM></td>";

     print "<td><FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\>";
     print "</FORM></td></tr>";
     print "</table></center>";
    print end_html();



    Файл vakdel.cgi– исполняемая программа.
    Служебная программа для удаления вакансии из таблицы t1.
    Имеет 1 кнопку:
     - “Назад" - запускает скрипт Konti.cgi;
    и 2 ссылки:
     - “Список вакансий" - запускает скрипт BDvakans.cgi;
     - “Список анкет" - запускает скрипт BDankets.cgi.

    vakdel.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Удаление Вакансии");
     print qq{<body bgcolor="#faf1d8">};
     print "<center><h1>База данных</h1></center>";
     print "<center>";
     print qq{<A href="http://myserver/cgi-bin/BDvakans.bat"><font
size="5">Список вакансий</A>};
     print "       ";
     print qq{<A href="http://myserver/cgi-bin/BDankets.bat">Список
анкет</font></A>};
     print "</center>";

     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t1;");
     $rows=$sth->execute();

     for($i=0;$i<$rows;$i++)
     { $i++;
       ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
       my $var=param("vdel$i");
       $var=~ s/\D+//;
       if ($i==$var)
         {
         $sql="delete from t1 where prof=\"$bakans\";";
         $dbh->do($sql);
         }
       $i--;
     }
     $sth->finish();
     $dbh->disconnect();

     print "<br>";

     print "<FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\>";
     print "</FORM>";

     print end_html();



    Файл ankdel.cgi– исполняемая программа.
    Служебная программа для удаления анкеты  из  таблицы  t2  и  уменьшения
значения конкурса на вакансию в таблице t1.
    Имеет 1 кнопку:
     - “На главную" - запускает скрипт Konti.cgi;
    и 2 ссылки:
     - “Список вакансий" - запускает скрипт BDvakans.cgi;
     - “Список анкет" - запускает скрипт BDankets.cgi.

    ankdel.cgi

    use CGI qw(:standard);
     use DBI;
     print header();
     print start_html("Удаление Анкеты");
     print qq{<body bgcolor="#faf1d8">};
     print "<center><h1>База данных</h1></center>";
     print "<center>";
     print qq{<A href="http://myserver/cgi-bin/BDvakans.bat"><font
size="5">Список вакансий</A>};
     print "       ";
     print qq{<A href="http://myserver/cgi-bin/BDankets.bat">Список
анкет</font></A>};
     print "</center>";

     $dbh=DBI->connect("dbi:mysql:konti");
     $sth=$dbh->prepare("SELECT * FROM t2;");
     $rows=$sth->execute();

     for($i=0;$i<$rows;$i++)
     { $i++;
       ($fio, $eda, $cpca, $croka, $adress, $vak)=$sth->fetchrow_array;
       my $var=param("vdel$i");
       $var=~ s/\D+//;
       if ($i==$var)
         {
       $sql="delete from t2 where fio=\"$fio\";";
             $dbh->do($sql);
       my $sth=$dbh->prepare("SELECT * FROM t1;");
       my $rows=$sth->execute();
       for($i=0;$i<$rows;$i++)
        {
          ($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;
          if ($bakans eq $vak)
          {
                 $knkrs=$knkrs-1;
           $sql="update t1 set knkrs='$knkrs' where prof='$vak';";
           $dbh->do($sql);
          }
        }
       $sth->finish();
         }
       $i--;
     }
     $sth->finish();
     $dbh->disconnect();

     print "<br>";

     print "<FORM action=../../index.html"http://myserver/cgi-bin/Konti.bat\">";
     print "<center><INPUT type=../../index.html"submit\" value=../../index.html"На
главную\"></center\>";
     print "</FORM>";

     print end_html();



                Схема размещения информации на Internet-узле

    На сервере информация располагается следующим образом:

|C:\Apache\                                |
|htdocs\                                   |
|                  |Kontinental-HH.htm    |
|                  |titul.htm             |
|          cgi-bin\                        |
|                  |Addanket.bat          |
|                  |Addvakan.bat          |
|                  |Addvakan.cgi          |
|                  |ankdel.bat            |
|                  |ankdel.cgi            |
|                  |anketa.bat            |
|                  |anketa.cgi            |
|                  |BDankets.bat          |
|                  |BDankets.cgi          |
|                  |BDvakans.bat          |
|                  |BDvakans.cgi          |
|                  |Dob.bat               |
|                  |Dob.cgi               |
|                  |itog.bat              |
|                  |itog.cgi              |
|                  |Konti.bat             |
|                  |Konti.cgi             |
|                  |konti.txt             |
|                  |list.bat              |
|                  |list.cgi              |
|                  |start.bat             |
|                  |vakdel.bat            |
|                  |vakdel.cgi            |



                   Контрольный пример работы пользователя.

    Главная страница (Kontinental-HH.htm):

    [pic]



    Выбор вакансии (list.cgi):

    [pic]



    Заполнение анкеты (anketa.cgi):

    [pic]



    Успешное внесение анкеты в базу данных (itog.cgi):

    [pic]



                  Контрольный пример работы администратора
                  Просмотр списка вакансий (BDvakans.cgi).

                                    [pic]



                  Просмотр списка вакансий (BDankets.cgi).

                                    [pic]



                  Добавление новой вакансии (Addvakan.cgi)

                                    [pic]


                                   Выводы.

    .  Разработка информационной системы на базе MySQL и Internet позволяет
      создать большую базу данных. Данная система удобна в использовании и
      разработке программно.
    .  Большое значение имеет то, что существует отделение программы
      управления базой данных от интерфейса.
    .  Интерфейс заключается в создании запросов на SQL, передаче их серверу
      и получении результата. Запросы передаются в виде строк. При получении
      запроса основную работу выполняет сервер. Клиенту высылаются только
      данные, полученные в результате получения запроса. Это приводит к
      снижению нагрузки, что позволяет повысить безопасность при работе с
      данными. Перед посылкой запроса требуется регистрация на сервере.
    .  Легко организовать многопользовательскую работу.



                         Использованная литература.

        1. Айсбари С.:  Корпоративные решения на базе LINUX.
        2. Орлов С.  А.:   Технологии  разработки  ПО.  Разработка  сложных
           программных систем.
        3. Материалы лекций.