Министерство образования Российской Федерации
Нижегородский Государственный Технический Университет
Нижегородский Вечерний Факультет
Кафедра: Компьютерные технологии в проектировании и производстве
Курсовая работа
по дисциплине:
«Проектирование информационных систем»
Проектирование информационных систем
На базе 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
Континенталь-НН
ОАО 'Континенталь-НН'
®
Отдел
кадров
ПРОФЕССИОНАЛЬНЫЙ ПОДХОД К
ЧЕЛОВЕЧЕСКИМ РЕСУРСАМ
Сегодняшний день и перспективные задачи, стоящие перед организацией,
требуют от её сотрудников новых и современных решений. Администрация
предприятия проводит целенаправленную работу по привлечению в наши ряды
высокопрофессиональных специалистов по всем направлениям деятельности.
Если Вы, ознакомившись со списком вакансий, увидели для себя
возможности к самореализации, наша кадровая служба с интересом ознакомится
с Вашим резюме.
В любом случае, заполнив анкету, Вы сможете попасть в банк данных
нашего отдела кадров и рассчитывать на встречное предложение с нашей
стороны.
Файл 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 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{
';
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 '';
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, Ваша анкета принята для участия в
конкурсе.
Желаем успеха!};
$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 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 '
';
$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 '
';
$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 '
';
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. Материалы лекций.