- •Содержание
- •Введение
- •1 Теоретическая часть
- •Постановка задачи
- •1.2 Анализ предметной области
- •Требования к программному продукту
- •1.4. Средства реализации
- •1.5. Сравнительный анализ имеющихся средств
- •1.6. Критерии выбора
- •1.7. Выбор инструментальных средств
- •2 Практическая часть.
- •2.1 Моделирование предметной области
- •2.2 Технология создания программного продукта
- •2.3. Техническая реализация программного продукта, алгоритмы и коды
- •2.4. Внедрение и апробация программного продукта
- •2.5. Перспективы развития
- •3 Охрана труда
- •4 Инструкция пользователя
- •5 Организационно-экономическая часть
- •5.1 Расчёт затрат на внедрение ресурса
- •5.1.1 Расчёт себестоимости ресурса
- •5.1.2 Расчёт статьи «Материалы и комплектующие изделия»
- •5.1.3 Расчёт фонда заработной платы
- •5.1.4 Расчёт затрат на содержание и эксплуатацию оборудования
- •5.1.5 Расчёт накладных расходов
- •5.2 Экономическая эффективность разработки
- •Заключение
- •Список использованных источников (литературы)
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
Список использованных источников (литературы)
Wikipedia [Электронный ресурс]: Объектно ориентированное программирование - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование.
Wikipedia [Электронный ресурс]: Прототипное программирование - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Прототипное_программирование.
Wikipedia [Электронный ресурс]: Язык программирования PHP - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/PHP.
Wikipedia [Электронный ресурс]: Язык программирования JavaScript - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/JavaScript.
Wikipedia [Электронный ресурс]: Система управления базами данных PostgreSQL - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/PostgreSQL.
Wikipedia [Электронный ресурс]: Система управления базами данных MySQL - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/MySQL.
Wikipedia [Электронный ресурс]: Язык программирования Си-шарп - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/C#.
Wikipedia [Электронный ресурс]: Визуальное моделирования Microsoft Visio - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/Microsoft_Visio.
Wikipedia [Электронный ресурс]: Методология SADT - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/SADT.
Wikipedia [Электронный ресурс]: Стандарт функционального моделирования IDEF0 - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/IDEF0.
Wikipedia [Электронный ресурс]: Архитектура приложения Model View Controller - Режим доступа: www. URL: http://ru.wikipedia.org/wiki/MVC.
Zend Framework справочник [Электронный ресурс]: Класс Zend_Application - Режим доступа: www. URL: http://framework.zend.com/manual/ru/zend.application.html.
Zend Framework справочник [Электронный ресурс]: Маршрутизация и Zend_Router - Режим доступа: www. URL: http://framework.zend.com/manual/en/zend.controller.router.html.
Викрам В. Zend Framework. Разработка веб-приложений на
PHP (Zend Framework: A Beginner's Guide), 2011.
Мэтт З. PHP. Объекты, шаблоны и методики программирования (PHP: Objects, Patterns, and Practice), 2011
Приложение а
Приложение б
Приложение в
<?php
class ManageController extends Zend_Controller_Action
{
public function init()
{
if ($this->_request->isXmlHttpRequest()) {
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender(TRUE);
}
}
public function indexAction()
{
$this->_helper->redirector('constructor', 'manage');
}
public function deleteAction()
{
$request = $this->_request->getParams();
if ($this->_request->isXmlHttpRequest()) {
$error = false;
try
{
$test = new Models_DbTable_Tests();
$answers = new Models_DbTable_Answers();
$quests = new Models_DbTable_Questions();
$test->deleteData(array('uid = ?' => $request['id']));
$answers->deleteData(array('tid = ?' => $request['id']));
$quests->deleteData(array('pid = ?' => $request['id']));
} catch (Exception $e)
{
print Zend_Json::encode(array('alert-error', $e->getMessage()));
$error = true;
}
if (!$error) print Zend_Json::encode(array('alert-success', 'Тест удален'));
}
}
public function editAction()
{
$request = $this->_request->getParams();
$answers = new Models_DbTable_Answers();
$test = new Models_DbTable_Tests();
$quests = new Models_DbTable_Questions();
if (!empty($request['id'])) {
$this->view->edit = true;
$tests = $test->fetchRow($test->select()->where('id = ?', $request['id']));
$this->view->id = $request['id'];
$this->view->name = $tests->name;
$this->view->uid = $tests->uid;
$this->view->time = (int)$tests->time;
$this->view->description = $tests->description;
$questions = $quests->fetchAll($quests->select()->where('pid = ?', $tests->uid));
$this->view->questions = $questions;
$answers_view = $answers->fetchAll($answers->select()->where('tid = ?', $tests->uid));
$this->view->answers = $answers_view;
if ($this->_request->isXmlHttpRequest()) {
$data = new Models_Constructor();
$data = $data->unArray($request['storage']);
$error = false;
try {
for ($i = 0; $i < sizeof($data[0]); $i++)
{
$test_uid = $data[0][$i]['uid'];
$test->updateData($data[0][$i], 'uid = ?', $test_uid);
}
for ($i = 0; $i < sizeof($data[1]); $i++)
{
$quests->updateData($data[1][$i], array('pid = ?' => $data[1][$i]['pid'], 'qid = ?' => $data[1][$i]['qid']));
}
$answers->deleteData(array('tid = ?' => $test_uid));
for ($i = 0; $i < sizeof($data[2]); $i++)
{
$answers->insertData($data[2][$i]);
}
} catch (Exception $e) {
print Zend_Json::encode(array('alert-error', $e->getMessage()));
$error = true;
}
if (!$error) print Zend_Json::encode(array('alert-success', 'Сохранено'));
}
} else {
if ($this->getRequest()->isPost()) {
$q = $test->fetchAll($test->select()->where('name LIKE ?', '%' . $request['query'] . '%'));
$this->view->query = $request['query'];
} else {
$q = $test->fetchAll();
$this->view->query = '';
}
$this->view->questions = $q;
}
}
public function rollAction()
{
$tests = new Models_DbTable_Tests();
$request = $this->_request->getParams();
if ($this->getRequest()->isPost()) {
$q = $tests->fetchAll($tests->select()->where('name LIKE ?', '%' . $request['query'] . '%'));
$this->view->query = $request['query'];
} else {
$q = $tests->fetchAll();
$this->view->query = '';
}
$this->view->questions = $q;
}
public function importAction()
{
$request = $this->getRequest();
$form = new Forms_import();
$this->view->form = $form;
$answers = new Models_DbTable_Answers();
$test = new Models_DbTable_Tests();
$quests = new Models_DbTable_Questions();
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
$file = $form->data->getFileInfo();
$ext = split("[/\\.]", $file['data']['name']);
$newName = 'newname.' . $ext[count($ext) - 1];
$form->data->addFilter('Rename', realpath(dirname('.')) .
DIRECTORY_SEPARATOR .
'upload' .
DIRECTORY_SEPARATOR .
$newName);
$text = new Models_Import();
$form->data->receive();
$data = explode(';', $text->docx2text('upload/' . $newName));
$i = 0;
foreach ($data as $index => $value) {
if ($index == 0) {
$array[0]['settings']['uid'] = substr(md5($value), 0, 5);
$array[0]['settings']['name'] = $value;
$array[0]['settings']['time'] = 60;
$array[0]['settings']['description'] = $value;
continue;
}
if ($value{0} == '=') {
$array[0]['questions'][$i]['question'] = substr($value, 1);
$array[0]['questions'][$i]['type'] = 'radio';
$array[0]['questions'][$i]['level'] = 1;
$i++;
$a = 0;
continue;
}
if ($index == sizeof($data) - 1) {
continue;
}
$array[0]['questions'][$i - 1]['answers'][$a]['value1'] = 'false';
$array[0]['questions'][$i - 1]['answers'][$a]['value2'] = $value;
$a++;
}
$con = new Models_Constructor();
$con = $con->unArray($array);
$error = false;
try {
for ($i = 0; $i < sizeof($con[0]); $i++)
{
$test->insertData($con[0][$i]);
}
for ($i = 0; $i < sizeof($con[1]); $i++)
{
$quests->insertData($con[1][$i]);
}
for ($i = 0; $i < sizeof($con[2]); $i++)
{
$answers->insertData($con[2][$i]);
}
} catch (Exception $e) {
print '<script>alert(' . $e->getMessage() . ')</script>';
$error = true;
}
if (!$error) {
print '<script>alert("Упешно импортированно")</script>';
}
unlink('upload/' . $newName);
}
}
}
public function reportAction()
{
$test = new Models_DbTable_Tests();
$answers = new Models_DbTable_Answers();
$quests = new Models_DbTable_Questions();
$request = $this->_request->getParams();
if ($this->getRequest()->isPost()) {
$q = $test->fetchAll($test->select()->where('name LIKE ?', '%' . $request['query'] . '%'));
$this->view->query = $request['query'];
} else {
$q = $test->fetchAll();
$this->view->query = '';
}
$this->view->questions = $q;
$w = new Models_Word("temp.docx", '/../template/');
$num = 1;
foreach ($test->fetchAll() as $t) {
if ($t->id == $request['id']) {
$w->assign($t->name);
$w->assign($t->description);
$pid = $t->uid;
}
}
foreach ($quests->fetchAll() as $q) {
if ($q->pid == $pid) {
$w->assign(($num++) . '). ' . $q->question);
foreach ($answers->fetchAll() as $a) {
if (($a->tid == $pid) and ($a->qid == $q->qid)) {
$w->assign(' - ' . $a->value2);
}
}
}
}
$w->create();
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$file = ("temp.docx");
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: " . filesize($file));
header("Content-Disposition: attachment; filename=Тестирование" . $select . ".docx");
readfile("temp.docx");
}
}
public function constructorAction()
{
if ($this->_request->isXmlHttpRequest()) {
$answers = new Models_DbTable_Answers();
$test = new Models_DbTable_Tests();
$quests = new Models_DbTable_Questions();
$request = $this->_request->getParams();
$data = new Models_Constructor();
try {
$data = $data->unArray($request['storage']);
} catch (Exception $e) {
print Zend_Json::encode(array('alert-error', $e->getMessage()));
$error = true;
}
$error = false;
try {
if(is_array($data))
{
for ($i = 0; $i < sizeof($data[0]); $i++)
{
$test->insertData($data[0][$i]);
}
for ($i = 0; $i < sizeof($data[1]); $i++)
{
$quests->insertData($data[1][$i]);
}
for ($i = 0; $i < sizeof($data[2]); $i++)
{
$answers->insertData($data[2][$i]);
}
}
} catch (Exception $e) {
print Zend_Json::encode(array('alert-error', $e->getMessage()));
$error = true;
}
if (!$error && is_array($data)) print Zend_Json::encode(array('alert-success', 'Сохранено'));
}
$form = new Forms_Constructor();
$this->view->form = $form;
}
}
