Из опыта создания универсальных тестовых редакторов
nd;
else Begin
Writeln('2')
Writeln(b1,’2’);
End;
Readln;
Write('Фамилия: '); {вписывание фамилии}
Readln(a);
d:=length(a); {выставление пробелов}
Write(b1,a); {запись в файл}
For i:=1 to 14-d do Write(b1,' ');
Write('Имя: '); {вписывание имени, процедура повторяется}
Readln(a);
Write(b1,a);
d:=length(a);
For i:=1 to 11-d do Write(b1,' ');
Write('Отчесчтво: '); {вписывание отчества, процедура повторяется }
Readln(a);
Write(b1,a);
d:=length(a);
For i:=1 to 17-d do Write(b1,' ');
Write(b1,f);
d:=length(f);
For i:=1 to 8 do Write(b1,' ');
GetDate(g1,g2,g3,g4); {проставление даты}
Writeln(b1,g3,'.',g2,'.',g1);
close(b1);
Window(15,10,50,19);
TextBackGround(black);
clrscr;
Программа рассчитывает количество правильных ответов по формуле, в
соответствии с этим выставляет оценку, спрашивает ваши ФИО, записывает их в
файл, проставляет название теста и дату его прохождения. При этом
используется метод работы со строками: конкатенация(слияние) строк.
Проблемой стало корректное вписывание в файл строки, так как количество
букв может быть разным, поэтому программа проставляет пробелы в файл между
данными, используя данные о длине строк фамилии, имени, отчества и вычитая
их из постоянного числа
Таймер, системное время.
Таймер был разработан для отсчета времени на тест, время вводится
предварительно составителем теста. Кроме того, параллельно с выводом
времени на тест выводится текущее системное время. Действие таймера
основано на переменной-счетчике, которая через определенные промежутки
времени уменьшает свое значение на 1(секунду). Системное время выводится
благодаря процедуре GetTime.
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;
Объявляется переменная, из которой каждую секунду вычитается 1. Так
осуществляется обратный отсчет. С исходом времени программа автоматически
переходит к выставлению оценки.
Оконная система диалога.
Поскольку прошлая моя работа была посвящена диалоговым системам, я учел
тот опыт, но в этой программе сделал нововведение, приблизившее программу к
современному «оконному» виду.
Над оформлением окна пришлось посидеть не один час, так как обычное окно
в виде квадрата на экране совсем не привлекательно. Я изучил строение окон
в среде MS-DOS и попытался воссоздать дизайн окна в своей программе. Если
вы когда-либо видели схему окна в MS-DOS, то заметили, что окно обрамляется
двойной рамкой, наверху которой находится название окна. Здесь мне помогло
хитрое решение. Я заглянул в таблицу символов ASCII и нашел символ двойной
рамки! Далее все просто: открывается окно, закрашивается, по краям с
помощью циклов рисуется рамка и выводится название окна. Но это еще не все.
Внутри окна открывается другое окно того же цвета, чтобы было незаметно.
Теперь при вводе или выводе данных рамка не будет двигаться вместе с
текстом, разрываться и т. д. Мы получаем полноценное окно.
Я сделал оформление окна в виде процедуры, необходимо лишь ввести
координаты окна и его название. Ниже приведен код оформления окна:
Procedure windows(x,y,x1,y1:integer; b:string);
Var a,t:integer;
Begin
Window (x+1,y+1,x1+1,y1+1); {рисование тени от окна}
TextBackGround(black);
clrscr;
Window(x,y,x1,y1); {рисование окна}
TextBackGround(blue);
clrscr;
TextColor(darkgray); {цвет текста}
Write(' ');
Write(chr(201)); {рисование уголка}
For a:=1 to 4 do Write(chr(205)); {рисование полосы}
Write(' ');
TextColor(green); {цвет текста}
Write(b); {вывод названия окна}
Write(' ');
TextColor(darkgray); {цвет текста}
For a:=1 to (x1-x-9-length(b)) do Write(chr(205)); {рисование линии}
Writeln(chr(187)); {рисование уголка}
For a:=1 to (y1-y-1) do Begin {рисование линий по бокам}
Write(' ');
&nb
| | скачать работу |
Из опыта создания универсальных тестовых редакторов |