n ShowMessage ( HeflOCTaT04HO символів або невірне значення в полі число . ) else begin for i:=1 to 36 do c [i - 1]:=SymbolsEdit.Text [i];:=TPerson.Create (," , c, f);:=TList.Create; i:=0 to DataList. Count - 1 do begin if (PersonCmp (sample, DataList [i])) then Results.Add (DataList [i]) ;; (Results.Count=0) then OutputMemo.Text:= CoBnafleHnii не знайдене. else OutputMemo. Text:= CoBnaAeHHn: + lntToStr (Results.count) + # 13 # 10; for i:=0 to Results.Count - 1 do begin tmp:=Results [i] ;. Text:=OutputMemo.Text + tmp.Textlnfo + # 13 # 10 # 13 # 10; end; end; end; end;
2.2 Специфікація програми
Таблиця 1 - Специфікація програми
НаіменованіеОбозначеніеПрімечаніеdb.txtфайл бази даннихдолжен бути створений до запуску программиFinger.exeісполняемий файл программисодержіт машинний кодfmger.dprфайл проектасвязивает всі файли, з яких складається пріложеніеfmgerl.pasфайл програмного модуляопределяет функціональність формиfinger l.dcuоб'ектний файл для finger 1 .pasоткомпілірованная версія fmgerl.pasfingerl.dfmФайл формиспісок компонентів, включених в формуfinger.resфайл ресурсовсодержіт піктограми, графічні ізображеніяfinger.dofфайл параметрів проектасодержіт поточні установки проектаfinger, dskфайл, що містить desktop-настройкісодержіт інформацію про те, які вікна відкриті
. 3 Текст програми
Interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
Type TForml=class (TForm) SymbolsHelp: TLabel; FloatsHelp: TLabel; SearchButton: TButton ;: TMemo; f9: TEdit; f10: TEdit; f 11: TEdit; fl 2: TEdit; f 1: TEdit; f2: TEdit; f3: TEdit; f4: TEdit; f5: TEdit; f6: TEdit; f7: TEdit; f8: TEdit ;: TEdit; FormCreate (Sender: TObject); SearchButtonClick (Sender: TObject); {Private declarations} public {Public declarations} end;=class private PName.Plnfo: string ;: array [0..35] of char ;: array [0..11] of real; property Name: String read PName; Info: String read Plnfo; Create (const Name: String; const Info: String; з: array of char; const f: array of real ); FChar (n: integer): char; FFIoat (n: integer): real; Textlnfo (): string; end; var Forml: TForml ;: TextFile; DataList: TList; {$ R * .dfm} constructor TPerson.Create (const Name: String; Info: String; з: array of char; f: array of real); i: integer; .PName:=Name; .Plnfo :=info; i:=0 to 35 do beginself.FingerprintCharsfi]:=c [i]; end;:=0to 11 do self.FingerprintFloatsfi]:=f [i]; end; TPerson.FChar (n: integer): char; result:=self.fingerprintChars [n] ;; TPerson.FFIoat (n: integer): real;:=self.fingerprintFloats [n] ;; TPerson.TextlnfoO: string ;: integer;: string; тр:= Ім'я: + Self.PName + # 13 # 10 + Інформація: + Self.Plnfo + # 13 # 10 + Символи: raquo ;; i:=0 to 35 do tmp:=tmp + FingerprintChars [i] + raquo ;;:=tmp + # 13 # 10 + 4ncna: raquo ;;:=Oto 11 do tmp:=tmp + FloatToStr (FingerprintFloats [n) + raquo ;;:=tmp + # 13 # 10 ;; end; ReadPerson (var p: TPerson): boolean; var name.info: string; з: array [0..35] of char ;: array [0..11] of real; i: integer; begin if (Eof (lnputFile)) thenresult:=false else beginreadln (lnputFile, name); (lnputFile, info); i:=0 to 35 dobegin read (lnputFile.c [i]) ;; (lnputFile);:= 0to11 dobegin read (lnputFile, f [i]) ;; (lnputFile);:=TPerson.Create (name, info, c, f);:=true; end ;; fmax (a, b: real): real; begin if (a gt; b) then result:=aelse result;=b; end; Personcmp (const p1, p2; TPerson): boolean; var i, csum, fsum: integer; begin csum:=0; fsum:=0; for i;=0 to 35 do begin if (p1.FChar (i)=p2.FChar (i)) then inc (csum) ;;:=0to 11 do begin if (abs (p1 .FFIoat (i) -p2.FFIoat (i)) lt;=abs (fmax (p1 .FFIoat (i), p2.FFIoat (i)) * 0.05)) then inc (fsum); end; if ((csum gt;=35) and (fsum gt;=9)) thenresult;
=true else result:=false ;; TForm1.FormCreate (Sender; TObject);,n,j:integer;;;(lnputFile,laquo;C:db.txtraquo;);;=TList.Create;Reset(lnputFile);(lnputFile,n);i:=1 to n do begin if (ReadPerson (tmp)) then DataList.Add (tmp) ;; on ElnOutError do ShowMessage ( lt; t gt; aMn з даними не знайдений. ) ;; CloseFile (lnputFile) ;;. Text := B базі + lntToStr (DataList.Count) + 'записів, {for i:=0 to DataList.Count - 1 do begin tmp:=DataList [i] ;. Text:=OutputMemo.Text + tmp. Textlnfo ;;
} end; TForm1.SearchButtonClick (Sender: TObject) ;;: TList;, tmp: TPerson;: array [0..35] of char;: array [0..11] of real ;: array [1..12] of TEdit;: boolean;: string; begin [1]:=f1; [2]:=f2; [3]:=f3; [4]: ??= f4; [5]:=f5; [6]:=f6; FloatEdits [7]:=f7; [8]:=f8; [9]:=f9; [10]:=f10; [11]:=f11; [12]:=f12;:=false; i:= 1 to 12 do if (floatEdits [i] .Text=) then BadFloatEdits:=true; (BadFloatEdits) then ShowMessage ( He введено одне з чисел. ) else begin try for i:=1 to 12 do [i - 1]:=StrToFloat (FloatEdits [i] .Text); on ECon...