Разработка приложения с использованием записей и файлов
Постановка задачи:
Разработать приложение, поддерживающее чтение и сохранение информации в файлах в соответствии с индивидуальным заданием.
В программе предусмотреть сохранение вводимых данных в файле и возможность чтения из ранее сохраненного файла. Результаты выводить в окно просмотра и в текстовой файл.
Задание: Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату начала работы. Вывести списки сотрудников по отделам в порядке убывания стажа.
Текст программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Splitter1: TSplitter;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
TSotrudniki = record
fio:string[255];
nofotdel:Integer;
SPost:string[255];
SDate:TDatetime;
end;
var
Fz : file of Tsotrudniki; //Файл типа запись
Ft : TextFile; //Текстовый файл
sotr: array [1..100] of TSotrudniki; //Массив записей
FileNameZ, FileNameT : string; //Имя файла
nzap : integer;
var
Form1:TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
Button1.Hide; //Сделать невидимой кнопку "Ввести запись"
nzap := 0;
end;
//ввести новую запись
procedure TForm1.Button1Click(Sender: TObject);
begin
nzap := nzap+1;
with sotr[nzap] do
begin
FIO:=Edit1.Text;
NofOtdel:=StrToInt(Edit2.Text);
SPost:=Edit3.Text;
SDate:=StrToDate(Edit4.Text);
Memo1.Lines.Add(fio + ' ' + IntToStr(NofOtdel) + ' ' + SPost
+ ' ' + DateToStr(sDate));
end;
write(fz, sotr[nzap]); //Запись в файл
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
OpenDialog1.Title := 'Создать новый файл';
if OpenDialog1.Execute then
begin
FileNameZ := OpenDialog1.FileName;
AssignFile(fz, FileNameZ);
Rewrite(fz);
end;
Button1.Show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FileNameZ := OpenDialog1.FileName;
AssignFile(fz, FileNameZ);
Reset(fz);
end;
nzap := 0;
while not eof(fz) do begin
nzap := nzap+1;
Read(fz, sotr[nzap]);
with sotr[nzap] do
Memo1.Lines.Add(fio + ' ' + IntToStr(NofOtdel) + ' ' + SPost
+ ' ' + DateToStr(sDate));
end;
Button1.Show;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i, j : word;
st:TSotrudniki;
begin
for i := 1 to nzap-1 do
for j := i+1 to nzap do
if sotr[i].nofotdel > sotr[j].nofotdel then
begin
st:=sotr[i];
sotr[i]:=sotr[j];
sotr[j]:=st;
end;
for i := 1 to nzap-1 do
for j := i+1 to nzap do
if sotr[i].nofotdel = sotr[j].nofotdel then
if sotr[i].SDate < sotr[j].SDate then
begin
st:=sotr[i];
sotr[i]:=sotr[j];
sotr[j]:=st;
end;
Memo1.Clear;
for i := 1 to nzap do
with sotr[i] do
Memo1.Lines.Add(fio + ' ' + IntToStr(NofOtdel) + ' ' + SPost + ' ' + DateToStr(sDate));
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i : word;
begin
if SaveDialog1.Execute then
begin
FileNameT := SaveDialog1.FileName;
AssignFile(ft, FileNameT);
Rewrite(ft);
end;
for i := 1 to nzap do
with sotr[i] do
writeln(Ft, i:4, '. ', fio + ' ' + IntToStr(NofOtdel) + ' ' + SPost
+ ' ' + DateToStr(sDate));
CloseFile(ft);
end;
end.
Результат работы программы:
1. При запуске программы появляется следующее окно:
2. После и нажатия кнопки «Создать» появляется окно создания нового файла и выбора месторасположения и ввода имени создаваемого файла данных.
После ввода произвольного количества записей и нажатия кнопки «Ввести запись»:
После нажатия кнопки «Сортировать»:
После нажатия кнопки «Сохранить» появляется окно выбора места и имени сохраняемого текстового файла с результатами:
Выводы: : изучили правила работы с компонентами TopenDialog и TSaveDialog. Написали программу с использованием файлов и данных типов запись.