Конструктор тестов - нужен пример - C#
Формулировка задачи:
Доброго времени суток. Нужно создать программу, которая бы оценивала знания студентов, то есть, чтобы можна было создать свой тест и сохранить этот тест в файл для дальнейшего прохождения студентом. Помогите, может у кого-то готовые исходники завалялись, буду очень благодарен.
Решение задачи: «Конструктор тестов - нужен пример»
textual
Листинг программы
{$mode delphi}
Program tester_final;
Uses crt;
Var
fil, result: text;
name, s, otv, ocenka: string;
fam, im, kl: string;
kol, num: integer;
Label er1, er2, er3;
Begin
num := 0;
kol := 0;
assign(result, 'result.res');
{$i-}
append(result);
{$i+}
If ioresult<>0 Then // обработка исключения если файл не найден
Begin
rewrite(result);
writeln(result, 'Результаты тестирования: ');
writeln(result, 'в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ');
End;
er1:
textcolor(lightblue);
writeln('Вводите на английском');
normvideo;
write('Фамилия: ');
readln(fam);
write('Имя: ');
readln(im);
write('Класс: ');
readln(kl);
If ((fam='') Or (im='') Or (kl='')) Then
Begin
clrscr;
textcolor(lightred);
writeln('Вы ввели не все данные.');
normvideo;
writeln('Возврат через 3 сек.');
delay(3000);
clrscr;
goto er1;
End;
er3:
clrscr;
write('Имя файла -> ');
readln(name);
If (name='') Then
Begin
clrscr;
textcolor(lightred);
writeln('Вы не ввели название файла.');
normvideo;
writeln('Возврат через 3 сек.');
delay(3000);
goto er3;
End;
clrscr;
assign(fil, name+'.test');
{$i-}
reset(fil);
{$i+}
If ioresult<>0 Then
// обработка исключения если файл теста не найден
Begin
clrscr;
textcolor(lightred);
write('Файл ');
normvideo;
write(' " ', name+'.test', ' " ');
textcolor(lightred);
writeln('не найден.');
normvideo;
writeln('Возврат через 3 сек.');
delay(3000);
goto er3;
End;
While Not eof(fil) Do
Begin
inc(num);
textcolor(yellow);
writeln('Вопрос ', num);
normvideo;
Repeat
readln(fil, s);
If s='.' Then break
Else
writeln(s);
Until false;
readln(fil, s);
If s[1]<>'#' Then
Begin
clrscr;
textcolor(lightred);
writeln('Ошибка в файле теста.');
normvideo;
writeln('Возврат через 3 сек.');
delay(3000);
goto er3;
End;
er2:
writeln;
write('Ваш ответ -> ');
readln(otv);
If (otv='') Then
Begin
goto er2;
End;
If (s[2]=otv) Then inc(kol);
delay(500);
clrscr;
End;
close(fil);
If num=0 Then
Begin
textcolor(lightred);
write('Ошибка: файл ');
normvideo;
write(' " ', name+'.test', ' " ');
textcolor(lightred);
writeln('пуст.');
normvideo;
writeln('Возврат через 3 сек.');
delay(3000);
goto er3;
End;
textcolor(lightblue);
writeln('Результаты теста: ');
normvideo;
writeln('Всего вопросов: ', num, '. ');
writeln('Правильных ответов: ', kol, '. ');
write('Ваша оценка: ');
If kol=num Then
Begin
writeln('Отлично.');
ocenka := '5';
End
Else If kol/num>=0.8 Then
Begin
writeln('Хорошо.');
ocenka := '4';
End
Else If kol/num>=0.6 Then
Begin
writeln('Удовлетворительно.');
ocenka := '3';
End
Else
Begin
writeln('Плохо');
ocenka := '2';
End;
Begin
writeln(result, 'Фамилия: '+fam);
writeln(result, 'Имя: '+im);
writeln(result, 'Класс: '+kl);
writeln(result, 'Тест: " ', name+'.test' , ' " ');
writeln(result, 'Количество вопросов: ', num, '. ');
writeln(result, 'Правильных ответов: ', kol, '. ');
writeln(result, 'Оценка: ', ocenka, '. ');
writeln(result, 'в•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђв•ђ');
End;
close(result);
readln;
halt;
End.