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

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

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

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

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

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

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

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

На базе MySQL и Internet

Выполнили:

Греков В.В.

Певченко Г.П. группа 99-ИКУ

Проверил:

Штанюк А.А.

г.Кстово

2003

Содержание

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

Задание

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

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

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

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

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

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

После запуска MySQL в командной строке создаем базу данных Konti:

C:mysqlbinmysqladmin 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

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

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

Отдел кадров

ПРОФЕССИОНАЛЬНЫЙ ПОДХОД К
ЧЕЛОВЕЧЕСКИМ РЕСУРСАМ

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

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

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

Введите пароль для доступа (Временно пароль не используется)

Файл 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;$ifetchrow_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;$ifetchrow_array; if ($i==$var)

{ print «»; print «Образование- $ed»; print «Специальность- $Cpc»; print «Срок работы по специальности, лет&nbsp-
$Crok»; print «»;

}

} print «»;

$sth->finish();

$dbh->disconnect();

print «»; print «»; print «Фамилия имя отчество»; print «Образование высшее нез/высшее ср. техническое ср. специальное среднее

«; 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;$ifetchrow_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;$jfetchrow_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, Ваша анкета принята для участия в конкурсе.Желаем успеха!};

$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).};

}

}

}

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

Вакансия

Пометитьна удаление}; for($i=0;$ifetchrow_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;$ifetchrow_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 «Образование высшее нез/высшее ср. техническое ср. специальное среднее

«; 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;$ifetchrow_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;$ifetchrow_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;$ifetchrow_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 «»;

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. Материалы лекций.