Смекни!
smekni.com

База данных DVD–фильмов (стр. 4 из 4)

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Close;

end;

end.

Модуль search.pas;

unit search;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls, Grids;

const

derect='savedvd\';

type

disk=record

name:string[50];

stoim:integer;

year:integer;

reg:string[30];

cincom:string[30];

end;

tdvd=array[1..300] of disk;

recordfile=file of disk;

TForm4 = class(TForm)

Label3: TLabel;

Label4: TLabel;

Edit7: TEdit;

ComboBox1: TComboBox;

Button1: TButton;

StringGrid1: TStringGrid;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure search_1(dvdfile:string; var g:recordfile);

procedure search_2(dvdfile:string; var g:recordfile);

procedure search_3(dvdfile:string; var g:recordfile);

procedure search_4(dvdfile:string; var g:recordfile);

procedure search_5(dvdfile:string; var g:recordfile);

procedure sort_1(dvdfile:string);

procedure sort_2(dvdfile: string);

procedure vivod (dvdfile:string);

procedure Edit7Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

public

f,g:recordfile;

n:integer;

dvdfile:string;

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

//////-----------------

{Вывод списка}

procedure tform4.vivod (dvdfile:string);

var s:disk;

count:integer;

f1:recordfile;

begin

assignfile(f,dvdfile);{$I-}

reset(f); {$I+}

N:=0;

count:=0;

If IOResult=0 then

begin

while not eof(f) do

begin

count:=count+1;

read(f,s);

StringGrid1.cols[0][N+1]:=inttostr(count);

StringGrid1.Cells[1,N+1]:=s.name;

StringGrid1.Cells[2,N+1]:=inttostr(s.stoim)+' руб.';

StringGrid1.Cells[3,N+1]:=intToStr(s.year)+' год';

StringGrid1.Cells[4,N+1]:=s.reg;

StringGrid1.Cells[5,N+1]:=s.cincom;

N:=N+1;

end;

seek(f,0);

closefile(f);

if count=0 then

else

stringgrid1.rowcount:=N+1;

end

else

begin

createdir('Database\');

assignfile(f1,derect+'db_ disk.db');

rewrite(f1);

closefile(f1);

end;

end;

//-----------------

procedure tform4.sort_1(dvdfile: string);

var

f,q:file of disk;

c,i,n:integer;

buf:disk;

el:tdvd;

begin

assignfile(q,derect+'db.db');

rewrite(q);

assignfile(f,dvdfile);

reset(f);

c:=0;

while not eof(f)do

begin

c:=c+1;

read(f,el[c]);

end;

for i:=1 to c do

for n:=i+1 to c do

if el[n].name<el[i].name then

begin

buf:=el[n];

el[n]:=el[i];

el[i]:=buf;

end;

for i:=1 to c do

begin

write(q,el[i]);

end;

closefile(f);

closefile(q);

vivod(derect+'db.db');

erase(q);

end;

procedure tform4.sort_2(dvdfile: string);

var

f,q:file of disk;

c,i,n:integer;

buf:disk;

el:tdvd;

begin

assignfile(q,derect+'db.db');

rewrite(q);

assignfile(f,dvdfile);

reset(f);

c:=0;

while not eof(f)do

begin

c:=c+1;

read(f,el[c]);

end;

for i:=1 to c do

for n:=i+1 to c do

if el[n].stoim<el[i].stoim then

begin

buf:=el[n];

el[n]:=el[i];

el[i]:=buf;

end;

for i:=1 to c do

begin

write(q,el[i]);

end;

closefile(f);

closefile(q);

vivod(derect+'db.db');

erase(q);

end;

//---------------------

procedure tform4.search_1(dvdfile:string; var g:recordfile);

var g1:recordfile;

s:disk;

nameof:string;

begin

n:=0;

nameof:=Edit7.text;

assignfile(g1,derect+'result.db');

rewrite(g1);

assignfile(g,derect+'db_ disk.db'); {$I-}

reset(g); {$I+}

if IOResult = 0 then

begin

while not eof(g) do

begin

read(g,s);

if s.name=nameof then

write(g1,s)

end;

end

else

showMessage ('Ошибка');

seek(g1,0);

while not eof(g1) do

begin

read(g1,s);

inc(n);

end;

closefile(g);

closefile(g1);

Edit7.Clear;

if n=0 then

begin

MessageBox(0,'Нет такого фильма. Введите другие данные','Внимание!',MB_OK or MB_ICONINFORMATION);

end

else

vivod(derect+'result.db');

erase(g1)

end;

procedure tform4.search_2(dvdfile:string; var g:recordfile);

var g1:recordfile;

s:disk;

stoimof:integer;

begin

n:=0;

try

stoimof:=StrToInt(Edit7.text);

assignfile(g1,derect+'result.db');

rewrite(g1);

assignfile(g,derect+'db_ disk.db'); {$I-}

reset(g); {$I+}

if IOResult = 0 then

begin

while not eof(g) do

begin

read(g,s);

if s.stoim <= stoimof then

write(g1,s)

end;

end

else

showMessage ('Ошибка');

seek(g1,0);

while not eof(g1) do

begin

read(g1,s);

inc(n);

end;

closefile(g);

closefile(g1);

Edit7.Clear;

if n=0 then

begin

MessageBox(0,'Дисков со стоимостью, ниже заданной, нет.','Внимание!',MB_OK or MB_ICONINFORMATION);

end

else

sort_2(derect+'result.db');

erase(g1)

except

MessageBox(0,'Цена указывается цифрами.','Внимание!',MB_OK or MB_ICONWARNING);

Edit7.Clear;

end;

end;

procedure tform4.search_3(dvdfile:string; var g:recordfile);

var g1:recordfile;

s:disk;

yearof:real;

begin

n:=0;

try

yearof:=StrToFloat(Edit7.text);

assignfile(g1,derect+'result.db');

rewrite(g1);

assignfile(g,derect+'db_sot.db'); {$I-}

reset(g); {$I+}

if IOResult = 0 then

begin

while not eof(g) do

begin

read(g,s);

if s.year = yearof then

write(g1,s)

end;

end

else

showMessage ('Ошибка');

seek(g1,0);

while not eof(g1) do

begin

read(g1,s);

inc(n);

end;

closefile(g);

closefile(g1);

Edit7.Clear;

if n=0 then

begin

MessageBox(0,'Фильмов данного года выпуска нет.','Внимание!',MB_OK or MB_ICONINFORMATION);

end

else

sort_1(derect+'result.db');

erase(g1)

except

MessageBox(0,'Год выпуска указывается в цифрах.','Внимание!',MB_OK or MB_ICONWARNING);

Edit7.Clear;

end;

end;

procedure tform4.search_4(dvdfile:string; var g:recordfile);

var g1:recordfile;

s:disk;

regof:string;

begin

n:=0;

regof:=Edit7.text;

assignfile(g1,derect+'result.db');

rewrite(g1);

assignfile(g,derect+'db_ disk.db'); {$I-}

reset(g); {$I+}

if IOResult = 0 then

begin

while not eof(g) do

begin

read(g,s);

if s.reg=regof then

write(g1,s)

end;

end

else

showMessage ('Ошибка.');

seek(g1,0);

while not eof(g1) do

begin

read(g1,s);

inc(n);

end;

closefile(g);

closefile(g1);

Edit7.Clear;

if n=0 then

begin

MessageBox(0,'Данного режиссёра нет','Внимание!',MB_OK or MB_ICONINFORMATION);

end

else

sort_1(derect+'result.db');

erase(g1)

end;

procedure tform4.search_5(dvdfile:string; var g:recordfile);

var g1:recordfile;

s:disk;

cincomof:string;

begin

n:=0;

cincomof:=Edit7.text;

assignfile(g1,derect+'result.db');

rewrite(g1);

assignfile(g,derect+'db_ disk.db'); {$I-}

reset(g); {$I+}

if IOResult = 0 then

begin

while not eof(g) do

begin

read(g,s);

if s.cincom=cincomof then

write(g1,s)

end;

end

else

showMessage ('Ошибка');

seek(g1,0);

while not eof(g1) do

begin

read(g1,s);

inc(n);

end;

closefile(g);

closefile(g1);

Edit7.Clear;

if n=0 then

begin

MessageBox(0,'Данной кинокомпаниии нет.','Внимание!',MB_OK or MB_ICONINFORMATION);

end

else

sort_1(derect+'result.db');

erase(g1)

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

if (edit7.Text='') or (edit7.Text='Введите данные...') then

MessageBox(0,'Введите данные для поиска.','Внимание!',MB_ok or MB_ICONINFORMATION)

else

case combobox1.ItemIndex of

0:search_1(dvdfile,f);

1:search_2(dvdfile,f);

2:search_3(dvdfile,f);

3:search_4(dvdfile,f);

4:search_5(dvdfile,f);

end;

end;

procedure TForm4.Edit7Click(Sender: TObject);

begin

edit7.Clear;

end;

procedure TForm4.FormCreate(Sender: TObject);

begin

StringGrid1.Rows[0][0]:='Номер';

StringGrid1.Rows[0][1]:='Название фильма';

StringGrid1.Rows[0][2]:='Цена DVD-диска';

StringGrid1.Rows[0][3]:='Год выпуска';

StringGrid1.Rows[0][4]:='Режиссёр';

StringGrid1.Rows[0][5]:='Кинокомпания';

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

Form4.Close;

end;

end.

Модуль Input.pas;

unit Input;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, jpeg, ExtCtrls, StdCtrls;

const

derect='savedvd&bsol;';

type disk=record

name:string[50];

stoim:integer;

year:integer;

reg:string[30];

cincom:string[30];

end;

recordfile=file of disk;

TForm3 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

Button2: TButton;

procedure input(var f:recordfile; var dvdfile:string);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

n,k:integer;

f,g:recordfile;

dvdfile:string;

end;

var

Form3: TForm3;

implementation

uses kursovik;

{$R *.dfm}

procedure tform3.input(var f:recordfile; var dvdfile:string);

var

s,q:disk;

begin

n:=1;

k:=0;

assignfile(g,derect+'buffer.db');

rewrite(g);

assignfile(f,derect+'db_ disk.db');{$I-}

reset(f); {$I+}

If IOResult=0 then

begin

while not eof(f) do

begin

inc(n);

read(f,s);

write(g,s);

end;

closefile(f);

end

else

begin

rewrite(f);

closefile(f);

end;

try

q.name:=Edit1.text;

q.stoim:=StrtoInt(Edit2.Text);

q.year:=Strtoint(Edit3.Text);

q.reg:=Edit4.Text;

q.cincom:=Edit5.Text;

seek(g,0);

while not eof(g) do

begin

read(g,s);

if s.name=q.name then

k:=1;

end;

if k=1 then

MessageBox(0,'Данный фильм существует.','',MB_ok or MB_ICONINFORMATION)

else

begin

write(g,q);

MessageBox(0,'Данные добавлены в файл.','',MB_ok or MB_ICONINFORMATION);

end;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

Edit4.Clear;

Edit5.Clear;

except

MessageBox(0,'Цена и год выпуска указывается в цифрах!','',MB_OK or MB_ICONWARNING);

Edit2.Clear;

Edit3.Clear;

end;

closefile(g);

erase(f);

rename(g,derect+'db_ disk.db');

end;

procedure TForm3.Button1Click(Sender: TObject);

begin

close;

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

if (edit1.Text='') or (edit2.text='') or (edit3.Text='')

or (edit4.Text='') or (edit5.Text='') then

MessageBox(0,'Одно или несколько полей пусты, проверьте правильность заполнения.','Внимание!',MB_ok or MB_ICONINFORMATION)

else

input(f,dvdfile);

end;

end.