Проектирование информационных систем на базе 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

Континенталь-НН

ОАО "Континенталь-НН" ®

Отдел кадров

<p ALIGN="center"><font size="2"><strong>ПРОФЕССИОНАЛЬНЫЙ ПОДХОД К ЧЕЛОВЕЧЕСКИМ РЕСУРСАМfont>strong>p>

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

Если Вы, ознакомившись со списком вакансий, увидели для себя возможности к самореализации, наша кадровая служба с интересом ознакомится с Вашим резюме.<br>

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


<center>Введите пароль для доступа <br><font size="2">(Временно пароль не используется)font>center>



Файл list.cgi – исполняемая программа.

Выводит список вакансий и конкурс на них на основе данных таблицы t1. Имеет 1 кнопку:

- “Заполнить анкету" – запускает скрипт anketa.cgi и передает в него данные о выбранной вакансии.


list.cgi


use CGI qw(:standard);

use DBI;

print header();

print start_html("Список Вакансий для пользователя");

print qq{};

print "

Перечень вакансий

";

print "

Выберите вакансию и заполните анкету
";

print "
";


$dbh=DBI->connect("dbi:mysql:konti");

$sth=$dbh->prepare("SELECT * FROM t1;");

$rows=$sth->execute();

print "";

print "

";

print qq{ № 

Вакансия Конкурс 
на место

Ваш
выбор};

for($i=0;$i<$rows;$i++)

{

($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;

$i++;

print "

$i";

$i--;

print"$bakans

$knkrs

";

}

$sth->finish();

$dbh->disconnect();

print"

";

print "
";

print "

Заполнить анкету\">";

print "
";

print "

Анкеты претендентов будут рассмотрены 25 января 2003г.
";

print "";


print end_html();




Файл anketa.cgi – исполняемая программа.

Выводит перечень основных требований к кандидату на вакансию на основе данных таблицы t1 и предлагает претенденту заполнить анкетные данные о себе.

Имеет 2 кнопки:

  • Отправить" – запускает скрипт itog.cgi и передает в него анкетные данные претендента;

  • "Очистить форму" – стирает из формы ошибочно введенные анкетные данные.


anketa.cgi


use CGI qw(:standard);

use DBI;

print header();

print start_html("Анкета");

print qq{};

my $pas=param("vibor");

$var=$pas;

$var=~ s/\D+//;

if ($pas eq "") {print qq{


 
Вы забыли выбрать вакансию!

};

print "
";

print "

";

print "";

print "

Назад\">";

print "";

print "";

print "

На главную\">";

print "";

print "

";

goto quit;

}

$dbh=DBI->connect("dbi:mysql:konti");

$sth=$dbh->prepare("SELECT * FROM t1;");

$rows=$sth->execute();


print "

Заполните анкетные данные

";

print qq{

};

print "

Основные требования к кандидату
";

for($i=0;$i<$var+1;$i++)

{

($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;

if ($i==$var)

{

print "

";

print "Образование- $ed";

print "Специальность- $Cpc";

print "Срок работы по специальности, лет - $Crok";

print "

";

}

}

print "

";


$sth->finish();

$dbh->disconnect();


print "";

print "

";

print "Фамилия имя отчество";

print "Образование

высшее0\" selected>высшее

нез/высшее1\">нез/высшее

";

print "Специальность";

print "Стаж работы по специальности, лет ";

print "Адрес";

print "
";


print qq{};


print "Отправить\">

Очистить форму\">";

print "

";

print "";


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{};

$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 "
";

print qq{

};

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','$adress','$bakans')";

$dbh->do($sql);

}

else {

print qq{Уважаемый, $fio, в базе данных уже имеется анкета на Ваше имя, фамилию, отчество. Если Вы хотите заполнить новую анкету - измените свои ФИО дополнив, например, цифровым символом ($fio-2).<br><br>};

}

}

}

}

print qq{

};


$sth->finish();

$dbh->disconnect();

print "
";


print "

";

print "";

print qq{};

print "

";

print "";


print "";

print "

";

print "";

print "

";


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{};

my $pass=param("111");

if (111)

{

print "

База данных

";

print "

";

print qq{Список вакансий};

print "       ";

print qq{Список анкет};

print "

";


print "";

print "

";

print qq{

Список вакансий    };

print "

";

print "

";

print "";


$dbh=DBI->connect("dbi:mysql:konti");

$sth=$dbh->prepare("SELECT * FROM t1;");

$rows=$sth->execute();

print "";

print "

";

print qq{ № 

Вакансия

<th>Пометить<br>на удалениеth>font>tr>};

for($i=0;$i<$rows;$i++)

{

($bakans,$knkrs,$ed,$Cpc,$Crok)=$sth->fetchrow_array;

$i++;

print"

$i

$bakans

";

$i--;

}

$sth->finish();

$dbh->disconnect();

print "

";

print "
";

print "

";

print "

";

print "";


print "";

print "

";

print "";

print "

";

}

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{};

my $pass=param("111");

print "

База данных

";

print "

";

print qq{Список вакансий};

print "       ";

print qq{Список анкет};

print "

";


print qq{

Список анкет    };


$dbh=DBI->connect("dbi:mysql:konti");

$sth=$dbh->prepare("SELECT * FROM t2;");

$rows=$sth->execute();

print "";

print "

";

print qq{ № 

Фамилия Имя Отчество

Образование

Специальность

Срок работы по спец-ти

Адрес

Вакансия

Пометить
на удаление
};

for($i=0;$i<$rows;$i++)

{

($fio,$eda,$cpca,$croka,$adress,$vak)=$sth->fetchrow_array;

$i++;

print"

$i

$fio

$eda

$cpca

$croka

$adress

$vak

";

$i--;

}

$sth->finish();

$dbh->disconnect();

print "

";

print "
";

print "

";

print "

Удалить\">";

print "";


print "";

print "

На главную\">";

print "";

print "

";


print end_html();


Файл Addvakan.cgi – исполняемая программа.

Предлагает администратору форму для внесения данных для новой вакансии

Имеет 2 кнопки:

  • Отправить данные" - запускает скрипт Dob.cgi и передает в него данные новой вакансии;

  • Очистить форму" - стирает из формы ошибочно введенные данные.


Addvakan.cgi


use CGI qw(:standard);

use DBI;

print header();

print start_html("Добавление Вакансии");

print qq{};

print "

Заполните данные для новой вакансии

";

print "";

print "

";

print "Должность";

print "Образование

высшее\" selected>высшее

нез/высшее\">нез/высшее

";

print "Специальность";

print "Стаж работы по специальности, лет ";

print "
";

print "Отправить данные\">

Очистить форму\">";

print "

";

print "
";

print "";

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{};

print "

База данных

";

print "

";

print qq{Список вакансий};

print "       ";

print qq{Список анкет};

print "

";

$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 "
";

$sth->finish();

$dbh->disconnect();

}

else {print qq{

Вы не ввели данные. Повторите ввод.

};}


print "

";

print "";

print "

";

print "";


print "";

print "

";

print "";

print "

";

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{};

print "

База данных

";

print "

";

print qq{Список вакансий};

print "       ";

print qq{Список анкет};

print "

";


$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 "
";


print "";

print "

";

print "";


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{};

print "

База данных

";

print "

";

print qq{Список вакансий};

print "       ";

print qq{Список анкет};

print "

";


$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 "
";


print "";

print "

";

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):



























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


























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




























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























Контрольный пример работы администратора

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




















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





















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





Выводы.


  • Разработка информационной системы на базе MySQL и Internet позволяет создать большую базу данных. Данная система удобна в использовании и разработке программно.

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

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

  • Легко организовать многопользовательскую работу.




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


    1. Айсбари С.: Корпоративные решения на базе LINUX.

    2. Орлов С. А.: Технологии разработки ПО. Разработка сложных программных систем.

    3. Материалы лекций.


Нравится материал? Поддержи автора!

Ещё документы из категории информатика:

X Код для использования на сайте:
Ширина блока px

Скопируйте этот код и вставьте себе на сайт

X

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

После чего кнопка «СКАЧАТЬ» станет доступной!

Кнопочки находятся чуть ниже. Спасибо!

Кнопки:

Скачать документ