Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример программы работы с записями




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

Литературу в библиотеке можно разделить на три типа изданий: книги, журналы, газеты. Для описания сведений о типе изданий в разделе типов введем перечисляемый тип:

Type_Publ=(Book,Journal,Newspaper);

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

Liter=Record

Title:String[50];

Author:String[50];

Case V: Type_Publ of

Book: (YearB:Integer);

Journal: (Num:1..12;

YearJ:1900..2001);

Newspaper: (Day:1..31;

Month:1..12;

YearN:Integer);

End;

где V - признак выбора вариантов, который может принимать значение Book, Journal, Newspaper. Для типа Book предусмотрено хранение года издания (поле YearB), для издания типа Journal- номера(Num) и год издания (поле YearJ), для издания типа Newspaper –дня (поле Day), месяца (поле Month) и года выпуска (поле YearN).

В разделе описания констант зададим значение максимального числа записей в каталоге Count=10.

Текст программы:

Program Kat_Library;

Type

Type_Publ=(Book,Journal,Newspaper);

Liter=Record

Title:string[50];

Author:String[50];

case V:Type_Publ of

Book:(YearB:Integer);

Journal:(Num:1..12;

YearJ:1900..2000);

Newspaper:(Day:1..31;

Month:1..12;

YearN:Integer);

end;

Const Count=10;

Var

Katalog:Array[1..Count] of Liter;

Num_Array:1..Count;

Yes_Liter:Boolean;

Vybor:Byte;

Edition:Type_Publ;

Count_Find:Integer;

Procedure Input_Data;

Begin

Writeln('Введите данные о литературе ',Num_Array,':');

Write('Введите число, указывающее вид издания:');

Write('1-книга, 2-журнал, 3-газета: ');

Readln(Vybor);

Case Vybor of

1:Katalog[Num_Array].V:=Book;

2:Katalog[Num_Array].V:=Journal;

3:Katalog[Num_Array].V:=Newspaper;

end;

With Katalog[Num_Array] do

begin

Write('Фамилия автора: ');

Readln(Author);

Write('Название:');

Readln(Title);

Case V of

Book:begin

Write('Год издания: ');

Readln(YearB);

end;

Journal:begin

Write('Номер: ');

Readln(Num);

Write('Год издания: ');

Readln(YearJ);

end;

Newspaper:begin

Write('Дата издания: День ');

Readln(Day);

Write('Месяц: ');

Readln(Month);

Write('Год: ');

Readln(YearN);

end;

end;

end;

end;

Procedure Write_Data;

begin

Writeln;

Writeln('Литература № ',Num_Array);

With Katalog[Num_Array] do

begin

Writeln('Название:',Title);

Writeln('Фамилия автора:',Author);

Case V of

Book:begin

Writeln('Год издания:',YearB);

end;

Journal:begin

Write('Номер: ',Num);

Writeln('Год издания: ',YearJ);

end;

Newspaper:begin

Writeln('Дата издания: День:',Day,'Месяц:',Month,'Год:',YearN);

end;

end;

end;

end;

procedure Find_Liter;

begin

Writeln('Поиск литературы по типу издания: ');

Writeln;

Write('Введите число, указывающее вид издания: ');

Write('1-книга, 2-журнал, 3-газета');

Readln(Vybor);

case Vybor of

1:Edition:=Book;

2:Edition:=Journal;

3:Edition:=Newspaper;

end;

Yes_Liter:=False;

Count_Find:=0;

for Num_Array:=1 to Count do

If Katalog[Num_Array].V=Edition then

begin

Count_Find:=Count_Find+1;

Write_Data;

Yes_Liter:=True;

end;

if not Yes_Liter then

Writeln('В библиотеке нет такой литературы ')

else

Writeln('Всего в библиотеке',Count_Find,' таких изданий');

end;

begin

for Num_Array:=1 to Count do

Input_Data;

Writeln;

Find_Liter;

end.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...