Диплом: Автоматизация обработки заявок (на примере ООО "Белое озеро")

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
do_html_url('login.php', 'Login');
do_html_footer();
exit;
}
}
do_html_header('Карта службы поддержки');
if (check_admin_user())
display_admin_menu();
else
echo 'Вы должны авторизоваться для просмотра данной страницы.';
do_html_footer();
?>
Если оба поля формы заполнены, функция login($username,
$password) проверяет правильность имени пользователя и пароля. В
противном случае выводится сообщение об ошибочном входе [28].
В случае успешной авторизации выодится страница, содержащая меню
действий пользователя (display_admin_menu):
function display_admin_menu()
{
?>
<br />
<a href="index.php">Перейти на стартовую страницу</a><br />
<table border = 1 width = 350 cellspacing = 0>
<tr><td align="center"><b>Справочная информация</b></td></tr>
<tr><td><a href="show_employee.php">Сотрудники</a><br
/></td></tr>
<tr><td align="center"><b>Сообщения</b></td></tr>
<tr><td><a href="send_post_form.php">Отправить заявку</a><br
/></td></tr>
<tr><td><a href="show_my_posts_form.php">Просмотр своих
сообщений</a><br /></td></tr>
<?php
if(check_admin_rights()) {
echo '<tr><td
align="center"><b>Администрирование</b></td></tr>';
echo '<tr><td><a href="change_password_form.php">Изменить
пароль администратора</a><br /></td></tr>';
echo '<tr><td><a href="show_source_form.php">Источники
проблем/неисправности</a><br /></td></tr>';
echo '<tr><td><a href="show_class_form.php">Справочник
отделов (подразделений)</a><br /></td></tr>';
echo '<tr><td><a href="info_post_form.php">Справочник
должностей</a><br /></td></tr>';
echo '<tr><td><a href="show_employee_form.php">Справочник
сотрудников</a><br /></td></tr>';
echo '<tr><td align="center"><b>Заявки</b></td></tr>';
echo '<tr><td><a href="show_actualorders_form.php">Список
актуальных заявок</a><br /></td></tr>';
echo '<tr><td><a href="show_archiveorders_form.php">Архив
заявок</a><br /></td></tr>';
echo '<tr><td><a href="ord2excel.php">Сформировать список
заявок в Excel</a><br /></td></tr>';
}
?>
</table>
<?php
}
Исходя из логики системы, для обычных пользователей и администратора
меню функций отличается. Проверку прав администратора осуществляет
функция check_admin_rights.
Меню функций обычных пользователей показано на рис. 20:
Рисунок 20 – Меню функций обычных пользователей
Меню функций администратора показано на рис. 21:
Рисунок 21 – Меню функций администратора
Как видно из рис. 21, права администратора дают возможность просмотра
всех заявок, формирование их списка в Microsoft Excel, а также выполнять
функции администрирования.
2.4 Контрольный пример реализации проекта и его описание
При переходе по ссылке "Отправить заявку" генерируется
соответствующая форма (рис. 22):
Рисунок 22 – Форма отправки заявки
За это отвечает сценарий send_post_form.php:
<?php
include ('book_sc_fns.php');
do_html_header('Отправить сообщение');
display_post_form();
do_html_footer();
?>
Данный сценарий полностью аналогичен рассмотренному выше login.php.
На форме рис. 3.7 расположены два связанных списка. В зависимости от
того, какой источник неисправностей выбран пользователем, содержимое
списка проблем изменяется. Фрагмент кода функции display_post_form,
обрабатывающей связанные списки, приведен ниже:
function display_post_form()
{
?>
<head>
<script type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript" src="js/chainedproblem.js">
</head>
<body>
<form action="insert_new_post.php" method="post">
<table>
<tr>
<td>Источник неисправности:</td>
<td><select id="dhtmlhard" name="dhtmlhard" onchange=
"getProblemList(this)">
<?php
$conn = db_connect();
$query = 'SELECT * FROM Оборудование';
echo '<option value=0>Выберите оборудование/ПО</option>';
$result = @mysql_query($query);
$hard_res = db_result_to_array($result);
foreach ($hard_res as $thishard){
echo '<option value="';
echo $thishard['ТипОборудования'];
echo '"';
echo '>';
echo $thishard['ИмяТипа'];
echo "\n";
}
?>
</select>
</td>
</tr>
<tr>
<td>Проблема: </td>
<td><select id="dhtmlproblem" name="dhtmlproblem">
</select>
</td>
</tr>
</body>
</html>
<?php
}
Перед выводом списков подключаются модули (JavaScript) ajax.js и
chainedproblem.js (их код приведен в приложении Б) [27]. Посредством SQL-
выборки (строка SELECT * FROM Оборудование) из таблицы "Оборудование"
заполняется список источников. При событии изменения выбора в списке
источников неисправностей (dhtmlhard) отрабатывает функция getProblemList
(находится в файле chainedproblem.js):
function getProblemList(sel)
{
var hard_id = sel.options[sel.selectedIndex].value;
document.getElementById('dhtmlproblem').options.length = 0;
if(hard_id.length>0){
var index = ajax.length;
ajax[index] = new sack();
ajax[index].requestFile = 'getproblems.php?hard_id='+hard_id;
ajax[index].onCompletion = function(){
createProblems(index) };
ajax[index].runAJAX();
}
}
Эта функция принимает в качестве входного параметра идентификатор
выбранного из первого списка элемента (sel). За заполнение списка проблем
отвечает сценарий getproblems.php, который принимает в качестве переменной
идентификатор источника (hard_id):
<?php
require_once('book_sc_fns.php');
session_start();
$hard_id=$_GET['hard_id'];
$problem_array =get_problems($hard_id);
$cyrr=iconv( "windows-1251", "utf-8","Выберите проблему");
echo "obj.options[obj.options.length] = new Option
('$cyrr','0'); \n";
if (!$problem_array){
$problem_id=1;
$problem_name='пустой список'.$hard_id;
$cyrr=iconv( "windows-1251", "utf-8",$problem_name);
echo "obj.options[obj.options.length] = new
Option('$cyrr','$problem_id');\n";
}
foreach ($problem_array as $thisproblem){
$problem_id=$thisproblem[0];
$problem_name=$thisproblem[1];
$cyrr=iconv( "windows-1251", "utf-8",$problem_name);
echo "obj.options[obj.options.length] = new
Option('$cyrr','$problem_id');\n";
}
?>
Этот список также заполняется посредством SQL-выборки, которая
помещена в функцию get_problems.
При нажатии кнопки "Отправить" (см. рис. 22) происходит вставка новой
заявки (рис. 23):
Рисунок 23 – Заявка добавлена
Эта страница генерируется сценарием insert_new_post.php:
<?php
require_once('book_sc_fns.php');
session_start();
do_html_header('Добавление сообщения');
if (check_admin_user())
{
if (filled_out($_POST))
{
$post_text = $_POST['post_text'];
$post_date = date('Y-m-d');
$post_time = date('H:i:s');
$sender = $_SESSION['admin_user'];
$hard_id=$_POST['dhtmlhard'];
$problem_id=$_POST['dhtmlproblem'];
if(insert_post($hard_id, $problem_id,$sender, $post_text,
$post_date,$post_time)){
echo "Сообщение было отправлено, продублировано на e-
mail.<br />";
}else
echo "Сообщение было отправлено, но не продублировано на e-
mail.<br />";
} else
echo 'Вы заполнили не все поля. Попробуйте заново.';
do_html_url('admin.php', 'Назад в меню управления');
}else
echo 'Вы не авторизованы для просмотра этой страницы.';
do_html_footer();
?>
Сценарий получает переменные: текст сообщения (post_text),
идентификатор источника неисправности (dhtmlhard), идентификатор
неисправности (dhtmlproblem). Идентификатор отправителя определяется из
переменной текущей сессии (admin_user).
Непосредственно за вставку сообщения в БД отвечает функция
insert_post:
function insert_post($hard_id, $problem_id, $sender, $post_text,
$post_date,$post_time)
{
$conn = db_connect();
$POST_ID = 0;
$query = "insert into Сообщения(ТипОборудования,
КодНеисправности, Отправитель, Тема, Дата, Время, Закрыта) values
($hard_id, $problem_id, $sender, '$post_text', '$post_date',
'$post_time', 0)";
$result = mysql_query($query);
$query = "select EmailСотрудника as EM from Сотрудники WHERE
NickСотрудника='Администратор'";
$result = mysql_query($query);
$addr_res= mysql_fetch_array($result);
$addr= $addr_res['EM'];
// наименование должности
$query = "SELECT ИмяДолжности FROM Должности, Сотрудники WHERE
Должности.КодДолжности=Сотрудники.КодДолжности AND
Сотрудники.КодСотрудника=$sender";
$result = mysql_query($query);
$post_res= mysql_fetch_array($result);
$post=$post_res['ИмяДолжности'];
// сокр. наименование отдела
$query = "SELECT АббрОтдела FROM Отделы, Сотрудники WHERE
Отделы.КодОтдела=Сотрудники.КодОтдела AND
Сотрудники.КодСотрудника=$sender";
$result = mysql_query($query);
$dep_res= mysql_fetch_array($result);
$dep= $dep_res['АббрОтдела'];
// ФИО Сотрудника
$query = "select ИнициалыСотрудника FROM Сотрудники WHERE
КодСотрудника=$sender";
$result = mysql_query($query);
$user_res= mysql_fetch_array($result);
$user_name=$user_res['ИнициалыСотрудника'];
// источник проблем
$query = "SELECT ИмяТипа FROM Оборудование WHERE
ТипОборудования=$hard_id";
$result = mysql_query($query);
$hard_res= mysql_fetch_array($result);
$hard=$hard_res['ИмяТипа'];
// краткое описание проблемы
$query = "SELECT Проблема FROM Неисправности WHERE
КодНеисправности=$problem_id";
$result = mysql_query($query);
$problem_res= mysql_fetch_array($result);
$problem=$problem_res['Проблема'];
// отправка сообщения администратору
if(mail($addr, $dep." (".$post.") ".$user_name."-
".$hard.':'.$problem, "$user_name\n$hard\n$problem\n$post_text"))
// ("Сообщение продублировано на почту");
$POST_ID=1;
// ("Сообщение не отправлено на почту");
return $POST_ID;
}
Добавление записи в таблицу "Сообщения" производится SQL
инструкцией (insert into Сообщения). Далее из базы данных извлекаются:
адрес электронной почты администратора (переменная $addr); наименование
должности отправителя ($post); аббревиатура подразделения ($dep); ФИО
отправителя ($user_name); наименование источника неисправности ($hard);
краткое описание проблемы ($problem). Указанные переменные участвуют при
формировании письма на электронныю почту (строка mail...). в случае
успешной отправки письма функция возвращает значение 1, в противном
случае – 0 ($POST_ID).
При переходе по ссылке "Просмотр своих сообщений" генерируется
соответствующая форма (рис. 24):
Рисунок 24 – Просмотр своих сообщений
За это отвечает сценарий show_my_posts_form.php. Данный сценарий
полностью аналогичен рассмотренному выше login.php.
Как уже упоминалолось, при входе в систему с правами администратора
доступно, кроме описанных выше, несколько дополнительных функций.
Так, администратор может добавлять в базу данных новые
подразделения. При переходе по ссылке "Справочник отделов (подразделений)"
генерируется соответствующая форма (рис. 25):
Рисунок 25 – Справочник отделов
За это отвечает сценарий show_class_form.php. Данный сценарий
полностью аналогичен рассмотренному выше login.php.
При переходе по ссылке "Источники проблем/неисправности"
генерируется соответствующая форма (рис. 26):
Рисунок 26 – Справочник неисправностей
За это отвечает сценарий show_source_form.php. Данный сценарий
полностью аналогичен рассмотренному выше show_class_form.php.
При переходе по ссылке "Справочник должностей" генерируется
соответствующая форма (рис. 27):
Рисунок 27 – Справочник должностей
За это отвечает сценарий info_post_form.php. Данный сценарий
полностью аналогичен рассмотренному выше show_class_form.php.
При переходе по ссылке "Справочник сотрудников" генерируется
соответствующая форма (рис. 28):

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)