- •Систематизация сбора и оценки работ учащихся
- •Введение
- •Теоретическая часть
- •Анализ существующих систем обмена данными
- •Выдвигаемые требования к разрабатываемой системе
- •Выбор формы разработки
- •Выбор средств разработки
- •Проектирование и реализация
- •Определение компонентов системы и алгоритма их взаимодействия
- •Компоненты системы
- •Алгоритм взаимодействия системы с пользователями
- •Проектирование базы данных системы
- •Разработка web-интерфейса
- •Реализация возможностей системы
- •Обеспечение безопасности системы
- •Апробация системы на практике
- •Заключение
- •Список использованных Источников
Список использованных Источников
ООО «1С-Софт». 1С:Образование. Автоматизация учебного процесса. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://obrazovanie.1c.ru/.
Moodle – Open-source learning platform. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] https://moodle.org.
АО «БАРС Груп». БАРС.Web-Образование. [В Интернете] [Цитировано: 12 Декабрь 2016г.] https://uko.edu-penza.ru.
Колисниченко Д. Н. PHP и MySQL. Разработка Web-приложений. СПб. : БХВ-Петербург, 2013.
ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://cert.obninsk.ru/gost/282/282.html.
Wikimedia Foundation, Inc. Википедия — свободная энциклопедия. [В Интернете] 2016 г. [Цитировано: 12 Декабрь 2016 г.] https://ru.wikipedia.org.
Руководство по PHP. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://php.net/manual/ru/.
Free Software Foundation. Стандартная общественная лицензия GNU (GPL). Проект GNU - Фонд свободного программного обеспечения. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] https://www.gnu.org/licenses/gpl.html.
The PHP Group. The PHP License, version 3.01. PHP: Hypertext Preprocessor. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://php.net/license/3_01.txt.
Кузнецов М. В., Симдянов И. В., Голышев С. В. РНР5. Практика создания web-сайтов. СПб. : БХВ-Петербург, 2006.
Мержевич В. webref.ru. WebReference. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://htmlbook.ru
Мержевич В. htmlbook.ru. Для тех, кто делает сайты. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://htmlbook.ru.
SafeMysql. Класс для безопасной и удобной работы с MySQL. [В Интернете] [Цитировано: 12 Декабрь 2016 г.] http://phpfaq.ru/SafeMysql.
Приложение 1. Схема взаимодействия пользователя с интерфейсом системы
Приложение 2. Фрагменты кода php-файлов
ФАЙЛ Index.php
<?php define('_ACCESS',1);
include_once 'settings.php';
?>
<?php
if (!$user['id']) {
?>
<a href="#enter" class="icon fa-sign-in active"><span>Вход</span></a>
<?php
}else{
?>
<a href="/system/#work" class="icon fa-user active"><span>Кабинет</span></a>
<a href="actions/logout.php" class="icon fa-sign-out"><span>Выход</span></a>
<?php
}
if (!$user['id']) {
?>
<h2>Вход в систему</h2>
<p>Введите Ваши учётные данные для входа в систему. <br>Если у Вас нет таких данных, обратитесь к системному администратору.</p>
<?php if ($user['error']){
?>
<p style="color:#f00;"> <?php echo $user['error']; ?></p>
<?php
}
?>
<form action="actions/login.php" method="post">
<div>
<div class="row">
<div class="6u 12u$(mobile)">
<input type="text" name="login" placeholder="Логин" required />
</div>
<div class="6u$ 12u$(mobile)">
<input type="password" name="pass" placeholder="Пароль" required />
</div>
<div class="12u$">
<input type="submit" value="Войти" />
</div>
</div>
</div>
</form>
<?php
}else{
$group_name = $db->getOne('SELECT `name` FROM `groups` WHERE `id`= ?i',$user['_group']);
?>
<h2><?php echo $user['name'];?> </h2> <?php echo $group_name;?>
<?php
if ($_GET['p'] && file_exists('pages/'.$_GET['p'].'.php')){
include 'pages/'.$_GET['p'].'.php';
}else{
include 'pages/cab.php';
} ?>
ФАЙЛ settings.php
<?php defined('_ACCESS') or die ('Error!');
mb_internal_encoding('UTF-8'); // Устанавливаем кодировку строк
setlocale(LC_ALL, 'ru_RU.UTF-8');
include_once 'safemysql.php';
$db=new SafeMysql (array('user'=>'school_system','pass'=>**********,'db'=>'school_system','charset'=>'utf8'));
session_start();
$user=$db->getRow("select * from `users` WHERE `id`=?i LIMIT 1",$_SESSION ['user']['id']);
if (!$user) {
if ($_SESSION['error']) {
$user['error']=$_SESSION['error'];
}
session_destroy();
session_start();
}
?>
ФАЙЛ pages/cab.php
<?php defined('_ACCESS') or die ('Error!');
switch ($user['_group']){
case '1':
include 'cab/admin.php';
break;
case '2':
include 'cab/headmaster.php';
break;
case '3':
include 'cab/headteacher.php';
break;
case '4':
include'cab/teacher.php';
break;
case '5':
include'cab/student.php';
break;
default:
}
?>
ФАЙЛ pages/cab/student.php
<?php defined('_ACCESS') or die ('Error!');
switch ($_GET['section']){
case 'subjects':
include 'student/subjects.php';
break;
case 'task':
include 'student/task.php';
break;
case 'tasks':
include 'student/tasks.php';
break;
case 'works':
include 'student/works.php';
break;
default: include 'student/subjects.php';
}
?>
ФАЙЛ pages/cab/student/subjects.php
<h3>Актуальные задания</h3>
<?php defined('_ACCESS') or die ('Error!');
$tasks=$db->getAll('select `tasks`.* from `tasks` where `tasks`.`date-deadline` > now() and `tasks`.`id` in (select `_task` from `task_grade_subject` where `_grade` in (select `_grade` from `user_grade` where `_user`=?i)) and `tasks`.`id` not in(select `_task` from `works` where `_user`=?i)', $user['id'],$user['id']);
?>
<div style="clear:both;padding:0px;"></div>
<ul>
<?php
foreach($tasks as $task){
echo '<li><a href="?p=cab§ion=task&task='.$task['id'].'">'.$task['title'].'</a></li>';
}
?>
</ul>
<div style="clear:both;padding:0px;"></div>
<h3>Список предметов:</h3>
<div style="clear:both;padding:0px;"></div>
<?php
$subjects=$db->getAll('select * from `subjects` where `id` in (select `_subject` from `subject_user` where `_user`=?i)', $user['id']);
foreach ($subjects AS $subject){
?><div><a href="/system/?p=cab§ion=tasks&subject=<?php echo $subject ['id'];?>"> <?php echo $subject ['name']?></a></div><?php
}
?>
ФАЙЛ pages/cab/student/task.php
<?php defined('_ACCESS') or die ('Error!');
$task=$db->getRow("select `tasks`.*,`files`.`id` as `id_f`,`files`.`filename` from `tasks` left join `files` on (`tasks`.`_file`=`files`.`id`) where `tasks`.`id` =?i", $_GET['task']); ?>
<h3>Задание «<?php echo $task['title'];?>»</h3>
<?php echo $task['info'];?>
<?php if($task['_file']){?><a href="/system/files/tasks/<?php echo $task['filename'];?>">Открыть файл к заданию</a><br><?php }?>
<h3>Список загруженных работ</h3>
<?php
$works=$db->getAll('select `works`.*,`works`.`id` as `id_w`,`files`.*,`files`.`type` as `type_f` from `works` left join `files` on (`works`.`_file`=`files`.`id`) where `works`.`_user`=?i and `_task`=?i',$user['id'],$_GET['task']);
if(count($works)){
?>
<?php
foreach ($works as $work){
?>
<div>
<div style="padding: 5px;"><i class="fa fa-file" aria-hidden="true"></i> Загрузка от <?php echo $work['date-send'];?> <a href="/system/files/works/<?php echo $work['filename'];?>">Просмотр файла</a> - <?php if ($work['mark']!=''){echo 'Оценка: '.$work['mark'];}else{echo '<i>не оценено</i>';}?>
</div>
<span><?php echo $work['info'];?></span>
<?php if ($work['comment']!=''){echo '<br><b>Комментарий:</b> '.$work['comment'];} ?>
<form method="POST" enctype="multipart/form-data" action="/system/actions/work.php">
<input type="hidden" name="id_w" value="<?php echo $work['id_w'];?>">
<input type="hidden" name="task" value="<?php echo $_GET['task'];?>">
<input type="submit" name="delete" value="Удалить">
</form>
</div>
<?php
}
}else{
echo '<div>Загруженных работ ещё нет</div>';
} ?>
</div>
<h3>Загрузить новую работу</h3>
<form method="POST" enctype="multipart/form-data" action="/system/actions/work.php">
<input type="hidden" name="task" value="<?php echo $_GET['task'];?>">
<textarea name="info" placeholder="Информация"></textarea>
<select name="type_f">
<option value="Документ">Документ</option>
<option value="Изображение">Изображение</option>
<option value="Архив">Архив</option>
<option value="Любой файл">Любой файл</option>
</select>
<input type="file" name="_file">
<input type="submit" name="download" value="Загрузить">
</form>
ФАЙЛ system/actions/work.php
<?php define('_ACCESS',1);
include_once '../settings.php';
$info=$_POST['info'];
if (isset($_POST['download'])){
$a=explode('.', $_FILES['_file']['name']);
$ext=$a[count($a)-1];
$filename=$user['login'].'_'.date('YmdHis').'_'.intval(rand()*999).'.'.$ext;
if (is_uploaded_file($_FILES['_file']['tmp_name'])) {
move_uploaded_file($_FILES['_file']['tmp_name'], '../files/works/'.$filename);
}
$db->query("INSERT INTO `files` (`filename`, `type`, `date-upload`, `_user`) VALUES (?s, ?s, now(), ?s)", $filename,$_POST['type_f'],$user['id']);
$_file=$db->InsertId();
$db->query("INSERT INTO `works` (`_task`, `_file`, `date-send`, `mark`, `comment`, `_user`, `info`) VALUES (?s, ?s, now(), NULL, NULL, ?s, ?s) on duplicate key update `info`=?s, `_file`=?s ", $_POST ['task'], $_file, $user ['id'], $info, $info, $_file);
}elseif(isset($_POST['delete'])){
$db->query('delete from `works` where `id`=?i',$_POST['id_w']);
}
header('Location: '.$_SERVER['HTTP_REFERER']);
?>
