Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет.docx
Скачиваний:
99
Добавлен:
13.03.2016
Размер:
852.36 Кб
Скачать

Задача 5.2.1.

Условие

Составить программу для обработки информации о некоторых объектах – студентах какого-то факультета. Каждый объект характеризуется совокупностью признаков.

Подсчитать число студентов, которые моложе 16 лет, и вывести все данные о них.

Листинг

BirthDate: TDateTime;

Gender: TGender;

Phys, Mat, Inf: shortint;

Salary: integer;

end;

TStudentList = array of TStudent;

function GenderToStr(a: TGender): string;

begin

case a of

gMale: Result := 'Мужской';

gFemale: Result := 'Женский';

end;

end;

function Student(Group, Name, BirthDate: string; Gender: TGender; Phys, Mat, Inf: shortint; salary: integer): TStudent;

var

s: TStudent;

begin

s.Group := Group;

s.Name := Name;

s.BirthDate := StrToDate program project1;

uses

SysUtils, Classes, dateutils;

type

TGender = (gMale, gFemale);

TStudent = record

Group: string;

Name: string (BirthDate);

s.Gender := Gender;

s.Phys := Phys;

s.Mat := Mat;

s.Inf := Inf;

s.Salary := salary;

Result := s;

end;

function LoadStudents(): TStudentList;

var

SFile: TStringList;

G: TGender;

i: integer;

SList: TStudentList;

begin

SFile := TStringList.Create();

SFile.LoadFromFile('Students.csv');

with TStringList.Create() do

begin

Delimiter := ':';

QuoteChar := '"';

StrictDelimiter := True;

for i:=0 to SFile.Count-1 do

begin

DelimitedText := SFile.Strings[i];

SetLength(SList, length(SList) + 1);

G := TGender(StrToInt(Strings[3]));

SList[High(SList)] := Student(Strings[0], Strings[1], Strings[2], G,

StrToInt(Strings[4]), StrToInt(Strings[5]),

StrToInt(Strings[6]), StrToInt(Strings[7]));

end;

end;

Result := SList;

end;

procedure PrintStudents(const a: TStudentList);

var

i: integer;

begin

for i:=Low(a) to High(a) do

begin

writeln('-----------------------');

writeln('Студент ', a[i].Name);

writeln(' Группа: ', a[i].Group);

writeln(' Дата рождения: ', FormatDateTime('DD.MM.YYYY', a[i].BirthDate));

writeln(' Пол: ', GenderToStr(a[i].Gender));

writeln(' Оценки:');

writeln(' -Физика: ', a[i].Phys);

writeln(' -Математика: ', a[i].Mat);

writeln(' -Информатика: ', a[i].Inf);

writeln(' Стипендия: ', a[i].Salary);

end;

end;

procedure PrintSpecificStudents(const a: TStudentList);

var

sl: TStudentList;

i: integer;

begin

//Найдём студентов моложе 16-ти лет

for i:=Low(a) to High(a) do

begin

if YearsBetween(a[i].BirthDate, Date) < 16 then

begin

SetLength(sl, length(sl)+1);

sl[High(sl)] := a[i];

end;

end;

writeln('Общее количество студентов: ', length(a));

writeln('Количество студентов моложе 16-ти: ', length(sl));

if length(sl) > 0 then

begin

writeln('Список:');

PrintStudents(sl);

end;

end;

var

Students: TStudentList;

begin

Students := LoadStudents();

PrintSpecificStudents(Students);

readln();

end.

Результаты работы программы

Переменные

Класс

Имя

Тип

Структура

Назначение

Блок-схема