2. Владимир Гофман, Анатолий Хамоненко, «Delphi быстрый старт», Санкт Петербург «БХВ-Петербург» 2003 год, 280 стр.
3. Евгений Марков, Петр Дарахвелидзе, «Программирование в Delphi 7», Санкт Петербург «БХВ-Петербург» 2003 год, 780 стр.
4. Поган А.М., Царенко Ю.А., “Программирование в Delphi”, Москва «ЭКСМО» 2006 год, 309 стр.
5. Бобровский А. , “Delphi 5. Учебный курс.” , Санкт – Петербург, Москва, Харьков, Минск, «ЗАО Питербук» , 2004 год, 639 стр.
Приложение 1
Листинг программы и её модулей
program Kursovik;
uses
Forms,
kurs in 'kurs.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Input in 'Input.pas' {Form3},
search in 'search.pas' {Form4};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.Run;
end.
Модуль kurs.pas
unit kursovik;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, jpeg, ExtCtrls, Grids, DBGrids, ShellAPI, XPMan;
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;
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N21: TMenuItem;
StringGrid1: TStringGrid;
ComboBox3: TComboBox;
Edit9: TEdit;
PopupMenu1: TPopupMenu;
N2: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
reg1: TMenuItem;
cincom1: TMenuItem;
N13: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
XPManifest1: TXPManifest;
N26: TMenuItem;
Label8: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
N25: TMenuItem;
procedure N8Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
Procedure deletef(horizon:integer);
procedure editzap;
procedure clearlist;
procedure vivod (dvdfile:string);
procedure sort_1(dvdfile:string);
procedure sort_2(dvdfile: string);
procedure sort_3(dvdfile: string);
procedure sort_4(dvdfile: string);
procedure sort_5(dvdfile: string);
procedure N7Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure reg1Click(Sender: TObject);
procedure cincom1Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
procedure N26Click(Sender: TObject);
procedure Edit9Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N25Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
public
n,m,k:integer;
f,g:recordfile;
but:integer;
h:HWND;
horizon : integer;
end;
var
Form1: TForm1;
implementation
uses unit2, Input, search;
{$R *.dfm}
procedure tform1.clearlist;
begin
n:=0;
while n<stringgrid1.rowcount do
begin
StringGrid1.Cells[0,n+1]:='';
StringGrid1.Cells[1,n+1]:='';
StringGrid1.Cells[2,n+1]:='';
StringGrid1.Cells[3,n+1]:='';
StringGrid1.Cells[4,n+1]:='';
StringGrid1.Cells[5,n+1]:='';
n:=n+1;
end;
stringgrid1.RowCount:=2;
end;
procedure tform1.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
clearlist
else
stringgrid1.rowcount:=N+1;
end
else
begin
createdir('savedvd\');
assignfile(f1,derect+'db_ disk.db');
rewrite(f1);
closefile(f1);
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
horizon:=ARow;
end;
{Удаление записи}
Procedure tform1.deletef(horizon:integer);
var
f1:recordfile;
el:tdvd;
begin
but:=MessageBox(0,'Удалить данные?','Внимание!',MB_YESNO or MB_ICONquestion);
if but=IDYES then
begin
assignfile(f1,derect+'new.db');
rewrite(f1);
assignfile(f,derect+'db_ disk.db');
reset(f);
n:=1;
while not eof(f) do
begin
read(f,el[n]);
if n <> horizon then
write(f1,el[n]);
n:=n+1;
end;
closefile(f);
closefile(f1);
erase(f);
rename(f1,derect+'db_ disk.db');
vivod(derect+'db_disk.db');
end;
end;
procedure tform1.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 tform1.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 tform1.sort_3(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].year<el[i].year 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 tform1.sort_4(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].reg<el[i].reg 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 tform1.sort_5(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].cincom<el[i].cincom 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 Tform1.editzap;
var
q:disk;
new:string;
begin
n:=0;
assignfile(f,derect+'db_ disk.db');
reset(f);
try
new:=Edit9.text;
seek(f,horizon-1);
read(f,q);
case comboBox3.ItemIndex of
0:q.name:=new;
1:try q.stoim:=strtoint(new);
except
MessageBox(0,'Цена указывается в цифрах!','',MB_OK or MB_ICONWARNING)
end;
2:try q.year:=strtoint(new);
except
MessageBox(0,'Год выпуска указывается в цифрах!','',MB_OK or MB_ICONWARNING)
end;
3:q.reg:=new;
4:q.cincom:=new;
end;
begin
seek(f,horizon-1);
write(f,q);
closefile(f);
end;
except
MessageBox(0,'Выбирите строку из списка.','',MB_OK or MB_ICONWARNING)
end;
edit9.clear;
vivod(derect+'db_ disk.db');
end;
procedure TForm1.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]:='Кинокомпания';
vivod (derect+'db_sot.db')
end;
procedure TForm1.N8Click(Sender: TObject);
begin
but:=MessageBox(0,'Закрыть программу?','Внимание!',MB_YESNO or MB_ICONINFORMATION);
if but=IDYES then
Close;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
vivod (derect+'db_ disk.db');
end;
procedure TForm1.N14Click(Sender: TObject);
begin
sort_1(derect+'db_ disk.db');
end;
procedure TForm1.N15Click(Sender: TObject);
begin
sort_2(derect+'db_ disk.db');
end;
procedure TForm1.N16Click(Sender: TObject);
begin
sort_3(derect+'db_ disk.db');
end;
procedure TForm1.N17Click(Sender: TObject);
begin
sort_4(derect+'db_ disk.db');
end;
procedure TForm1.N18Click(Sender: TObject);
begin
sort_5(derect+'db_sot.db');
end;
{Добавление}
procedure TForm1.N4Click(Sender: TObject);
begin
Form3.ShowModal;
vivod(derect+'db_ disk.db');
end;
{Вывод во всплывающем меню}
procedure TForm1.N2Click(Sender: TObject);
begin
vivod(derect+'db_ disk.db');
end;
{Сортировка во всплывающем меню}
procedure TForm1.N10Click(Sender: TObject);
begin
sort_1(derect+'db_ disk.db');
end;
procedure TForm1.N11Click(Sender: TObject);
begin
sort_2(derect+'db_sot.db');
end;
procedure TForm1.N12Click(Sender: TObject);
begin
sort_3(derect+'db_ disk.db');
end;
procedure TForm1.reg1Click(Sender: TObject);
begin
sort_4(derect+'db_ disk.db');
end;
procedure TForm1.cincom1Click(Sender: TObject);
begin
sort_5(derect+'db_ disk.db');
end;
{Очистка всплывающее}
procedure TForm1.N9Click(Sender: TObject);
begin
clearlist;
end;
{Очистка в меню}
procedure TForm1.N23Click(Sender: TObject);
begin
clearlist
end;
{Редактирование в меню}
procedure TForm1.N6Click(Sender: TObject);
begin
if (edit9.text='') or (edit9.text='Введите новые данные...') then
MessageBox(0,'Введите новые данные.','Внимание!',MB_ok or MB_ICONINFORMATION)
else
editzap;
end;
//на кнопку
procedure TForm1.Button2Click(Sender: TObject);
begin
deletef(horizon);
end;
//удаление во всплывающем
procedure TForm1.N26Click(Sender: TObject);
begin
deletef(horizon);
end;
//Удаление из меню
procedure TForm1.N5Click(Sender: TObject);
begin
deletef(horizon);
end;
///---------------------------------------------------
{Окно "О программе"}
procedure TForm1.N21Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.Edit9Click(Sender: TObject);
begin
edit9.clear;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
but:=MessageBox(0,'Закрыть программу?','Внимание!',MB_YESNO or MB_ICONINFORMATION);
if but=IDYES then
Close;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
clearlist;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
vivod(derect+'db_sot.db');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.ShowModal;
vivod(derect+'db_sot.db');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form4.ShowModal;
end;
procedure TForm1.N25Click(Sender: TObject);
begin
Form4.ShowModal;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if (edit9.text='') or (edit9.text='Новые данные...') then
MessageBox(0,'Введите новые данные для изменения.','Внимание!',MB_ok or MB_ICONINFORMATION)
else
editzap;
end;
end.
Модуль Unit2.pas;
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm2 = class(TForm)
Label2: TLabel;
Label6: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Button1: TButton;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation