Помощь в учёбе, очень быстро...
Работаем вместе до победы

Практическая часть. 
Работа с типизированными, текстовыми и нетипизированными файлами

РефератПомощь в написанииУзнать стоимостьмоей работы

Вычисление среднего арифметического элементов массива оценок }. Массив оценок: за семестр ставятся 3 оценки (от 2 до 5 баллов) }. Write ('Введите имяфайла ведомости задолжников: '); readln (namefile2); S: studrec; { запись, содержащая сведения наодного студента }. Вывод записей по плохо успевающим студентам на эран }. База данных на основе типизированных файлов записей". Вывод записей по плохо… Читать ещё >

Практическая часть. Работа с типизированными, текстовыми и нетипизированными файлами (реферат, курсовая, диплом, контрольная)

Содержимое типизированных файлов можно рассматривать как последовательность записей определенного типа. Program PR1 содержит программу, которая создает простейшую базу данных на основе типизированных файлов записей. Требуется — создать файл записей с заданным именем, поместив в него сведения о студентах потока (номер группы, фамилия, имя и три отметки за семестр). На основе файла выяснить процент успеваемости на «4» и «5» (количество студентов без «3», отнесенное к общему числу учащихся). Требуется также создать файл записей с заданным именем, поместив в него сведения о плохо успевающих студентах потока (с оценками «2» и «3») — номер группы, фамилия, имя, средний бал семестра, и вывести его записи на экран.

«База данных на основе типизированных файлов записей».

Program PR1;

uses crt;

type studrec=record.

group: byte;

surname: string[20];

name: string[20];

{ массив оценок: за семестр ставятся 3 оценки (от 2 до 5 баллов) }.

oc: array[1.3] of 2.5;

end;

foolsrec=record.

group: byte;

surname: string[20];

name: string[20];

{ среднее арифметическое элементов массива оценок }.

average: real;

end;

file_typ1=file of studrec; file_typ2=file of foolsrec;

var f1: file_typ1; f2: file_typ2;

namefile1, namefile2: string[12];

s:studrec; { запись, содержащая сведения наодного студента }.

fs: foolsrec; { запись со сведениями на одного задолжника }.

i, nomrec: integer;

procedure read_data (var s: studrec);

{ ввод записи по студенту }.

begin.

clrscr;

with s do.

begin.

writeln ('Окончание ввода — 0, как n группы');

write ('N группы: '); readln (group);

if group 0 then.

begin.

write ('Фамилия: '); readln (surname);

write ('Имя: '); readln (name);

writeln ('Оценки: '); for i:=1 to 3 do read (oc[i]);

end;

end;

end;

procedure copy_data (s: studrec; var fs: foolsrec);

{ копирование записи по студенту-задолжнику }.

begin.

with fs do.

begin.

group:=s.group; surname:=s; name:=ss.name;

{ вычисление среднего арифметического элементов массива оценок }.

average:=(s.oc[1]+s.oc[2]+s.oc[3])/3;

end;

end;

procedure write_list (var f: file_typ2);

{ вывод записей по плохо успевающим студентам на эран }.

begin.

reset (f); seek (f, 0);

writeln ('Плохо успевающие: ');

writeln ('Группа','Фамилия':16,'Имя':8,'Средний балл':18);

while not eof (f) do.

begin.

{ чтение текущей записи из файла }.

read (f, fs);

{ вывод текущей записи на экран }.

with fs do writeln (group:4,surname:15,name:10,average:16:2);

end;

end;

procedure create_file (var f: file_typ1; var n: integer);

{ ввод записей по всем студентам в файл }.

begin.

n:=0; rewrite (f); read_data (s);

while s. group 0 do.

begin.

{ вывод текущей записи в файл }.

write (f, s); inc (n);

{ ввод записи по новому студенту }.

read_data (s);

end;

close (f);

end;

procedure write_data (var f1: file_typ1; var f2: file_typ2; n: integer);

{ вывод записей по плохо успевающим студентам в файл, }.

{ подсчет % успевающих студентов }.

var priz: char; k: integer;

begin.

reset (f1); rewrite (f2); k:=0;

while not eof (f1) do.

begin.

read (f1,s);

{ признак учебы студента }.

priz:='n';

for i:=1 to 3 do if (s.oc[i]>=2)and (s.oc[i]<=3) then priz:='y';

if priz='y' then.

begin copy_data (s, fs);write (f2,fs) end.

else inc (k);

end;

close (f1); close (f2);

clrscr; writeln ('На «4» и «5» учатся ', k/n*100:3:0,'% студентов');

end;

begin.

clrscr;

write ('Введите имя файла общей ведомости: '); readln (namefile1);

assing (f1,namefile1);

creat_file (f1,nomrec);

write ('Введите имяфайла ведомости задолжников: '); readln (namefile2);

assing (f2,namefile2);

write_data (f1,f2,nomrec);

write_list (f2);

end.

Комментарии.

Для каждого студента данные о номере его группы, фамилии, имени и отметках содержатся в полях записи studrec: переменных group, surname, name и массиве oc соответственно. Для плохо успевающего студента данные о номере его группы, фамилии, имени и среднем балле содержатся в полях записи foolsrec: пременных group, surname, name и average соответственно. Создание типизированного файла базы данных на студентов потока выполняется процедурой create_file, а заполнение полей записи по отдельному студенту — процедурой read_data. Формирование типизированного файла базы данных на плохо успевающих студентов потока выполняется процедурой write_data, которая также подсчитывает процент обучающихся на «4» и «5». Процедура copy_data выполняет вспомогательную роль, копируя поля записи студента в соответствующие поля записи задолжника и вычисляя средний балл по оценкам семестра. Данные из файла задолжников выводятся процедурой write_list.

Показать весь текст
Заполнить форму текущей работой