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

лабораторная работа / лабораторные работы по LAZARUS / Отчет спо лазарус лаба 6 вариант 20

.docx
Скачиваний:
64
Добавлен:
11.02.2014
Размер:
33.71 Кб
Скачать

Цель работы изучить принцип работы с файлами и создать приложение, в котором используются файлы с помощью объектно-ориентированного языка Lazarus.

ЗАДАНИЕ: Дан список студентов, содержащий следующие поля: фамилия, имя; знак Зодиака; месяц рождения рождения. Написать программу, выполняющую следующие действия:

-сортировка записей по знаку Зодиака;

-вывод на экран информации о студентах, родившихся в месяц, значение которого введено с клавиатуры; если таких нет, вывести на экран соответствующее сообщение;

-запись массива записей в файл под заданным с клавиатуры именем.

ЛИСТИНГ ПРОГРАММЫ:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids,

Buttons, Spin, StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)

BitBtnSort: TBitBtn;

BitBtnNew: TBitBtn;

BitBtnOpen: TBitBtn;

BitBtnSave: TBitBtn;

BitBtn5: TBitBtn;

Button1: TButton;

Edit1: TEdit;

Label1: TLabel;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

SpinEdit1: TSpinEdit;

StringGrid1: TStringGrid;

procedure BitBtnNewClick(Sender: TObject);

procedure BitBtnOpenClick(Sender: TObject);

procedure BitBtnSaveClick(Sender: TObject);

procedure BitBtnSortClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{ TForm1 }

type

zap=record

family,name,znak: string[20];

data: integer;

end;

var

MZap: array[1..25] of zap;

FileZap: file of zap;

FileText: TextFile;

FileNameZap,FileNameText: string;

n: integer;

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin

Cells[0,0]:='Фамилия';

Cells[1,0]:='Имя';

Cells[2,0]:='Знак зодиака';

Cells[3,0]:='Месяц рождения';

end;

BitBtnSort.Hide;

BitBtnSave.Hide;

end;

procedure TForm1.BitBtnSortClick(Sender: TObject);

var

i,j :integer;

vper:zap;

begin

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

family:=Cells[0,i];

name:=Cells[1,i];

znak:=Cells[2,i];

data:=StrToInt(Cells[3,i]);

end;

for i:=1 to n-1 do

for j:=i+1 to n do

if MZap[i].znak>MZap[j].znak then

begin

vper:=MZap[i];

MZap[i]:=MZap[j];

MZap[j]:=vper;

end;

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

Cells[0,i]:=family;

Cells[1,i]:=name;

Cells[2,i]:=znak;

Cells[3,i]:=IntToStr(data);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var i,x,a: integer;

begin

x:=StrToInt(Edit1.Text);

a:=0;

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

if x=MZap[i].data

then

begin

Label1.Caption:=('Фамилия:'+#32+StringGrid1.Cells[0,i]+#13+'Имя:'+#32+StringGrid1.Cells[1,i]+#13+'Знак зодиака:'+#32+StringGrid1.Cells[2,i]);

a:=1

end;

end;

if a<>1

then

begin

MessageDlg('Такого ученика нет в списке', mtInformation, [mbOk], 0)

end;

end;

procedure TForm1.BitBtnNewClick(Sender: TObject);

var

i:integer;

begin

if MessageDlg('Содержимое существующего файла будет уничтожено. Вы уверены?',mtConfirmation, mbYesNoCancel, 0)=mrYes then

begin

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

family:=Cells[0,i];

name:=Cells[1,i];

znak:=Cells[2,i];

data:=StrToInt(Cells[3,i]);

end;

with OpenDialog1 do

begin

Title:='Создание файла';

if Execute then

begin

FileNameZap:=FileName;

AssignFile(FileZap,FileNameZap);

ReWrite(FileZap);

for i:=1 to n do

write(FileZap,MZap[i]);

CloseFile(FileZap);

end;

end;

end;

end;

procedure TForm1.BitBtnOpenClick(Sender: TObject);

var

i:integer;

begin

with OpenDialog1 do

begin

Title:='Открытие файла';

if Execute then

begin

FileNameZap:=FileName;

AssignFile(FileZap,FileNameZap);

ReSet(FileZap);

n:=0;

while not EoF(FileZap) do

begin

n:=n+1;

read(FileZap,MZap[n]);

end;

SpinEdit1.Text:=IntToStr(n);

StringGrid1.RowCount:=n+1;

for i:=1 to n do

with StringGrid1,MZap[i] do

begin

Cells[0,i]:=family;

Cells[1,i]:=name;

Cells[2,i]:=znak;

Cells[3,i]:=IntToStr(data);

end;

CloseFile(FileZap);

end;

end;

BitBtnSort.Show;

BitBtnSave.Show;

end;

procedure TForm1.BitBtnSaveClick(Sender: TObject);

var

i: integer;

begin

with SaveDialog1 do

if Execute then

begin

FileNameText:=FileName;

AssignFile(FileText,FileNameText);

ReWrite(FileText);

for i:=1 to n do

with MZap[i] do

writeln(FileText,family:20,name:15,znak:10,data:12);

CloseFile(FileText);

end;

BitBtnSort.Hide;

end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

var i,m: integer;

begin

m:=StrToInt(SpinEdit1.Text);

with StringGrid1 do

begin

RowCount:=m+1;

if m>n then

for i:=n+1 to m do

begin

Cells[0,i]:=IntToStr(i);

Cells[1,i]:='';

Cells[2,i]:='';

Cells[3,i]:='';

end;

end;

n:=m;

end;

initialization

{$I unit1.lrs}

end.