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

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

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

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

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

textual
Листинг программы
  1. type
  2.    avto=record
  3.      fio:string[50];
  4.      year:integer;
  5.      brand:string[20];
  6.      date:integer;
  7.      id:string[10];
  8.    end;  
  9. var
  10.   a:array of avto;
  11.   t,tmol,tstar:avto;
  12.   f:file of avto;
  13.   i,c:integer;
  14.   S:string;
  15. begin
  16.   assign(f,'avto.dat');
  17.   repeat
  18.     writeln('==================================================');
  19.     writeln('***            1. Ввод данных                  ***');
  20.     writeln('***          2. поиск по фамилии               ***');
  21.     writeln('*** 3. поиск по марке автомобиля и год выпуска ***');
  22.     writeln('***          4. марка автомобиля               ***');
  23.     writeln('==================================================');
  24.     writeln('             0. ВЫХОД');
  25.     write('Ваш выбор (цифра)');
  26.     readln(s);
  27.     if not FileExists('avto.dat') then begin
  28.       writeln('Отсутствует файл БД avto.dat');
  29.       writeln('необходимо внести данные!');
  30.       s:='1';
  31.     end;  
  32.     if s='1' then begin
  33.       if FileExists('avto.dat')then reset(f) else rewrite(f);
  34.       repeat
  35.         seek(f,filesize(f));
  36.         write('ФИО:');readln(t.fio);
  37.         write('год рождения:');readln(t.year);
  38.         write('марка автомобиля:');readln(t.brand);
  39.         write('год выпуска автомобиля:');readln(t.date);
  40.         write('госномер:');readln(t.id);
  41.         write(f,t);
  42.         write('Запись сохранена! Будете еще вносить данные (1-Да)?');
  43.         readln(s);
  44.       until s<>'1';  
  45.       close(f);
  46.       s:='1';
  47.     end;
  48.     if s='2' then begin
  49.       reset(f);
  50.       writeln('поиск по Фамилии');
  51.       write('ведите фамилию:');
  52.       readln(s);
  53.       c:=0;
  54.       while not eof(f) do begin
  55.         read(f,t);
  56.         if pos(uppercase(s),uppercase(t.fio))>0 then begin writeln(t);c:=1;end;
  57.       end;
  58.       close(f);
  59.       if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру');      
  60.       writeln('Вывод результаттов завершен. Нажмите "enter" для выхода...');
  61.       readln;
  62.       s:='';
  63.      end;
  64.      if s='3' then begin
  65.       reset(f);
  66.       writeln('поиск по  поиск по марке автомобиля и год выпуска');
  67.       write('ведите марку автомобиля:');
  68.       readln(s);
  69.       writeln('введите год выпуска:');
  70.       readln(i);
  71.       c:=0;
  72.       while not eof(f) do begin
  73.         read(f,t);
  74.         if (uppercase(s)=uppercase(t.brand)) and (i >=t.date) then begin writeln(t);c:=1;end;
  75.       end;
  76.       close(f);
  77.       if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру');
  78.       writeln('Вывод результатов завершен. Нажмите "enter" для выхода...');
  79.       readln;
  80.       s:='';
  81.      end;
  82.      if s='4' then begin
  83.       reset(f);
  84.       writeln('поиск по  поиск по марке ');
  85.       write('ведите марку автомобиля:');
  86.       readln(s);
  87.       i:=0;c:=0;
  88.       while not eof(f) do begin
  89.         read(f,t);
  90.         if (uppercase(s)=uppercase(t.brand)) then begin
  91.           c:=c+1;
  92.           writeln(t);
  93.            if c=1 then begin  
  94.              tmol:=t;
  95.              tstar:=t;
  96.            end else
  97.             if t.year<tstar.year then tstar:=t;
  98.             if t.year>tmol.year then tmol:=t;
  99.         end;
  100.       end;  
  101.       close(f);
  102.       if c=0 then writeln('Нет результатов,удовлетворяющих вашему фильтру') else
  103.       begin
  104.         writeln('Количество автомобилей данной марки:',c);
  105.         writeln(' Самый старый владелец:',tstar.fio);
  106.         writeln(' Самый молодой владелец:',tmol.fio);        
  107.       end;
  108.       writeln('Вывод результатов завершен. Нажмите "enter" для выхода...');
  109.       readln;
  110.       s:='';
  111.      end;
  112.      
  113.   until s='0';
  114. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы