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