О взаимосвязи записей основного обрабатываемого файла и записей файлов-справочников

В файлах-справочниках на каждое значение ключевого признака должна быть только одна запись, дубликаты не допускаются. Например, на заводе может быть только один литейных цех, соответственно имеющий свой номер среди других цехов. Другой пример: в институте может быть только один студент со своим номером зачётной книжки, и не может быть нескольких студентов, имеющих одинаковый номер зачётки. В соответствии с этим требованием и планируется содержимое файлов-справочников - и одного, и другого.

В обрабатываемом файле могут быть несколько записей с одинаковым набором ключевых признаков. Например, студент с данным номером зачётки в течение одной сессии может сдавать несколько зачётов и экзаменов (по различным дисциплинам, не говоря уже о возможных пересдачах одного предмета). По каждой сессии этот студент будет иметь соответствующие наборы записей с результатами контрольных мероприятий. Если рассортировать файл сначала по номерам зачёток, а потом по номерам семестров, то рядом окажутся записи по каждому студенту, упорядоченные ещё и по номерам пройденных им семестров. Такое расположение записей даст возможность рассчитать, например, средний балл студента по каждой сессии, а затем и в целом за пройденный период обучения.

Если формировать ведомость с итогами подобного вида, то в ней можно будет увидеть «обезличенную» информацию о студенте, номер его зачётки. Добавить в ведомость фамилию, имя и отчество студента можно будет, если иметь файл-справочник, содержащий номер зачётки и, соответственно, фамилию, имя и отчество студента. Здесь же может быть и номер учебной группы и другая информация. Если это типизированный файл, то выборка записи может быть произведена прямым доступом. Для этого, можно, например, из текущего номера зачётки вычесть минимальное значение номера, что и даст физический номер записи в справочнике. Далее производится установка курсора на нужную запись с помощью процедуры SEEK(…) и чтение записи, из которой берётся требуемое значение (в данном случае ФИО) и заносится в итоговую запись либо вместо номера зачётки, либо в дополнение к нему.

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

Begin

Writeln (‘ Введите имя файла на диске: ‘);

Readln (Filename)’

Assign (Mainfile, filename);

Reset (mainfile);

Sum_file:= 0;

Read (Mainfile, zap);

While (not EOF (mainfile)) do

Begin

Code_z:=zap.code_z;

Sum_z:= 0;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: