Pascal - Задача: Сделать базу данных по теме : Книжная библиотека

Pascal - Задачка: Сделать базу данных по теме : Книжная библиотека ( заглавие учебника, фамилия учебника, издательство учебника, год учебника, город учебника ).
Выполнить:
1) Составить программку с процедурой и функцией по таблице :
1.Create;
2. VIew;
3.Insert;
4.Delete
5.Edit
6.Update
2) Составить поиск по библиотеке книжек

По желанию: Начертить хоть какой график для задачи и вставить в задачку с библиотекой ( так же выполнить с процедурой

Задать свой вопрос
Борис Определенков
Абс
Воякина Лариса
PascalABC.NET 3.2
1 ответ
Как один из простых вариантов

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 pKollt;gt;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-1gt;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);
// поиск книжки по параметрам, данным строчкой
// Формат lt;кодgt; пробел lt;значениеgt;
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-1gt;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:='1-ый учебник';
    Author:='1-ый создатель';
    Publisher:='Издательство 1';
    PubYear:=2010;;
    City:='Город 1'
    end;
  Insert(MyBook);
  With MyBook do begin
    Book:='2-ой учебник';
    Author:='2-ой создатель';
    Publisher:='Издательство 2';
    PubYear:=2012;;
    City:='Город 2'
    end;
  Insert(MyBook);
  With MyBook do begin
    Book:='3-ий учебник';
    Author:='3-ий автор';
    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.

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт