Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лабораторная работа №8 по Delphi. Фёдоров Виктор. Вариант №17 6
Лабораторная работа №8
«ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ЗАПИСЕЙ И
ФАЙЛОВ»
Выполнил: студент 2 курса факультета Информатики Фёдоров Виктор
Вариант № 17
Постановка задачи: Список товаров, имеющихся на складе, включает в себя наименование товара, количество и дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся больше месяца.
Описание объектов, используемых в проекте:
TTovar = record – запись товаров
NAI: string[50] – наименование товара
KVO: integer – кол-во товаров
Data : string[20] – дата
ZF : File of TTovar – файл типа запись
TF : TextFile – текстовый файл
Tov : Array[1..10] of TTovar – массив записей
NomZap : integer – номер записи
FileNameZap : string – открытие записи из файла
FileNameText : string – сохранение записи в файл
Sort : TTovar; - сортировка записей
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Button1: TButton;
Button3: TButton;
Button5: TButton;
DateTimePicker1: TDateTimePicker;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
Button2: TButton;
Button4: TButton;
Button6: TButton;
SpeedButton4: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
TTovar = record
NAI : string[50];
KVO : integer;
Data : string[20];
end;
var
ZF : File of TTovar;// Файл типа запись
TF : TextFile;
Tov : Array[1..10] of TTovar;// Массив записей
NomZap : integer;
FileNameZap : string;
FileNameText : string;
Sort : TTovar;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Memo1.Clear;
Button5.Visible:=False;
NomZap := 0;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
NomZap := NomZap+1;
with Tov[NomZap] do
begin
NAI := Edit1.Text;
KVO := StrToInt(Edit2.Text);
Data := DateToStr(DateTimePicker1.Date);
Memo1.Lines.Add(NAI+' '+IntToStr(KVO)+' '+Data);
end;
Write(ZF,Tov[NomZap]);// Запись в файл
Edit1.Clear;
Edit2.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Title := 'Создать новую запись...';
if OpenDialog1.Execute then
begin
FileNameZap := OpenDialog1.FileName;
AssignFile(ZF, FileNameZap); //Связывание файловой переменной ZF c именем файла
Rewrite(ZF);//Создание нового файла
end;
Button5.Show;// Сделать видимой кнопку “Ввести товар”
end;
procedure TForm1.SpeedButton3Click(Sender: TObject); //Открыть
begin
if OpenDialog1.Execute then
begin
FileNameZap := OpenDialog1.FileName;
AssignFile(ZF, FileNameZap);// Связывание файловой переменной ZF c именем файла
Reset(ZF);// Открытие существующего файла
end;
NomZap := 0;
while not eof(ZF) do
begin
NomZap := NomZap+1;
Read(ZF,Tov[NomZap]);// Чтение записи из файла
with Tov[NomZap] do
Memo1.Lines.Add(NAI+' '+IntToStr(KVO)+' '+Data);
end;
Button5.Show;// Сделать видимой кнопку “Ввести запись”
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject); // Показать все
var
i : integer;
begin
Memo1.Clear;
for i := 1 to NomZap do Memo1.Lines.Add(Tov[i].NAI+' '+IntToStr(Tov[i].KVO)+' '+Tov[i].Data);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i, j : integer;
s : string;
begin
for j := 1 to NomZap-1 do
for i := 1 to NomZap-j do
begin
if Tov[i].NAI>Tov[i+1].NAI then
begin
Sort := Tov[i];
Tov[i] := Tov[i+1];
Tov[i+1] := Sort;
end;
end;
Memo1.Clear;
for i := 1 to NomZap do Memo1.Lines.Add(Tov[i].NAI+' '+IntToStr(Tov[i].KVO)+' '+Tov[i].Data);
end;
procedure TForm1.Button4Click(Sender: TObject); // Свежие
var
Mes, Max, i : integer;
s : string;
begin
Max := 0;
for i := 1 to NomZap do
begin
s := Tov[i].Data[4]+Tov[i].Data[5];
Mes := StrToInt(s);
if Mes > Max then Max := Mes;
end;
Memo1.Clear;
for i := 1 to NomZap do
begin
s := Tov[i].Data[4]+Tov[i].Data[5];
Mes := StrToInt(s);
if Mes = Max then Memo1.Lines.Add(Tov[i].NAI+' '+IntToStr(Tov[i].KVO)+' '+Tov[i].Data);
end;
end;
procedure TForm1.Button6Click(Sender: TObject); // Старые
var
Mes, Max, i : integer;
s : string;
begin
Max := 0;
for i := 1 to NomZap do
begin
s := Tov[i].Data[4]+Tov[i].Data[5];
Mes := StrToInt(s);
if Mes > Max then Max := Mes;
end;
Memo1.Clear;
for i := 1 to NomZap do
begin
s := Tov[i].Data[4]+Tov[i].Data[5];
Mes := StrToInt(s);
if Mes < Max then Memo1.Lines.Add(Tov[i].NAI+' '+IntToStr(Tov[i].KVO)+' '+Tov[i].Data);
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject); //Сохранить
var
i : word;
begin
if SaveDialog1.Execute then
begin
FileNameText := SaveDialog1.FileName;
AssignFile(TF, FileNameText);// Связывание файловой переменной TF c именем файла
Rewrite(TF);// Открытие нового текстового файла
end;
for i := 1 to NomZap do
with Tov[i] do Writeln(TF,i:5,' ',NAI); // Запись в текстовой файл
CloseFile(TF);
end;
end.
Тесты:
Ввод товаров, поступивших на склад:
Сортировка товаров: