49057 (Создание программного обеспечения электронного учебника), страница 6
Описание файла
Документ из архива "Создание программного обеспечения электронного учебника", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49057"
Текст 6 страницы из документа "49057"
begin
CurStud.Tests[i]:=0;
end;
for i:=1 to PCNT do //Очистка текущей записи
begin
CurStud.Exams[i]:=0;
end; CurStud.Login:=FLogin.Edit1.Text;
CurStud.Group:=FLogin.Edit2.Text;
CurStud.Pass:=FLogin.Edit3.Text;
new:=True;
for i:=0 to St-1 do //Поиск записи
begin
if (Stud[i].Login=CurStud.Login) and (Stud[i].Group=CurStud.Group) then
begin
new:=False;
pn:=i;
end;
end;
if new=True then // Если новая - то создать запись
begin
if Application.MessageBox('Запись не найдена. Создать новую?','Экзаменатор',mb_IconQuestion+mb_YesNo) = idYes then
begin
St:=St+1;
pn:=St-1;
SetLength(Stud,St);
Stud[St-1]:=CurStud;
FSel.ShowModal;
end;
end
else // Иначе проверить пароль
begin
if (Stud[pn].Pass<>CurStud.Pass) then
begin
Application.MessageBox('Пароль не верен!!!', 'Экзаменатор',mb_ IconExclamation+mb_Ok);
end
else
begin
CurStud:=Stud[pn];
FSel.ShowModal;
end;
end;
end
else // Поля не заполнены
begin
Application.MessageBox('Заполните три поля','Экзаменатор',mb_ IconExclamation+mb_Ok);
end;
end;
end;
Листинг 3.
procedure TFSel.BitBtn2Click(Sender: TObject);
var
i,n:integer;
k: single;
f,g: integer;
begin
Qrt:=0;
Qc:=0;
g:=0;
for i:=1 to 50 do Rar[i]:=false;
n:=TestList.Selection.Top-1;
Part:=n div 2+1;
if (n mod 2)=1 then Ex:=true else Ex:=false;
Form1.Hide;
FSel.Hide;
repeat
Qc:=Qc+1;
randomize;
repeat
f:=trunc(random(QuesCnt[Part]-1))+1;
until Rar[f]=false;
Rar[f]:=true;
Qnum:=f;
FTest.BitBtn2.Enabled:=false;
FTest.SB1.Down:=false;
FTest.SB2.Down:=false;
FTest.SB3.Down:=false;
FTest.SB4.Down:=false;
FTest.ShowModal;
if FTest.SB1.Down then g:=1;
if FTest.SB2.Down then g:=2;
if FTest.SB3.Down then g:=3;
if FTest.SB4.Down then g:=4;
if g>0 then
begin
if Questions[Part,Qnum].Answers[g].Rt then Qrt:=Qrt+1
else if not(Ex) then
begin
FNR.ShowModal;
end;
g:=0;
end;
until (FTest.ModalResult=mrCancel) or (Qc=10);
FSel.Show;
Form1.Show;
k:=trunc(Qrt/10*100);
if Ex=true then
begin
if CurStud.Exams[part] end else begin if CurStud.Tests[part] end; CurStud.Total:=0; for i:=1 to PCNT do CurStud.Total:=CurStud.Total+CurStud.Exams[i]; CurStud.Total:=Trunc(CurStud.Total/5); Stud[pn]:=CurStud; if k>39.9 then begin if part=5 then begin if Ex then FRes.Label1.Caption:='Поздравляем! Вы успешно завершили тестирование. Набранный балл: '+FloatToStrF(k,ffFixed,3,0)+'%. Итоговый балл: '+FloatToStrF(CurStud.Total,ffFixed,3,0)+'%'; end else FRes.Label1.Caption:='Набранный балл: '+FloatToStrF (k,ffFixed,3,0)+'%. Тест пройден'; end else begin FRes.Label1.Caption:='Набранный балл: '+FloatToStrF(k,ffFixed,3,0)+'%. Тест НЕ пройден'; end; FRes.ShowModal; Qnum:=0; end; Листинг 4. procedure TFNR.BitBtn2Click(Sender: TObject); begin FMater.PartList.ItemIndex:=Part-1; FMater.ShowModal; end; Листинг 5. procedure TFSel.FormShow(Sender: TObject); var i,n,m: integer; y:single; begin with TestList do begin RowCount:=2; FixedRows:=1; Rows[0].Strings[0]:='Общий балл'; Rows[0].Strings[1]:=FloatToStr(CurStud.Total); Rows[1].Strings[0]:='Тест по главе'+IntToStr(1); Rows[1].Strings[1]:=FloatToStr(CurStud.Tests[1]); for i:=1 to PCNT-1 do begin if CurStud.Exams[i]>40 then begin RowCount:=RowCount+1; Rows[i*2+1].Strings[0]:='Тест по главе'+IntToStr(i+1); Rows[i*2+1].Strings[1]:=FloatToStr(CurStud.Tests[i+1]); end; end; for i:=1 to PCNT do begin if CurStud.Tests[i]>40 then begin //y:=CurStud.Tests[2]; RowCount:=RowCount+1; Rows[i*2].Strings[0]:='Экзамен по главе'+IntToStr(i); Rows[i*2].Strings[1]:=FloatToStr(CurStud.Exams[i]); end; end; end; end; Листинг 6. procedure TFResult.FormShow(Sender: TObject); var i,j: integer; begin with StrGr do begin RowCount:=2; FixedRows:=1; RowCount:=St+1; ColCount:=4+PCNT; Rows[0].Strings[0]:='Фамилия'; Rows[0].Strings[1]:='Группа'; Rows[0].Strings[2]:='Пароль'; Rows[0].Strings[3]:='Итог'; for i:=1 to PCNT do begin Rows[0].Strings[3+i]:='Глава'+IntToStr(i); end; for i:=0 to St-1 do begin Rows[i+1].Strings[0]:=Stud[i].Login; Rows[i+1].Strings[1]:=Stud[i].Group; Rows[i+1].Strings[2]:=Stud[i].Pass; Rows[i+1].Strings[3]:=FloatToStr(Stud[i].Total); for j:=1 to PCNT do begin Rows[i+1].Strings[3+j]:=FloatToStr(Stud[i].Tests[j])+'/'+FloatToStr(Stud[i].Exams[j]); end; end; end; end; Листинг 7. procedure LoadQues; var i,n,j,l: integer; ns: string; begin for i:=1 to PCNT do begin AssignFile(QuesFile,'Book\'+IntToStr(i)+'.txt'); Reset(QuesFile); ReadLn(QuesFile,ns); n:=StrToInt(ns); QuesCnt[i]:=n; for j:=1 to n do begin if Eof(QuesFile)=false then ReadLn(QuesFile,ns) else Application.MessageBox('Конец файла','Экзаменатор',mb_IconExclamation+mb_Ok); Questions[i,j].Text:=TrimLeft(MidStr(ns,4,255)); for l:=1 to 4 do begin if Eof(QuesFile)=false then ReadLn(QuesFile,ns) else Application.MessageBox('Конец файла','Экзаменатор',mb_IconExclamation+mb_Ok); if RightStr(ns,1)='*' then begin Questions[i,j].Answers[l].Text:=TrimLeft(MidStr(ns,2,Length(TrimRight(ns))-2)); Questions[i,j].Answers[l].Rt:=true; end else begin Questions[i,j].Answers[l].Text:=TrimLeft(MidStr(ns,2,Length(TrimRight(ns)))); Questions[i,j].Answers[l].Rt:=false; end; end; end; CloseFile(QuesFile); end; end; Листинг 8. procedure Decrypt; begin WEAW('unrar.exe x -ptachikoma -o+ book.dat'); while not((FileExists('book\1.txt')) and(FileExists('book\2.txt')) and(FileExists('book\3.txt')) and(FileExists('book\4.txt')) and(FileExists('book\5.txt'))) do Sleep(100); end; //------------------------------------------------------------------------------------ procedure Crypt; begin DeleteFile('book\1.txt'); DeleteFile('book\2.txt'); DeleteFile('book\3.txt'); DeleteFile('book\4.txt'); DeleteFile('book\5.txt'); end