Оглавление
ВВЕДЕНИЕ 10
Глава 1 Теоретические основы автоматизированной системы расписания занятий 11
1.1 Понятие автоматизации 11
Следует начать с определения понятия «автоматизация». Под автоматизацией обычно понимают применение технических и программных средств, частично или полностью освобождающих человека от непосредственного участия в процессах получения, преобразования, передачи и использования материалов или информации. 11
Преимущества автоматизации очевидны - это ускорение выполнения операций и снижение ошибок при их выполнении, снижение издержек на реализацию операций и повышение качества. 11
Выделяют следующие этапы процесса автоматизации, применяемые в целом к деятельности того или иного учреждения. Каждый из этапов требует осмысленного и последовательного выполнения. 11
Этап 1: постановка проблемы, оценка необходимости автоматизации и возможностей предприятия; 11
Этап 2: формирование требований к программно-аппаратному комплексу, выбор или реализация программного продукта и технического обеспечения; 11
Этап 3: внедрение программного продукта; 11
Этап 4: послегарантийное обслуживание программно-аппаратного комплекса. 11
Прежде чем начать автоматизацию необходимо ясно и четко сформулировать свои требования к ней. Требуется определить какие именно функции необходимо автоматизировать. 11
Выбор программного продукта или среды его разработки не следует отделять от выбора технического обеспечения, на котором предстоит в дальнейшем работать. Не следует забывать и об имеющейся информационной системе ВУЗа. Объединение в единое информационное пространство позволяет использовать ранее реализованные компоненты и единую базу данных, что повышает гибкость информационной системы в целом и снижает дублирование уже имеющейся информации. 11
После построения модели учреждения и определения требований к программному продукту, необходимо определиться с выбором программы. Функциональная полнота (достаточность) будущей программы является базовым требованием к выбору программного продукта. 11
Глава 2 Разработка сайта 12
2.1 Постановка задачи 12
В рамках сайта необходимо разработать систему позволяющую облегчить возможность составления расписания. В качествене инструментов для разработки будем пользоваться такими языками программирования как: PHP, HTML5, CSS3, JQuery и MySQL. 12
2.2 Дизайн 12
В качестве основного принципа дизайна, было решено выбрать Material design от корпорации Google. 12
Material Design (рус. Материальный дизайн) — дизайн программного обеспечения и приложений операционной системы Android от компании Google. Впервые представлен на конференции Google I/O 25 июня 2014 года. Идея дизайна заключается в приложениях, которые открываются и сворачиваются как карточки, используя эффекты теней. По идее дизайнеров Google у приложений не должно быть острых углов, карточки должны переключаться между собой плавно и практически незаметно. 12
Material Design – это новый фреймворк, который, как верит Google, и создаст эту интуитивную модель. Это такой же революционный продукт, как, например, iPhone от Apple. В нем сочетаются гибкость и простота, которые помогут разобраться с новыми технологиями. И если Google выполнит свое обещание, и сможет привнести данную технологию во все свои продукты, включая web, Chrome OS и Android, она, действительно, поможет нам понять технологии, и избавит нас от необходимости подстраиваться под различные модели. 12
Примеры «Материального дизайна»: 12
12
Рисунок 1.1 – Отображение календаря на различных устройствах 13
В настоящее время существует многожество CSS фреймворков посвященных этому дизайну, одним из которых является materialize.css. Данная библиотека разработана студентами университета Карнеги-Меллона и является open-source продуктом (ссылка проекта на GitHub : https://github.com/dogfalo/materialize/) . 13
Преимущеста этого фреймворка перед остальными заключается в простоте пользования и хорошо написанной, наглядной документации. 13
В итоге был получен адаптивый веб-дизайн динамически подстраивающийся под заданные размеры окна браузера. 13
13
Рисунок 1.2 – Вид сайта на устройствах более чем 992 пикселя в ширину 13
13
Рисунок 1.3 – Вид сайта на устройствах не более чем 992 пикселя в ширину 13
2.3 Структура базы данных 15
В этом разделе представлена схема базы данных. Для каждой таблицы указываются: ее название, структура, описание и назначения. 15
Burden 15
Таблица для хранения нагрузки преподавателя. 15
Структура таблицы burden: 15
b_id – ключевое поле, идентификатор 15
b_teacher_id – ссылка на идентификатор из таблицы teachers 15
b_subject_id – ссылка на идентификатор из таблицы subjects 15
b_quater – количество часов в неделю 15
b_half – количество часов в неделю 15
b_full – количество часов в неделю 15
b_course – курс 15
b_group – группа 15
b_faculty – факультет 15
Schedule 15
Таблица для хранения расписания. 15
Структура таблицы schedule: 15
sc_id – ключевое поле, идентификатор 15
sc_teacher_id – ссылка на идентификатор из таблицы teachers 15
sc_subject_id – ссылка на идентификатор из таблицы subjects 15
sc_position – характеристики пары 15
sc_row – строка в таблице расписания (номер пары) 15
sc_weekday – день недели 15
sc_course – курс 15
sc_group – группа 15
sc_faculty – факультет 15
Speciality 15
Таблица для хранения специальностей. 15
Структура таблицы speciality: 15
sp_id – ключевое поле, идентификатор 15
sp_titile – название специальности 15
sp_course – курс 15
sp_group – группа 15
sp_faculty – факультет 15
Teachers 16
Таблица для хранения преподавателей. 16
Структура таблицы teachers: 16
t_id – ключевое поле, идентификатор 16
t_title – инициалы преподавателя 16
Subjects 16
Таблица для хранения дисциплин. 16
Структура таблицы subjects: 16
sb_id – ключевое поле, идентификатор 16
sb_title – название специальности 16
Users 16
Таблица для хранения пользователей. 16
Структура таблицы users: 16
user_id – ключевое поле, идентификатор 16
name – имя 16
surname – фамилия 16
login – логин пользователя 16
password – пароль пользователя (хеш md5) 16
16
Рисунок 1.4 – Схема базы данных 16
2.4 Программная реализация 17
Файл index.php является главным файлом сайта, а также благодаря ему страница динамически изменяется. Например, в случае если условие ниже верно – будет получена форма с авторизацией / регистрацией пользователя. 17
// файл содержащий форму для входа/регистации 18
include("php/start.php"); 18
} 18
В случае, если пользователь удачно вошел в систему, то условие пойдет по ветке «иначе» и будет получена страница другого вида. 18
else { 18
if(!$_GET["faculty"] || !$_GET["course"] || !$_GET["weekday"]){ 18
echo "<script>location = 18
'index.php?faculty=1&course=1&weekday=1'</script>"; 18
} 18
// введем обозначение 18
$faculty = $_GET["faculty"]; 18
$course = $_GET["course"]; 18
$weekday = $_GET["weekday"]; 18
include("php/db_connect.php"); 18
// забираем группы выбранным факультета и курсом 18
$sql = " 18
SELECT sp_title 18
FROM speciality 18
WHERE sp_course = ".$course." 18
AND sp_faculty = ".$faculty." 18
"; 18
$query = mysql_query($sql) or die(mysql_error()); 18
$g = 0; 18
while($row = mysql_fetch_array($query)){ 18
$a[$g] = $row['sp_title']; 18
$g++; 18
} 18
18
// количество групп 18
$col = $g; 18
// забираем часы и предметы выбранного преподавателя 18
$sql = " 18
SELECT b_quater, b_half, b_full, t_name, t_id, sb_title, sb_id 18
FROM burden, teachers, subjects 18
WHERE burden.b_teacher_id = teachers.t_id 18
AND burden.b_subject_id = subjects.sb_id 18
AND b_course = ".$course." 18
AND b_faculty = ".$faculty." 18
"; 18
$query = mysql_query($sql) or die(mysql_error()); 18
19
$t_name = array(); 19
$list = array(); 19
$list_q = array(); 19
$list_h = array(); 19
$list_f = array(); 19
$teachers_id = array(); 19
$subjects_id = array(); 19
while($row = mysql_fetch_array($query)){ 19
$s = $row['t_name']; 19
if(!$list[$s]){ 19
array_push($t_name, $s); 19
array_push($teachers_id, $row['t_id']); 19
$list[$s] = array(); 19
$list_q[$s] = array(); 19
$list_h[$s] = array(); 19
$list_f[$s] = array(); 19
$subjects_id[$s] = array(); 19
} 19
array_push($list[$s], $row['sb_title']); 19
array_push($list_q[$s], $row['b_quater']); 19
array_push($list_h[$s], $row['b_half']); 19
array_push($list_f[$s], $row['b_full']); 19
array_push($subjects_id[$s], $row['sb_id']); 19
} 19
// Навигация/header-сайта 19
include("php/nav.php"); 19
echo ' 19
<div id="temp"></div> 19
<div class="row" id="sheet"> 19
'; 19
// Основное содержание страницы 19
include("php/main.php"); 19
echo' 19
</div> 19
'; 19
19
// Подвал/footer-сайта 19
include("php/footer.php"); 19
} 19
Содержание файла start.php: 19
<?php 19
echo' 19
<div class="container"> 19
<div class="row" > 19
<div class="col s12" id="sign-in"> 19
<legend>Авторизация</legend> 19
<form action="/php/login.php" method="POST"> 19
<input type="text" name="login" 20
placeholder="Введите логин пользователя"> 20
<input type="password" name="password" 20
placeholder="Введите пароль пользователя"> 20
<button type="submit" name="submit" 20
class="btn">Вход</button> 20
<button id="btn-reg" class="btn">Регистрация</button> 20
</form> 20
</div> 20
<div class="col s12" id="registration"> 20
<legend>Регистрация</legend> 20
<form method="POST"> 20
<input id="name" type="text" class="span4" 20
placeholder="Имя"> 20
<input id="surname" type="text" class="span4" 20
placeholder="Фамилия" required> 20
<input id="login" type="text" class="span4" name="login" 20
placeholder="Логин" required> 20
<input id="pass" type="password" class="span4" 20
name="password" placeholder="Пароль" required> 20
<button id="reg" type="submit" name="submit" 20
class="btn" >Зарегистрироваться</button> 20
<button id="back-to-future" type="submit" 20
name="submit" class="btn" >Назад</button> 20
</form> 20
</div> 20
</div> 20
</div> 20
'; 20
?> 20
Содержание файла nav.php: 20
Содержание файла insert.php 37
<?php 37
include('db_connect.php'); 37
$sql = " 37
INSERT INTO `schedule` ( `sc_id` , `sc_teacher_id` , 37
`sc_subject_id` , `sc_faculty` , `sc_course` , `sc_weekday` , 37
`sc_group` , `sc_position` , `sc_row` ) 37
VALUES ( 37
'', '".$_POST['teacher_id']."', 37
'".$_POST['subject_id']."', 37
'".$_POST['faculty']."', '".$_POST['course']."', 37
'".$_POST['weekday']."', '".$_POST['group']."', 37
'".$_POST['position']."', '".$_POST['row']."' 37
); 37
"; 37
$query = mysql_query($sql); 37
$sql = "UPDATE `burden`"; 37
switch($_POST['b_size']){ 37
case 0: $sql = $sql." SET b_quater = b_quater - 1 WHERE 37
b_teacher_id = ".$_POST['teacher_id']." AND b_subject_id = 37
".$_POST['subject_id'].""; break; 37
case 1: $sql = $sql." SET b_half = b_half - 1 WHERE 37
b_teacher_id = ".$_POST['teacher_id']." AND b_subject_id = 37
".$_POST['subject_id'].""; break; 37
case 2: $sql = $sql." SET b_full = b_full - 1 WHERE 37
b_teacher_id = ".$_POST['teacher_id']." AND b_subject_id = 37
".$_POST['subject_id'].""; break; 37
} 37
$query = mysql_query($sql); 37
?> 37
ЗАКЛЮЧЕНИЕ 39
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 40
1.https://ru.wikipedia.org/wiki/Material_design 40
2.http://la.by/blog/razrabotka-avtomatizirovannoy-sistemy-raspisaniya-zanyatiy-uchebnogo-zavedeniya 40
3.https://ru.wikipedia.org/wiki/PHP 40
4.https://ru.wikipedia.org/wiki/JavaScript 40
5.Автоматизация составления расписания учебных занятий в вузе // Материалы Всероссийской научно-технической конференции «Наукоемкие технологии в приборо- и машиностроении и развитие инновационной деятельности в ВУЗе». – Т.2. – М., Издательство МГТУ им. Н.Э.Баумана, 2008. – С. 98. 40
6.Брезгинов, А.Н. Обзор существующих методов составления расписаний / А.Н. Безгинов, С.Ю. Трегубов // Информационные технологии в программировании. – М., 2005. – №2(14). 40