Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Pascal: Файлы и записи > Базы данных, записные книжки и т.д.


Автор: romtek 15.04.04, 11:59
Простенькая база данных.
Вводим данные, а потом ищем по имени и выводим на экран.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    const bookname='phonbook.dat';
     
    type
      TPhoneBook=record
        name, { Имя }
        surname: string[30]; { Фамилия }
        phone: string[10]; { Телефон }
      end;
     
    var
      F: file of TPhoneBook; { Файл из записей }
      PhoneBook: TPhoneBook; { Текущая запись }
     
    function Correct: boolean; { Функция прооверки корректности вводимых данных }
    begin
         writeln;
         with PhoneBook do
         begin
              write('Введи имя: '); readln(Name);
              write('Введи фамилию: '); readln(SurName);
              write('Введи # телефона: '); readln(Phone);
     
              Correct:=(Name<>'') and (SurName<>'') and (Phone<>'');
         end;
    end;
     
    procedure CreateBook; { Создание файла с записями }
    begin
         assign(f,bookname);
         {$I-}
         rewrite(F); { создаём файл }
         {$I+}
         if IOresult=0 then { Если не было ошибок, то }
            { добавлять записи в файл, пока корректно вводим данные }
            while Correct do write(F, PhoneBook);
     
         Close(F); { Закрываем файл }
    end;
     
    procedure Find; { Поиск по имени и вывод данных на экран }
    var
      who: string[30];
      found: boolean;
    begin
         write('Кого ищем? '); readln(who);
         if who='' then exit;
         found:=false;
     
         assign(f,bookname);
         {$I-}
         reset(F); { Открываем наш файл }
         {$I+}
         if IOresult=0 then
         with PhoneBook do
         while Not EOF(F) do { Ищем, пока не конец файла }
         begin
              read(F,PhoneBook); { чтение записи из файла }
              if name=who then  { Нашли такого/ую }
              begin
                   writeln(Name:30,SurName:30,Phone:10); { Выводим данные на экран форматированным выводом}
                   found:=true;
              end;
         end;
     
         Close(f); { Закрываем файл }
         if Not Found then writeln(Who,' не найден(а).');
    end;
     
    begin
         CreateBook;
         Find;
         writeln(#13#10'Конец работы! Жми на Enter.');
         readln;
    end.



Исходник:

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)