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

Анализ методов и средств профессионального обучения операторов перегрузочных машин, автоматизация процесса. Построение функциональной модели компьютерного тренажера оператора портального крана. Разработка программного и информационного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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. ='&nbsp;';

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. ='&nbsp;';

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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.