Организовать работу с файлом, содержащим сведения об автовладельцах - PascalABC.NET

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

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

Как организовать работу с файлом, содержащим следующие сведения об автовладельцах: ФИО, год рождения, марка автомобиля, год выпуска автомобиля, госномер. Поиск осуществлять по следующим параметрам: а) фамилия; б) марка автомобиля и год выпуска (не позднее); в) марка автомобиля, при этом определить количество автомобилей данной марки, самого молодого и самого старшего владельца. Какой код должен быть? Спасибо!

Решение задачи: «Организовать работу с файлом, содержащим сведения об автовладельцах»

textual
Листинг программы
type
   avto=record
     fio:string[50];
     year:integer;
     brand:string[20];
     date:integer;
     id:string[10];
   end;  
var
  a:array of avto;
  t,tmol,tstar:avto;
  f:file of avto;
  i,c:integer;
  S:string;
begin
  assign(f,'avto.dat');
  repeat
    writeln('=================================================='); 
    writeln('***            1. Ввод данных                  ***');
    writeln('***          2. поиск по фамилии               ***');
    writeln('*** 3. поиск по марке автомобиля и год выпуска ***');
    writeln('***          4. марка автомобиля               ***');
    writeln('==================================================');
    writeln('             0. ВЫХОД');
    write('Ваш выбор (цифра)');
    readln(s);
    if not FileExists('avto.dat') then begin
      writeln('Отсутствует файл БД avto.dat');
      writeln('необходимо внести данные!');
      s:='1';
    end;  
    if s='1' then begin
      if FileExists('avto.dat')then reset(f) else rewrite(f);
      repeat 
        seek(f,filesize(f));
        write('ФИО:');readln(t.fio);
        write('год рождения:');readln(t.year);
        write('марка автомобиля:');readln(t.brand);
        write('год выпуска автомобиля:');readln(t.date);
        write('госномер:');readln(t.id);
        write(f,t);
        write('Запись сохранена! Будете еще вносить данные (1-Да)?');
        readln(s);
      until s<>'1';  
      close(f);
      s:='1';
    end;
    if s='2' then begin
      reset(f);
      writeln('поиск по Фамилии');
      write('ведите фамилию:');
      readln(s);
      c:=0;
      while not eof(f) do begin
        read(f,t);
        if pos(uppercase(s),uppercase(t.fio))>0 then begin writeln(t);c:=1;end;
      end;
      close(f);
      if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру');      
      writeln('Вывод результаттов завершен. Нажмите "enter" для выхода...');
      readln;
      s:='';
     end;
     if s='3' then begin
      reset(f);
      writeln('поиск по  поиск по марке автомобиля и год выпуска');
      write('ведите марку автомобиля:');
      readln(s);
      writeln('введите год выпуска:');
      readln(i);
      c:=0;
      while not eof(f) do begin
        read(f,t);
        if (uppercase(s)=uppercase(t.brand)) and (i >=t.date) then begin writeln(t);c:=1;end;
      end;
      close(f);
      if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру');
      writeln('Вывод результатов завершен. Нажмите "enter" для выхода...');
      readln;
      s:='';
     end;
     if s='4' then begin
      reset(f);
      writeln('поиск по  поиск по марке ');
      write('ведите марку автомобиля:');
      readln(s);
      i:=0;c:=0;
      while not eof(f) do begin
        read(f,t);
        if (uppercase(s)=uppercase(t.brand)) then begin
          c:=c+1;
          writeln(t);
           if c=1 then begin  
             tmol:=t;
             tstar:=t;
           end else
            if t.year<tstar.year then tstar:=t;
            if t.year>tmol.year then tmol:=t;
        end;
      end;  
      close(f);
      if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру') else
      begin
        writeln('Количество автомобилей данной марки:',c);
        writeln(' Самый старый владелец:',tstar.fio);
        writeln(' Самый молодой владелец:',tmol.fio);        
      end;
      writeln('Вывод результатов завершен. Нажмите "enter" для выхода...');
      readln;
      s:='';
     end;
     
  until s='0';
end.

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

В данном коде используется язык программирования PascalABC.Net.

  1. Тип данных avto представляет собой запись (record) с полями:
    • fio (string[50]) - Фамилия, имя, отчество владельца автомобиля;
    • year (integer) - Год рождения владельца автомобиля;
    • brand (string[20]) - Марка автомобиля;
    • date (integer) - Год выпуска автомобиля;
    • id (string[10]) - Государственный номер автомобиля.
  2. Объявлены следующие переменные:
    • a (array of avto) - Массив объектов типа avto;
    • t, tmol, tstar (avto) - Переменные типа avto для хранения текущего, самого старого и самого молодого владельца;
    • f (file of avto) - Файл для работы с данными;
    • i, c (integer) - Переменные для хранения количества и текущего года;
    • S (string) - Строка для хранения введенных пользователем данных;
    • s (string) - Строка для хранения выбора пользователя.
  3. После инициализации переменных происходит открытие файла 'avto.dat' для чтения и записи.
  4. Затем пользователю предлагается выбрать действие из списка:
  5. Ввод данных;
  6. Поиск по фамилии;
  7. Поиск по марке автомобиля и году выпуска;
  8. Поиск по марке автомобиля.
  9. Если выбрано действие '1', то происходит считывание данных из файла и добавление новой записи. Пользователю предлагается ввести данные о владельце автомобиля.
  10. Если выбрано действие '2', то пользователю предлагается ввести фамилию для поиска. Затем происходит поиск всех записей, удовлетворяющих условию, и вывод результатов.
  11. Если выбрано действие '3', то пользователю предлагается ввести марку автомобиля и год выпуска. Затем происходит поиск всех записей, удовлетворяющих условию, и вывод результатов.
  12. Если выбрано действие '4', то пользователю предлагается ввести марку автомобиля. Затем происходит поиск всех записей, удовлетворяющих условию, и вывод информации о самом старом и самом молодом владельце.
  13. После выполнения любого действия пользователю предлагается ввести '0' для выхода из программы.
  14. Если файл 'avto.dat' отсутствует или не содержит данных, то выводится сообщение об ошибке и предлагается внести данные.
  15. В конце программы выводится сообщение о завершении работы и предлагается нажать 'enter' для выхода.

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


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

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

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