Разработка системы хранения данных о проектах с курсом обучения

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,11 Мб
  • Опубликовано:
    2012-12-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка системы хранения данных о проектах с курсом обучения

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Московский Государственный Университет Печати имени Ивана Фёдорова

Кафедра Информационных Систем









Курсовой проект

Дисциплина: Системы управления медиаданными

Тема: «Разработка системы хранения данных о проектах с курсом обучения»

Выполнила студентка группы ДЦиС 5-1:

Власюк А.Н.

Руководитель:

ст. преп. Ляхов Д.Н.




Москва 2012

Содержание

Введение

.        Общая постановка задачи

.        Системные требования

.        База данных, ER-модель базы данных

.        Функциональная спецификация

.        Тестирование обучающего курса

Заключение

Список литературы

Приложение

Введение

В современных условиях важна каждая минута работы сайта/веб-приложения. Сайт - является неотъемлемой и очень значимой частью предприятия, а также сильной движущей силой его развития.

Для пользователей, которые предпочитают решать проблемы на сайте самим, необходима дополнительная помощь в понимании проблемы, в ее решении.

Данная информационная система разработана с целью обучения пользователей определенным методам решения ошибок и добавлением каких либо ошибок в базу с просьбой решить проблему или поделиться ее решением.

Система включает в себя:

обучение на основе ошибок;

ввод данных о сайте или веб-приложении;

ввод данных об ошибках на сайте;

вывод информации о правках, внесенных администратором;

вывод всех данных о проекте.

Применение данной информационной системы решает проблемы снижения временных затрат на поиск ответа на ошибки, помогает людям в развитии свои профессиональных качеств.

1. Общая постановка задачи

Данное техническое задание описывает цикл работ по изготовлению системы для хранения информации о проектах, об правках и распределению обязанностей между администраторами и о создании курса обучения.

Работы будут производиться с использованием языка программирования высокого уровня PHP.

Основой является курс обучения, который представляет из себя слайдер с изображениями ошибок и при нажатии на изображение, пользователь получает необходимую информацию. Так же параллельно обучению пользователь может заносить данные о своих работах и какие баги там возникли, в последующем администраторы могут помочь с данной ошибкой и дополнить курс.

обучение;

ввод данных о сайте или веб-приложении;

ввод данных об ошибках на сайте;

вывод информации о правках, внесенных администратором;

вывод всех данных о проекте.

В каждом разделе находятся дополнительные поля для заполнения.

Ввод информации о проектах:

название;

описание;

дата;

активность(действует ли проект на данный момент).

) Ввод данных об ошибках на сайте:

номер проекта;

баги верстки;

баги функций;

дата;

важность ошибок;

номер администратора, который будет исправлять данный баг.

) Вывод информации о правках, внесенных администратором

) Вывод всех данных о проекте.

В двух последних разделах представляется выбор администратора и проекта соответственно и после выбора выводится таблица с данными из БД.

. Системные требования

.        Операционная система Linux / Windows с установленным пакетом / комплектом разработчика Apache + PHP.

.        Требований к памяти не имеется.

.        Любой браузер на движках Presto / Gecko / Webkit / Trident.      

Серверная часть приложения, которая заведует в данном случае обработкой действий интерфейса и взаимодействует с базой, написана на языке PHP версии 5.3.

3. База данных, ER-модель базы данных

Разработанная ИС имеет следующие уровни:

)        Уровень преставления. Отображает WEB-интерфейс системы, написанный с помощью языка HTML. Данный интерфейс необходим для взаимодействия пользователя и информационной системы.

)        Уровень логики. Обеспечивает динамичность интерфейса системы, обработку данных, доступных для нее с помощью PHP-сценариев. Так же данный уровень связывает уровень представления с уровнем базы данных, производит соединение с базой и выполняет все запросы пользователя к информации, хранящейся в ней.

)        Уровень базы данных. Уровень представлен реляционной базой данных «test», управляемой СУБД MySQL. База состоит из нормализованных таблиц, содержащих необходимую информацию для информационной системы.

Данная база содержит в себе следующие таблицы:(id, name, description, date, activity) (id, project_id, pos_bugs, func_bugs, date, importance, admin_id)(id, login, password, name, job)

Отношение для заданной связи должно охватывать такие атрибуты как:

Таблица 2.1. Таблица projects (проекты)

id

name

description

date

activity

Id проекта

Название проекта

Описание

Дата проекта

Активность проекта


Список всех проектов и информации о них для пользователя и для администратора.

Таблица 2.2. Таблица bugs (ошибки )

id

project_id

pos_bugs

func_bugs

date

importance

admin_id

Id ошибки

Id проекта

Ошибка верстки

Ошибка функции

Дата

Важность ошибки

Id администратора


Таблица со всеми ошибками, которые пользователи добавили в поля формы.

Таблица 2.3. Таблица admins (теги объявлений)

id

login

password

name

job

Id администратора

логин

пароль

имя

В качестве кого работает


Содержит информацию об администраторе.

Листинги создания таблиц представлены в Приложении (Листинг 1).

На уровне баз данных находится разработанная для данной информационной системы база test, хранящая в себе данные о проектах. Реализована эта база данных на СУРБД MySQL.

Первым этапом в разработке системы стало выделение основных сущностей, которые представлены в ER-диаграмме (См. рис.3.1).

Рисунок 3.1. ER-диаграмма

4. Функциональная спецификация

Обучающий курс.

Для начала пользователь видит простой слайдер с навигационными кнопками, но при нажатии на изображение пользователь переходит в окно с подробным описанием проблемы и его решением. На первом этапе все данные хранятся отдельно, но в последующей доработке перенесутся в базу. Курс будет дополняться за счет внесенных данных пользователей, которые столкнулись с какой-либо проблемой и просят администраторов помочь или просто хотят поделиться решением проблемы(См. рис. 4.1).

Рисунок 4.1. Слайдер.

Ввод информации о проектах

Добавление информации происходит с помощью стандартной формы (рисунок 4.2). Проекты заносятся в базу projects при обратке скрипта. После занесения данных в базу обрабатывается форма занесения данных и преобразовывается дата для базы данных и данные перепроверяются. Алгоритм для ввода информации о багах однотипен только сдобавлением других полей (рисунок 4.3).

Рисунок 4.2. Добавление информации о проектах

Рисунок 4.3. Добавление информации о багах

Вывод информации о правках администратора

Для вывода данных о правках из базы требуется знать id администратора (рисунок 4.4). Далее поступает запрос в базу и в виде таблицы генерируется ответ. Ответ генерируется соединением двух таблиц при помощи join. Выводит поэтапно в зависимости от времени добавления. Аналогично работает алгоритм по выводу сведений о проекте(рисунок 4.5).

Рисунок 4.4.        Вывод информации о правках администратора

Рисунок 4.5.        Вывод информации о проекте.

Тестирование обучающего курса.

Теоретические сведения

Существующие на сегодняшний день методы тестирования ПО не позволяют однозначно и полностью выявить все дефекты и установить корректность функционирования анализируемой программы, поэтому все существующие методы тестирования действуют в рамках формального процесса проверки исследуемого или разрабатываемого ПО.

Такой процесс формальной проверки, или верификации, может доказать, что дефекты отсутствуют с точки зрения используемого метода. (То есть нет никакой возможности точно установить или гарантировать отсутствие дефектов в программном продукте с учётом человеческого фактора, присутствующего на всех этапах жизненного цикла ПО).

Существует множество подходов к решению задачи тестирования и верификации ПО, но эффективное тестирование сложных программных продуктов - это процесс в высшей степени творческий, не сводящийся к следованию строгим и чётким процедурам или созданию таковых.

Юзабилити-тестирование (проверка эргономичности) - исследование, выполняемое с целью определения, удобен ли некоторый искусственный объект (такой как веб-страница, пользовательский интерфейс или устройство) для его предполагаемого применения. Таким образом, проверка эргономичности измеряет эргономичность объекта или системы. Проверка эргономичности сосредоточена на определённом объекте или небольшом наборе объектов, в то время как исследования взаимодействия человек-компьютер в целом - формулируют универсальные принципы.

При испытании многих продуктов пользователю предлагают в «лабораторных» условиях решить основные задачи, для выполнения которых этот продукт разрабатывался, и просят высказывать во время выполнения этих тестов свои замечания.

Процесс тестирования фиксируется в протоколе (логе) и/или на аудио- и видеоустройства - с целью последующего более детального анализа.

Если проверка эргономичности выявляет какие-либо трудности (например, сложности в понимании инструкций, выполнении действий или интерпретации ответов системы), то разработчики должны доработать продукт и повторить тестирование.

Основную трудность после проведения процедуры проверки эргономичности нередко представляют большие объёмы и беспорядочность полученных данных. Поэтому для последующего анализа важно зафиксировать:

Речь модератора и респондента;

Выражение лица респондента (снимается на видеокамеру);

Изображение экрана компьютера, с которым работает респондент;

Различные события, происходящие на компьютере, связанные с действиями пользователя:

Перемещение курсора и нажатия на клавиши мыши;

Использование клавиатуры;

Переходы между экранами (браузера или другой программы).

Все эти потоки данных должны быть синхронизированы по тайм-кодам, чтобы при анализе их можно было бы соотносить между собой.

Наряду с модератором в тестировании нередко участвуют наблюдатели. По мере обнаружения проблем они делают свои заметки о ходе тестирования так, чтобы после можно было синхронизировать их с основной записью. В итоге каждый значимый фрагмент записи теста оказывается прокомментирован в заметках наблюдателя. В идеале ведущий (т.е. модератор) представляет разработчика, наблюдатели - заказчика (например издателя, дистрибьютора), а испытатели - конечного пользователя (например покупателя).

Тестирование ИС

Для начала протестируем ИС для добавления информации о проектах. Для данного тестирование был выбран метод «юзабилити-тестирование». Необходиом проверить удобен ли наш курс для пользователей.

Первоначально предложим им посмотреть наш слайдер(См. рис. 5.1).

Основные минусы в том, что разные форматы картинок и изображение из-за это теряет качество и постоянно «прыгает».

 

Рисунок 5.1. Слайдер.

Далее посмотрим страницу с вводом данных (рисунок 5.2).

Рисунок 5.2. Ввод данных.

Для начала заполним поля информацией (рисунок 4.2).

Рисунок 5.3. Заполнение формы

При добавлении данных возникли проблемы. Возникли из-за формата даты, так как в данной ИС ее можно добавлять только в формате дд.мм.гггг(дд.мм.гг).

Рисунок 5.4. неправильный ввод даты проекта

Кроссбраузерная верстка так же была проверена, но так таковых явных багов не найдено. В дальнейшем все баги в системе будут устранены для последующего развития и расширения данной информационной системы.

Заключение

интерфейс сайт листинг

В настоящей курсовой работе было рассмотрено, как лучше всего организовать обучающий сайт и что в него должно входить.

Далее была предоставлена функциональная спецификация, описывающая то, какие процессы происходят в системе, как взаимодействуют между собой элементы интерфейса, как интерфейс выглядит.

Настоящая разработка может не является конечным вариантом и может быть легко доработана исходя из нужд заказчика. Однако, в текущем варианте она уже пригодна к использованию и удовлетворяет требованиям эргономичности и производительности, принятых на современном рынке веб-приложений.

Список литературы

) Официальная документация языка PHP: http://php.net ;

) Гради Буч, Роберт А. Максимчук, «Объектно-ориентированный анализ и проектирование с примерами приложений», изд. «Вильямс», 2008,

) Веллинг Л., Томсон Л. Разработка web-приложений с помощью РНР и MySQL. Третье издание - «Вильямс», 2005

)        Фаулер М., Скотт К. UML. Основы. - СПб: Символ- Плюс, 2002

)        Марков А.А. Практическое введение в базы данных. Методическое пособие, часть 1, 2,

)        Энди Гутманс, Стик Баккен, Деррик Ретанс. «PHP Профессиональное пограммирование». - СПб: Символ, 2006

Приложение

Листинг 1. Создание таблиц

-

База данных: `test`

-

-------------------------------------------------------

-

Структура таблицы `admins`

-

CREATE TABLE IF NOT EXISTS `admins` (

`id` int(20) NOT NULL AUTO_INCREMENT,

`login` varchar(255) NOT NULL,

`password` varchar(255) NOT NULL,

`name` varchar(255) NOT NULL,

`job` varchar(255) NOT NULL,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

-

Структура таблицы `bugs`

-TABLE IF NOT EXISTS `bugs` (

`id` int(20) NOT NULL AUTO_INCREMENT,

`project_id` int(20) NOT NULL,

`pos_bugs` blob NOT NULL,

`func_bugs` blob NOT NULL,

`date` date NOT NULL,

`importance` tinyint(1) DEFAULT NULL,

`admin_id` int(10) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

-

Структура таблицы `projects`

-TABLE IF NOT EXISTS `projects` (

`id` int(20) NOT NULL AUTO_INCREMENT,

`name` varchar(255) NOT NULL,

`description` blob NOT NULL,

`date` date NOT NULL,

`activity` tinyint(1) DEFAULT NULL,KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

Листинг 1. Создание таблиц

Листинг 2. Файл testingIS.php

<?php _default_timezone_set('Europe/Moscow');

session_start();

//var_dump($_SERVER);

//if ( stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox') ) echo stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox');

//echo "OK!";_connect('localhost','root','root');

mysql_select_db("test");

?>

<html>

<head>

<meta charset="utf-8">

</head>

<link href="css/bootstrap.css" rel="stylesheet">

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="css/bootstrap-responsive.css" rel="stylesheet">

<body>

<form action="testingIS.php" method="POST">

<div>

<button>

<button>

<button>

<button>

<button>

</div>

</form>

<div>

<?php (isset($_POST["learn"])){

?>

<script type="text/javascript">

$('.carousel').carousel();

</script>

<div>

<div>

<div>

<img alt="" src="img/1.jpg">

</div>

<div>

<img alt="" src="img/2.jpg">

</div>

<div>

<img alt="" src="img/3.jpg">

</div>

<div>

<img alt="" src="img/4.jpg">

</div>

</div>

<a data-slide="prev" href="#myCarousel">

<a data-slide="next" href="#myCarousel">

</div>

<?php

}(isset($_POST["proj"])){

?>

<div>

<h4>Ввод информации о проектах</h4><br />

<form action="testingIS.php" method="POST">

<div>

<label>

<div>

<input type="text" name="name">

</div>

</div>

<div>

<label>

<div>

<textarea name="description"></textarea>

</div>

</div>

<div>

<label>

<div>

<input type="text" name="date">

</div>

</div>

<div>

<label>

<div>

<select name="activity">

<option value="0">0</option>

<option value="1">1</option>

</select>

</div>

</div>

<input type="submit" value="Добавить" name="save_proj">

</form>

</div>

<?php

}(isset($_POST['bugs'])){

?>

<div>

<h4>Ввод информации о багах </h4><br />

<form action="testingIS.php" method="POST">

<div>

<label>

<div>

<input type="text" name="proj_id">

</div>

</div>

<div>

<label>

<div>

<textarea name="pos_bugs"></textarea>

</div>

</div>

<div>

<label>

<div>

<textarea name="func_bugs"></textarea>

</div>

</div>

<div>

<label>

<div>

<input type="text" name="date">

</div>

</div>

<div>

<label>

<div>

<select name="importance">

<option value="grey">

<option value="green">

<option value="yellow">

<option value="red">

</select>

</div>

</div>

<div>

<label>

<div>

<input type="text" name="admin_id">

</div>

</div>

<input type="submit" value="Добавить" name="save_bugs">

</form>

<?php

}(isset($_POST['admin'])){

?>

<div>

<h4>Вывод информации о правках админа </h4> <br />

<form method="POST" action="testingIS.php">

<div>

<label>

<div>

<select name="admin">

<?php

$q="SELECT id FROM admins";

$result=mysql_query($q);($row = mysql_fetch_assoc($result)){"<option value=\"".$row['id']."\">".$row['id']."</option>";

}

?>

</select>

</div>

</div>

<input type="submit" name="admin_work" value="Узнать">

</form>

</div>

<?php

}(isset($_POST['info'])){

?>

<div>

<h4>Сведения о проекте </h4><br />

<form method="POST" action="testingIS.php">

<div>

<label>

<div>

<select name="project">

<?php

$q="SELECT id FROM projects";

$result=mysql_query($q);($row = mysql_fetch_assoc($result)){"<option value=\"".$row['id']."\">".$row['id']."</option>";

}

?>

</select>

</div>

</div>

<input type="submit" name="proj_info" value="Узнать">

</form>

</div>

<?php

}

?>

</div>

</body>

</html>

<?php

$projects_fields=array("name", "description", "date", "activity");

$bugs_fields = array("project_id","pos_bugs","func_bugs", "date", "importance", "admin_id");

function insertIntoDB($table_name,$fields, $values){

for($i=0; $i<count($values);$i++){

$values[$i]=mysql_real_escape_string($values[$i]);

}

$q="INSERT INTO ".$table_name." (";($i=0; $i<count($fields)-1; $i++){

$q.=$fields[$i].", ";

}

$q.=$fields[count($fields)-1].") VALUES (";($i=0; $i<count($values)-1; $i++){

$q.="'".$values[$i]."', ";

}

$q.="'".$values[count($values)-1]."')";

//var_dump($q);$q;

}(isset($_POST['save_proj'])){

$data=array($_POST['name'],$_POST['description'],$_POST['date'],$_POST['activity']);

//преобразование даты из d-m-y в mysql YYYY MM DD

$data[2]=explode(".", $data[2]);

$d=$data[2][0];//сохраняем день

$data[2][0]=$data[2][1]; //меняем день и месяц

$data[2][1]=$d;

$data[2]=implode("/", $data[2]); //сохраняем в американском формате

$tmp_date = date_create($data[2]); //создаем дату

$data[2] = date_format($tmp_date,'Y.m.d'); //меняем формат

//var_dump($data[2]);

//

$query = insertIntoDB("projects",$projects_fields, $data);

$result = mysql_query($query);(!$result) {('Неверный запрос: ' . mysql_error());

}

}(isset($_POST['save_bugs'])){

$data=array($_POST['proj_id'],$_POST['pos_bugs'],$_POST['func_bugs'],$_POST['date'], $_POST['importance'], $_POST['admin_id']);

$data[3]=explode(".", $data[3]);

$d=$data[3][0];//сохраняем день

$data[3][0]=$data[3][1]; //меняем день и месяц

$data[3][1]=$d;

$data[3]=implode("/", $data[3]); //сохраняем в американском формате

$tmp_date = date_create($data[3]); //создаем дату

$data[3] = date_format($tmp_date,'Y.m.d'); //меняем формат

$query = insertIntoDB("bugs",$bugs_fields, $data);

$result = mysql_query($query);(!$result) {('Неверный запрос: ' . mysql_error());

}

}

//вывод изменений которые внес администратор(isset($_POST['admin_work'])){

$admin=mysql_real_escape_string($_POST['admin']);

$query = "SELECT projects.name, bugs.pos_bugs, bugs.func_bugs, bugs.date, bugs.importance FROM `bugs` JOIN projects ON bugs.project_id=projects.id WHERE bugs.admin_id='".$admin."' ORDER BY bugs.date";

$result=mysql_query($query);(!$result) {('Неверный запрос: ' . mysql_error());

}"<table>

$counter=0;($row = mysql_fetch_assoc($result)) {

$counter++;"<tr>";($row as $key => $value) {

echo "<td>".$value."</td>";

}"</tr>";

}"</table>";($counter==0){"Нет данных";

}{

$counter=0;

}

}(isset($_POST['proj_info'])){

$project=mysql_real_escape_string($_POST['project']);

$query = "SELECT projects.name, projects.description, projects.date AS pdate, projects.activity, bugs.pos_bugs, bugs.func_bugs, bugs.date AS bdate, bugs.importance, bugs.admin_id FROM `bugs` JOIN projects ON bugs.project_id=projects.id WHERE projects.id='".$project."' AND bugs.importance='1'";

$result=mysql_query($query);(!$result) {('Неверный запрос: ' . mysql_error());

}"<table>

$counter=0;($row = mysql_fetch_assoc($result)) {

$counter++;"<tr>";($row as $key => $value) {(strpos($key, "date")!=false){

$tmp_date = new DateTime($value);

//echo $tmp_date->format('d m Y');"<td>".$tmp_date->format('d.m.y')."</td>";

}{"<td>".$value."</td>";

}

}"</tr>";

}"</table>";($counter==0){"Нет данных";

}{

$counter=0;

}

}

//Вывод информации по проектам

$query="SELECT name, description, date, activity FROM projects"; //запрос

$result=mysql_query($query);//выполняем запрос к базе(!$result) { //ловим ошибки('Неверный запрос: ' . mysql_error());

}

//вывод таблицей

$counter=0;"<table>

$counter++;"<tr>";($row as $key => $value) {($key=="date"){

$tmp_date = new DateTime($value);

//echo $tmp_date->format('d m Y');"<td>".$tmp_date->format('d.m.y')."</td>";

}{"<td>".$value."</td>";

}

}"</tr>";

}"</table>";($counter==0){"Нет данных";

}{

$counter=0;

}

?>

<script src="js/jquery.js"></script>

<script src="js/bootstrap.min.js"></script>

<script src="js/bootstrap.js"></script>

<script src="js/bootstrap-transition.js"></script>

<script src="js/bootstrap-alert.js"></script>

<script src="js/bootstrap-modal.js"></script>

<script src="js/bootstrap-dropdown.js"></script>

<script src="js/bootstrap-scrollspy.js"></script>

<script src="js/bootstrap-tab.js"></script>

<script src="js/bootstrap-tooltip.js"></script>

<script src="js/bootstrap-popover.js"></script>

<script src="js/bootstrap-button.js"></script>

<script src="js/bootstrap-collapse.js"></script>

<script src="js/bootstrap-carousel.js"></script>

<script src="js/bootstrap-typeahead.js"></script>

Листинг 2. Файл testingIS.php

Похожие работы на - Разработка системы хранения данных о проектах с курсом обучения

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!