n. 2.7 Тестирование ИС
Тестирование осуществлялось одновременно с разработкой системы (согласно методологии RAD). Тестирование информационной системы предполагает проверку корректности работы приложения при введении данных. Тестирование на допустимость вводимых значений подразумевает проверку корректности вводимых данных. Например, при запуске системы происходит проверка вводимого и имеющегося в системе логина и пароля регистрации пользователя. Таким образом, вследствие применения методологии RAD конфигурационное управление и управление изменениями ИС достаточно легко осуществимо. Это может способствовать модернизации и развитию информационной системы обучения. Заключение
В результате выполнения дипломной работы была создана информационная система обучения по курсу «Компьютерные сети». Для создания программного обеспечения ИС использовалась среда визуального проектирования Delphi, сам курс реализован с помощью технологий гипертекста. Информационная система включает в себя средства для управления курсом (администраторский раздел), средства для обучения и контроля по курсу, а также средства отображения статистической информации. Таким образом, основная цель дипломной работы достигнута и данная система готова к использованию и последующим модернизациям в современных условиях в РГГУ. Список использованной литературы
1. Алиев В.С. Информационные технологии и системы финансового менеджмента: учеб. пособие. – М.: «ФОРУМ»: ИНФРА–М, 2007. – 320 с. 2. Гук М. Аппаратные средства локальных сетей. Энциклопедия. – Спб: Издательство «Питер», 2000 – 576 c. 3. Долятовский В.А., Долятовская В.Н. Исследование систем управления: Учебное-практическое пособие. – Москва: ИКЦ «МарТ», 2003 – 256 с. 4. Емельянова Н.З., Партыка Т.Л., Попов И.И. Основы построения автоматизированных информационных систем: Учебное пособие. – М: ФОРУМ: ИНФОРМА–М, 2007 – 416 с. 5. Колисниченко Д.Н. Сделай сам компьютерную сеть: монтаж, настройка, обслуживание – Спб.: Наука и Техника, 2004 – 400 с. 6. Компьютерные сети. Принципы, технологии, протоколы. В.Г. Олифер, Н.А. Олифер. – Спб.: Питер, 2001. – 672 с. 7. Компьютерные сети. 4-е изд./Э. Таненбаум – Спб.: Питер, 2003 – 992 с. 8. Новиков Ю.В., Кондратенко С.В. Локальные сети: архитектура, алгоритмы, проектирование. М.: ЭИОТ, 2000 – 312 с. 9. Новые педагогические и информационные технологии в системе образования: Учеб. пособие для студ. пед. вузов и системы повыш. квалиф. пед.кадров/ Под ред. Е.С. Полат. – М.: Издательский центр «Академия», 2001.– 272 с. 10. Пантер М., Синипер Р.Б. Проектирование и внедрение компьютерных сетей. Учебный курс. – 2–е изд., перераб. и доп: Пер. с англ. – Спб.: БХВ– Петербург, 2004. – 752 с. 11. Саак А.Э, Пахомов Е.В., Тюшняков В.Н. Информационные технологии управления: Учебник для вузов. – Спб.: Питер, 2005. – 320 с. 12. Семакин И.Г. Информационные системы и модели. Элективный курс: Учебный пособие / И.Г. Семакин, Е.К. Хеннер. – М.: БИНОМ. Лаборатория знаний, 2005. – 303 с. 13. Соловов А.В. Дидактика и технология электронного обучения в системе КАДИС // "Индустрия образования". 6. – М.: МГИУ, 2002, – с. 54–64. 14. Хортон У., Хортон К. Электронное обучение: инструменты и технологии / Пер. с англ. – М.: КУДИЦ–ОБРАЗ, 2005. – 640 с.
Приложение
Исходные коды модулей информационной системы
1. Модуль начальной страницы unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg; type Tzagl = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; Button2: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var agl: Tzagl; fil,fil1:textfile; implementation uses Unit19, Unit44, tester_, Unit4; {$R *.dfm} procedure Tzagl.Button1Click(Sender: TObject); var s,s1,s2,log,pas:string;i:integer;k:boolean; begin s:=''; reset(fil); while not eof(fil) do begin readln(fil,s2); s:=s+s2; end; closefile(fil); k:=true; s1:=''; for i:=1 to length(s) do begin if (s[i] = '*') then begin log:=s1; s1:=''; end; if (s[i] = '&') then begin pas:=s1; if (edit1.text=log)and(edit2.Text=pas) then begin k:=false; ElektKursInf.show; zagl.Hide; end; s1:=''; end; if (s[i] <> '&')and(s[i] <> '*') then s1:=s1+s[i]; end; if (edit1.Text='admin')and(edit2.Text='pasw') then begin Form4.Show; zagl.Hide; end else if k then showmessage('Введите верные логин и пароль'); end; procedure Tzagl.Button2Click(Sender: TObject); var s3,s4:string; begin if (edit1.text<>'')and(edit2.Text<>'') then begin append(fil); s3:=edit1.text+'*'+edit2.text+'&'; writeln(fil,s3); closefile(fil); append(fil1); s4:=edit1.text+'*0&0$0#'; writeln(fil1,s4); closefile(fil1); showmessage('Вы успешно зарегистрированы!') end else showmessage('Введите логин и пароль!') end; procedure Tzagl.FormCreate(Sender: TObject); begin assignfile(fil,'bd\user.txt'); assignfile(fil1,'bd\result.txt'); end; end. 2. Модуль выбора темы курса unit Unit19; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, DBCtrls, ExtCtrls, Db, Provider, DBClient, MConnect; type TElektKursInf = class(TForm) Panel2: TPanel; Label1: TLabel; Label2: TLabel; Button1: TButton; ListBox1: TListBox; ListBox2: TListBox; Memo1: TMemo; Label3: TLabel; Button2: TButton; Button3: TButton; ListBox3: TListBox; procedure Exit1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var ElektKursInf: TElektKursInf; fil1,fil:textfile; implementation uses Unit44, Unit1, Unit3, Unit5; {$R *.DFM} procedure TElektKursInf.Exit1Click(Sender: TObject); begin ElektKursInf.Hide; zagl.close; end; procedure TElektKursInf.FormClose(Sender: TObject; var Action: TCloseAction); begin ElektKursInf.Hide; zagl.Close; end; procedure TElektKursInf.FormShow(Sender: TObject); var i,j:integer;s0,s,s2,k:string; begin assignfile(fil,'bd\path1.txt'); reset(fil); s:=''; while not eof(fil) do begin readln(fil,s); s0:=s; end; closefile(fil); assignfile(fil,'bd\path.txt'); reset(fil); Listbox1.Clear; s:=''; while not eof(fil) do begin readln(fil,s); Listbox1.Items.Add(s0+s); end; closefile(fil); assignfile(fil,'bd\themes.txt'); reset(fil); Listbox3.Clear; s:=''; while not eof(fil) do begin readln(fil,s); Listbox3.Items.Add(s); end; closefile(fil); Label3.Caption:='Здравствуйте, '+zagl.Edit1.Text+'. Вы работаете с учебным курсом "Компьютерные сети"'; //ComboBox1.ItemIndex := 0; s:=''; assignfile(fil1,'bd\result.txt'); reset(fil1); while not eof(fil1) do begin readln(fil1,s2); for i:=1 to length(s2) do begin if (s2[i] = '*') then begin if s=zagl.Edit1.Text then begin j:=i+1; while s2[j]<>'#' do begin if s2[j]='&' then k:=s2[j+1]; j:=j+1; end; end; end; s:=s+s2[i]; end; s:=''; end; closefile(fil1); {showmessage(k);} if k='1' then begin listbox2.items.Add(listbox3.Items.Strings[1]); end; if k='2' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); end; if k='3' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); listbox2.items.Add(listbox3.Items.Strings[3]); end; if k='4' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); listbox2.items.Add(listbox3.Items.Strings[3]); listbox2.items.Add(listbox3.Items.Strings[4]); end; if k='5' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); listbox2.items.Add(listbox3.Items.Strings[3]); listbox2.items.Add(listbox3.Items.Strings[4]); listbox2.items.Add(listbox3.Items.Strings[5]); end; if k='6' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); listbox2.items.Add(listbox3.Items.Strings[3]); listbox2.items.Add(listbox3.Items.Strings[4]); listbox2.items.Add(listbox3.Items.Strings[5]); listbox2.items.Add(listbox3.Items.Strings[6]); end; if k='7' then begin listbox2.items.Add(listbox3.Items.Strings[1]); listbox2.items.Add(listbox3.Items.Strings[2]); listbox2.items.Add(listbox3.Items.Strings[3]); listbox2.items.Add(listbox3.Items.Strings[4]); listbox2.items.Add(listbox3.Items.Strings[5]); listbox2.items.Add(listbox3.Items.Strings[6]); listbox2.items.Add(listbox3.Items.Strings[7]); end; listbox2.ItemIndex:=0; end; procedure TElektKursInf.ComboBox1Change(Sender: TObject); begin {with ClientElektKurs do begin while not EOF do begin ListBox2.items.add(FieldByName('Kurs').AsString); next; end; end;} end; procedure TElektKursInf.Button1Click(Sender: TObject); begin ListBox1.ItemIndex:=ListBox2.ItemIndex; Form37.WebBrowser1.Navigate(ListBox1.Items.Strings[ListBox1.ItemIndex]); //Form37.ComboBox1.Text:=ListBox1.Items.Strings[ListBox1.ItemIndex]; Form37.ToolButton2.Enabled:=false; Form37.ToolButton3.Enabled:=false; Form37.Show; Button1.Enabled:=false; Label3.Caption:=''; //ElektKursInf.Hide; end; procedure TElektKursInf.Button2Click(Sender: TObject); begin Form3.Show; end; procedure TElektKursInf.Button3Click(Sender: TObject); begin Form5.Show; end; end. 3. Модули статистики по группам и индивидуально unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm3 = class(TForm) StringGrid1: TStringGrid; procedure FormShow(Sender: TObject); procedure StringGrid1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; s,s2:string; fil1:textfile; i,j:integer; implementation {$R *.dfm} procedure TForm3.FormShow(Sender: TObject); var s0:double; begin StringGrid1.Cells[0,0]:='Логин'; StringGrid1.Cells[1,0]:='Время обучения(мин.)'; StringGrid1.Cells[2,0]:='Количество пройденных тем'; StringGrid1.Cells[3,0]:='Количество баллов';assignfile(fil1,'bd\result.txt'); reset(fil1); s:=''; i:=1; while not eof(fil1) do begin readln(fil1,s2); for j:=1 to length(s2) do begin if s2[j]='*' then begin StringGrid1.Cells[0,i]:=s; s:=''; continue; end; if s2[j]='&' then begin s0:=strtofloat(s)/60000; StringGrid1.Cells[1,i]:=floattostr(s0); s:=''; continue; end; if s2[j]='$' then begin StringGrid1.Cells[2,i]:=s; s:=''; continue; end; if s2[j]='#' then begin StringGrid1.Cells[3,i]:=s; s:=''; continue; end; s:=s+s2[j]; end; i:=i+1; StringGrid1.RowCount:=i; end; closefile(fil1); end; end.
unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm5 = class(TForm) StringGrid1: TStringGrid; procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; s,s1,s2,s3:string; fil1:textfile; i,j:integer; implementation uses Unit1; {$R *.dfm} procedure TForm5.FormShow(Sender: TObject); begin StringGrid1.Cells[0,0]:='1 тема'; StringGrid1.Cells[1,0]:='2 тема'; StringGrid1.Cells[2,0]:='3 тема'; StringGrid1.Cells[3,0]:='4 тема'; StringGrid1.Cells[4,0]:='5 тема'; StringGrid1.Cells[5,0]:='6 тема'; StringGrid1.Cells[6,0]:='7 тема'; assignfile(fil1,'bd\result1.txt'); reset(fil1); s:=''; s3:=''; while not eof(fil1) do begin readln(fil1,s2); s:=s+s2; end; for j:=1 to length(s) do begin if s[j]='*' then begin if s1=zagl.Edit1.Text then begin i:=j+1; while s[i]<>'*' do begin if s[i]='!' then begin StringGrid1.Cells[0,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='$' then begin StringGrid1.Cells[1,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='#' then begin StringGrid1.Cells[2,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='%' then begin StringGrid1.Cells[3,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='^' then begin StringGrid1.Cells[4,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='@' then begin StringGrid1.Cells[5,1]:=s3; s3:=''; i:=i+1; continue; end; if s[i]='~' then begin StringGrid1.Cells[6,1]:=s3; s3:=''; i:=i+1; continue; end; s3:=s3+s[i]; i:=i+1; end; end; s1:=''; end; s1:=s1+s[j]; if s[j]='~' then s1:=''; end; closefile(fil1); end; end. 4. Модуль обучения по курсу unit Unit44; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, ToolWin, ComCtrls, StdCtrls, ExtDlgs, ExtCtrls, Menus; const HTMLID_FIND = 1; HTMLID_VIEWSOURCE = 2; HTMLID_OPTIONS = 3; type TForm37 = class(TForm) WebBrowser1: TWebBrowser; StatusBar1: TStatusBar; ProgressBar1: TProgressBar; OpenDialog1: TOpenDialog; CoolBar1: TCoolBar; ToolBar1: TToolBar; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton6: TToolButton; ComboBox1: TComboBox; ToolButton8: TToolButton; ToolButton1: TToolButton; Timer1: TTimer; PopupMenu1: TPopupMenu; N1: TMenuItem; procedure ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure WebBrowser1StatusTextChange(Sender: TObject; const Text: WideString); procedure WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ToolButton7Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure WebBrowser1BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); procedure WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure ToolButton8Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N1Click(Sender: TObject); private { Private declarations } public {procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload;} { Public declarations } end; var Form37: TForm37; z,time1:integer;m:string; implementation uses Unit19, kontr; {$R *.DFM} procedure TForm37.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin {if Key = VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text);} end; procedure TForm37.ToolButton1Click(Sender: TObject); begin { if OpenDialog1.Execute then begin WebBrowser1.Navigate(OpenDialog1.FileName); ComboBox1.Text := OpenDialog1.FileName; end;} timer1.Enabled:=false; close; end; procedure TForm37.ToolButton2Click(Sender: TObject); begin z:=z+1; WebBrowser1.GoBack; ToolButton3.Enabled:=true; end; procedure TForm37.ToolButton3Click(Sender: TObject); begin z:=z–1; if z>–1 then WebBrowser1.GoForward else ToolButton3.Enabled:=false; end; procedure TForm37.ToolButton4Click(Sender: TObject); begin WebBrowser1.Stop; end; procedure TForm37.ToolButton5Click(Sender: TObject); begin WebBrowser1.Refresh; end; procedure TForm37.ToolButton6Click(Sender: TObject); var PostData, Headers: OLEvariant; begin WebBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, PostData, Headers); end; procedure TForm37.WebBrowser1StatusTextChange(Sender: TObject; const Text: WideString); begin StatusBar1.SimpleText := Text; end; procedure TForm37.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin ProgressBar1.Max := ProgressMax; ProgressBar1.Position := Progress; end; procedure TForm37.FormClose(Sender: TObject; var Action: TCloseAction); begin timer1.Enabled:=false; Form37.Hide; ElektKursInf.Show; ElektKursInf.Button1.Enabled:=true; end; procedure TForm37.ToolButton7Click(Sender: TObject); const CGID_WebBrowser: TGUID = '{ED016940–BD5B–11cf–BA4E–00C04FD70816}'; {var CmdTarget : IOleCommandTarget; vaIn, vaOut: OleVariant; PtrGUID: PGUID;} begin {New(PtrGUID); PtrGUID^ := CGID_WebBrowser; if WebBrowser1.Document <> nil then try WebBrowser1.Document.QueryInterface(IOleCommandTarget, CmdTarget); if CmdTarget <> nil then try CmdTarget.Exec( PtrGUID, HTMLID_FIND, 0, vaIn, vaOut); finally CmdTarget._Release; end; except // nothing end; Dispose(PtrGUID);} end; procedure TForm37.FormShow(Sender: TObject); begin time1:=0; timer1.Enabled:=true; Form37.Caption:=ElektKursInf.ListBox2.Items.Strings[ElektKursInf.ListBox2.ItemIndex]; end; procedure TForm37.WebBrowser1BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var l:integer; begin end; procedure TForm37.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin Combobox1.Text:=WebBrowser1.LocationURL; if (ElektKursInf.ListBox1.Items.Strings[ElektKursInf.ListBox1.ItemIndex]<>WebBrowser1.LocationURL)then ToolButton2.Enabled:=true else ToolButton2.Enabled:=false; end; procedure TForm37.ToolButton8Click(Sender: TObject); begin Form2.Show; Form37.Hide; end; procedure TForm37.Timer1Timer(Sender: TObject); begin time1:=time1+timer1.interval; end; procedure TForm37.N1Click(Sender: TObject); begin close; end; end. 5. Модуль контрольного тестирования unit tester_; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, Gauges; type TForm1 = class(TForm) // вопрос Label5: TLabel; // альтернативные ответы Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; // радиокнопки выбора ответа RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; Image1: TImage; // область вывода иллюстрации Button1: TButton; Panel1: TPanel; RadioButton5: TRadioButton; Gauge1: TGauge; Timer1: TTimer; procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure RadioButtonClick(Sender: TObject); // Эти объявления вставлены сюда вручную procedure Info; procedure VoprosToScr; procedure ShowPicture; // выводит иллюстрацию procedure ResetForm; // "очистка" формы перед выводом очередного вопроса procedure Itog; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); // результат тестирования private { Private declarations } public { Public declarations } end; var Form1: TForm1; // форма implementation uses Unit19, Unit1, Unit44; {$R *.DFM} const N_LEV=4; // четыре уровня оценки N_ANS=4; // четыре варианта ответов var f,fil1:TextFile; fn:string; // имя файла вопросов level:array[1..N_LEV] of integer; // сумма, соответствующая уровню mes:array[1..N_LEV] of string; // сообщение, соответствующее уровню score:array[1..N_ANS] of integer; // оценка за выбор ответа summa:integer; // набрано очков vopros:integer; // номер текущего вопроса otv:integer; // номер выбранного ответа // вывод информации о тесте procedure Tform1.Info; var s,buf:string; begin readln(f,s); Form1.Caption := s; buf:=''; repeat readln(f,s); if s[1] <> '.' then buf := buf +s + #13; until s[1] ='.'; Label5.caption:=buf; end; // прочитать информацию об оценках за тест Procedure GetLevel; var i:integer; buf:string; begin i:=1; repeat readln(f,buf); if buf[1] <> '.' then begin mes[i]:=buf; // сообщение readln(f,level[i]); // оценка i:=i+1; end; until buf[1]='.'; end; // масштабирование иллюстрации Procedure TForm1.ShowPicture; var w,h: integer; // максимально возможные размеры картинки begin // вычислить допустимые размеры картинки w:=ClientWidth–10; h:=ClientHeight – Panel1.Height –10 – Label5.Top – Label5.Height – 10; // вопросы if Label1.Caption <> '' then h:=h–Label1.Height–10; if Label2.Caption <> '' then h:=h–Label2.Height–10; if Label3.Caption <> '' then h:=h–Label3.Height–10; if Label4.Caption <> '' then h:=h–Label4.Height–10; // если размер картинки меньше w на h, // то она не масштабируется Image1.Top:=Form1.Label5.Top+Label5.Height+10; if Image1.Picture.Bitmap.Height > h then Image1.Height:=h else Image1.Height:= Image1.Picture.Height; if Image1.Picture.Bitmap.Width > w then Image1.Width:=w else Image1.Width:=Image1.Picture.Width; Image1.Visible := True; end; // вывести вопрос Procedure TForm1.VoprosToScr; var i:integer; s,buf:string; ifn:string; // файл иллюстрации begin vopros:=vopros+1; caption:='Вопрос ' + IntToStr(vopros); // прочитать вопрос buf:=''; repeat readln(f,s); if (s[1] <> '.') and (s[1] <> '\') then buf:=buf+s+' '; until (s[1] ='.') or (s[1] ='\'); Label5.caption:=buf; // вывести вопрос {Иллюстрацию прочитаем, но выведем только после того, как прочитаем альтернативные ответы и определим максимально возможный размер области формы, который можно использовать для ее вывода.} if s[1] <> '\' then Image1.Tag:=0 // к вопросу нет иллюстрации else // к вопросу есть иллюстрация begin Image1.Tag:=1; ifn:=copy(s,2,length(s)); try Image1.Picture.LoadFromFile(ifn); except on E:EFOpenError do Image1.Tag:=0; end; end; // Читаем варианты ответов i:=1; repeat buf:=''; repeat // читаем текст варианта ответа readln(f,s); if (s[1]<>'.') and (s[1] <> ',') then buf:=buf+s+' '; until (s[1]=',')or(s[1]='.'); // прочитан альтернативный ответ score[i]:= StrToInt(s[2]); case i of 1: Label1.caption:=buf; 2: Label2.caption:=buf; 3: Label3.caption:=buf; 4: Label4.caption:=buf; end; i:=i+1; until s[1]='.'; // здесь прочитана иллюстрация и альтернативные ответы // текст вопроса уже выведен if Image1.Tag =1 // есть иллюстрация к вопросу then ShowPicture; // вывод альтернативных ответов if Form1.Label1.Caption <> '' then begin if Form1.Image1.Tag =1 then Label1.top:=Image1.Top+Image1.Height+10 else Label1.top:=Label5.Top+Label5.Height+10; RadioButton1.top:=Label1.top; Label1.visible:=TRUE; RadioButton1.visible:=TRUE; end; if Form1.Label2.Caption <> '' then begin Label2.top:=Label1.top+ Label1.height+10; RadioButton2.top:=Label2.top; Label2.visible:=TRUE; RadioButton2.visible:=TRUE; end; if Form1.Label3.Caption <> '' then begin Label3.top:=Label2.top+ Label2.height+10; RadioButton3.top:=Label3.top; Label3.visible:=TRUE; RadioButton3.visible:=TRUE; end; if Form1.Label4.Caption <> '' then begin Label4.top:=Label3.top+ Label3.height+10; RadioButton4.top:=Label4.top; Label4.visible:=TRUE; RadioButton4.visible:=TRUE; end; end; Procedure TForm1.ResetForm; begin // сделать невидимыми все метки и радиокнопки Label1.Visible:=FALSE; Label1.caption:=''; Label1.width:=ClientWidth–Label1.left–5; RadioButton1.Visible:=FALSE; Label2.Visible:=FALSE; Label2.caption:=''; Label2.width:=ClientWidth–Label2.left–5; RadioButton2.Visible:=FALSE; Label3.Visible:=FALSE; Label3.caption:=''; Label3.width:=ClientWidth–Label3.left–5; RadioButton3.Visible:=FALSE; Label4.Visible:=FALSE; Label4.caption:=''; Label4.width:=ClientWidth–Label4.left–5; RadioButton4.Visible:=FALSE; Label5.width:=ClientWidth–Label5.left–5; Image1.Visible:=FALSE; end; // определение достигнутого уровня procedure TForm1.Itog; var i:integer; buf:string; begin buf:=''; buf:='Результаты тестирования'+ #13 +'Всего баллов: '+ IntToStr(summa); i:=1; while (summa < level[i]) and (i<N_LEV) do i:=i+1; buf:=buf+ #13+mes[i]; Label5.Top:=20; Label5.caption:=buf; end; procedure TForm1.FormActivate(Sender: TObject); begin end; // щелчок на кнопке Button1 procedure TForm1.Button1Click(Sender: TObject); var s,s2,s1,s3,s4,s5,s6,s7,k,tim1:string;i,j,l,l1,l2:integer;tim:integer; begin case Button1.tag of 0: begin Button1.caption:='Дальше'; Button1.tag:=1; RadioButton5.Checked:=TRUE; // вывод первого вопроса Timer1.Enabled:=true; Gauge1.Visible:=true; Button1.Enabled:=False; ResetForm; VoprosToScr; end; 1: begin // вывод остальных вопросов summa:=summa+score[otv]; RadioButton5.Checked:=TRUE; Button1.Enabled:=False; ResetForm; if not eof(f) then VoprosToScr else begin summa:=summa+score[otv]; closefile(f); Button1.caption:='Ok'; Form1.caption:='Результат'; Button1.tag:=2; Button1.Enabled:=TRUE; Itog; // вывести результат end; end; 2: begin // завершение работы Timer1.Enabled:=false; s:=''; assignfile(fil1,'bd\result.txt'); reset(fil1); s:=''; while not eof(fil1) do begin readln(fil1,s2); s:=s+s2; end; closefile(fil1); s1:=''; for i:=1 to length(s) do begin if (s[i] = '*') then begin if s1=zagl.Edit1.Text then begin j:=i+1; s3:=''; while s[j]<>'#' do begin if s[j]='&' then begin tim:=time1+StrToInt(s3); delete(s,i+1,j–1–i–1); tim1:=FloatToStr(tim); insert(tim1,s,i+1); s3:=''; end; if s[j]='$' then begin if summa>=7 then begin l:=StrToInt(s[j–1])+1; delete(s,j–1,1); s7:=IntToStr(l); insert(s7,s,j–1); s3:=''; end else l:=StrToInt(s[j–1]); if summa>=7 then begin s5:=s[j+1]+s[j+2]; l2:=StrToInt(s5); delete(s,j+1,2); l2:=l2+summa; s6:=IntToStr(l2); if length(s6)=1 then s6:=' '+s6; insert(s6,s,j+1); end; end; s3:=s3+s[j]; j:=j+1; end; end; end; s1:=s1+s[i]; if (s[i]='#') then s1:=''; end; rewrite(fil1); s4:=''; for i:=1 to length(s) do begin s4:=s4+s[i]; if s[i]='#' then begin writeln(fil1,s4); s4:=''; end; end; closefile(fil1); assignfile(fil1,'bd\result1.txt'); reset(fil1); s:=''; while not eof(fil1) do begin readln(fil1,s2); s:=s+s2; end; closefile(fil1); s1:=''; for i:=1 to length(s) do begin if (s[i] = '*') then begin //showmessage(s1); if s1=zagl.Edit1.Text then begin j:=i+1; s3:=''; while s[j]<>'~' do begin if (s[j]='!')and(l=1)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='$')and(l=2)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='#')and(l=3)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='%')and(l=4)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='^')and(l=5)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='@')and(l=6)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; if (s[j]='~')and(l=7)and(summa>StrToInt(s[j–1])) then begin delete(s,j–1,1); s6:=IntToStr(summa); insert(s6,s,j–1); end; s3:=s3+s[j]; j:=j+1; end; end; end; s1:=s1+s[i]; if (s[i]='~') then s1:=''; end; rewrite(fil1); s4:=''; for i:=1 to length(s) do begin s4:=s4+s[i]; if s[i]='~' then begin writeln(fil1,s4); s4:=''; end; end; closefile(fil1); Form1.Close; ElektKursInf.Button1.Enabled:=true; end; end; end; // Процедура обработки события OnClick // для компонентов RadioButton1–RadioButton4 procedure TForm1.RadioButtonClick(Sender: TObject); begin if sender = RadioButton1 then otv:=1 else if sender = RadioButton1 then otv:=2 else if sender = RadioButton3 then otv:=3 else otv:=4; Button1.enabled:=TRUE; end; // обеспечивает настройку компонентов procedure TForm1.FormCreate(Sender: TObject); begin Image1.AutoSize := False; Image1.Proportional := True; RadioButton1.Visible := False; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Gauge1.Progress:=Gauge1.Progress+1; if Gauge1.Progress=100 then begin ResetForm; summa:=summa+score[otv]; Button1.caption:='Ok'; Form1.caption:='Результат'; Button1.tag:=2; Button1.Enabled:=TRUE; Itog; // вывести результат Timer1.Enabled:=false; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ElektKursInf.Button1.Enabled:=true; end; procedure TForm1.FormShow(Sender: TObject); var z:integer;s0:string; begin assignfile(fil,'bd\path1.txt'); reset(fil); s0:=''; while not eof(fil) do begin readln(fil,s0); break; end; closefile(fil); randomize; ResetForm; z:=random(4)+1; fn:=copy(s0,9,length(s0))+IntToStr(ElektKursInf.ListBox1.ItemIndex+1)+IntToStr(z)+'.txt'; assignfile(f,fn); try reset(f); except on EFOpenError do begin ShowMessage('Файл теста '+fn+' не найден.'); Button1.caption:='Ok'; Button1.tag:=2; Button1.Enabled:=TRUE; exit; end; end; Info; // прочитать и вывести информацию о тесте GetLevel; // прочитать информацию об уровнях оценок end; end.
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (258)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |