Логіко-функціональна схема роботи системи

Далі наводиться загальний вигляд (рис. 5.3) логіко-функціональної схеми роботи системи.

Логіко-функціональна схема роботи системи тестування

Рис. 5.3 Логіко-функціональна схема роботи системи тестування

Як видно зі схеми робота в системі чітко поділена за повноваженнями і не дає можливості до втручання в роботу будь-кого, хто не вповноважений до проведення або проходження тестування, а також перегляду статистичних даних чи коригування списку користувачів.

Розробка алгоритмів та програмна реалізація основних процедур системи

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

Алгоритми, що потребують окремого опису будуть надані в наступній послідовності (згідно з планом розробки): процедура авторизації в системі, процедура завершення роботи з системою, базові процедури роботи з користувачами системи, процедури роботи з генерації тестових запитань.

Процедура авторизації:

<?php

session_start();# початок роботи в системі

if($_SESSION['user_id']){ # якщо користувач зареєстрований, то вінheader("Location: index.php"); # переходить до своєї сторінки

exit;

}

if ( $_POST['login'] && $_POST['pass'] ) {

# за наявності заповнених полів форми з'єднатися з базою даних

mysql_connect("localhost","root","");

mysql_query("SET character_set_client = cp1251");

mysql_query("SET character_set_connection = cp1251");

mysql_query("SET character_set_results = cp1251");

mysql_select_db("tests");

#запит щодо наявності користувача в базі та збереження результату

#на період дії сесії (потрібно для роботи з багато-сторінковим

# інтерфейсом)

@$result = mysql_query("SELECT id,name from users where login='".$_POST['login']."' and pass='".$_POST['pass']."'");

@$user_id = mysql_result($result,0,"id");

@$user_name = mysql_result($result,0,"name");

if($user_id){

$_SESSION['user_id'] = $user_id;

$_SESSION['user_name'] = $user_name;

header("Location: index.php");

exit;

}else{

$msg="Логин или пароль заданы неверно!";

}

}

?>

Наведена процедура дозволяє користувачам системи, після реєстрації, знаходитись певний час в робочому просторі, не потребуючи при цьому повторного вводу реєстраційнах даних при переходах між різними сторінками системи.

Важливим елементом системи є й обов'язкова процедура завершення роботи:

<?php

session_start();

session_destroy();

header("location: index.php");

exit();

?>

Базові процедури роботи з користувачами системи тестування:

# додання користувача у базу

if ($_REQUEST['do'] == "add_user") {

if ($_REQUEST['name'] && $_REQUEST['tabnum']) {

mysql_query("INSERT into users set name='$_REQUEST[name]', tabnum='$_REQUEST[tabnum]', date=NOW()");

header("Location: users.php");

exit();

}

}

# генерація пари «логін-пароль»

if ($_REQUEST['gen']) {

$chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";

$loginmax=6;

$passmax=12;

$size=StrLen($chars)-1;

$setlogin = null;

$setpass = null;

while($loginmax--) $setlogin.=$chars[rand(0,$size)];

while($passmax--) $setpass.=$chars[rand(0,$size)];

mysql_query("UPDATE users set login='$setlogin', pass='$setpass', testid='$_REQUEST[testid]' where id='$_REQUEST[gen]'");

header("Location: users.php");

exit();

}

Процедури генерації тестових завдань:

if($_REQUEST['do'] == 'add_test'){

if($_REQUEST['testname']){

mysql_query("INSERT INTO tests SET testname='".$_REQUEST['testname']."', cnt='".$_REQUEST['cnt']."', done='".$_REQUEST['done']."'");

$test_id = mysql_insert_id();

if($test_id){

#тест добавлен

header("location: generator.php");

exit();

}else{

#тест не добавлен

}

}else{

}

}elseif($_REQUEST['do'] == 'add_quest'){

if($_REQUEST['testid'] && $_REQUEST['quest']){

mysql_query("INSERT INTO questions SET testid='".$_REQUEST['testid']."', quest='".$_REQUEST['quest']."'");

$qwid = mysql_insert_id();

if($qwid){

#вопрос добавлен

$_SESSION['view_last_test'] = $_REQUEST['testid'];

header("location: generator.php");

exit();

}else{

#вопрос не добавлен

}

}else{

#не задан тест айди или имя вопроса

}

}elseif($_REQUEST['do'] == 'add_ans'){

if($_REQUEST['qwid'] && $_REQUEST['ans']){

mysql_query("INSERT INTO answers SET qwid='".$_REQUEST['qwid']."', `right`=0, ans='".$_REQUEST['ans']."'");

$ansid = mysql_insert_id();

#ответ добавлен

$_SESSION['view_last_quest'] = $_REQUEST['qwid'];

$_SESSION['view_last_test'] = $_REQUEST['last_test'];

header("location: generator.php");

exit();

}else{

#не задан вопрос найди или имя ответа

}

}

Більш докладно усі процедури наведені в додатку.

 
< Пред   СОДЕРЖАНИЕ   Загрузить   След >