Разработка подсистемы автоматизированного обучения компьютерного тренажерного комплекса оператора перегрузочной машины
Анализ методов и средств профессионального обучения операторов перегрузочных машин, автоматизация процесса. Построение функциональной модели компьютерного тренажера оператора портального крана. Разработка программного и информационного обеспечения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 12.05.2018 |
Размер файла | 3,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
362 $mHTML. ='<t dc l a s s="q u e s t i o n s">'. $ answers ['d e s c r i p t i o n s'].'</td>';
363 $mHTML. ='<t dc l a s s="checkq u e s t i o n s">';
364 i f ($ answers ['c o r r e c t']) {
365 $mHTML. ='&r a d i c;';
366 } e l s e {
367 $mHTML. =' ';
368 }
369 $mHTML. ='</td>';
370 $mHTML. ='<t dc l a s s="checkq u e s t i o n s">';
371 i f ($ answers ['i d']== $ q u e s t i o n s ['a n s w e r s _ i d']) {
372 $mHTML. ='&r a d i c;';
373 } e l s e {
374 $mHTML. =' ';
375 }
376 $mHTML. ='</td>';
377 ++ $ c o u n t _ a n s w e r s;
378 $mHTML. ='</t r>';
379 }
380
381 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t hc o l s p a n=" 3 "c l a s s="q u e s t i o n sДругая"> информация овопросе</th> </t r>';
382 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t dc o l s p a n=" 2 "c l a s s="q u e s t i o n sВероятность"> угадывания данного задания</td><t dc l a s s="q u e s t i o n s">'. 1 / $ c o u n t _ a n s w e r s.'</td
> </t r>';
383 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t dc o l s p a n=" 2 "c l a s s="q u e s t i o n s Текущая"> вероятность угадывания последовательности заданий</td><t dc l a s s="q u e s t i o n s">'.
$ q u e s t i o n s ['Ku'].'</td> </t r>';
384 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t dc o l s p a n=" 2 "c l a s s="q u e s t i o n sВремя"> постановки вопроса</td><t dc l a s s="q u e s t i o n s">'. $ q u e s t i o n s ['t i m e _ s t a r t'].'</ td> </t r>';
385 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t dc o l s p a n=" 2 "c l a s s="q u e s t i o n sВремя"> получения ответа</td><t dc l a s s="q u e s t i o n s">'. $ q u e s t i o n s ['t i m e _ f i n i s h'].'</ td> </t r>';
386 $mHTML. ='<t rc l a s s="q u e s t i o n s"><t dc o l s p a n=" 2 "c l a s s="q u e s t i o n s">колько Cраз данный вопрос задавался в предыдущих попытках</td><t dc l a s s="q u e s t i o n s">'.
$ q u e s t i o n s ['c o u n t'].'</td> </t r>';
387 ++ $ i;
388 }
389 $mHTML. ='</t a b l e>';
390
391 $ s t y l e s h e e t = f i l e _ g e t _ c o n t e n t s ('. /c s s/r e p o r t _ s t y l e.c s s');
392 $mpdf?>WriteHTML ($ s t y l e s h e e t, 1);
393 $mpdf?>WriteHTML ($mHTML, 2);
394 $mpdf?> Output ('','I');
395
396 } e l s e {
397 echo 'При формировании отчета произошла ошибка.';
398 }
399
400 }
401
402 }
403
404 / * Endoff i l et e a c h e r s.php * /
405 / * L o c a t i o n:. /a p p l i c a t i o n/c o n t r o l l e r s/t e a c h e r s.php * /
Модуль exercises.php
Модуль реализует функционал АРМ инструктора для управления практическим этапом обучения. Исходный код модуля представлен в листинге К.7
Листинг К.7 -- Исходный код модуля exercises.php
1 <? php
2 i f (! d e f i n e d ('BASEPATH')) e x i t ('Nod i r e c ts c r i p ta c c e s sa l l o w e d');
3 / ** Управление
4 * упражнениямиизкомплексаупражнений
5 *
6 *
7 * /
8 c l a s s E x e r c i s e s e x t e n d s MY_ Controller {
9
10 f u n c t i o n
_ _ c o n s t r u c t () {
11 p a r e n t:: _ _ c o n s t r u c t ();
12 / /Проверка на принадлежность к группе Преподаватели" "
13 $ i d = $ t h i s ?> s e s s i o n ?> u s e r d a t a ('use ID');
14 i f (($ i d) and ($ t h i s ?> mdl_ user ?> g r _ c o n f ($ id, 2))) {
15 $ t h i s ?> load ?> l i b r a r y ('grocery_CRUD');
16 } e l s e {
17 r e d i r e c t ('a u t h s');
18 }
19 }
20
21 / **
22 * Перенаправление к списку комплексов упражнений
23 * из-за особенностей работы библиотеки Grocery Crud
24 *
25 * @ returnv o i d
26 * /
27 p u b l i c f u n c t i o n i n d e x () {
28 r e d i r e c t ('e x e r c i s e/s t a r t/');
29 }
30
31
32 / **
33 * Отображение списка упражнений соответствующего комплекса
34 *
35 * @parami n t e g e r$ co m p l e xe s _ i d
36 * @ returnv o i d
37 * /
38 p u b l i c f u n c t i o n s t a r t ($ c o mp l ex e s_ i d = n u l l) {
39 $ c rud = new Grocery_CRUD;
40 $ crud ?> s e t _ t h e m e ('d a t a t a b l e s');
41 $ crud ?> s e t _ t a b l e ('e x e r c i s e s');
42 $ crud ?> where ('c o m p l e x e s _ i d', $ c o mp l ex e s_ i d);
43
44 $ crud ?> u n s e t _ e x p o r t ();
$ crud ?> u n s e t _ p r i n t ();
45 46 $ crud ?> u n s e t _ a d d ();
47 $ crud ?> u n s e t _ e d i t ();
48 $ crud ?> u n s e t _ d e l e t e ();
49 $ crud ?> u n s e t _ r e a d ();
50
51 $ crud ?> columns ('name');
52 $ crud ?> d i s p l a y _ a s ('name','Наименованиеупражнения');
53
54 $ crud ?> a d d _ a c t i o n ('Перейтиквыполнению','','e x e r c i s e s/e x e r c i s e _ i n f o','ui ?icon ? image');
55 $ o u t p u t = $ crud ?> r e n d e r ();
56
57 $ t h i s ?> load ?>model ('mdl_ complex');
58 $ o u t p u t ?> t i t l e = $ t h i s ?>mdl_complex ?> get_ complex_ name ($ c o mp l ex e s_ i d);
59 $ o u t p u t ?> d e s c r i p t i o n = $ t h i s ?>mdl_complex ?> g e t _ c o m p l e x _ d e s c r i p t i o n ($ c o mp l ex e s_ i d
);
60
61 $ t h i s ?>_ view ('complexes/view_ complexes', $ o u t p u t, t ru e);
62
63 }
64
65 / **
66 * Отображение информации о конкретном упражнении
67 * @parami n t e g e r$ e x e r s i c e _ i d
68 * @ returnv o i d
69 * /
70 p u b l i c f u n c t i o n e x e r c i s e _ i n f o ($ e x e r s i c e _ i d = n u l l) {
71 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
72 $ o u t p u t = $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ d e s c r i p t i o n ($ e x e r s i c e _ i d);
73 $ o u t p u t ['i d']= $ e x e r s i c e _ i d;
74
75 $ o u t p u t ['q u a l i t y _ i n d i c a t o r s _ i n f o']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ q u a l i t y _ i n d i c a t o r s _ i n f o ($ e x e r s i c e _ i d);
76 $ o u t p u t ['q u a l i t y _ i n d i c a t o r s _ g r o u p _ l i s t']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ q u a l i t y _ i n d i c a t o r s _ g r o u p ();
77
78 $ o u t p u t ['t i t l e'] = $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ n a m e ($ e x e r s i c e _ i d);
79
80 $ t h i s ?>_ view ('e x e r c i s e s/v i e w _ e x e r c i s e s', $ o u t p u t, t ru e);
81 }
82
83 / **
84 * Установить параметры упражнения
85 *
86 * @ returnv o i d
87 * /
88 p u b l i c f u n c t i o n s e t _ p a r a m e t e r s _ e x e r s i c e () {
89 / /p r i n t _ r($_POST);
90 / /Тут необходимо передать введенные значения серверу
91 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
92 $ t h i s ?>db?> t r a n s _ s t a r t ();
93
94 $ e x e r c i s e s _ i d = $ t h i s ?> i n p u t ?> p o s t ('e x e r c i s e _ i d');
95
96 $Kcomplex= $ t h i s ?> i n p u t ?> p o s t ('Kcomplex');
97 i f ($Kcomplex) {
98 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> se t _ k _ co mp l ex ($ e x e r c i s e s _ i d, $Kcomplex);
99 }
101 $ n u m b e r _ o f _ a t t e m p t s 1 = $ t h i s ?> i n p u t ?> p o s t ('n u m b e r _ o f _ a t t e m p t s 1');
102 i f ($ n u m b e r _ o f _ a t t e m p t s 1) {
103 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ n u m b e r _ o f _ a t t e m p t s 1 ($ e x e r c i s e s _ i d,
$ n u m b e r _ o f _ a t t e m p t s 1);
104 }
105
106 $ n u m b e r _ o f _ a t t e m p t s 2 = $ t h i s ?> i n p u t ?> p o s t ('n u m b e r _ o f _ a t t e m p t s 2');
107 i f ($ n u m b e r _ o f _ a t t e m p t s 2) {
108 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ n u m b e r _ o f _ a t t e m p t s 2 ($ e x e r c i s e s _ i d,
$ n u m b e r _ o f _ a t t e m p t s 2);
109 }
110
111 $ d e v i a t i o n = $ t h i s ?> i n p u t ?> p o s t ('d e v i a t i o n');
112 i f ($ d e v i a t i o n) {
113 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ d e v i a t i o n ($ e x e r c i s e s _ i d, $ d e v i a t i o n);
114 }
115
116 $ d e v i a t i o n = $ t h i s ?> i n p u t ?> p o s t ('t h r e s h o l d _ v a l u e _ o f _ K _ q u a l i t y _ i n d e x');
117 i f ($ d e v i a t i o n) {
118 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ t h r e s h o l d _ v a l u e _ o f _ K q u a l i t y _ i n d e x ($ e x e r c i s e s _ i d
, $ d e v i a t i o n);
119 }
120
121
122 $ t h i s ?>db?> t r a n s _ c o m m i t ();
123 echo 'OK'. $ done;
124 }
125
126 / **
127 * Информация о показателях качества
128 *
129 * @parami n t e g e r$ e x e r s i c e _ i d
130 * @ returnv o i d
131 * /
132 p u b l i c f u n c t i o n i n f o _ o f _ q u a l i t y _ i n d i c a t o r s ($ e x e r s i c e _ i d = n u l l) {
133 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
134 / /p r i n t _ r($ t h i s ?>m d l _ e x e r c i s e ?>g e t _ q u a l i t y _ i n d i c a t o r s _ i n f o($ e x e r s i c e _ i d));
135 / /echo'<br/ > ';
136 / /p r i n t _ r($ t h i s ?>m d l _ e x e r c i s e ?>g e t _ q u a l i t y _ i n d i c a t o r s _ g r o u p());
137 $ o u t p u t ['q u a l i t y _ i n d i c a t o r s _ i n f o']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ q u a l i t y _ i n d i c a t o r s _ i n f o ($ e x e r s i c e _ i d);
138 $ o u t p u t ['q u a l i t y _ i n d i c a t o r s _ g r o u p _ l i s t']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ q u a l i t y _ i n d i c a t o r s _ g r o u p ();
139
140 $ d a t a = $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ d e s c r i p t i o n ($ e x e r s i c e _ i d);
141 $ o u t p u t ['d e s c r i p t i o n']= $ d a t a ['d e s c r i p t i o n'];
142 $ o u t p u t ['i d']= $ e x e r s i c e _ i d;
143 $ o u t p u t ['t i t l e'] ='Информация о показателях качества упражнения:"'
144. $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ n a m e ($ e x e r s i c e _ i d).'"';
145
146 $ t h i s ?>_ view ('e x e r c i s e s/v i e w _ i n f o _ q u a l i t y _ i n d i c a t o r s', $ o u t p u t, t ru e);
147 }
148
149
150 / **
151 * Установка группы для показателя качества
152 *
153 * @ returnv o i d
154 * /
155 p u b l i c f u n c t i o n s e t _ q u a l i t y _ i n d i c a t o r s _ g r o u p ($ q u a l i t y _ i n d i c a t o r s _ i d = n u l l,
$ q u a l i t y _ i n d i c a t o r s _ g r o u p _ i d = n u l l) {
156 i f (! $ q u a l i t y _ i n d i c a t o r s _ i d == n u l l && ! $ q u a l i t y _ i n d i c a t o r s _ g r o u p _ i d == n u l l) {
157 / /echo'S u c c e s s';
158 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
159 $ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ q u a l i t y _ i n d i c a t o r s _ g r o u p ($ q u a l i t y _ i n d i c a t o r s _ i d
, $ q u a l i t y _ i n d i c a t o r s _ g r o u p _ i d);
160 echo 'S u c c e s s';
161 } e l s e {
162 throw new E x c e p t i o n ('Ошибка при обновлении группы');
163 }
164 }
165 / **
166 * Отобразить форму Набор "параметров, соответствующих показателю качества"
167 *
168 * @ returnv o i d
169 * /
170 p u b l i c f u n c t i o n s e t _ p a r a m e t e r _ v a l u e s ($ i n d i c a t o r _ i d = n u l l) {
171 i f (! $ i n d i c a t o r _ i d == n u l l) {
172 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
173
174 $ e x e r c i s e _ i d = $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ i d ($ i n d i c a t o r _ i d);
175 / /echo'$ e x e r c i s e _ i d'.$ e x e r c i s e _ i d;
176 $ o u t p u t = $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ q u a l i t y _ i n d i c a t o r _ i n f o ($ i n d i c a t o r _ i d);
177 $ o u t p u t ['e x e r c i s e _ n a m e']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ e x e r c i s e _ n a m e ($ e x e r c i s e _ i d);
178 $ o u t p u t ['t i t l e'] ='Набор параметров, соответствующих показателю качества';
179 / /$ o u t p u t[ 'view_name']= 'e x e r c i s e s/v i e w _ s e t _ p a r a m e t e r _ v a l u e s';
180 $ t h i s ?>_ view ('e x e r c i s e s/v i e w _ s e t _ p a r a m e t e r _ v a l u e s', $ o u t p u t, t ru e);
181 }
182 }
183
184 / **
185 * Установка порогового значения коэффициента освоения
186 * показателя качества
187 *
188 * @ returnv o i d
189* /
190p u b l i c f u n c t i o n s e t _ k o m p l e x _ q u a l i t y _ i n d i c a t o r s () {
191$ i n d i c a t o r I d = $ t h i s ?> i n p u t ?> p o s t ('i n d i c a t o r I d');
192$ i n d i c a t o r V a l u e = $ t h i s ?> i n p u t ?> p o s t ('i n d i c a t o r V a l u e');
193
194$ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
195$ done= $ t h i s ?> m d l _ e x e r c i s e ?> s e t _ q u a i l i t y _ i n d i c a t o r s _ k c o m p l e x ($ i n d i c a t o r I d
$ i n d i c a t o r V a l u e);
196i f ($ done) {
197echo 'Пороговое значение коэффициента освоения показателя качества успешно обновлено';
198} e l s e {
199 throw new E x c e p t i o n ('Ошибка при установке порогового значения коэффициента качеста');
200}
201}
202
203/ **
204* Установка левых и правых границ интервалов,
205* сопоставленных сотличным, хорошим, удовлетворительным и
206* неудовлетворительным значениям и выбранного показателя качества
207*
208* @ returnv o i d
209* /
210p u b l i c f u n c t i o n s e t _ e v a l u a t i o n _ q u a l i t y _ i n d i c a t o r () {
211/ /p r i n t _ r($_POST);
212$ q u a l i t y _ i n d i c a t o r _ i d = $ t h i s ?> i n p u t ?> p o s t ('q u a l i t y _ i n d i c a t o r _ i d');
213
214$Amin= $ t h i s ?> i n p u t ?> p o s t ('Amin');
215$Amax= $ t h i s ?> i n p u t ?> p o s t ('Amax');
216
217$Bmin= $ t h i s ?> i n p u t ?> p o s t ('Bmin');
218$Bmax= $ t h i s ?> i n p u t ?> p o s t ('Bmax');
219
220$Cmin= $ t h i s ?> i n p u t ?> p o s t ('Cmin');
221$Cmax= $ t h i s ?> i n p u t ?> p o s t ('Cmax');
222
223$Dmin= $ t h i s ?> i n p u t ?> p o s t ('Dmin');
224$Dmax= $ t h i s ?> i n p u t ?> p o s t ('Dmax');
225
226$ max Delta= $ t h i s ?> i n p u t ?> p o s t ('max Delta');
227
228
229
230
231
232
233
234$ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
$ t h i s ?> m d l _ e x e r c i s e ?> s e t _ e v a l u a t i o n _ q u a l i t y _ i n d i c a t o r ($ q u a l i t y _ i n d i c a t o r _
$Amin, $Amax, $Bmin, $Bmax, $Cmin, $Cmax, $Dmin, $Dmax, $ max Delta);
echo 'Границы интервалов успешно обновлены';
}
/ **
* Форма информация о группах показателей качества
i d,
235 *
236 * @ returnvo i d
237 * /
238 p u b l i c f u n c t i o n c r e a t e _ q u a l i t y _ g r o u p s () {
239 $ c rud = new Grocery_CRUD;
240 $ crud ?> s e t _ t h e m e ('d a t a t a b l e s');
241 $ crud ?> s e t _ t a b l e ('q u a l i t y _ i n d i c a t o r s _ g r o u p s');
242
243 $ crud ?> u n s e t _ e x p o r t ();
244 $ crud ?> u n s e t _ p r i n t ();
245 / /$ crud ?>u n s e t _ a d d();
246 / /$ crud ?>u n s e t _ e d i t();
247 / /$ crud ?>u n s e t _ d e l e t e();
248 / /$ crud ?>u n s e t _ r e a d();
249 $ o u t p u t = $ crud ?> r e n d e r ();
250 $ o u t p u t ?> t i t l e ='Управление группами показателей качества';
251 $ t h i s ?>_ view ('complexes/view_ complexes.php', $ o u t p u t, t ru e);
252 }
253
254 / **
255 * Определение весов показаетелей качества
256 *
257 * @paramunknown$ e x e r c i s e _ i d
258 * /
259 p u b l i c f u n c t i o n w e i g h t s _ o f _ q u a l i t y _ i n d i c a t o r s ($ e x e r c i s e _ i d) {
260 / /echo'w e i g h t s _ o f _ q u a l i t y _ i n d i c a t o r s'.$ e x e r c i s e _ i d;
261 $ c rud = new Grocery_CRUD;
262 $ crud ?> s e t _ t h e m e ('d a t a t a b l e s');
263 $ crud ?> s e t _ t a b l e ('c r i t e r i o n s') ?> s e t _ s u b j e c t ('критерий');
264
265 $ crud ?> where ('e x e r c i s e s _ i d', $ e x e r c i s e _ i d);
266 $ crud ?> d i s p l a y _ a s ('name','Наименование критерия');
267 $ crud ?> d i s p l a y _ a s ('a l l _ q u a l i t y _ i n d i c a t o r s','Все показатели качества');
268
269 $ crud ?> columns ('name','a l l _ q u a l i t y _ i n d i c a t o r s');
270 / /$ crud ?>f i e l d s('name','a l l _ q u a l i t y _ i n d i c a t o r s', 'e x e r c i s e s _ i d');
271 $ crud ?> f i e l d _ t y p e ('e x e r c i s e s _ i d','h i d d e n', $ e x e r c i s e _ i d);
272 $ crud ?> s e t _ r e l a t i o n _ n _ n ('q u a l i t y _ i n d i c a t o r s','c r i t e r i o n s _ x _ q u a l i t y _ i n d i c a t o r s ','q u a l i t y _ i n d i c a t o r s','c r i t e r i o n s _ i d','q u a l i t y _ i n d i c a t o r s _ i d','name',
'p r i o r i t y');
273 $ crud ?> s e t _ r e l a t i o n _ n _ n ('q u a l i t y _ i n d i c a t o r s _ g r o u p s','
c r i t e r i o n s _ x _ q u a l i t y _ i n d i c a t o r s _ g r o u p s','q u a l i t y _ i n d i c a t o r s _ g r o u p s',' c r i t e r i o n s _ i d','q u a l i t y _ i n d i c a t o r s _ g r o u p s _ i d','name','p r i o r i t y');
274 $ crud ?> d i s p l a y _ a s ('q u a l i t y _ i n d i c a t o r s','Показатели качества');
275 $ crud ?> d i s p l a y _ a s ('q u a l i t y _ i n d i c a t o r s _ g r o u p s','Группы показателей качества');
276
277 $ crud ?> a d d _ a c t i o n ('Сравнение показателей качества','','e x e r c i s e s/
c o m p a r i s o n _ m a t r i x _ q u a l i t y _ i n d i c a t o r s','ui ?icon ? f o l d e r ? c o l l a p s e d');
278 $ crud ?> u n s e t _ e x p o r t ();
279 $ crud ?> u n s e t _ p r i n t ();
280 / /$ crud ?>u n s e t _ a d d();
281 / /$ crud ?>u n s e t _ e d i t();
282 / /$ crud ?>u n s e t _ d e l e t e();
283 / /$ crud ?>u n s e t _ r e a d();
284 $ o u t p u t = $ crud ?> r e n d e r ();
285 $ o u t p u t ?> t i t l e ='Веса показателей качества';
286 $ o u t p u t ?> e x e r c i s e _ i d = $ e x e r c i s e _ i d;
287 $ t h i s ?>_ view ('e x e r c i s e s/form 6.php', $ o u t p u t, t ru e);
288 }
289
290 / **
291 * Матрица попарного сравнения критериев
292 *
293 * @parami n t e g e r$ e x e r c i s e _ i d
294 * @ returnv o i d
295 * /
296 p u b l i c f u n c t i o n c o m p a r i s o n _ m a t r i x _ c r i t e r i a ($ e x e r c i s e _ i d) {
297 / /echo'c o m p a r i s o n _ m a t r i x _ c r i t e r i a'.$ e x e r c i s e _ i d;
298 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
299 $ o u t p u t ['c r i t e r i o n s']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ l i s t _ c r i t e r i a ($ e x e r c i s e _ i d);
300 $ o u t p u t ['t i t l e'] ='Матрица попарного сравнения критериев';
301 / /p r i n t _ r($ o u t p u t);
302 $ t h i s ?>_ view ('e x e r c i s e s/form 6 _ 1', $ o u t p u t, t ru e);
303 }
304
305 / **
306 * Матрица попарного сравнения показателей качества
307 *
308 * @parami n t e g e r$ c r i t e r i o n _ i d
309 * @ returnv o i d
310 * /
311 p u b l i c f u n c t i o n c o m p a r i s o n _ m a t r i x _ q u a l i t y _ i n d i c a t o r s ($ c r i t e r i o n _ i d) {
312 / /echo'c o m p a r i s o n _ m a t r i x _ q u a l i t y _ i n d i c a t o r s'.$ c r i t e r i o n _ i d;
313 $ t h i s ?> load ?>model ('m d l _ e x e r c i s e');
314 $ o u t p u t ['c r i t e r i o n s']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ l i s t _ q u a l i t y _ i n d i c a t o r s (
$ c r i t e r i o n _ i d);
315 $ o u t p u t ['t i t l e'] ='Матрица попарного сравнения показателей качества';
316 $ o u t p u t ['t a r g e t']= $ t h i s ?> m d l _ e x e r c i s e ?> g e t _ c r i t e r i o n _ n a m e ($ c r i t e r i o n _ i d);
317 / /p r i n t _ r($ o u t p u t);
318 $ t h i s ?>_ view ('e x e r c i s e s/form 6 _ 1', $ o u t p u t, t ru e);
319 }
320
321 }
322
323 / * Endoff i l ee x e r c i s e s.php * /
324 / * L o c a t i o n:. /a p p l i c a t i o n/c o n t r o l l e r s/e x e r c i s e s.php * /
Модуль mdluser.php
Модуль используется для проверки информации об учетной записи пользователя, пытающегося авторизоваться в АРМ, и получение информации профиля из БД. Исходный код модуля представлен в листинге К.8
Листинг К.8 -- Исходный код модуля mdluser.php
1 <? php
2 i f (! d e f i n e d ('BASEPATH')) e x i t ('Nod i r e c ts c r i p ta c c e s sa l l o w e d');
3 / ** Модель
4 * авторизации
5 * /
6 c l a s s mdl_ user e x t e n d s CI_Model {
7 f u n c t i o n _ _ c o n s t r u c t () {
8 p a r e n t:: _ _ c o n s t r u c t ();
9 }
10
11
12 / **
13 * Проверка на существование пользователя в базе данных
14 * Если пользователь найден и он подтвержден администратором, то создает сессию
15 *
16 * @params t r i n g$ username
17 * @params t r i n g$ password
18 * @ returnb o o l e a n
19 * /
20 f u n c t i o n l o g i n ($ username, $ password) {
21 $ query = $ t h i s ?>db?> query ("SELECT * FROMUSERSWHEREl o g i n= '$ username'AND password= '$ password'ANDa c t i v e=1");
22 i f ($ query ?>num_rows () == 1) {
23
24 $ user ID = $ query ?>row () ?> i d;
25 / /$ username=$ query ?>row() ?>surname;
26
27 $ t h i s ?> s e s s i o n ?> s e t _ u s e r d a t a ('use ID', $ user ID);
28
29 r e t u r n t ru e;
30 } e l s e {
31 r e t u r n f a l s e;
32 }
33 }
34
35 / **
36 * Уничтожает сессию
37 *
38 * @ returnv o i d
39 * /
40 f u n c t i o n l o g o u t () {
41 $ t h i s ?> s e s s i o n ?> s e s s _ d e s t r o y ();
42 }
43
44 / **
45 * Получение данных о зарегистрированном пользователе
46 *
47 * @parami n t e g e r$ i d
48 * @ returna r r a y
49 * /
50 f u n c t i o n g e t _ i n f o _ p r o f i l e ($ i d) {
51 $ i n f o = array ();
52
53 / /Получение ФИО текущего пользователя
54 $ t h i s ?>db?> where ('i d', $ i d);
55 $ query = $ t h i s ?>db?> g e t ('USERS');
56 $ i n f o ['FIO']= $ query ?> r o w _ a r r a y ();
57
58 / /Определяем к каким группам относится текущий пользователь
59 $ t h i s ?>db?> s e l e c t ('GROUPS.id,GROUPS.name');
60 $ t h i s ?>db?> from ('GROUPS');
61 $ t h i s ?>db?> j o i n ('USERS_X_GROUPS','GROUPS.i d=USERS_X_GROUPS.g r o u p s _ i d');
62 $ t h i s ?>db?> where ('u s e r s _ i d', $ i d);
63 $ query = $ t h i s ?>db?> g e t ();
64 $ i n f o ['GROUPS']= $ query ?> r e s u l t _ a r r a y ();
65
66 r e t u r n $ i n f o;
67}
68
69
70 / **
71 * Подтверждение на принадлежность группе
72 *
73 * @parami n t e g e r$ g r o u p i d
74 * @parami n t e g e r$ i d
75 * @ returnb o o l e a n
76 * /
77 f u n c t i o n g r _ c o n f ($ id, $ g r o u p i d) {
78 $ query = $ t h i s ?>db?> query ("SELECT * FROMUSERS_X_GROUPSuxgWHEREuxg.u s e r s _ i d
= '$ i d'ANDuxg.g r o u p s _ i d= '$ g r o u p i d'LIMIT1");
79 i f ($ query ?>num_rows () == 1) {
80 r e t u r n t ru e;
81 } e l s e {
82 r e t u r n f a l s e;
83 }
84 }
85
86 / **
87 * Получение списка пользователей, принадлежащих определенной группе
89 *
90 * @parami n t e g e r$ g r o u p _ i d
91 * @ returna r r a y
92 * /
93 f u n c t i o n u s e r _ g r o u p s _ l i s t ($ g r o u p _ i d = n u l l) {
94 $ s q l t e x t ="SELECT`USERS`. `id`
95 FROM`USERS`JOIN`USERS_X_GROUPS`on`USERS`. `id`= `USERS_X_GROUPS`. `u s e r s _ i d`
96 WHERE`USERS_X_GROUPS`. `g r o u p s _ i d` = ?;
97 ";
98 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ g r o u p _ i d));
99 $ d a t a =$ query ?> r e s u l t _ a r r a y ();
100 r e t u r n $ d a t a;
101 }
102
103 / **
104 * Получение названия группы пользователей по её ID
105 *
106 * @paramunknown$ g r o u p _ i d
107 * @ returns t r i n g
108 * /
109 p u b l i c f u n c t i o n get_ group_ name ($ g r o u p _ i d =NULL) {
110 $ s q l t e x t ="s e l e c tname
111 fromn i r s.g r o u p s
112 wherei d=?";
113 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ g r o u p _ i d));
114 $ d a t a =$ query ?> r o w _ a r r a y ();
115 r e t u r n $ d a t a ['name'];
116 }
117
118
119
120 }
121 / * Endoff i l emdl_ user.php * /
122 / * L o c a t i o n:. /a p p l i c a t i o n/models/mdl_ user.php * /
Модуль mdlstudent.php
Модуль реализует логику работы АРМ обучаемого с БД. Исходный код модуля представлен в листинге К.9.
Листинг К.9--Исходный код модуля mdlstudent
1 <? php
2 i f (! d e f i n e d ('BASEPATH')) e x i t ('Nod i r e c ts c r i p ta c c e s sa l l o w e d');
3 / ** ПРОХОЖДЕНИЕ
4 * ТЕСТИРОВАНИЯ Выбор
5 * 1.темы Выбор
6 * 2.вопроса Обработка
7 * 3.ответа
8 * /
9 c l a s s m d l _ s t u d e n t e x t e n d s CI_Model {
10 f u n c t i o n _ _ c o n s t r u c t () {
11 p a r e n t:: _ _ c o n s t r u c t ();
12 }
13
14 / **
15 * Выбортемыдляконкретногопользователя
16 *
17 * @parami n t e g e r$ i d
18 * @ returna r r a y/b o o l e a n
19 * /
20 f u n c t i o n get Theme ($ i d = ?1){
21
22 / /Выборнеосвоеннойтемыпорядок(выборав`THEMES`. `sequence`)
23 $ s q l t e x t ="
24 SELECT`THEMES`. `id`theme_ id,`THEMES`. `name`theme_name
25 FROM`THEMES`
26 WHERE`THEMES`. `id`i n(SELECT`groups_ x_ themes`. `t hemes_ id`i d
27 FROM`groups_ x_ themes`
28 JOIN`groups`ON`groups`. `id`= `groups_ x_ themes`. `g r o u p s _ i d`
29 JOIN`u s e r s _ x _ g r o u p s`ON`u s e r s _ x _ g r o u p s`. `g r o u p s _ i d`= `u s e r s _ x _ g r o u p s`. ` g r o u p s _ i d`
30 JOIN`u s e r s`ON`u s e r s`. `id`= `u s e r s _ x _ g r o u p s`. `u s e r s _ i d`
31 WHERE`u s e r s`. `id` = ?)
32 and
33 `THEMES`. `id`n o ti n(SELECT`TESTS`. `t hemes_ id`
34 FROM`t e s t s`
35 WHERE`t e s t s`. `u s e r s _ i d`=?AND`t e s t s`. `s u c c e s s` = 1)
36 ORDERBY`THEMES`. `sequence`
37 LIMIT1
38 ";
39 / /Получаем тему которую будем решать
40 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ id, $ i d));
41
42 i f ($ query ?>num_rows ()) {
43 $ d a t a =$ query ?> r o w _ a r r a y ();
44 / /Выпиливаем ИД темы из результата запроса
45 $ c o u n t _ t r i e s =$ query ?>row () ?> theme_ id;
46 / /Считаем количество попыток прохождения заданной темы
47 $ s q l t e x t ="
48 SELECTc o u n t(*)a sc o u n t
49 FROMTESTS
50 WHERETESTS.u s e r s _ i d=?ANDTESTS.t h e m e s _ i d=?
51 ";
52 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ id, $ c o u n t _ t r i e s));
53 $ d a t a ['c o u n t _ t r i e s']= $ query ?>row () ?> count;
54
55 r e t u r n $ d a t a;
56 } e l s e {
57 / /Если тем для прохождения теста больше нет
58 r e t u r n f a l s e;
59 }
60 }
61
62
63 / **
64 * Начало теста, инициализация параметров тестирования
65 *
66 * @parami n t e g e r$ i d _ u s e r
67 * @parami n t e g e r$ id_ theme
68 * @ returnb o o l e a n
69 * /
70 f u n c t i o n s t a r t T e s t ($ i d _ u s e r = n u l l, $ id_ theme = n u l l) {
71 / /Стартуем транзакцию
72 $ t h i s ?>db?> t r a n s _ s t a r t ();
73 / /Получение параметров, с которым и начать тестирование
74 $ query = $ t h i s ?>db?> query ("SELECTmax(i d)asmax_ param_ idFROMPARAMETERS");
75 $ param_ id =$ query ?>row () ?> max_ param_ id;
76 $ d a t a = array (
77 'i d'=> n u l l,
78 'u s e r s _ i d'=> $ i d _ u s e r,
79 't h e m e s _ i d'=> $ id_ theme,
80 'p a r a m e t e r s _ i d'=> $ param_ id,
81);
82 / /Инициализация теста
83 $ t h i s ?>db?> i n s e r t ('TESTS', $ d a t a);
84 $ i n s e r t _ i d = $ t h i s ?>db?> i n s e r t _ i d ();
85 / /Коммит
86 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
87 i f ($ i n s e r t _ i d) {
88 / /Пишем в сессию номер вновь начатого теста
89 $ t h i s ?> s e s s i o n ?> s e t _ u s e r d a t a ('t e s t I d', $ i n s e r t _ i d);
90 r e t u r n t ru e;
91 } e l s e {
92 r e t u r n f a l s e;
93 }
94 }
95
96 / **
97 * Выбор вопроса к переданному тесту
98 *
99 * @ returni n t e g e r$ i d _ t e s t
100 * @ returna r r a y/b o o l e a n
101 * /
102 f u n c t i o n g e t Q u e s t i o n ($ i d _ t e s t = n u l l) {
103
104
105 $ t h i s ?>db?> t r a n s _ s t a r t ();
106 $ s q l t e x t ="
107 SELECTu s e r s _ i d,t h e m e s _ i dFROMTESTS
108 WHEREi d=?AND(c o m p l e t e= 0)
109 ";
110 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ i d _ t e s t));
111 i f ($ query ?>num_rows ()) {
112 $ u s e r _ i d =$ query ?>row () ?> u s e r s _ i d;
113 $ theme_ id =$ query ?>row () ?> t h e m e s _ i d;
114
115 $ s q l t e x t ="s e l e c tq.i dq u e s t i o n _ i d,q.d e s c r i p t i o nd e s c r i p t i o n,q.imagesimages
116 fromQUESTIONSq
117 whereq.t h e m e s _ i d=?
118 and
119 q.i di n(s e l e c tous.q u e s t i o n s _ i d
120 fromQUESTIONS_X_USERS_X_STATUSESous
121 whereu s e r s _ i d=?
122 anda n s w e r s _ i di sn u l l
123 andt e s t s _ i d=?)
124 ";
125 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ theme_ id, $ u s e r _ i d, $ i d _ t e s t));
126
127
128
129 i f (! $ query ?>num_rows ()) {
130 / /Случайным образом выбираем вопрос из основного множества
131 $ s q l t e x t ="s e l e c tq.i dq u e s t i o n _ i d,q.d e s c r i p t i o nd e s c r i p t i o n,q.imagesimages
132 fromQUESTIONSq
133 whereq.t h e m e s _ i d=?
134 and
135 q.i dn o ti n(s e l e c tous.q u e s t i o n s _ i d
136 fromQUESTIONS_X_USERS_X_STATUSESous
137 whereu s e r s _ i d=?)
138 o r d e rbyr a nd()
139 l i m i t1";
140 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ theme_ id, $ u s e r _ i d));
141
142 / /еслиосновноемножествопустое
143 i f (! $ query ?>num_rows ()) {
144 / /Случайным образом выбираем вопрос из дополнительного множества
145 $ s q l t e x t ="s e l e c tq.i dq u e s t i o n _ i d,q.d e s c r i p t i o nd e s c r i p t i o n,q.imagesimages
146 fromQUESTIONSq
147 whereq.t h e m e s _ i d=?
148 and
149 q.i dn o ti n(s e l e c tous.q u e s t i o n s _ i d
150 fromQUESTIONS_X_USERS_X_STATUSESous
151 wheret e s t s _ i d=?andu s e r s _ i d=?)
152 o r d e rbyr a nd()
153 l i m i t1";
154 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ theme_ id, $ i d _ t e s t, $ u s e r _ i d));
155 i f (! $ query ?>num_rows ()) {
156 r e t u r n f a l s e;
157 }
158 }
159 / / Заносим тестовое задание в множество использованных вопросов
160 $ q u e s t i o n s _ i d =$ query ?>row () ?> q u e s t i o n _ i d;
161 $ d a t a = array (
162 'q u e s t i o n s _ i d'=> $ q u e s t i o n s _ i d,
163 'u s e r s _ i d'=> $ u s e r _ i d,
164 't e s t s _ i d'=> $ i d _ t e s t,
165);
166 $ t h i s ?>db?> i n s e r t ('QUESTIONS_X_USERS_X_STATUSES', $ d a t a);
167 } e l s e {
168 $ q u e s t i o n s _ i d =$ query ?>row () ?> q u e s t i o n _ i d;
169 }
170
171 $ d a t a =$ query ?> r o w _ a r r a y ();
172 $ s q l t e x t ="SELECTa.i danswer_ id,a.d e s c r i p t i o n sd e s c r i p t i o n s
173 FROMANSWERSa
174 WHEREa.q u e s t i o n s _ i d=?";
175 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ q u e s t i o n s _ i d));
176 $ d a t a ['answers']= $ query ?> r e s u l t _ a r r a y ();
177
178 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
179 r e t u r n $ d a t a;
180 } e l s e {
181 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
182 r e t u r n f a l s e;
183 }
184
185
186
187 }
188
189 / **
190 * Проверка на правильность введенного значения
191 * принятие решения о окончании тестирования
192 * подсчет результатов
193 *
194 * @parami n t e g e r$ a n s w e r _ i d
195 * @ returnb o o l e a n
196 * /
197 f u n c t i o n p r o c e s s i n g A n s w e r ($ a n s w e r _ i d = n u l l) {
198 $ t e s t _ i d = $ t h i s ?> s e s s i o n ?> u s e r d a t a ('t e s t I d');
199 / / Стартуем транзакцию
200 $ t h i s ?>db?> t r a n s _ s t a r t ();
201
202 / / Получим номер вопроса
203 $ s q l t e x t ="SELECTq u e s t i o n s _ i d
204 FROMANSWERS
205 WHEREi d=?";
206 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ a n s w e r _ i d));
207 $ q u e s t i o n s _ i d =$ query ?>row () ?> q u e s t i o n s _ i d;
208
209 / /Записываем время получения ответа и сам ответ
210 $ s q l t e x t ="UPDATEQUESTIONS_X_USERS_X_STATUSES
211 SET`t i m e _ f i n i s h`=now(),`a n s w e r s _ i d`=?
212 WHERE`q u e s t i o n s _ i d`=?
213 and`t e s t s _ i d`=?
214 ";
215 $ t h i s ?>db?> query ($ s q l t e x t, array ($ answer_ id, $ q u e s t i o n s _ i d, $ t e s t _ i d));
216
217
218 / /Определение параметров тестирования
219 $ s q l t e x t ="SELECTKo,Kf,time _ answe rFROMPARAMETERS
220 wherei d=(
221 SELECTp a r a m e t e r s _ i dFROMTESTS
222 WHEREi d=?)
223 ";
224 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ t e s t _ i d));
225 $Kdo=$ query ?>row () ?>Ko;
226 $Kdu=$ query ?>row () ?>Kf;
227 $ t ime_ answer =$ query ?>row () ?> t i me_ ans wer;
228
229 / /Проверка на правильность
230 $ s q l t e x t ="SELECTc o r r e c t
231 FROMANSWERS
232 WHEREi d= ?;
233 ";
234 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ a n s w e r _ i d));
235 $ c o r r e c t =$ query ?>row () ?> c o r r e c t;
236
237 / /Расчитываем коэффициенты время (тоже учитывается)
238 $ s q l t e x t ="SELECT(SELECTc o u n t(*)
239 FROMQUESTIONS_X_USERS_X_STATUSESJOINANSWERS
240 ON(ANSWERS.i d=QUESTIONS_X_USERS_X_STATUSES.a n s w e r s _ i d)
241 WHEREQUESTIONS_X_USERS_X_STATUSES.t e s t s _ i d=?ANDANSWERS.c o r r e c t=1
242 AND
243 t i m e s t a m p d i f f(second,QUESTIONS_X_USERS_X_STATUSES.t i m e _ s t a r t, QUESTIONS_X_USERS_X_STATUSES.t i m e _ f i n i s h)
244 <=(t i m e _ t o _ s e c(?) * (SELECTc o u n t(*)FROMn i r s.ANSWERS
245 WHEREq u e s t i o n s _ i d=?)))
246 /
247 (SELECTc o u n t(*)FROMQUESTIONS_X_USERS_X_STATUSES
248 WHEREt e s t s _ i d=?)Ko";
249 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ t e s t _ i d, $ t ime_ answer, $ q u e s t i o n s _ i d,
$ t e s t _ i d));
250 $Ko=$ query ?>row () ?>Ko;
251
252 / / Определяем нужно ли заканчивать тест
253 i f ($Kdo== 1) {/ / Если установлено в параметрах безошибочное прохождение
254 / /При первой ошибке завершаем тестирование
255 i f ($Ko < 1) {
256 / /Записываем коэффициент освоения в базу
257
258 $ t h i s ?>db?> where ('i d', $ t e s t _ i d);
259 $ t h i s ?>db?> u p d a t e ('TESTS', array (
260 'Ko'=> $Ko,
261 'c o m p l e t e'=> 1
262));
263 / /Удаляем из сессии номер теста
264 $ t h i s ?> s e s s i o n ?> u n s e t _ u s e r d a t a ('t e s t I d');
265 / /Неуспешное завершение теста
266 $ t h i s ?>db?> where ('i d', $ t e s t _ i d);
267 $ t h i s ?>db?> u p d a t e ('TESTS', array (
268 'Ko'=> $Ko,
269 'c o m p l e t e'=> 1,
270 's u c c e s s'= >0,
271));
272 / /Подтверждаем транзакцию
273 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
274 $ d a t a ['s u c c e s s'] = 0;
275 $ d a t a ['Ko']=$Ko;
276 r e t u r n $ d a t a;
277 }
278 }
279 / /Расчет вероятности угадывания
280 #Считываем предыдущее значение вероятности
281 $ s q l t e x t ="SELECTKuFROMTESTS
282 WHEREi d= ?;
283 ";
284 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ t e s t _ i d));
285 $Ku=$ query ?>row () ?>Ku;
286
287 #Считываем количество вариантов ответа для текущего вопроса
288 $ s q l t e x t ="SELECTc o u n t(*)c o u n tFROMANSWERS
289 WHEREq u e s t i o n s _ i d=?
290 ";
291 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ q u e s t i o n s _ i d));
292 $ c o u n t =$ query ?>row () ?> count;
293
294 #Расчет коэф. угадывания
295 $Ku /= $ c o u n t;
296
297 # Записываем новое значение в базу
298 / /Втестов
299 $ t h i s ?>db?> where ('i d', $ t e s t _ i d);
300 $ t h i s ?>db?> u p d a t e ('TESTS', array (
301 'Ku'=> $Ku,
302));
303 / /В таблицу конкретного ответа
304 $ s q l t e x t ="UPDATEQUESTIONS_X_USERS_X_STATUSES
305 SET`Ku`=?
306 WHERE`q u e s t i o n s _ i d`=?
307 and`t e s t s _ i d`=?";
308 $ t h i s ?>db?> query ($ s q l t e x t, array ($Ku, $ q u e s t i o n s _ i d, $ t e s t _ i d));
309
310
311 / / Если вероятность угадывания больше допустимой, продолжаем
312 i f ($Ku<$Kdu) {
313 / Проверяем коэффициент усвоения больше или равен допустимому
314 i f ($Ko>=$Kdo) {
315 / /Успешное завершение теста
316 $ t h i s ?> s e s s i o n ?> u n s e t _ u s e r d a t a ('t e s t I d');
317 $ t h i s ?>db?> where ('i d', $ t e s t _ i d);
318 $ t h i s ?>db?> u p d a t e ('TESTS', array (
319 'Ko'=> $Ko,
320 'c o m p l e t e'=> 1,
321 's u c c e s s'= >1,
322));
323 / /Подтверждаем транзакцию
324 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
325 $ d a t a ['s u c c e s s'] = 1;
326 $ d a t a ['Ko']=$Ko;
327 r e t u r n $ d a t a;
328 } e l s e {
329 / /Неуспешное завершение теста
330 $ t h i s ?> s e s s i o n ?> u n s e t _ u s e r d a t a ('t e s t I d');
331 $ t h i s ?>db?> where ('i d', $ t e s t _ i d);
332 $ t h i s ?>db?> u p d a t e ('TESTS', array (
333 'Ko'=> $Ko,
334 'c o m p l e t e'=> 1,
335 's u c c e s s'= >0,
336));
337 / /Подтверждаем транзакцию
338 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
339 $ d a t a ['s u c c e s s'] = 0;
340 $ d a t a ['Ko']=$Ko;
341 r e t u r n $ d a t a;
342 }
343 }
344
345
346
347 / / Подтверждаем транзакцию
348 $ t h i s ?>db?> t r a n s _ c o m p l e t e ();
349 / /f a l s e - продолжаем тестирование
350 r e t u r n f a l s e;
351
352 }
353
354 / **
355 * Предоставление информации о тесте по его номеру
356 *
357 * @parami n t e g e r$ i d
358 * @ returna r r a y
359 * /
360 f u n c t i o n g e t I n f o T e s t ($ i d = n u l l) {
361 i f ($ i d) {
362 / /Получение основных характеристик попытки прохождения теста коэффиценты (,успешнонеуспешно/)
363 $ t h i s ?>db?> where ('i d', $ i d);
364 $ query = $ t h i s ?>db?> g e t ('t e s t s');
365 $ r e s u l t =$ query ?> r o w _ a r r a y ();
366
367
368 / /p r i n t _ r($ r e s u l t);
369 / /Получение название темы
370 $ t h i s ?>db?> where ('i d', $ r e s u l t ['t h e m e s _ i d']);
371 $ query = $ t h i s ?>db?> g e t ('themes');
372 $ r e s u l t _ t h e m e s =$ query ?> r o w _ a r r a y ();
373 $ r e s u l t ['theme']= $ r e s u l t _ t h e m e s ['name'];
374
375 / /Получение множество вопросов ответов для конкретного теста
376 $ t h i s ?>db?> s e l e c t ('q u e s t i o n s _ i d,t i m e _ s t a r t,t i m e _ f i n i s h,a n s w e r s _ i d,Ku, d e s c r i p t i o n');
377 $ t h i s ?>db?> j o i n ('q u e s t i o n s','i d=q u e s t i o n s _ i d');
378 $ t h i s ?>db?> where ('t e s t s _ i d', $ i d);
379 $ t h i s ?>db?> o r d e r _ b y ('Ku','de sc');
380 $ query = $ t h i s ?>db?> g e t ('q u e s t i o n s _ x _ u s e r s _ x _ s t a t u s e s');
381 $ r e s u l t _ q u e s t i o n s =$ query ?> r e s u l t _ a r r a y ();
382 $ r e s u l t ['q u e s t i o n s']= $ r e s u l t _ q u e s t i o n s;
383
384 / /p r i n t _ r($ r e s u l t[ 'q u e s t i o n s' ]);
385 $ i = 0;
386 foreach ($ r e s u l t ['q u e s t i o n s'] as $ answers) {
387 / /p r i n t _ r($ answers);
388 $ t h i s ?>db?> s e l e c t ('id,q u e s t i o n s _ i d,d e s c r i p t i o n s,c o r r e c t');
389 $ t h i s ?>db?> where ('q u e s t i o n s _ i d', $ answers ['q u e s t i o n s _ i d']);
390 $ query = $ t h i s ?>db?> g e t ('answers');
391 $ r e s u l t _ a n s w e r s =$ query ?> r e s u l t _ a r r a y ();
392 / /p r i n t _ r($ r e s u l t _ a n s w e r s);
393 / /$ r e s u l t[ 'answers' ] [$ i]=$ r e s u l t _ a n s w e r s;
394 / /p r i n t _ r($ answers);
395 $ r e s u l t ['q u e s t i o n s'] [ $ i ] ['answers']= $ r e s u l t _ a n s w e r s;
396 / /Сколько данный вопрос уже раз задавался?
397 $ s q l t e x t ="SELECTc o u n t(*)c o u n t _ q u e s t i o n
398 FROM`q u e s t i o n s _ x _ u s e r s _ x _ s t a t u s e s`
399 WHEREu s e r s _ i d=?
400 ANDt e s t s _ i d<?
401 ANDq u e s t i o n s _ i d=?
402 ";
403 $ query = $ t h i s ?>db?> query ($ s q l t e x t, array ($ r e s u l t ['u s e r s _ i d'], $ id, $ answers [' q u e s t i o n s _ i d']));
404 $ c o u n t =$ query ?>row () ?> c o u n t _ q u e s t i o n;
405
406 $ r e s u l t ['q u e s t i o n s'] [ $ i ] ['c o u n t']= $ c o u n t;
407 ++ $ i;
408 }
409 / /p r i n t _ r($ r e s u l t[ 'q u e s t i o n s' ] [ 0 ]);
410 r e t u r n $ r e s u l t;
411 } e l s e {
412 r e t u r n f a l s e;
413 }
414 }
415
416 / **
417 * Получение значения параметров по ИД
418 *
419 * @parami n t e g e r$ id_ param
420 * @ returna r r a y/b o o l e a n
421 * /
422 f u n c t i o n g e t I n f o P a r a m ($ id_ param = n u l l) {
423 i f ($ id_ param) {
424 $ t h i s ?>db?> where ('i d', $ id_ param);
425 $ query = $ t h i s ?>db?> g e t ('p a r a m e t e r s');
426 $ r e s u l t =$ query ?> r o w _ a r r a y ();
427 r e t u r n $ r e s u l t;
428 } e l s e {
429 r e t u r n f a l s e;
430 }
431 }
432
433 / **
434 * Получение списка тем, необходимых для изучения конкретному пользователю
435 *
436 * @parami n t e g e r$ i d _ u s e r
437 * @ returna r r a y
438 * /
439 f u n c t i o n g e t I n f o T h e m e s F o r U s e r s ($ i d _ u s e r = n u l l) {
440 i f ($ i d _ u s e r) {
441 $ s q l ="SELECT
442 `themes`. `name`,
443 Max(`t e s t s`. `Ko`)max,
444 Max(s u c c e s s)s u c c e s s,
445 Count(`t e s t s`. `t hemes_ id`)c o u n t
446 FROM`themes`
447 JOIN`groups_ x_ themes`ON`themes`. `id`= `groups_ x_ themes`. `t hemes_ id`
448 JOIN`groups`ON`groups`. `id`= `groups_ x_ themes`. `g r o u p s _ i d`
449 JOIN`u s e r s _ x _ g r o u p s`ON`u s e r s _ x _ g r o u p s`. `g r o u p s _ i d`= `groups`. `id`
450 JOIN`u s e r s`ON`u s e r s`. `id`= `u s e r s _ x _ g r o u p s`. `u s e r s _ i d`
451
452 LEFTJOIN`t e s t s`ON`t e s t s`. `u s e r s _ i d`= `u s e r s`. `id`
453 and`groups_ x_ themes`. `t hemes_ id`= `t e s t s`. `t hemes_ id`
454 and`t e s t s`. `t hemes_ id`= `themes`. `id`
455 WHERE`u s e r s`. `id`=?
456 GROUPBY`groups_ x_ themes`. `t hemes_ id`
457 ";
458
459 $ query = $ t h i s ?>db?> query ($ sql, array ($ i d _ u s e r));
460 $ r e s u l t =$ query ?> r e s u l t _ a r r a y ();
461 r e t u r n $ r e s u l t;
462 } e l s e {
463 r e t u r n f a l s e;
464 }
465 }
466
467
468 }
469
470 / * Endoff i l em d l _ s t u d e n t.php * /
471 / * L o c a t i o n:. /a p p l i c a t i o n/models/m d l _ s t u d e n t.php * /
Модуль mdlexercise.php
Модуль реализует функционал АРМ обучаемого. Исходный код модуля представлен в листинге К.10
Листинг К.10 -- Исходный код модуля mdlexercise.php
1 <? php
2 i f (! d e f i n e d ('BASEPATH')) e x i t ('Nod i r e c ts c r i p ta c c e s sa l l o w e d');
3
4 c l a s s m d l _ e x e r c i s e e x t e n d s CI_Model {
5 p u b l i c f u n c t i o n _ _ c o n s t r u c t () {
6 p a r e n t:: _ _ c o n s t r u c t ();
7 }
8
9 / **
10 * Получить название упражнения проверки навыков
11 *
12 * @parami n t e g e r$ e x e r c i s e _ i d
13 * @ returns t r i n g
14 * /
15 p u b l i c f u n c t i o n g e t _ e x e r c i s e _ n a m e ($ e x e r c i s e _ i d = n u l l) {
16 $ s q l ="SELECTnameFROM`e x e r c i s e s`eWHEREe.i d=?";
17 $ query = $ t h i s ?>db?> query ($ sql, array ($ e x e r c i s e _ i d));
18 $ r e s u l t =$ query ?> r o w _ a r r a y ();
19 r e t u r n $ r e s u l t ['name'];
20 }
21
22 / **
23 * Получить описание упражнения, значения параметров
24 *
25 * @parami n t e g e r$ e x e r c i s e _ i d
26 * @ returna r r a y
27 * /
28 p u b l i c f u n c t i o n g e t _ e x e r c i s e _ d e s c r i p t i o n ($ e x e r c i s e _ i d = n u l l) {
29 $ s q l ="SELECT`d e s c r i p t i o n`,
30 `kcomplex`,
31 `n u m b e r _ o f _ a t t e m p t s 1`,
32 `n u m b e r _ o f _ a t t e m p t s 2`,
33 `d e v i a t i o n`,
34 `t h r e s h o l d _ v a l u e _ o f _ K q u a l i t y _ i n d e x`
35 FROM`e x e r c i s e s`e
36 WHEREe.i d=?
37 LIMIT1";
38
39 $ query = $ t h i s ?>db?> query ($ sql, array ($ e x e r c i s e _ i d));
40 $ r e s u l t =$ query ?> r o w _ a r r a y ();
41 r e t u r n $ r e s u l t;
42 }
46 / **
47 * Установить итоговое пороговое значение интегрального показателя качества
48* выполнения упражнения
49*
50* @parami n t e g e r$ e x e r c i s e _ i d
51* @paramv a l u e$ v a l u e
52* @ returnb o o l e a n
53* /
54p u b l i c f u n c t i o n se t _ k _ co mp l ex ($ e x e r c i s e _ i d, $ v a l u e) {
55t r y {
56$ d a t a = array ('kcomplex'=> $ v a l u e);
57$ t h i s ?>db?> where ('i d', $ e x e r c i s e _ i d);
58$ t h i s ?>db?> u p d a t e ('e x e r c i s e s', $ d a t a);
59r e t u r n t ru e;
60} c a t c h (E x c e p t i o n $ e) {
61r e t u r n f a l s e;
62}
63}
64
65
66/ **
67* Установить рекомендуемое количество попыток
68* выполнения упражнения для освоения умения
69*
70* @parami n t e g e r$ e x e r c i s e _ i d
71* @paramf l o a t$ v a l u e
72* @ returnb o o l e a n
73* /
74p u b l i c f u n c t i o n s e t _ n u m b e r _ o f _ a t t e m p t s 1 ($ e x e r c i s e _ i d,$ v a l u e) {
75t r y {
76$ d a t a = array ('n u m b e r _ o f _ a t t e m p t s 1'=> $ v a l u e);
77$ t h i s ?>db?> where ('i d', $ e x e r c i s e _ i d);
78$ t h i s ?>db?> u p d a t e ('e x e r c i s e s', $ d a t a);
79r e t u r n t ru e;
80} c a t c h (E x c e p t i o n $ e) {
81r e t u r n f a l s e;
82}
83}
84
85/ **
86* Установить требуемое количество попыток
87* выполнения упражнения для освоения навыка
88*
89* @parami n t e g e r$ e x e r c i s e _ i d
90* @paramf l o a t$ v a l u e
91* @ returnb o o l e a n
92* /
93p u b l i c f u n c t i o n s e t _ n u m b e r _ o f _ a t t e m p t s 2 ($ e x e r c i s e _ i d,$ v a l u e) {
94t r y {
95$ d a t a = array ('n u m b e r _ o f _ a t t e m p t s 2'=> $ v a l u e);
96 $ t h i s ?>db?> where ('i d', $ e x e r c i s e _ i d);
97 $ t h i s ?>db?> u p d a t e ('e x e r c i s e s', $ d a t a);
98 r e t u r n t ru e;
99 } c a t c h (E x c e p t i o n $ e) {
100 r e t u r n f a l s e;
101 }
102 }
103
104 / **
105 * Установить допустимое отклонение от итогового порогового
106 * значениякомплексногокоэффициентаосвоения
107 *
108 * @parami n t e g e r$ e x e r c i s e _ i d
109 * @paramf l o a t$ v a l u e
110 * @ returnb o o l e a n
111 * /
112 p u b l i c f u n c t i o n s e t _ d e v i a t i o n ($ e x e r c i s e _ i d, $ v a l u e) {
113 t r y {
114 $ d a t a = array ('d e v i a t i o n'=> $ v a l u e);
115 $ t h i s ?>db?> where ('i d', $ e x e r c i s e _ i d);
116 $ t h i s ?>db?> u p d a t e ('e x e r c i s e s', $ d a t a);
117 r e t u r n t ru e;
118 } c a t c h (E x c e p t i o n $ e) {
119 r e t u r n f a l s e;
120 }
121 }
122
123 / **
124 * Установка порогового значения коэффициента освоения
125 * показателя качества
126 *
127 * @parami n t e g e r$ e x e r c i s e _ i d
128 * @paramf l o a t$ v a l u e
129 * @ returnb o o l e a n
130 * /
131 p u b l i c f u n c t i o n s e t _ t h r e s h o l d _ v a l u e _ o f _ K q u a l i t y _ i n d e x ($ e x e r c i s e _ i d, $ v a l u e) {
132 t r y {
133 $ d a t a = array ('t h r e s h o l d _ v a l u e _ o f _ K q u a l i t y _ i n d e x'=> $ v a l u e);
134 $ t h i s ?>db?> where ('i d', $ e x e r c i s e _ i d);
135 $ t h i s ?>db?> u p d a t e ('e x e r c i s e s', $ d a t a);
136 r e t u r n t ru e;
137 } c a t c h (E x c e p t i o n $ e) {
138 r e t u r n f a l s e;
139 }
140 }
141
142
143 / **
144 *
145 * @paramunknown$ e x e r c i s e _ i d
146 * @ returnunknown|b o o l e a n
147 * /
148 p u b l i c f u n c t i o n g e t _ q u a l i t y _ i n d i c a t o r s _ i n f o ($ e x e r c i s e _ i d) {
149 t r y {
150 $ s q l ="SELECTq i. `id`,q i. `name`,
151 q i g. `id`groupid,
152 q i g. `name`groupname,
153 q i. `kcomplex`,
154 q i. `Amin`,
155 q i. `Amax`,
156 q i. `Bmin`,
157 q i. `Bmax`,
158 q i. `Cmin`,
159 q i. `Cmax`,
160 q i. `Dmin`,
161 q i. `Dmax`,
162 q i. `Delta`,
163 q i. `u n i t s`
164 FROM`q u a l i t y _ i n d i c a t o r s`q i
165 JOIN`q u a l i t y _ i n d i c a t o r s _ g r o u p s`q i gONq i. `q u a l i t y _ i n d i c a t o r s _ g r o u p s _ i d`= q i g.i d
166 WHEREq i. `e x e r c i s e s _ i d`=?
167 ORDERBYq i. `id`";
168
169 $ query = $ t h i s ?>db?> query ($ sql, array ($ e x e r c i s e _ i d));
170 $ r e s u l t =$ query ?> r e s u l t _ a r r a y ();
171 r e t u r n $ r e s u l t;
172 } c a t c h (E x c e p t i o n $ e) {
173 r e t u r n f a l s e;
174 }
175 }
176
177 / **
178 * Получить информацию о показателе качества
179 *
180 * @paramunknown$ i n d i c a t o r _ i d
181 * @ returna r r a y
182 * /
183 p u b l i c f u n c t i o n g e t _ q u a l i t y _ i n d i c a t o r _ i n f o ($ i n d i c a t o r _ i d) {
184 t r y {
185 $ s q l ="SELECTq i. `id`q u a l i t y _ i n d i c a t o r _ i d,q i. `name`q u a l i t y _ i n d i c a t o r _ n a m e,
186 q i g. `id`groupid,
187 q i g. `name`groupname,
188 q i. `kcomplex`,
189 q i. `Amin`,
190 q i. `Amax`,
191 q i. `Bmin`,
192 q i. `Bmax`,
193 q i. `Cmin`,
194 q i. `Cmax`,
195 q i. `Dmin`,
196 q i. `Dmax`,
197 q i. `Delta`,
198 q i. `u n i t s`
199 FROM`q u a l i t y _ i n d i c a t o r s`q i
200 JOIN`q u a l i t y _ i n d i c a t o r s _ g r o u p s`q i gONq i. `q u a l i t y _ i n d i c a t o r s _ g r o u p s _ i d`= q i g.i d
Подобные документы
Автоматизация процесса профессионального обучения в разных отраслях с применением компьютерных тренажеров. Выбор средств разработки подсистемы автоматизированного обучения компьютерного тренажерного комплекса. Проектирование пользовательских интерфейсов.
дипломная работа [4,1 M], добавлен 27.04.2018Особенности и классификация программных комплексов, их обзор и функциональные возможности в сфере обучения. Объектно-ориентированное проектирование компьютерного практикума. Разработка и структура информационного обеспечения, основные требования к нему.
дипломная работа [3,3 M], добавлен 19.01.2017Исследование специфики и этапов освоения технологии создания компьютерного теста. Основные принципы организации компьютерного тестирования средствами офисных технологий, порядок работы с тестовыми оболочками. Разработка компьютерного теста по теме.
лабораторная работа [2,0 M], добавлен 29.04.2011Пакет презентационной графики, ее основные возможности. Преимущества PowerPoint перед другими технологиями слайд-шоу и анимации. Создание презентации. Основы организации рабочего места оператора по обработке информации и программного обеспечения.
дипломная работа [4,5 M], добавлен 25.05.2014Характеристика предприятия, анализ целей и проблемных ситуаций, структура информационного обеспечения. Проектирование подсистемы для автоматизации процесса составления отчетности по обучению на авторских курсах фирмы "1С", ее экономическая эффективность.
дипломная работа [7,2 M], добавлен 01.07.2011Понятие информации, информационных технологий и их виды. Анализ основных положений по автоматизации рабочего места оператора автотранспортного предприятия. Разработка модели автоматизированного рабочего места начальника отдела. Применение модели АРМ.
дипломная работа [4,0 M], добавлен 18.09.2010Разработка алгоритма автоматизации работы компьютерного магазина, изменив и доработав имеющиеся модули в системе "1С" в соответствии с заявленными требованиями. Состав выполняемых функций. Требования к составу и параметрам технических средств приложения.
дипломная работа [1,2 M], добавлен 26.09.2014Разработка программного обеспечения автоматизированного рабочего места (АРМ) оператора вертикального стенда нагрева промковшей. Определение задач подлежащих автоматизации. Основные принципы построения АРМ. Состав пульта управления вертикальным стендом.
курсовая работа [1,6 M], добавлен 03.07.2012Анализ программных средств (операционных систем), необходимых для реализации учебных задач компьютерного класса. Особенности Windows XP, Linux Mandriva. Информационная модель настройки сервера на примере Windows Server 2008, его программное обеспечение.
дипломная работа [4,7 M], добавлен 21.09.2012Диагностический анализ системы управления предприятия, построение функциональной схемы. Анализ информационного, технического и программного обеспечения. Разработка информационной подсистемы "Заработная плата" и экономическая эффективность проекта.
дипломная работа [5,6 M], добавлен 21.06.2011