База данных "Библиотека": Осуществить поиск книги по названию - Pascal

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «База данных "Библиотека": Осуществить поиск книги по названию»

textual
Листинг программы
type
    TBook = record
        name, author: String;
        year, count: Word;
        cost: Single;
    end;
    TFile = File Of TBook;
 
procedure AddToFile(var f: TFile);
var
    i, n: Byte;
    temp: TBook;
begin
    {$I-}
    Reset(f);
    {$I+}
    if (IoResult <> 0)
    then
        ReWrite(f);
    Write('How much? '); ReadLn(n);
    for i := 1 to n do
    begin
        with temp do
        begin
            WriteLn;
            Write('Book name: '); ReadLn(name);
            Write('Author: '); ReadLn(author);
            Write('Publish year: '); ReadLn(year);
            Write('Number of copies: '); ReadLn(count);
            Write('Cost per one book: '); ReadLn(cost);
        end;
        Write(f, temp);
    end;
    Close(f);
end;
 
procedure FindInFile(var f: TFile);
var
    s: String;
    temp: TBook;
    isFound: Boolean;
begin
    {$I-}
    Reset(f);
    {$I+}
    if (IoResult <> 0)
    then
    begin
        WriteLn('File not exist! Please, put some info before search');
        Exit;
    end;
    Write('Book title for search? '); ReadLn(s);
    isFound := False;
    while (Not EoF(f)) do
    begin
        Read(f, temp);
        with temp do
            if (Pos(s, name) > 0)
            then
            begin
                isFound := True;
                WriteLn(name);
                WriteLn(#9, author);
                WriteLn(#9, year, ' y.');
                WriteLn(#9, count, ' p.');
                WriteLn(#9, cost:0:2, ' r.');
                WriteLn('------------------------------------------');
            end;
    end;
    Close(f);
    if (Not isFound)
    then
        WriteLn('Not found any!');
end;
 
function ShowMenu(): Byte;
var
    Result: Byte;
begin
    repeat
        WriteLn('1. Add book.');
        WriteLn('2. Search by title.');
        WriteLn('3. Exit.');
        ReadLn(Result);
    until (Result in [1..3]);
    ShowMenu := Result;
end;
 
var
    f: TFile;
    ans: Byte;
begin
    Assign(f, 'f.dat');
    repeat
        ans := ShowMenu();
        case ans of
            1: AddToFile(f);
            2: FindInFile(f);
        end;
    until (ans = 3);
end.

Объяснение кода листинга программы

  1. Создается база данных Библиотека в виде файла типа TFile.
  2. В процедуре AddToFile считывается информация о книге от пользователя и записывается в файл.
  3. В процедуре FindInFile считывается информация о книге для поиска из файла.
  4. Функция ShowMenu позволяет пользователю выбрать действие: добавить книгу или найти книгу по названию.
  5. В основной программе создается файл f.dat, затем пользователь последовательно выбирает действия, которые выполняются в зависимости от выбранного номера.
  6. Программа завершается, когда пользователь выбирает пункт 3. Exit.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы