Программа Анкетирование на PHP с возможностью создания и редактирования анкет

Автор работы: Пользователь скрыл имя, 26 Июня 2013 в 13:46, дипломная работа

Краткое описание

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

Вложенные файлы: 1 файл

Пояснительная записка.doc

— 923.00 Кб (Скачать файл)
    • информация об опросах располагаться в базе данных;
    • имеется возможность добавлять новые опросы;
    • при необходимости информация об опросах (вопросы, варианты ответов) может быть изменена или удалена с сервера;
    • по итогам анкетирования формируется статистика;
    • присутствует удобный и интуитивно понятный интерфейс.

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

Разработанное программное средство нетребовательно к ресурсам компьютера. Кроме того, оно довольно надежно: все наиболее вероятные ошибки обрабатываются.

Также следует заметить, что разработанное  программное средство экономически целесообразно для внедрения на предприятие: затраченные ресурсы окупаются менее чем через год после начала его эксплуатации.

 

Список использованных источников

  1. ГОСТ 22269-76 СЧМ. Рабочее место оператора. Взаимное расположение элементов рабочего места. Общие эргономические требования.
  2. СанПиН 2.2.2.542-96. Гигиенические требования к видеодисплейным терминалам, персональным электронно-вычислительным машинам и организации работы.
  3. СанПиН 11-16-94. Санитарно-гигиенические нормы допустимой напряженности электростатического поля на рабочих местах.
  4. СанПиН 11-17-94. Санитарные нормы и правила при работе с источниками электромагнитных полей радиочастот.
  5. СНБ 2.04.05-98. Естественное и искусственное освещение.
  6. СНБ 4.02.01-03. Отопление, вентиляция и кондиционирование.
  7. Буч Г. Язык UML : руководство пользователя. – М. : ДНК, 2000.
  8. Вим Дж. Искусство Web-дизайна : самоучитель. – СПб. : Питер, 2002.
  9. Дейтел П. Как программировать для Internet & WWW. – М. : Бином, 2002.
  10. Иванова Г. С. Технология программирования. – М. : МГТУ им. М. Э. Баумана, 2002.
  11. Комолова Н. В. HTML : учебный курс.  – СПб. : Питер, 2007.
  12. Мак-Дональд М., Шпушта М. Microsoft ASP.NET 2.0 с примерами на C# 2005 для профессионалов. – М. : ООО И.Д. Вильямс, 2006.
  13. Орлов С. А. Технология разработки программ. – СПб. : Питер, 2004.
  14. Снежкова И. М. Оформление курсовых и дипломных проектов : методические указания. – Мн. : МГВРК, 2003.
  15. Хомоненко А. Д., Цыганков В. М., Мальцев М. Г. Базы данных : учебник для высших учебных заведений.  – СПб. : Корона-принт, 2003.
  16. Шилдт Г. C# : Учебный курс. – СПб. : Питер, 2003.

 

Приложение А

(обязательное)

Листинг программы

Файл index.php:

<?php

session_start();

include_once './db/connect.php';

//запуск сессии,процесс  логинизации

if(isset($_REQUEST['login']))

{

if(isset($_REQUEST['password'])&&isset($_REQUEST['user']))

{

$log_q=mysql_query("SELECT * FROM users where name='".$_REQUEST['user']."' AND password='".$_REQUEST['password']."'");

$log=mysql_fetch_assoc($log_q);

if(!empty($log))

{

//передача переменных  в сессию

$_SESSION['id']=$log['id'];

$_SESSION['name']=$log['name'];

$_SESSION['logged']=true;

$_SESSION['acc_type']=$log['acc_type'];

$_SESSION['msg_log']='Вы успешно вошли как '.$_SESSION['name'].' <a href="'.$_SERVER['PHP_SELF'].'?do=logout">logout</a>';

}

}

}

//подключение  верхней части страницы,она неизменная

include_once './top.php';

//проверка на вход

if(isset($_SESSION['logged'])):

{

if(isset($_SESSION['acc_type'])&&$_SESSION['acc_type']=='admin'||(isset($_REQUEST['do'])&&$_REQUEST['do']=='edit')):

{

include_once './admin/admin.php';

}

elseif(isset($_SESSION['acc_type'])&&$_SESSION['acc_type']=='user'||(isset($_REQUEST['do'])&&$_REQUEST['do']=='test')):

{

print('Доброе время суток '.$_SESSION['name'].'.<br>');

include_once './public/users.php';

}

endif;

}

//проверка флага регистрации

elseif(isset($_REQUEST['do'])&&$_REQUEST['do']=='reg'):

{

include_once './public/registration/reg.php';

}

else:

{

print('Для прохождения  опросов вам необходимо <a href="./index.php?do=reg">зарегистироваться</a>');

}

endif;

//подключение  нижней части страницы,она тоже  неизменная 

include_once './down.php';

?>

Файл connect.php:

<?php

$server="localhost";

$rootpass="1230123";

$dbname="anketa";

$rootuser="root";

$user="guest";

$pass="devils";

 

function renewtables() {

mysql_query("CREATE TABLE `list` (

`list_id` INTEGER NOT NULL auto_increment,

`name` varchar(60) default NULL,

PRIMARY KEY  (`list_id`)

) DEFAULT CHARSET=UTF8");

mysql_query("CREATE TABLE `answers` (

`answer_id` int(6) NOT NULL auto_increment,

`a_text` varchar(200) default NULL,

`quest_id` int(6) default NULL,

PRIMARY KEY  (`answer_id`)

) DEFAULT CHARSET=UTF8");

mysql_query("CREATE TABLE `questions` (

`quest_id` int(6) NOT NULL auto_increment,

`q_text` varchar(200) default NULL,

`list_id` int(6) default NULL,

PRIMARY KEY  (`quest_id`)

) DEFAULT CHARSET=UTF8");

mysql_query("CREATE TABLE `users` (

`id` int(8) NOT NULL auto_increment,

`name` varchar(16) NOT NULL,

`password` varchar(16) NOT NULL,

`acc_type` varchar(6) NOT NULL default 'user',

PRIMARY KEY  (`id`)

) DEFAULT CHARSET=UTF8");

mysql_query("insert into users (name,password,acc_type)

values ('admin','123','admin')");

}

 

function createnewdb($create,$server,$rootuser,$rootpass,$dbname,$user,$pass) {

if(!mysql_connect($server, $rootuser, $rootpass)) die (mysql_error());

//создаём нового юзера  и базу, делаем доступной для  него на полный доступ

if ($create)

{

mysql_query("CREATE USER $user IDENTIFIED BY '$pass'");

}

mysql_query("CREATE DATABASE $dbname");

mysql_query("GRANT ALL PRIVILEGES ON `$dbname`.* TO '$user' IDENTIFIED BY '$pass' WITH GRANT OPTION");

}

 

if(!mysql_connect($server,  $user,  $pass))

{

createnewdb(true,$server,$rootuser,$rootpass,$dbname,$user,$pass);

mysql_close();

if(!mysql_connect($server,  $user,  $pass)) die (mysql_error());

renewtables();

}

if(!mysql_select_db($dbname))

{

mysql_close();

createnewdb(false,$server,$rootuser,$rootpass,$dbname,$user,$pass);

mysql_close();

if(!mysql_connect($server,  $user,  $pass)) die (mysql_error());

mysql_select_db($dbname) or die (mysql_error());

renewtables();

}

Файл admin.php:

<?php

//проверка на  логинизацию

if(isset($_SESSION['logged'])&&($_SESSION['acc_type']='admin'))

{

print("Доброе  время суток ".$_SESSION['name']."<br>");

//установка соединения  с БД

include_once './db/connect.php';

 

//Удаление опроса

if(isset($_REQUEST['do'])&&$_REQUEST['do']=='delete')

{

$listid=$_REQUEST['list_id'];

$curr=mysql_query("SELECT * FROM list WHERE list_id=".$listid);

$dels=mysql_fetch_row($curr);

mysql_query("DELETE FROM list WHERE list_id=$listid") or die (mysql_error());

//print_r($dels);

if(mysql_query("DROP TABLE `list_".$dels[1]."`"))

{

print("Опрос  ".$dels[1]." успешно удалён<br>");

}

else

{

die(mysql_error());

}

//die(mysql_error());

$ques=mysql_query("SELECT * FROM questions WHERE list_id=".$_REQUEST['list_id']);

while($q=mysql_fetch_row($ques))

{

mysql_query("DELETE FROM answers WHERE quest_id=".$q[0]) or die(mysql_error());

mysql_query("DELETE FROM questions WHERE quest_id=".$q[0]) or die(mysql_error());

}

print("Вы успешно удалили опрос вернитесь на <a href='./'>главную</a><br>");

}

//Создание формы  для изменения опроса

if(isset($_REQUEST['do'])&&$_REQUEST['do']=='change')

{

$list_id=$_REQUEST['list_id'];

 

print("Редактирование  опроса:

<form action='".$_SERVER['PHP_SELF']."' method='post'>");

 

$res=mysql_query("SELECT * FROM list WHERE list_id=$list_id");

$oprosik=mysql_fetch_row($res)

 

print("<input type='hidden' name='oldopros' value='$oprosik[1]'>

<input type='text' name='list_".$_REQUEST['list_id']."' value='$oprosik[1]'>:");

 

$ques=mysql_query("SELECT * FROM questions WHERE list_id=".$_REQUEST['list_id']);

while($q=mysql_fetch_row($ques))

{

print("<br>Вопрос  №$q[0]:<textarea name='q_$q[0]'>$q[1]</textarea>");

 

$q_res=mysql_query("SELECT * FROM answers WHERE quest_id=".$q[0]);

 

print("Ответы :");

 

while($a=mysql_fetch_row($q_res))

{

print("<input type='text' name='a_$a[0]' value='$a[1]'>");

}

}

print("<br><input type='submit' name='edit' value='Изменить'></form>");

}

 

//внесение изменение  в таблицы

if(isset($_REQUEST['edit']))

{

$a=$_REQUEST;

$old=$_REQUEST['oldopros'];

mysql_query("DROP TABLE `list_".$old."`") or die(mysql_error());

 

foreach($a as $k=>$v)

{

$key=explode('_',$k);

if($key[0]=='list'):

{

$opros=$v;

$oprid=$key[1];

}

elseif($key[0]=='q'):

{

$ques[]=$v;

$qid[]=$key[1];

}

elseif($key[0]=='a'):

{

$answ[]=$v;

$aid[]=$key[1];

}

endif;

}

//изменение  таблицы опросов

//$ques=mysql_query("SELECT * FROM questions WHERE list_id=".$oprid);

mysql_query("UPDATE list SET name='".$opros."' WHERE list_id=".$oprid) or die(mysql_error());

//изменение  таблицы вопросов

for($i=0;$i<count($ques);$i++)

{

mysql_query("UPDATE questions SET q_text='".$ques[$i]."' WHERE quest_id=".$qid[$i]) or die(mysql_error());

}

//изменение  таблицы ответов

for($i=0;$i<count($ques);$i++)

{

mysql_query("UPDATE answers SET a_text='".$answ[$i]."' WHERE answer_id=".$aid[$i]) or die(mysql_error());

}

//создания новой  таблицы опросов

$sql="CREATE TABLE `list_$opros` ( `id` INT(3) primary key auto_increment, `users` INT(6)";

for($i=0;$i<count($ques);$i++)

{

$sql=$sql.", `$ques[$i]` TEXT(200)  NOT NULL";

}

$sql=$sql." )";

echo $sql;

if(mysql_query($sql))

{

print("Вы успешно обновили опрос- $opros");

}

else

{

die(mysql_error());

}

}

 

//Вывод списка  опросов

if (!isset($_REQUEST['add'])&&!isset($_REQUEST['list'])&&!isset($_REQUEST['create']))

{

print("Список всех опросов:<br>");

$o=mysql_query("SELECT * FROM list");

while($res=mysql_fetch_row($o))

{

print("$res[1] <a href='".$_SERVER['PHP_SELF']."?do=delete&list_id=".$res[0]."'>Удалить</a>

<a href='".$_SERVER['PHP_SELF']."?do=change&list_id=".$res[0]."'>Редактировать</a><br>");

}

 

//Вывод статистики для всех опросов

print("Статистики по всем опросам:<br>");

$o=mysql_query("SELECT * FROM list");

while($res=mysql_fetch_row($o))

{

print("Опрос  ".$res[1].":<br>");

//$sql="SELECT * FROM questions WHERE list_id=".$res[0];

$ques=mysql_query("SELECT * FROM questions WHERE list_id=".$res[0]) or die(mysql_error());

while($q=mysql_fetch_row($ques))

{

print("На вопрос -".$q[1]." отвечали следующим образом :");

$ans=mysql_query("SELECT ".$q[1]." FROM list_".$res[1]) or die(mysql_error());

while($a=mysql_fetch_row($ans))

{

$result=mysql_query("SELECT * FROM list_".$res[1]." WHERE ".$q[1]."='".$a[0]."'") or die(mysql_error());

$count=mysql_num_rows($result);

Информация о работе Программа Анкетирование на PHP с возможностью создания и редактирования анкет