Web-базирана тестова система



страница5/5
Дата14.01.2018
Размер0.69 Mb.
#46633
1   2   3   4   5

PHP


Последната технология от страната на сървъра е PHP технологията. PHP е разработен през 1994 го-дина от Размус Лердорф с цел да проследи кои потребители са разглеждали неговото online резюме, а през следващата година е разпространен под име-то Personal Home Page Tools. По-късно същата го-дина, продуктът е пренаписан и комбиниран с

HTML Form Interpreter и представен под името PHP/FI Version 2. Популярността му рязко нараства и около средата на 1997 г. PHP престава да бъде персонален проект на Размус Лердорф и се превръща във важна web-технология. Синтактичният анализатор и пренаписан изцяло от Зийв Сураски и Анди Гутманс и през юни 1998 г. е представен под името PHP 3. В момента съществува версиите PHP 4 и PHP 5.

Начинът на работа на PHP е подобен на този на JSP и ASP: секциите със скриптове са заградени с таговете и са вградени в HTML страница. Тези скриптове се изпълняват на сървъра преди страницата да се изпрати към браузъра, така че поддръжката на PHP страници не зависи от браузъра. За разлика от ASP, PHP е независим от платформата и има различни версии за Windows, Unix и Linux и за много web-сървъри, включително Apache и IIS. Основната причина за това е, че този продукт е безплатен и е с отворен код. PHP има достъп до LDAP, IMAP, Oracle, Informix, DB2, XML, WDDX функции, файловата система и други.


3.5 Предимства на обработката от страната на сървъра

Обработката от страната на сървъра и генерирането на web-страници предлага много предимства пред технологиите, базирани само на клиентската част, между които:



  • Минимизира мрежовия трафик, като ограничава необходимостта браузъра и сървъра да си обменят информация.

  • Намалява времето за зареждане, тъй като се зарежда само HTML страница.

  • Избягват се проблемите със съвместимостта с браузъра.

  • На клиента могат да бъдат предоставени данни, които не са разположени в клиентската част.

  • Предоставя повишена защита, тъй като можем да кодираме неща, които браузърът никога няма да може да види.


4. Предимства и недостатъци на MySQL

Основните предимства на MySQL са:


  • Подходящ е за Web-приложения.

  • Поддържа стандартите ANSI SQL’92 и ODBC ниво 0-2.

  • Сървърът mysqld може да генерира съобщения за грешки на следните езици: чешки, холандски,

  • английски, естонски, френски, немски, унгарски, италиански, норвежки, полски, португалски и

  • шведски. За данни и сортиране MySQL използва, по подразбиране, стандартния набор от символи ISO-8859-1 (Latin 1), като той може да бъде променян при компилиране на кода.

  • Приложенията на MySQL база данни могат да бъдат написани на много езици за програмиране, например на C, Perl, PHP и други.

  • MySQL съхранява всяка таблица като отделен файл в директорията за базата данни. Максималният размер на една таблица може да бъде от 4 GB до максималния размер на файл, поддържан от използваната операционна система.

  • Той е бърз, мощен и е лесен за управление.

  • За разлика от продуктите Oracle, Sybase, Informix и MS SQL Server, които са скъпоструващи СУРБД (Системи за Управление на Релационни Бази Данни), MySQL е напълно безплатен.

  • MySQL е с отворен код, затова той се подобрява непрекъснато.

Освен предимства, MySQL има няколко недостатъка. Те са:

  • Не поддържа транзакции, съхранени процедури, тригери, цялост на препратките, чужди ключове, обединения, подзапитвания и изгледи.

  • Не е подходящ за много големи приложения.



ОПИСАНИЕ НА СИСТЕМАТА


  1. Хардуерна конфигурация.

Дипломната работа е тествана върху следната хардуерна конфигурация:

-Mainboard –P6IPAT

-CPU –Celeron 1.2GHz

-RAM –PC133 256MB

-кутия –ATX Midi tower

-HDD –MAXTOR 6L020J1 -20GB/7200rpm

-FDD -1.44MB, 3.5’’, TEAC

-CD-RW –LG 48x16x48x

-DVD/CD-RW –LG 52x32x52x, 16x DVD

-Keyboard BTC, PS2

-Mouse Logitech S61, OEM, PS2, 3but, scroll

-17’’ AOC 7Klr+, 95Hz, 160Hz

-видеокарта –NVIDIA GeForce4 MX440, TVout, 64MB

-audio –AC’97 Audio

-колони –SPK327A, 120W

-printer –EPSON Stylus C20UX, 4clr/720dpi/6.5ppm/A4, USB

-scanner –FlatbedScanner_23, USB
2. Софтуер за разработка на системата.

За разработването на приложението – “Web-base system for tests on IP” се използва следния софтуер:

-Операционна система –Microsoft Windows XP Proffessional (NT 5.1)

-Microsoft Office XP – Microsoft Word XP

-пакета XAMPP 1.4.5 for Win32, който включва:

-Apache 2.0.50 (web server)

-MySQL 4.0.20 (server and client for database)

-PHP 5.0.0 + PHP 4.3.8 + PEAR

-PHP-Switch win32 1.0

-mod_php 4.3.7

-MiniPerl 5.8.3

-SQLite 3.0.1

-PHPMyAdmin 2.5.7 pl1

-ADODB 4.21

-Mercury Mail Transport System for Win32 and NetWare Systems v4.01a

-FileZilla FTP Server 0.9.1

-Weblizer 2.01-10

-Zend Optimizer 2.5.3

-web browser –Internet Explorer 6.0, Opera 6.03 или Netscape

-MySQL GUI –SQLyog v4.05

Dev-PHP v1.7.0 –текстов редактор със синтактично оцветяване на езика PHP.
3. Изследване на базата данни IP.

За да се изследва тази база от данни се използва формалната терминология от теорията на базите данни. Ето и няколко дефиниции.



Дефиниция 1: Домейн се нарича произволно множество от неделими (атомарни, неразложими) стойности.

Дефиниция 2: Крайно множество от имена на атрибути {A1, A2, …,An} се нарича релационна схема R(A1, A2, …,An).

Дефиниция 3: Броят на атрибутите n се нарича степен на отношението r.

Нека D1, D2, …,Dn са n домейна и R(A1, A2,, …An) е релационна схема, като



Di =dom(Ai), i=1, 2, …,n

Дефиниция 4: Отношение r се нарича произволно подмножество на декартовото произведение на домейните D1, D2, …,Dn .

Декартовото произведение D1 x D2 xx Dn включва всички възможни комбинации от стойности, принадлежащи на домейните. Те са общо |D1| * |D2| * … *|Dn|, където |Di| е мощността на i-ти домейн. Всеки елемент tr представлява наредена n-торка от стойности 1 , v2 ,…,vn>.



Дефиниция 5: Кортеж t се нарича наредена n-торка от стойности

1 , v2 ,…,vn>.

Дефиниция 6: Броят m на кортежите се нарича мощност на отношението r.

Дефиниция 7: Суперключ (superkey) SK на релационната схема

R(A1 ,A2 ,…,An) се нарича произволно подмножество {B1 ,B2 ,…, Bk} на множеството от атрибути {A1 ,A2 ,…, An}, такова, че за всяка двойка различни кортежи ti=tj от отношението r, стойностите на атрибутите от множеството SK са различни, т.е. ti [SK] tj [SK].

Дефиниция 8: Минималният суперключ на релационната схема

R(A1 ,A2 ,…,An) се нарича ключ (key).

Дефиниция 9: Множеството FK от атрибути на релационната схема R1 е чужд ключ (foreign key) за R1, ако удовлетворява следните условия:

  1. атрибутите от множеството FK имат едни и същи домейни, както атрибутите от множеството PK на релационната схема R2 .

  2. за всеки кортеж t1 от отношението r1 е в сила едно от следните условия:

  • t1 [FK] =t2 [PK], където t2 r2;

  • t1[FK]=null.

За съхраняването на въпросите, отговорите, резултатите от генерираните тестове се използва базата данни IP, като се използва MySQL. Тази база се състои от 4 отношения(релации) –questions, answers, tests, results. Базата IP се създава със SQL заявката:



create database ip

Отношението questions се състои от два атрибута:

-Numberq –целочислен тип. Този атрибут е за номера на въпроса;

-Question –текстов тип. Той е за съхраняване на самия въпрос.

Тази таблица се създава със SQL запитването:

create table questions(

Numberq int(11) not null auto_increment,

Question text not null,

primary key(Numberq))type=MyISAM

В нея има един първичен ключ – атрибута Numberq.

Тази таблица съдържа 14 кортежа. Всеки запис съдържа по един въпрос и неговия номер.

Следващото отношение в базата IP е answers. Тя се състои от 4 атрибута:

-Numberq –целочислен. Той е за съхраняване на номера на въпроса;

-Numbera –целочислен тип. В него се съхранява номера на отговора на съответния въпрос;

-Answer –текстов тип. Той съдържа самия отговор;

-Loyalty –низов тип. В този атрибут се запазва вяр-ността на определен отговор на съответните въпроси. Като с маркера “+” се означава, че отговора е верен, а с “-” –грешен. Тази таблица се създава със следната заявка:



create table answers(

Numberq int(11) not null default ‘0’,

Numbera int(11) not null default ‘0’,

Answer text not null,

Loyalty varchar(5) not null default ‘-‘,

primary key(Numberq, Numbera))type=MyISAM

Тази релация има 230 кортежа, като:

-Въпрос 1 – 12 кортежа(отговора)

-Въпрос 2 – 20 кортежа(отговора)

-Въпрос 3 – 20 кортежа(отговора)

-Въпрос 4 – 15 кортежа(отговора)

-Въпрос 5 – 20 кортежа(отговора)

-Въпрос 6 – 19 кортежа(отговора)

-Въпрос 7 – 18 кортежа(отговора)

-Въпрос 8 – 14 кортежа(отговора)

-Въпрос 9 – 20 кортежа(отговора)

-Въпрос 10 – 14 кортежа(отговора)

-Въпрос 11 – 15 кортежа(отговора)

-Въпрос 12 – 20 кортежа(отговора)

-Въпрос 13 – 9 кортежа(отговора)

-Въпрос 14 – 14 кортежа(отговора)

За всеки отговор на въпросите има един от двата маркера –“+” или “-” в атрибута Loyalty. В тази таблица се съхранява отговорите на въпросите и техните вярности. Първичния ключ в нея е комбинацията от атрибутите Numberq и Numbera.

Третата релация в базата данни IP е tests. Тя има 12 атрибута:

-Qnumber –целочислен тип. В него се съхранява поредния номер на въпроса в eдин генериран тест;

-Numbert –целочислен. Той е за съхраняване на номера на генерирания тест;

-Numberq –целочислен тип. Използва се за номера на въпроса в базата, като цяло;

-от A1 до A4 са за съхраняване на верните решения на въпросите от генерирания тест, като за вярно решение е отбелязано с “+1”, а грешните с “-1”. Тези полета са от целочислен тип.

-от A5 до A8 са съответните решения на студента, когато се провежда теста. Те са също от целочислен тип.

-Points –целочислен тип. В този атрибут се съхранява резултата от теста на съответния въпрос. За посочването на верен отговор се дава 1 точка, докато за посочването на грешен отговор се отнема 1 точка. Когато не се посочи отговор, тогава не се дава точки. За по-голямата част от въпросите, се изисква да се посочи верните и грешните отговори, като за верните се пише “+1”, а за грешните – “-1”. В случай на затруднение, студента може да не посочва отговор, като маркира с “0”, което означава че той не знае дали да посочи отговора за верен или грешен. За останалите въпроси се маркира само с “+1” –за верен отговор или с “0”, когато не знае дали да посочи отговора за верен. Тази таблица се създава със следната SQL заявка:



create table tests(

Qnumber int(5) not null default ‘0’,

Numbert int(5) not null default ‘0’,

Numberq int(5) not null default ‘0’,

A1 int(3) ,

A2 int(3) ,

A3 int(3) ,

A4 int(3) ,

A5 int(3) ,

A6 int(3) ,

A7 int(3) ,

A8 int(3) ,

Points int(3) ,

primary key(Qnumber, Numbert))type=MyISAM

Това отношение има толкова кортежа, колкото са генерирани тестовете. Като за един тест има 12 кортежа. В нея се съхранява верните отговори на генерираните тестове, техните решенията, посочени от студента и резултатите на всеки един въпрос. Първичния ключ в тази таблица са атрибутите Qnumber и Numbert.

Четвъртата релация в базата данни IP е testanswer. Тя има 7 атрибута:

-Qnumber –целочислен тип. В него се съхранява поредния номер на въпроса в един генериран тест;

-Numbert –целочислен. Той е за съхраняване на номера на генерирания тест;

-Numberq –целочислен тип. Използва се за номера на въпроса в базата, като цяло;

-от A до D са за съхранение на номерата на отговорите от съответните въпроси в генерирания тест. Тези атрибути са от целочислен тип.

Първичния ключ в отношението са атрибутите Qnumber и Numbert.

Тази релация се създава със следната SQL заявка:

create table testanswer(

Qnumber int(5) not null default ‘0’,

Numbert int(5) not null default ‘0’,

Numberq int(5) not null default ‘0’,

A int(3) ,

B int(3) ,

C int(3) ,

D int(3) ,

primary key(Qnumber, Numbert))type=MyISAM

Последното отношение в тази база данни е results. Тя има 2 атрибута:

-Numbert –целочислен тип. Той се използва за съхраняване на номера на генерирания тест;

-Sumt –целочислен. Той е за съхранение на сумата от точките на всички въпроси на един генериран тест. Когато тази сума е отрицателна, тогава в атрибута Sumt показва “0”. Тази таблица се създава със следното запитване:



create table results(

Numbert int(5) not null default ‘0’,

Sumt int(5) not null default ‘0’,

primary key(Numbert))type=MyISAM

В същата релация има толкова кортежа, колкото са генерираните тестове. В нея са съхранени общите резултати на всеки тест. Първичния ключ в нея е атрибута Numbert.

Всяка от тези таблици са от тип MyISAM. Те са изключително бързи и много стабилни.

В релационната алгебра съществува операция, наречена съединение. Тя комбинира свързани помежду си кортежи от две отношения в един кортеж.

Характеристиките на операцията “съединение” са:


  1. Операцията е бинарна и комутативна.

  2. В общия случай, ако R има nR кортежа, а S –nS , то резултатното отношение, ще има между нула и nR * nS реда. Ако не се укаже условие за съединение, всички възможни комбинации на кортежи се записват в резултата и съединението става еквивалентно на операцията декартово произведение между две релации.

Общ вид на операцията:

Нека R(A1 , A2 ,…, An) и S(B1 , B2 ,…,Bm) са две релационни схеми, които определят съответни отношения.

R (условие за съединение) S

Резултатът е ново отношение с релационна схема Q, която съдържа m+n атрибута в указания ред: Q(A1 , A2 ,…,An ,B1 , B2 ,…,Bm)

Релационната схема Q съдържа по един кортеж за всяка комбинация от кортежи на R и S, която удовлетворява условието за съединение. То е булев израз.

Отношенията questions и answers са свързани с т.нар.еквисвързване. Типа на връзката е едно към много(1:n). Това означава, че за един въпрос има няколко възможни отговора. Това съединение между тези две релации се създава със следната SQL заявка:



select * from Questions, Answers where ( (Questions.Numberq=qn) and (Answers.Numberq=qn)). Където qn е номера на въпроса.

Общата схема на базата данни IP е следната:




Testanswer

Qnumber

Numbert

Numberq


A

B

C



D


Дефиниция 10: В релационната схема R X функционално определя Y (записва се X→Y) тогава и само тогава, когато за всеки кортеж от произволно отношение rR стойностите на Y се определят еднозначно (в зависимост) от стойностите на X. X→Y определя ограничение върху отношението r.

Първата нормална форма (1NF) забранява множество от стойности, редица от стойности и влагането на релации. Единствените стойности на атрибути, които са позволени от 1NF, са единични, неделими стойности. Атрибутите в отношенията са прости.

Дефиниция 11: Функционалната зависимост X→Y е пълна, ако след премахването на произволен атрибут A от X, тя вече не е в сила.

Дефиниция 12: Функционалната зависимост X→Y е частична, ако съществу-ва атрибут A, такъв, че при премахването му тя да остава в сила, т.е.

AX : {X –{A}}→Y.



Дефиниция 13: Релационната схема R е във втора нормална форма (2NF), ако всеки атрибут, който не участва в главния ключ, е пълно функционално зависим от главния ключ на R.

Дефиниция 14: Функционалната зависимост X→Y се нарича транзитивна, ако съществува подмножество от атрибути Z, което не е подмножество на главния ключ, и са в сила: X→Z и Z→Y.

Дефиниция 15: Релационната схема R е в трета нормална форма (3NF), ако е във 2NF и никой от атрибутите, които не участват в главния ключ, не е транзитивно зависим от него.

Релациите Questions, Answers, Testanswer, Tests и Results в базите данни IP, PDS и OOP са в трета нормална форма (3NF) , защото всички неключови атрибути не са транзитивно зависими от главния главния ключ на съответната релация.


4. Описание на приложението “Web-base system for tests on IP .

Това приложение се използва за създаване на тестове по дисциплината “Увод в програмирането”. “Web-base system for tests on IP” е написано на езика PHP. То се състои от няколко файла. Главната страница на приложението се състои от заглавие с подсказващо съобщение, че трябва да се натисне един от бутоните за достъп до въпросите, девет бутона и девет различни съобщения за функциите на бутоните:

-Add question –прибавяне на въпросите в базата данни;

-Add answer –прибавяне на отговорите на съответния въпрос в базата данни;

-Generate test for paper –генериране на тестовете и техните верни решения за отпечатване на хартия;

-Generate test for screen –генериране на тестовете и техните верни решения също и за online решаване на съответния тест;

-Add the answers for check –прибавяне на решенията на въпросите, посочени от студента за проверка;

-Calculate the results –изчисляване на резултата на всеки един въпрос от тестовете и общият им резултат за съответния тест;

-Show the statistics –показване на статистиката за броя на срещанията на въпросите, броя на верните, грешните и непосочените отговори;

-
Show the result –показване на теста с верните отговори и с посочените от студента решения.(фиг. 1)


фиг. 1

-Import data –автоматично вмъкване на данните от questions.csv и answer.csv в релациите questions и answers.

Първия файл на приложението е globals.php. В него се дефинира:

-връзката с хоста, на който е инсталиран MySQL сървъра. Името на хоста е localhost;

-потребителското име и паролата за достъп до MySQL.

Потребителското име е ieh990, а паролата е webtest;

-името на базата данни –IP ;

-имената на първите две таблици –question, answers и заявките за тяхното създаване.

Файла common1.php се използва за дефиниране на няколко функции:

-GenerateHTMLHeader1 –има един параметър. Това е съобщението на главната страница за достъпа до въпросите и за въвеждането на въпроса заедно с неговия номер. Тази функция се използва за генериране на заглавието на приложението;

-GenerateFrontPage1 –няма параметър. Тя се използва за генериране на шестте бутона на главната страница и списъка със съобщенията за техните функции;

-DisplayErrMsg1 –има един параметър. Това е съобщението за грешка при неуспешното свързване с MySQL, свързването с определената база от данни и неуспешното изпълнение на SQL запитване;

-GenerateHTMLForm1 –има три параметъра. Първия параметър е асоциативния масив $formValues за извеждане на атрибутите на кортежа от релацията questions, втория – $submitLabel –стойността на бутона за изпращане, а третия параметър е скрипт за изпълнение, който се задава чрез променливата $actionScript. Тази функция генерира HTML формата за въвеждане на номера на въпроса, самия въпрос и бутона за изпращането му към базата данни;

-ReturnToMain1 –няма параметър. Тя се използва за създаване на един бутон за връщане към главната страница.

Следващия файл common2.php също се използва за дефиниране на някои функции:

-GenerateHTMLHeader2 –има един параметър. Той се използва за извеждането на съобщението за въвеждане на отговора, на неговия номер, номера на съответния въпрос и верността на отговора. Тази функция генерира заглавието на страницата за въвеждане на отговорите;

-DisplayErrMsg2 –има също един параметър. Използва се за извеждане на съобщението за неуспешното свързване с MySQL сървъра, за избирането на определената база данни и за неуспешното изпълнение на една SQL заявка;

-GenerateHTMLForm2 –има също един параметър. Параметъра $formValues е асоциативен масив за извеж-дане на атрибутите на кортежа от релацията answers, втория параметър – $submitLabel –стойността на бутона за изпращане, а третия – за скрипт за изпълнение, който се задава чрез променливата $actionScript. Тази функция се използва за генериране на формата за въвеждане на номера на въпроса, номера на отговора, самия отговор и неговата вярност. Като за въвеждането на верността се използва падащ списък за избор на един елемент;

-ReturmToMain2 –няма параметър. Тя се използва за създаване на един бутон за връщане към главната страница.

Чрез файла globals1.php се дефинира:

-името на хоста, където е инсталиран MySQL сървъра. В случая е localhost;

-потребителското име и парола. Те са съответно ieh990 и webtest;

-името на базата данни – IP;

-имената на релациите – questions, answers, tests, results. Заявките за създаването на tests и results. В този файл също има заявки за разширението на релацията tests с колоните A5, A6, A7, A8 и Points. Когато връзката с MySQL сървъра не се осъществи, тогава се извежда съобщението за неуспешна връзка с този хост.

Чрез скрипта globals2.php се дефинира:

-името на релацията –testanswer и заявката за нейното създаване.

Главния файл main.php се използва за извикване на различни функции в зависимост от кой бутон е натиснат в главната страница. Ако не е натиснат нито един от шестте бутона, тогава се показва главната страница на приложението. В него се включат следните файлове – common1.php, common2.php, csv.php, test.php, test2.php, result.php, check.php, statistics.php и prevshow.php с функцията require().

Ако е натиснат бутона Add question, тогава се появява формата за въвеждане на въпроса и неговия номер.(фиг.2)




фиг. 2


Ако е натиснат Add answer, тогава се прехвърля към страницата с формата за въвеждане на отговора, неговия номер, номера на въпроса и верността на съответния отговор. За въвеждането на верността се избира маркера “+” или “-“.(фиг.3)



фиг. 3


Когато е натиснат бутона Generate test for paper, тогава се генерира един примерен тест. Този тест има един номер, който е генериран по случаен начин. Ако този номер вече съществува, тогава се извежда съобщението че има тест с този номер и не се вмъква в релациите tests и testanswer. Въпросите също са избрани по случаен начин от базата данни без повторение. Всеки въпрос има четири случайно избрани отговори от релацията с отговорите на съответния номер на въпроса.Те също са без повторение. На края на този тест има един бутон за препращане към една страница, при която има друг бутон за връщане към главната страница на приложението. При генериране на теста, приложението автоматично вмъква верните отговори от случайно избраните решения на въпросите от базата данни.(фиг.4)



фиг. 4


Когато е натиснат бутона Generate test for screen, тогава се генерира един примерен тест. Този тест има един номер, който е генериран по случаен начин. Ако този номер вече съществува, тогава се извежда съобщението че има тест с този номер и не се вмъква в релациите tests и testanswer. Въпросите също са избрани по случаен начин от базата данни без повторение. Всеки въпрос има четири случайно избрани отговори от релацията с отговорите на съответния номер на въпроса.Пред всеки отговор има по едно падащо меню. То се използва за решаване на теста направо от компютъра. Отговорите също са без повторение. На края на този тест има един бутон за препращане към една страница, при която има друг бутон за връщане към главната страница на приложението. При генериране на теста, приложението автоматично вмъква верните отговори от случайно избраните решения на въпросите от базата данни.(фиг.5,1)
фиг. 5,1


При кликването на бутона Add the answers for check се показва формата за въвеждане номера на генерирания тест, поредния номер на въпроса в теста и отговорите с маркерите “+1” – вярно, “-1” – невярно и “0” – поради затруднение дали да посочи отговора за верен или грешен. След попълването на формата се натиска бутона Return, за да се изпратят данните в базата и за да се връща към главната страница.(фиг.5,2)





фиг. 5.2


Ако се натисне бутона Calculate the results, тогава вкараните решения на студента се проверяват с верните отговори. Ако има съвпадение между отговорите, тогава се дава 1 точка, в противен случай се отнема 1 точка. Ако студента маркира отговора с “0”, тогава не се дава точки. След проверката в атрибута Points се записва резултата на съответния въпрос от теста. След записването на резултата на последния въпрос от теста, приложението изчислява общия резултат от въпросите на генерирания тест, след което го записва в атрибута Sumt на релацията results. Като едновременно с това в results се съхранява и номера на теста.(фиг.5,3) (фиг.5,4)



фиг. 5,3


ф
иг. 5,4
Ако се натисне бутона Show the statistics, тогава се появява една таблица със 5 колонки:

-номера на въпроса от базата данни;

-колко пъти се пада съответния въпрос на тестовете;

-броя на верните отговори;

-броя на грешните отговори;

-броя на отговорите, отбелязани с “0”.



На последния ред от релацията показва общия брой въпроси от тестовете, общия брой на верните, грешните и маркираните с “0” отговори. След нея има един бутон за връщане към главната страница на приложението.(фиг.6)



фиг. 6


Ако се натисне бутона Show the result, тогава се появява една форма с едно текстово поле и бутона “SHOW”. След натискането на този бутон се появява една форма за въвеждане на номера на един от генерираните тестове (фиг. 7) и бутон за показване този тест с верните отговори заедно с посочените решения от студента (фиг. 8).

ф
иг. 7

ф
иг. 8

Когато се натисне бутона Import data, тогава данните от questions.csv и answers.csv се вмъкват в релациите questions и answers.

Файла add1.php се използва за въвеждане на въпроса и неговия номер в базата. Ако не са въведени тези тексто-ви полета от формата и натисне бутона ADD QUESTION, тогава се извежда съобщението, че тези полета са празни. При неуспешен опит на свързване, се появява съобщение, че има грешка при свързването с хоста localhost на потребителското име ieh990 и след това скрипта прекратява изпълнението си с помощта на вградената функция exit(). Ако се осъществява свързването, тогава се извиква функцията mysql_select_db, за избор на базата данни. Тя има два параметъра – името на базата данни(задължителен) и идентификатора на връзката(незадължителен), върната от функцията за свързване към MySQL машината. Тя е mysql_pconnect. Тази функция има три параметъра:

-името на хоста, където е инсталиран MySQL сървъра;

-потребителското име и парола за достъп до него.

Ако избора на базата данни завършва с неуспех, тогава се извежда съобщението, че има грешка с избора на ба-зата, както и номера на грешката. След избирането на определената база данни, към сървъра се изпраща заявка за попълване на въпроса към релацията questions. Ако опита завършва с провал, тогава се извежда съобщението, че има грешка в изпълнението на заявката, както и номера на грешката. Ако въпроса е вкаран в базата, тогава се появява съобщението, че въпроса е прибавен успешно. В add1.php се включват globals.php и common1.php.

За да се въведат отговорите, техните номера и вярности, номера на съответния въпрос се използва файла add2.php. Ако не са въведени тези полета от формата и се натисне бутона ADD ANSWER, тогава се извежда съобщението, че те са празни. При неуспех при свързването се появява съобщение, че има грешка при връзката с хоста localhost на потребителското име ieh990 и след това програмата спира своето изпълнение чрез функцията exit(). Свързването става с функцията mysql_pconnect. Ако връзката се осъществи, тогава се извиква вградената функция mysql_select_db за избор на базата данни. При неуспешен опит на тази функция, тогава се извежда съобщението, че има грешка в този избор, както и номера на грешката. След като се избере базата данни, към сървъра се изпраща заявка за попълване на отговора към релацията answers. Ако опита завършва с неуспех, тогава се извежда съобщението, че има грешка в изпълнението на запитването, както и кода на грешката. Ако отговора е вмъкнат в базата данни, тогава се извежда съобщението, че той е прибавен успешно. В add2.php се включват globals1.php и common2.php.

За генериране на тестовете се използва скрипта test.php.

В началото се включва файловете globals1.php и globals2.php, след което се зарежда генератора на случайни Марсенови числа. Това става чрез функцията mt_srand((double) microtime() * 1 000 000). Параметъра на тази функция показва, че генерираните числа са напълно случайни. На променливата $test се присвоява едно случайно избрано число от 1001 до 2000, като се използва функцията mt_rand. Ако този номер вече го има, тогава се извежда съобщението че тест с този номер вече съществува и не се вмъква в релациите tests и testanswer.В test.php се дефинират следните потребителски функции:

-GenerateHTMLHeader3 –няма параметър. Използва се за генериране на заглавието на страницата от приложението;

-GenerateFrontPage3 –няма параметър. Служи за визуализация на номера на генерирания тест;

-DisplayErrMsg3 –има един параметър. Това е съобщението за грешка при неуспешното изпълнение на заявката за вмъкване на поредния номер на въпроса на генерирания тест, номера на теста, номера на въпроса от релацията questions, номера на отговора от релацията answers, техните верни решения, които са отбелязани с маркера “+1” и грешните отговори – с “-1”.

-GenerateHTMLForm3 –има два параметъра:

-$actionScript –скрипт за изпълнение;

-$submitLabel –стойността на бутона за изпращане.

Тази функция използва глобалните променливи:

-$tableName3 –името на релацията, в случая tests;

-$tableName5 –името на релацията, в случая testanswer

-$link –идентификатора на връзката с MySQL сървъра;

-$test –номера на генерирания тест.

В този файл първия for цикъл служи за отпечатване на 12 случайно избрани въпроса с функцията random. В него е вложен друг for цикъл, който се използва за избиране на 4 случайни отговора на съответните въпроси също с функцията random. Отговорите са номерирани с малки латински букви от a до d. След това на всеки отговор се проверява верността от релацията answers. Когато отговора е с вярност “+”, тогава в съответния атрибут от релацията tests се съхранява “+1”, в противен случай – с “-1”. А в релацията testanswer се вмъква съответния номер на отговора от същия тест.

При неуспешен опит на заявката за вмъкване в релациите tests и testanswer се извежда съобщението, че има грешка в изпълнението на това запитване и съответния й код. В края на теста има един бутон за препращане към друга страница, която има друг бутон, който връща потребителя към главната страница на приложението.

За генериране на online тестовете се използва скрипта test2.php.В началото се включва файловете globals1.php и globals2.php, след което се зарежда генератора на случайни Марсенови числа. Това става чрез функцията mt_srand((double) microtime() * 1 000 000). Параметъра на тази функция показва, че генерираните числа са напълно случайни. На променливата $test се присвоява едно случайно избрано число от 1001 до 2000, като се използва функцията mt_rand. Ако този номер вече го има, тогава се извежда съобщението че тест с този номер вече съществува и не се вмъква в релациите tests и testanswer.В test2.php се дефинират следните потребителски функции:

-GenerateHTMLHeader31 –няма параметър. Използва се за генериране на заглавието на страницата от приложението;

-GenerateFrontPage31 –няма параметър. Служи за визуализация на номера на генерирания тест;

-DisplayErrMsg31 –има един параметър. Това е съобще-нието за грешка при неуспешното изпълнение на заявката за вмъкване на поредния номер на кортежа в релациите tests и testanswer, поредния номер на въпроса на генерирания тест, номера на теста, номера на въпроса от релацията questions, номера на отговора от релацията answers, техните верни решения, които са отбелязани с маркера “+1” и грешните отговори – с “-1”.

-GenerateHTMLForm31 –има два параметъра:

-$actionScript. –скрипт за изпълнение;

-$submitLabel –стойността на бутона за изпращане.

Тази функция използва глобалните променливи:

-$tableName3 –името на релацията, в случая tests;

-$tableName5 –името на релацията, в случая testanswer;

-$link –идентификатора на връзката с MySQL сървъра;

-$test –номера на генерирания тест.

В този файл първия for цикъл служи за отпечатване на 12 случайно избрани въпроса с функцията random2. В него е вложен друг for цикъл, който се използва за избиране на 4 случайни отговора на съответните въпроси също с функцията random2. Отговорите са номерирани с малки латински букви от a до d.Пред всеки отговор има по едно падащо меню. То служи за online решаване на генерирания тест. След това на всеки отговор се проверява верността от релацията answers. Когато отговора е с вярност “+”, тогава в съответния атрибут от релацията tests се съхранява “+1”, в противен случай – с “-1”. А номера на отговора на съответните въпроси от същия тест се вмъква в релацията testanswer.

При неуспешен опит на заявката за вмъкване в релациите tests и testanswer се извежда съобщението, че има грешка в изпълнението на това запитване и съответния й код. В края на теста има един бутон за препращане към друга страница, която има друг бутон, който връща потребителя към главната страница на приложението.

Следващия файл на приложението е result.php. В него е включен globals1.php и са дефинирани някои функции:

-GenerateHTMLHeader4 –няма параметри. Тя служи за генерирането на заглавието на тази страница от приложението;

-GenerateFrontPage4 –служи за визуализиране на заглавния текст на тази страница. Функцията няма параметри;

-DisplayErrMsg4 –има един параметър, това е съобщение за грешка;

-GenerateHTMLForm4 –има три параметъра:

-$formValues –асоциативен масив за извеждане на атрибутите на кортежа от релацията tests;

-$actionScript. –скрипта за изпълнение;

-$submitLabel –стойността на бутона за изпращане.

Формата на тази страница се състои от текстови полета за въвеждане на номера на генерирания тест, поредния номер на въпроса в теста и съответните им отговори с маркерите “+1”, “-1” или “0”.

-ReturnToMain4 –без параметри. Служи за визуализиране на бутона за връщане към главната страница.

В скрипта update.php са включени файловете globals1.php и result.php. Служи за въвеждане на отговорите, посочени от студента. Извиква функцията ReturnToMain4(), за да връща потребителя към главната страница.

Следващия файл от това приложение е check.php. В него е включен globals1.php и дефинира една функция. Тя е CalculateToResult, която няма параметри. Служи за изчисляване на резултатите на всеки един от въпросите в теста и общият му резултат. Това изчисление става по следния начин:

Стойността на атрибута A1 се сравнява със стойността на A5. Ако те съвпадат, тогава се дава 1 точка, в противен случай се отнема 1 точка. Ако студента маркира отговора с “0”, тогава не се присъжда точка. Това продължава и за останалите три отговора на съответния въпрос. След изчислението на резултатите на всички въпроси от един тест, те се сумират и се записват в атрибута Sumt на таблицата results на съответния номер на теста. Ако сумата е отрицателна, тогава в Sumt се записва 0 точки.

В return.php се включва скрипта result.php и извиква функцията ReturnToMain4(), за да върне потребителя към главната страница на приложението.

Във файла random.php се използва за дефиниране на една функция. Тя е :

-Random –има два аргумента. Те са съответно минимална и максимална стойност на един интервал. Тази функция генерира масив от случайни числа в този интервал без да повтарят.

Следващия файл от това web приложение е statistics.php. В него е включен globals1.php и дефинира няколко функции:

-GenerateHTMLHeader5 –без параметри. Служи за генериране на заглавието на тази страница;

-GenerateFrontPage5 –също без параметри. Използва се за отпечатване на заглавния текст на страницата със статистиката на въпросите и отговорите от тестовете;

-Statistics –без параметър. Тази функция изчислява:

-колко пъти се падат всеки един от въпросите от базата данни;

-броя на верните отговори;

-броя на грешните отговори;

-броя на отговорите посочени с “0”;

-общия брой на въпросите, които се падат на тестовете; верните, грешните и непосочените отговори.

Освен това тази функция извежда статистиката в табличен вид с 5 колонки.

-ReturnToMain5 –също без параметър. Тя служи за връщане на потребителя към главната страница.

В следващия файл –prevshow.php се дефинира няколко функции:

-GenerateHTML51 –без параметър. Тя се използва за генериране на заглавието на страницата от приложението;

-GenerateFrontPage51 –служи за визуализиране на едно съобщение, подсказващо, че трябва да се въведе номера на теста, който служи за показване на резултата. Тази функция няма параметър.

-DisplayErrMsg51 –има един параметър. Това е съобщението за грешка при неуспешното изпълнение на SQL заявка за вмъкване в релацията testanswer.

-GenerateHTMLForm51 –има три аргумента:

-$formValues –асоциативен масив за извеждане на номера на теста;

-$actionScript –скрипт за изпълнение;

-$submitLabel –стойност на бутона за изпращане.

Тази функция служи за визуализиране на формата за въвеждане на номера на теста, служещ за извеждане на резултата. Тази форма има едно текстово поле и един бутон. В този скрипт са включени globals1.php и globals2.php.

Във файла show.php са дефинирани следните функции:

-GenerateHTMLHeader52 –без параметър. Тя служи за генериране на заглавието на страницата от приложението;

-GenerateFrontPage52 –без параметър. Използва се за визуализиране на номера на вече генериран тест;

-GenerateHTMLForm52 –има два параметъра:

-$actionScript –скрипт за изпълнение;

-$submitLabel –стойност на бутона за изпращане.

Тази функция се използва за визуализиране на резултата на вече генериран тест. В нея първия for цикъл служи за отпечатване на въпроса и неговия номер в теста. Втория for цикъл служи за отпечатване на самия отговор и резултата. В него се включва верния отговор и решението, показано от студента. Във този файл е включен prevshow.php.

Във файла csv.php се дефинират три функции. Те са :

-csv_import1 –има един параметър. Това е името на CSV файла. Тази функция вмъква данните от файла questions.csv в релацията questions. Ако този CSV файл не съществува, тогава скрипта извежда съобщението, че не е намерен. Когато този файл е намерен, тогава всеки ред от него се вмъква на отделни записи на релацията. Стойностите на полетата в CSV файла са разделени със запетая и са оградени с кавички.

-csv_import2 –също има един параметър – името на CSV файла. Тази функция се използва за вмъкване на данните от файла answers.csv в релацията answers.

-ReturnToMain6 –няма параметър. Тази функция служи за генериране на бутона за връщане към главната страница на приложението.

По аналогичен начин се създават и приложенията Web-base system for tests on PDS ” и Web-base system for tests on OOP ” –съответно за създаване на тестовете по дисциплините “Програмиране и структури от данни” и “Обектно-ориентирано програмиране”. Тези приложения използват съответните бази данни –PDS и OOP.



ЗАКЛЮЧЕНИЕ
По време на разработването на дипломната работа е изградена

основната цел – разработването на web-базираното приложение за тестове по програмиране на C++.

В нея са постигнати следните задачи:


  1. Въвеждат се въпросите и отговорите за създаването на теста.

  2. По случаен начин се избират въпроси и отговори за генериране на тестове при зададен брой въпроси и по 4 отговора на всеки въпрос във формат за печат на хартия.

  3. Генерира се тест за online решаване.

  4. Решените тестове се обработват (за хартиените се въвеждат отговорите на студента) и се изчисляват резултатите (точките) на съответния тест.

  5. Визуализира се теста заедно с верните отговори и отговорите, посочени от студента.

  6. Генерира се статистика за резултатите от проведените тестове.

  7. Изградена е система за автоматично въвеждане на въпросите и отговорите чрез CSV файлове.

Резултатът от разработката на тази дипломна работа e автоматичната и бързата проверка на тестовете и резултатите от тях. Разработването на това приложение улеснява преподавателя при създаването и проверката на тестовете, и обработката на получените резултати. По този начин студентите се оценяват по най-обективен начин.

Така разработената програмна система може да се разшири с модули за определяне на някои характеристики на теста, статистическа обработка на резултатите и анализ на въпросите и отговорите на теста. След “кирилизиране”, т.е. създаване на възможност за работа с български език, програмната система би могла да се използва успешно и за тестове на български.


С Ъ Д Ъ Р Ж А Н И Е

стр.

УВОД 3


ГЛАВА ПЪРВА – ТЕСТ 5

1. Определение и вътрешна структура 5

2. Основни положения на дидактическите тестове 5

2.1 Класическа теория на тестовете 6

2.2 Вероятностни теории на тестовете 8

2.3 Основни характеристики 9

3. Типология на дидактическите тестове 12

3.1 Класификации на дидактическите тестове 12

3.2 Видове дидактически тестове 13

4. Типология на въпросите и задачите 16

5. Въпроси и задачи със структуриран отговор 18

5.1 Задачи с алтернативни отговори 19

5.2 Задачи с множествени изборни отговори 19

6. Анализ на въпросите и задачите след изпробването 22

6.1 Анализ на въпросите и задачите от нормативни дидактически тестове 22

6.2 Анализ на въпросите и задачите от критериалните дидактически тестове 24

ГЛАВА ВТОРА– ПРОГРАМИРАНЕ В WEB СРЕДА 26

1. Основна архитектура 26

1.1 Клиент 26

1.2 Сървър 26

1.3 Операционна система 27

1.4 Сървър за web 28

1.5 Мидълуер 29

1.6 Релационни бази данни 29

2. Недостатъци на HTML 30

2.1 Какво става с HTML страниците? 30

2.2 Какво става с PHP страниците? 31

2.3 Какво може да направи PHP, което да не може да се направи с HTML? 32

3. Web –следващото поколение 33

3.1 Статично публикуване 33

3.2 Активни web-сайтове 33

3.3 Динамични технологии от страната на клиента 34

3.4 Технологии от страната на сървъра 35

3.5 Предимства на обработката от страната на сървъра 39

4. Предимства и недостатъци на MySQL 40

ГЛАВА ТРЕТА – ОПИСАНИЕ НА СИСТЕМАТА 41

1. Хардуерна конфигурация 41

2. Софтуер за разработка на системата 41

3. Изследване на базата данни webtest 42

4. Описание на приложението “Web-base system for tests” 48

ЗАКЛЮЧЕНИЕ 69

СЪДЪРЖАНИЕ 70




Каталог: files -> files
files -> Р е п у б л и к а б ъ л г а р и я
files -> Дебелината на армираната изравнителна циментова замазка /позиция 3/ е 4 см
files -> „Европейско законодателство и практики в помощ на добри управленски решения, която се състоя на 24 септември 2009 г в София
files -> В сила oт 16. 03. 2011 Разяснение на нап здравни Вноски при Неплатен Отпуск ззо
files -> В сила oт 23. 05. 2008 Указание нои прилагане на ксо и нпос ксо
files -> 1. По пътя към паметник „1300 години България
files -> Георги Димитров – Kreston BulMar
files -> В сила oт 13. 05. 2005 Писмо мтсп обезщетение Неизползван Отпуск кт


Сподели с приятели:
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница