ПЗ (1203263), страница 6
Текст из файла (страница 6)
Таблица 11 – Структура таблицы Software
| Имя поля | Тип | Длина | Наименование |
| Id_software | INT | 15 | Идентификатор программного обеспечения |
| name_software | TEXT | 15 | Наименование программного обеспечения |
| mode_software | TEXT | 15 | Комплект программного обеспечения |
– Request. Таблица хранит информацию о заявках, сделанных пользователями системы, состоит из полей: тема, описание, статус, специалист, автор и время выполнения заявки, идентификационные номера заявки, категории, пользователя, отдела, программного обеспечения, оборудования, решения;
Таблица 12 – Структура таблицы Request
| Имя поля | Тип | Длина | Наименование |
| Id_request | INT | 10 | Идентификатор заявки |
| Id_category | INT | 10 | Идентификатор категории |
| Id_subcategory | INT | 10 | Идентификатор подкатегории |
| Id_user | INT | 10 | Идентификатор пользователя |
| Id_departament | INT | 10 | Идентификатор отдела |
| Id_software | INT | 10 | Идентификатор программного обеспечения |
| Id_hardware | INT | 10 | Идентификатор оборудования |
| Id_solutions | INT | 10 | Идентификатор решения |
| topic_request | TEXT | 40 | Тема заявки |
| description_request | TEXT | 40 | Описание заявки |
| status_request | TEXT | 40 | Статус заявки |
| technician_request | TEXT | 40 | Специалист по заявке |
| author_request | TEXT | 40 | Автор заявки |
| time_compl | INT | 30 | Время выполнения |
3.4 Программная реализация
В процессе создания подсистемы реализуются функции и операции, представленные в таблице 13 – описание основных файлов программы.
Таблица 13 – Описание основных файлов программы
| Наименование файла | Описание |
| index.php | Форма авторизации |
| general.php | Главная страница |
| config.php | PHP-код для подключения к БД |
| newcategory.php | Страница работы со справочником категорий |
| newsubcategory.php | Страница работы со справочником подкатегорий |
| usersAdm.php | Страница работы со справочником пользователей |
| software.php | Страница работы со справочником ПО |
| addrequest.php | Форма для добавления заявки |
| request.php | Страница вывода заявок |
| requestOpen.php | Страница детализации заявки |
| otchets.php | Страница вывода отчетов |
Подсистема учета и обработки заявок построена на выполнении php-скриптов.
Для вывода на экран данных из таблиц БД используются SQL запросы вида: select * from `category`.
Для перехода по страницам используются кнопки. Некоторые из них не только пересылают пользователя на другую страницу, но и передают на вызываемую страницу данные. Код описывающий обработку нажатия на кнопку:
<input type='button' value = 'Все открытые заявки' onClick="location.href='request.php?param=6';">
Число, записываемое в переменную глобального массива GET['param'] обрабатывается в открываемой странице через if условия, определяя выборку по какому статусу заявок выводить из БД данные. Код обработки одного из значений переменной param.
<a href="request.php?param=2"><strong>Ваши заявки в работе:</strong>
<?
$fio=$_SESSION['FIO_u'];
$query="SELECT * FROM `request` where status_request='Обработка'&&(`Author_request`='$fio'||`Technician_request`='$fio')";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
echo $num_results;
?>
</a>
Создание новой заявки происходит через форму методом POST.
<form method= "post" action= "Addrequest.php">
<center><br> Тема заявки <input type='text' name='top_request' value=''/><br></center>
< center ><br> Описание заявки <input type='text' name='desc_request' value=''/><br></center >
< center ><br> Категория <select name='categ_req'></ center >
<?$query4="select * from `category`";
$result4=mysql_query($query4);
$num_results4=mysql_num_rows($result4);
for($i=0; $i<$num_results4; $i++)
{
$row4 = mysql_fetch_array($result4);
echo "<option value='".$row4['Name_category']."'> ".$row4['Name_category']." </option>";
}
?>
</select><br></center >
<center ><br> Подкатегория <select name='subcateg_req'>
<?$query5="select * from `subcategory`";
$result5=mysql_query($query5);
$num_results5=mysql_num_rows($result5);
for($i=0; $i<$num_results5; $i++)
{
$row5 = mysql_fetch_array($result5);
echo "<option value='".$row5['Name_subcategory']."'>"
.$row5['Name_subcategory'].
"</option>";
}
?></select></center>
<br>
<center><br> <input type='submit' name='Add' value = 'Добавить'><br></form>
Данные записываются из формы в таблицу БД за счет выполнения скрипта:
$top_req=$_POST['top_request'];
$desc_req=$_POST['desc_request'];
$ncat_req=$_POST['categ_req'];
$nsubcat_req=$_POST['subcateg_req'];
$auth_req=$_SESSION['FIO_u'];
$query9="INSERT INTO `request` (`Id_request`, `Topic_request`, `Description_request`, `Name_category`, `Name_subcategory`, `Status_request`,
`Technician_request`,`Author_request`,`Time_compl`)
VALUES (NULL,'$top_req','$desc_req',
'$ncat_req','$nsubcat_req','Открыта',
NULL,'$auth_req','NULL')";
mysql_query($query9);
Файл Index.php содержит скрипт, отвечающий за сравнение введенных пользователем логина и пароля с имеющимися записями в БД. В случае совпадения значений выполняется переход на главную страницу системы General.php с определенным для пользователя доступом. Код скрипта сравнения введенных пользователем данных с данными в БД:
$query="select * from user where Name_user='$user_name' && Pass_user='$user_pass'";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
if($num_results>0&&$num_results<2)
{
for($i=0; $i<$num_results; $i++)
{
$row = mysql_fetch_array($result);
$_SESSION['ID_U']=$row['Id_user'];
$_SESSION['FIO_u']=$row['FIO_user'];
$_SESSION['Otdel_u']=$row['Otdel_user'];
$_SESSION['Phone_u']=$row['Phone_user'];
$_SESSION['Position_u']=$row['Access_user'];
echo "<meta http-equiv='Refresh' content=\"0; url='General.php'\">";
}
}
Страницы работы со справочниками, такие как software.php, category.php, subcategory.php, solutions.php, userAdm.php, построены на выполнении php-скриптов совместно с SQL-запросами к БД. Данные из таблиц БД выводятся на экран, происходит запись и редактирование строк таблицы БД. Вывод на экран данных из таблицы Category:
$query3="select * from `category`";
$result3=mysql_query($query3);
$num_results3=mysql_num_rows($result3);
for($i=0; $i<$num_results3; $i++)
{
$row3 = mysql_fetch_array($result3);
if($_POST['id_c']==$row3['Id_category'])
{
echo '<tr><form method= "post" action= "category.php">';
echo "<td><input type='text' name='Name_category' value='".$row3['Name_category']."'/></td>";
?><td><input type = 'submit' name='SAVEcategory' value='Сохранить'>
<input type = 'submit' name='DELETEcategory' value='Удалить'>
<input type = 'hidden' name = 'id_ca' value = <?=$row3['Id_category'];?> />
</td>
<?
echo '</form></tr>';
}
if($_POST['id_c']!=$row3['Id_category']) {
echo '<tr><FORM METHOD= "POST" ACTION= "category.php">';
echo "<td>",$row3['Name_category'],'</td>';
?><td><input type = 'submit' name='EDITcategory' value='Редактировать'>
<input type = 'submit' name='DELETEcategory' value='Удалить'>
<input type = 'hidden' name = 'id_c' value = <?=$row3['Id_category'];?> />
</td></form></tr>
<?}
}?>
</table>
Данные выводятся в табличном виде, где первая строка является формой для добавления записи в таблицу БД. Рядом с каждой строкой находятся две кнопки «Редактировать» и «Удалить», при помощи которых можно открыть строку для редактирования или удалить выбранную пользователем запись из таблицы.
Для разграничения доступа пользователей системы используются сессии. В переменные сессии записывается уровень доступа и имя пользователя:
$_SESSION['ID_U']=$row['Id_user'];
$_SESSION['FIO_u']=$row['FIO_user'];
$_SESSION['Otdel_u']=$row['Otdel_user'];
$_SESSION['Phone_u']=$row['Phone_user'];
$_SESSION['Position_u']=$row['Access_user'];
3.5 Реализация web-интерфейса
На стартовой странице index.php расположена форма для авторизации (рисунок А.1 приложения), на которой пользователю необходимо ввести свои учетные данные для доступа к подсистеме. Если данные не были введены, то появится сообщение об ошибке (рисунок А.2 приложения). Если данные были введены некорректно или были введены данные несуществующего пользователя, то появится сообщение о вводе неверных данных (рисунок А.3 приложения). В обоих случаях страница авторизации обновится через несколько секунд. После успешной авторизации в подсистеме перед пользователем откроется главная страница General.php с кнопками, соответствующими его уровню доступа, сообщение о приветствии и список ранее поданных заявок (рисунок А.4 приложения).
При нажатии кнопки «Новая заявка», при любом уровне доступа, открывается форма добавления новой заявки (рисунок А.5 приложения). После заполнения всех полей и нажатия на кнопку «Добавить» появляется сообщение об успешном добавлении заявки (рисунок А.6 приложения), если данные не были введены или были введены некорректно, всплывающее окно сообщит об ошибке (рисунок А.7 приложения). После нажатия «Ok» страница с формой обновится.
При нажатии кнопки «Мои открытые заявки», при любом уровне доступа, перед пользователем выводится таблица ранее поданных им заявок, которые в данный момент имеют статус «Открыта» (рисунок А.8 приложения). По аналогии работают остальные кнопки подменю работы с заявками, выводя на экран таблицы заявок с соответствующими статусами (рисунок А.9 приложения).
Пользователи имеют возможность просматривать детальное описание только своих заявок. Администраторы и специалисты технической поддержки имеют возможность просматривать детальное описание всех заявок. Окно просмотра детального описания вызывается однократным нажатием по необходимой заявке. (рисунок А.10 приложения).
При авторизации с правами администратора, пользователю доступны кнопки для перехода на страницы для редактирования справочников пользователей, категорий заявок, подкатегорий, списка, устанавливаемого ПО, формирования различных отчетов (рисунок А.11 приложения).
При нажатии на кнопку «Работа со списком пользователей» администратор имеет возможность работать с таблицей пользователей подсистемы (рисунок А.12 приложения). На странице UsersAdm.php Администраторы имеют возможность создавать, редактировать и удалять пользователей нажатием соответствующих кнопок. При нажатии на кнопку «Редактировать» поля таблицы становятся доступными для ввода новой информации (рисунок А.13 приложения), при нажатии кнопки «Сохранить», новые введенные данные заменяют старые, при нажатии кнопки «Удалить» выбранная запись удаляется из системы.
Аналогичные операции администраторы имеют возможность осуществлять на страницах всех справочников подсистемы: категорий заявок, подкатегорий, устанавливаемого комплекта ПО. Указанные страницы представлены на рисунках (рисунки А.14-А.16 приложения).
Администраторы и сотрудники технической поддержки, при редактировании заявок, имеют возможность назначать их на других сотрудников, входящих в состав УИТиС, добавлять решения и время их выполнения (рисунок А.17 приложения). При заполнении необходимых полей и нажатии кнопки «Выполнить» заявка получает статус «Решена».















