Из опыта создания универсальных тестовых редакторов — страница 8

  • Просмотров 6235
  • Скачиваний 189
  • Размер файла 108
    Кб

переменной с файлом вопросов} f1:=a; a:=a+'o'; {изменение расширения} Assign(u,a); {связь переменниой с файлом ответов} delete(a,length(a),1); Assign(b1,'c:\pascal\registr.dat'); {связь переменной с файлом отчета} Append(b1); {открытие файла отчета для дозаписи} Reset(c); {открытие файла вопросов для чтения} Window(20,10,66,15); {закрытие начального окна} TextBackGround(black); clrscr; Reset(u); Read(c,b); {считывание пароля} Readln(c,b); z:=ord(b)-ord('0'); {установка времени} z1:=z; Window(10,10,40,12); {окно пароля} TextBackGround(magenta); clrscr;

Readln(u,a); If length(a)>2 Then Begin{проверка наличия в файле пароля} Write('введите пароль '); Readln(f); {ввод пароля} If a<>f Then Begin Write('пароль неверный'); GoTo l1; {выход из процедуры} End; End else Begin close(u); Reset(u); End; Readln(c,f); Writeln('тест по теме "',f,'"'); {вывод темы теста} z2:=60; repeat Window(60,20,70,21); {закрытие окна пароля} TextBackGround(black); clrscr; TextColor(yellow); z2:=z2-1; {включение таймера} If z2<0 Then Begin z1:=z1-1; z2:=60; End; If (z1=0)and(z2=0) Then GoTo l1; Writeln(z1,':',z2); GetTime(g1,g2,g3,g4); {вывод текущего времени} Write(g1,':',g2,'

',g3); Delay(1000); TextColor(black); Window(10,10,53,15); {вывод вопроса, ожидание ввода ответа} TextBackGround(cyan); clrscr; while not Eoln(c)or(b<>'&') do Begin Read(c,b); If b<>'&' Then Write(b); End; Writeln; Window(55,10,80,15); {вывод сообщения о вводе ответа} TextBackGround(blue); clrscr; Write('ваш ответ '); TextColor(yellow); repeat{таймер} Window(60,20,70,21); TextBackGround(black); clrscr; z2:=z2-1; If z2<0 Then Begin z1:=z1-1; z2:=60; End; If (z1=0)and(z2=0) Then GoTo l1; GetTime(g1,g2,g3,g4); Writeln(z1,':',z2); Write(g1,':',g2,' ',g3); Delay(1000); until keypressed; Window(55,10,80,15); TextBackGround(blue); clrscr; TextColor(yellow); b:=readkey; {считывание

цифры ответа} Write(b); {считывание правильного ответа из файла} Readln(u,k); Readln(c); If k=b Then p:=p+1; {сравнение ответов, начисление баллов} Window(60,20,70,21); TextBackGround(black); {закрытие окна отверов} clrscr; TextColor(black); z2:=z2-1; {таймер} If z2<0 Then Begin z1:=z1-1; z2:=60; End; If (z1=0)and(z2=0) Then GoTo l1; GoToXY(70,15); GetTime(g1,g2,g3,g4); {вывод текущего времени} Writeln(z1,':',z2); Write(g1,':',g2,' ',g3); Delay(1000); until Eof(c); l1:f1:=f1+'o'; close(c); {закрытие всех файлов} close(u); Window(55,10,80,15); {закрытие окон} TextBackGround(black); clrscr; Window(10,10,53,15);

TextBackGround(black); clrscr; Window(15,10,50,19); TextBackGround(blue); clrscr; <подсчет результата> End; Единственной проблемой здесь явилось неправильное чтение программой исходных данных. Естественно, разрабатывая сложные системы, с первого раза компилляция не удается никогда, но после корректировки программы она стала работать как надо. !!! Не забывайте закрывать файлы после использования и перезагружать их после прочтения до конца по необходимости,

иначе возникнет ошибка Disk Read Error!!! Эта ошибка может стоить вам всего файла. Очень часто после сбоя при чтении файла этот файл заново прочитать вам не удастся. Функция редактирования теста. Является вспомогательной функцией. Она редактирует вопросы указанного теста. Сначала вводится путь к файлу теста, затем он просматривается, выбирается вопрос для редактирования, вводится номер редактируемого вопроса. Затем указанный вопрос