Pascal - Задача: Создать базу данных по теме : Книжная библиотека ( название учебника, фамилия учебника, издательство учебника, год учебника, город учебника ). Выполнить: 1) Составить программу с процедурой и функцией по табли...

Pascal - Задача: Создать базу данных по теме : Книжная библиотека ( название учебника, фамилия учебника, издательство учебника, год учебника, город учебника ). Выполнить: 1) Составить программу с процедурой и функцией по таблице : 1.Create; 2. VIew; 3.Insert; 4.Delete 5.Edit 6.Update 2) Составить поиск по библиотеке книг По желанию: Начертить любой график для задачи и вставить в задачу с библиотекой ( так же выполнить с процедурой
Гость
Ответ(ы) на вопрос:
Гость
Как один из примитивных вариантов type   LibBook = record     Book:string[50];     Author:string[50];     Publisher:string[30];     PubYear:integer;     City:string[30];     Deleted:boolean     end; var   gf:file of LibBook; function Create(pName:string):file of LibBook; // Создает или обнуляет существующий файл библиотеки // с полным именем pName (в имени можно указать и путь) begin   var f:file of LibBook;   Rewrite(f,pName);   Result:=f;   f.Close end; procedure Insert(pLib:LibBook); // Добавляет книгу в базу begin   var n:=FileSize(gf);   Seek(gf,n);   Write(gf,pLib); end; procedure BookWrite(pn:integer;pLib:LibBook); // вывод книги номер pn begin   Writeln('*** Книга №',pn,' ***');   if pLib.Deleted=False then begin     Writeln('Название: ',pLib.Book);     Writeln('Автор: ',pLib.Author);     Writeln('Издатель: ',pLib.Publisher);     Writeln('Год выпуска: ',pLib.PubYear);     Writeln('Город: ',pLib.City);     end   else Writeln('=== У Д А Л Е Н А ===');   Writeln end; procedure View(pKol:integer:=0); // Отображает содержимое библиотеки. // Можно вывести не все, а только pKol первых записей begin   var nB:=FileSize(gf);   if nb=0 then Writeln('Библиотека пустая')   else begin     Seek(gf,0);     Writeln('Книг в библиотеке: ',nB,NewLine);     if pKol<>0 then nB:=min(pKol,nb);     var Lib:LibBook;     for var i:=1 to nB do begin       Read(gf,Lib);       BookWrite(i,Lib)       end     end end; function Delete(pNom:integer):boolean; // Удаляет книгу с номером pNom и возвращает true. // Возвращает false, если такой книги нет begin   var nB:=FileSize(gf);   var Lib:LibBook;   if pNom-1>nB then begin     Writeln('Книга №',pNom,' не найдена');     Result:=False     end   else begin     Seek(gf,pNom-1);     Read(gf,Lib);     Lib.Deleted:=True;     Seek(gf,pNom-1);     Write(gf,Lib);     Writeln('Книга №',pNom,' удалена');     Result:=True     end; end; procedure Find(ps:string); // поиск книги по параметрам, заданным строкой // Формат <код> пробел <значение> begin   var n:=Ord(ps[1])-Ord('0');   Delete(ps,1,2);   var par:=ps;   var Lib:LibBook;   case n of   0:begin // по номеру книги       var nb:=FileSize(gf);       var fn:=par.ToInteger;       if fn-1>nb then Writeln('Книги с таким номером нет')       else begin         Seek(gf,fn-1);         Read(gf,Lib);         BookWrite(fn,Lib)         end     end;   1:begin // по названию книги       var nl:=par.Length; // для контекстного поиска       Seek(gf,0);       var i:=1;       while not Eof(gf) do begin         Read(gf,Lib);         if Copy(Lib.Book,1,nl)=par then begin           BookWrite(i,Lib); Exit           end         else Inc(i)         end;         Writeln('Поиск по названию книги ',par,' неуспешен')     end;   2:begin // по автору книги       var nl:=par.Length; // для контекстного поиска       Seek(gf,0);       var i:=1;       while not Eof(gf) do begin         Read(gf,Lib);         if Copy(Lib.Author,1,nl)=par then begin           BookWrite(i,Lib); Exit           end         else Inc(i)         end;         Writeln('Поиск по автору книги ',par,' неуспешен')     end;   3:begin // по издательству       var nl:=par.Length; // для контекстного поиска       Seek(gf,0);       var i:=1;       while not Eof(gf) do begin         Read(gf,Lib);         if Copy(Lib.Publisher,1,nl)=par then begin           BookWrite(i,Lib); Exit           end         else Inc(i)         end;         Writeln('Поиск по издательству книги ',par,' неуспешен')     end;   4:begin // по году выпуска       Seek(gf,0);       var i:=1;       var ipar:=par.ToInteger;       while not Eof(gf) do begin         Read(gf,Lib);         if Lib.PubYear=ipar then begin           BookWrite(i,Lib); Exit           end         else Inc(i)         end;         Writeln('Поиск по году издания ',par,' неуспешен')     end;   5:begin // по городу       var nl:=par.Length; // для контекстного поиска       Seek(gf,0);       var i:=1;       while not Eof(gf) do begin         Read(gf,Lib);         if Copy(Lib.City,1,nl)=par then begin           BookWrite(i,Lib); Exit           end         else Inc(i)         end;         Writeln('Поиск по городу ',par,' неуспешен')     end;   else Writeln('Неверная строка поиска')   end end; const LibName='MyLib.lib'; begin   var MyBook:LibBook;   gf:=Create(LibName);   Reset(gf,LibName);   With MyBook do begin     Book:='Первый учебник';     Author:='Первый автор';     Publisher:='Издательство 1';     PubYear:=2010;;     City:='Город 1'     end;   Insert(MyBook);   With MyBook do begin     Book:='Второй учебник';     Author:='Второй автор';     Publisher:='Издательство 2';     PubYear:=2012;;     City:='Город 2'     end;   Insert(MyBook);   With MyBook do begin     Book:='Третий учебник';     Author:='Третий автор';     Publisher:='Издательство 3';     PubYear:=2006;;     City:='Город 3'     end;   Insert(MyBook);   View;   Delete(2);   View;   Find('0 3');   Find('1 Перв');   Find('2 Тре');   Find('3 Издательство 2');   Find('4 2006');   gf.Close end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы