Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Praktikum_2008

.pdf
Скачиваний:
292
Добавлен:
06.06.2015
Размер:
8.23 Mб
Скачать

//в следующем фрагменте осуществляется вывод списка должников

//из формы 3 на принтер

Writeln (TextToPrint,'список должников:'); Writeln (TextToPrint,'Номер п/п ','Фамилия И.О.', ' Дата последней уплаты ');

Writeln (TextToPrint,' ','собсвенника', ' налога на недвижимость ');

For i:=1 To M do

Writeln (TextToPrint,Form3.StringGrid1.Cells[0,i]:4, Form3.StringGrid1.Cells[1,i]:30,' ',Form3.StringGrid1.Cells[2,i]:30); System.Close(TextToPrint);

end;

{процедура, связанная с пунктом меню «Вывод на принтер» — список домов с площадью более 100 кв.м}

procedure TForm1.N1002Click(Sender: TObject); Var TextToPrint:System.Text;

i:integer; begin

N1002.Checked:=True;

//ассоциация с принтером

AssignPrn(TextToPrint);

//открытие для вывода

Rewrite(TextToPrint);

//в следующем фрагменте осуществляется вывод списка

//домов с площадью более 100 кв.м из формы 2 на принтер

Writeln (TextToPrint,'Дома с площадью более 100 кв. м:'); Writeln (TextToPrint,'N п/п','Номер кад. дела ',

'Фамилия И.О.собств.',' Адрес ', 'Общ. площ.(кв.м)','Дата посл. Уплаты налога на недвижимость'); For i:=1 To L do

begin

Writeln (TextToPrint,Form2.StringGrid1.Cells[0,i]:4, Form2.StringGrid1.Cells[1,i]:20,' ',Form2.StringGrid1.Cells[2,i]:20,' ', Form2.StringGrid1.Cells[3,i]:40,Form2.StringGrid1.Cells[4,i]:16,' ', Form2.StringGrid1.Cells[5,i]:20 );

end;

System.Close(TextToPrint);

end;

end.

{модуль Unit2 связан с формой Form2, куда выводится список домов с площадью превышающей 100 кв.м}

421

unit Unit2; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

type

TForm2 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Label1: TLabel;

procedure Button1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

Form2: TForm2; implementation {$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject); begin

Form2.Close

end;

end.

{модуль Unit3 связан с формой Form3, куда выводится список должников по уплате налога на недвижимость}

unit Unit3; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

type

TForm3 = class(TForm) Label1: TLabel; StringGrid1: TStringGrid; Button1: TButton; Label2: TLabel;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

422

end; var

Form3: TForm3; implementation {$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject); begin

Form3.Close

end;

end.

Вид некоторых диалоговых окон во время работы программы

423

424

Файл с исходной информацией удобнее подготовить с помощью стандартной программы «Блокнот». Каждое поле записи набирается на отдельной строке. Десятичный разделитель — точка. Дата уплаты налога в файле набирается в виде трех чисел на одной строке через пробел. Для приведенного выше примера файл с исходными данными выглядит так:

425

Задача

Составить программу, которая записывает в файл введенные пользователем данные о результатах экзаменов, формируя таким образом простую базу данных. Исходные данные вводятся в поля диалогового окна и сохраняются в файле, компонентами которого являются записи типа TOzenka.

unit apprec_;

……………………….

// тип оценки

426

TKind = (NeUd, Ud, Hor,Otl);

// запись файла

TOzenka=record

Facultet: string[20]; // факультет Predmet: string[20]; // предмет person: string[40]; // студент Oz: TKind; // оценка

end;

var

Form1: TForm1;

f: file of TOzenka; // файл записей – база данных

implementation

{$R *.DFM}

// активизация формы

procedure TForm1.FormActivate(Sender: TObject); var

resp : word; // ответ пользователя begin

AssignFile(f, 'D:\Ozenki.db'); {$I-}

Reset(f); // открыть файл

Seek( f, FileSize(f)); // указатель записи в конец файла

{$I+}

if IOResult = 0

then button1.enabled:=TRUE //теперькнопка«Добавить»доступна

else begin

resp:=MessageDlg('Файл базы данных не найден.'+ ' создать новую БД?',mtInformation,[mbYes,mbNo],0); if resp = mrYes then

begin {$I-} rewrite(f);

427

{$I+}

if IOResult = 0

then button1.enabled:=TRUE

else ShowMessage('Ошибка создания БД.'); end;

end;

end;

// щелчок на кнопке «Добавить»

procedure TForm1.Button1Click(Sender: TObject); var

Ozenka: TOzenka; oz :TKind;

begin

with Ozenka do begin

Facultet := ComboBox1.Text;

Predmet:= ComboBox2.Text; person := Edit1.Text;

case RadioGroup1.ItemIndex of

0:oz := NeUd;

1:oz:= Ud;

2:oz := Hor;

3:oz := Otl; end;

end;

write(f,Ozenka ); // записать содержимое полей записи в файл

end;

// завершение работы программы

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

CloseFile( f ); // закрыть файл end;

procedure TForm1.Button2Click(Sender: TObject); begin

428

Form1.Close

end;

end.

Так выглядит форма в процессе выполнения программы:

Задача

Составить программу, которая читает и обрабатывает данные, записанные в файл программой Добавление записи в файл, и, в зависимости от того, какой из переключателей — все или — выбрать выбран, выводит список оценок, полученных студентами всех факультетов или факультета, название которого введено в поле «Факультет».

unit rdrec_;

429

…………….

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); type

// тип оценки

TKind = (NeUd,Ud,Hor,Otl);

// запись файла

TOzenka = record Facultet:string[20]; Predmet:string[20]; person:string[40]; kind:TKind;

end;

var

f: file of TOzenka; // файл записей

rec: TOzenka; // запись, прочитанная из файла

n: integer; // количество записей, удовлетворяющих запросу st: string[80];

begin AssignFile(f,'D:\ozenki.db'); {$I-}

Reset(f); //открыть файл для чтения

{$I-}

if IOResult <> 0 then begin

ShowMessage('Ошибка открытия файла БД.'); Exit;

end;

Memo1.Clear; // очистить список поля Memo

430

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]