Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

"Использование записей в Delphi для хранения данных о членах клана и их результатах в Grand Prix"

Delphi , Базы данных , Сортировка и Фильтр

В статье мы рассмотрим использование записей в Delphi для хранения данных о членах клана и их результатах в Grand Prix. Мы создадим запись, которая будет содержать информацию о игроке, его результатах в Grand Prix и среднем результате. Затем мы создадим список записей, который будет содержать информацию о всех членах клана. Мы также рассмотрим, как сортировать список записей по среднему результату и выводить его на экран.

Создание записи для хранения данных о члене клана

Первым шагом является создание записи для хранения данных о члене клана. Мы создадим запись с полями для хранения имени игрока, его результатов в Grand Prix и среднего результата. Мы также добавим методы для вычисления среднего результата и получения общего результата.

type
  TClanMember = record
  private
    FName: string;
    FGPs: array[1..3] of Integer;
    FTotal: Integer;
    FAverage: Double;
  public
    constructor Create(AName: string; AGP1, AGP2, AGP3: Integer);
    property Name: string read FName;
    property GP1: Integer read FGPs[1];
    property GP2: Integer read FGPs[2];
    property GP3: Integer read FGPs[3];
    property Total: Integer read FTotal;
    property Average: Double read FAverage;
  end;

{ TClanMember }
constructor TClanMember.Create(AName: string; AGP1, AGP2, AGP3: Integer);
begin
  FName := AName;
  FGPs[1] := AGP1;
  FGPs[2] := AGP2;
  FGPs[3] := AGP3;
  FTotal := FGPs[1] + FGPs[2] + FGPs[3];
  FAverage := FTotal / 3;
end;

function TClanMember.CalcTotal: Integer;
begin
  Result := FGPs[1] + FGPs[2] + FGPs[3];
end;

function TClanMember.CalcAverage: Double;
begin
  Result := FTotal / 3;
end;

Создание списка записей для хранения данных о всех членах клана

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

type
  TClanMembersList = TList<TClanMember>;

Сортировка списка записей по среднему результату

После того, как мы создали список записей, мы можем сортировать его по среднему результату. Для этого мы будем использовать метод Sort() списка записей и передавать ему функцию сравнения, которая будет сравнивать средние результаты двух игроков.

procedure SortMembersByAverage(const AMembers: TClanMembersList);
begin
  AMembers.Sort(TComparer<TClanMember>.Construct(
    function(const ALeft, ARight: TClanMember): Integer
    begin
      Result := -Compare(ALeft.Average, ARight.Average);
    end));
end;

Вывод списка записей на экран

После того, как мы отсортировали список записей по среднему результату, мы можем вывести его на экран. Для этого мы создадим функцию, которая будет выводить список записей в виде таблицы с именами игроков, их результатами в Grand Prix и средним результатом.

procedure PrintMembers(const AMembers: TClanMembersList);
var
  Member: TClanMember;
  I: Integer;
begin
  WriteLn('Name          GP1  GP2  GP3  Total  Average');
  for Member in AMembers do
  begin
    WriteLn(Format('%s%8d%4d%4d%5d%5.2f', [Member.Name, Member.GP1, Member.GP2, Member.GP3, Member.Total, Member.Average]));
  end;
end;

Пример использования

Теперь мы можем создать список записей, добавить в него несколько игроков, отсортировать список по среднему результату и вывести его на экран.

var
  Members: TClanMembersList;
  Member: TClanMember;

begin
  Members := TClanMembersList.Create;
  try
    Member := TClanMember.Create('John', 10, 8, 9);
    Members.Add(Member);
    Member := TClanMember.Create('Jane', 7, 8, 9);
    Members.Add(Member);
    Member := TClanMember.Create('Bob', 9, 8, 7);
    Members.Add(Member);

    SortMembersByAverage(Members);
    PrintMembers(Members);
  finally
    Members.Free;
  end;
end.

Альтернативный ответ

В альтернативном ответе мы можем использовать классы вместо записей для хранения данных о члене клана. Мы создадим класс с полями для хранения имени игрока, его результатов в Grand Prix и среднего результата. Мы также добавим методы для вычисления среднего результата и получения общего результата.

type
  TClanMember = class
  private
    FName: string;
    FGPs: array[1..3] of Integer;
    FTotal: Integer;
    FAverage: Double;
  public
    constructor Create(AName: string; AGP1, AGP2, AGP3: Integer);
    property Name: string read FName;
    property GP1: Integer read FGPs[1];
    property GP2: Integer read FGPs[2];
    property GP3: Integer read FGPs[3];
    property Total: Integer read FTotal;
    property Average: Double read FAverage;
    function CalcTotal: Integer;
    function CalcAverage: Double;
  end;

{ TClanMember }
constructor TClanMember.Create(AName: string; AGP1, AGP2, AGP3: Integer);
begin
  FName := AName;
  FGPs[1] := AGP1;
  FGPs[2] := AGP2;
  FGPs[3] := AGP3;
  FTotal := FGPs[1] + FGPs[2] + FGPs[3];
  FAverage := FTotal / 3;
end;

function TClanMember.CalcTotal: Integer;
begin
  Result := FGPs[1] + FGPs[2] + FGPs[3];
end;

function TClanMember.CalcAverage: Double;
begin
  Result := FTotal / 3;
end;

Пример использования класса TClanMember аналогичен примеру использования записи TClanMember, описанному выше.

Создано по материалам из источника по ссылке.

Статья описывает использование записей в Delphi для хранения данных о членах клана и их результатах в Grand Prix, а также создает запись для хранения информации об игроке, его результатах в Grand Prix и среднем результате. Также рассматривается создание с


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сортировка и Фильтр ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:42:17/0.0056250095367432/1