Организовать работу с файлом, содержащим сведения об автовладельцах - 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' для выхода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д