Описать сведения о записной книжке - PascalABC.NET
Формулировка задачи:
Пожалуйста, помогите с этим заданием
1. Описать файл записей с именем note.dat, содержащий следующие поля: фамилия, имя, номер телефона, день рождения (массив из трех чисел).
2. Написать программу, выполняющую следующие действия:
- ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Note, с упорядочением записей по алфавиту;
- вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры, а если таких нет - вывод на экран соответствующего сообщения;
Решение задачи: «Описать сведения о записной книжке»
textual
Листинг программы
type rec = record surname: string[20]; name: string[20]; tel: integer; dr: array [1..3] of integer; end; var n,nmenu,i,j: integer;k:byte; vmas: array [1..8] of rec;s:boolean; f1:file of rec; v:rec; label T; begin k:=0; assign(f1,'Note.dat'); reset(f1); while not eof(f1) do begin read(f1,vmas[k+1]); k:=k+1; end; close(f1); T: n:=1; writeln ('<br>'); writeln ('| MENU |'); writeln ('| 1) Ввод данных |'); writeln ('| 2) Вывод людей с др |'); writeln ('| в выбранном месяце |'); writeln ('| 3)Вывод по алфавиту |'); writeln ('| 0) Выход |'); writeln ('<br>'); while n>0 do begin writeln ('выберите пункт меню'); readln (nmenu); case nmenu of 1: //Ввод begin reset(f1); writeln('Введите фамилию'); readln(v.surname); writeln('Введите Имя'); readln(v.name); writeln('Введите телефон'); readln(v.tel); writeln('Введите день рождения через пробел'); readln(v.dr[1],v.dr[2],v.dr[3]); seek(f1,k); write(f1,v); close(f1); goto T; end; 2:begin writeln('Введите месяц в цифровом представлении, например "01"'); readln(j); s:=false; for i:=1 to 8 do if vmas[i].dr[2]=j then begin s:=true; writeln('День рождения этого человека во введенном месяце',vmas[i].surname,vmas[i].name) end; if s=false then writeln('Нет таких людей'); goto T; end; 3:begin for j:=1 to 8 do for i:=1 to 7 do if vmas[i].surname>vmas[i+1].surname then begin v:=vmas[i+1]; vmas[i+1]:=vmas[i]; vmas[i]:=v; end; for i:=1 to 8 do if vmas[i].tel<>0 then writeln(vmas[i].surname,vmas[i].name,vmas[i].tel,vmas[i].dr); goto T; end; 0:exit; end; end; end.
Объяснение кода листинга программы
- Объявлен тип записи
rec
, который содержит поля surname, name, tel и dr. - Объявлены переменные n, nmenu, i, j, k, vmas, s, f1, v и T.
- Задано значение k=0 и открывается файл f1 с именем
Note.dat
. - В цикле while не eof(f1) считываются данные из файла f1 и записываются в массив vmas.
- В блоке T создается меню с пунктами для выбора.
- В цикле while n>0 происходит взаимодействие с пользователем:
- Вводится номер пункта меню (nmenu).
- В зависимости от выбранного пункта меню выполняются соответствующие действия:
- При выборе пункта 1 происходит ввод данных о человеке и запись их в файл f1.
- При выборе пункта 2 происходит вывод людей с заданным днем рождения.
- При выборе пункта 3 происходит сортировка записей в алфавитном порядке по фамилии и их вывод.
- При выборе пункта 0 происходит выход из программы.
- В случае ошибки или некорректного ввода данных программа возвращает сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д