{$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\';
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.