Структурирование программ с использованием вспомогательных алгоритмов - Pascal ABC
Формулировка задачи:
Сформировать файл, содержащий данные о работниках предприятия: фамилия, имя, отче-ство, должность, стаж работы, оклад.
1. Составить список тех, стаж работы которых превышает 10 лет. Оформить программу с использованием подпрограмм.
2. Организовать поиск данных о работниках по фамилии.
Решение задачи: «Структурирование программ с использованием вспомогательных алгоритмов»
textual
Листинг программы
type rab=record fm,ot:string[15]; im,dl:string[10]; st,ok:integer; end; tfile=file of rab; const fname='rabotniki';//файл будет в папке с программой procedure createfile(var f:tfile); var n,i:integer; r:rab; begin assign(f,fname); rewrite(f); writeln('Сколько записей внести в файл n='); readln(n); for i:=1 to n do begin writeln('работник ',i); with r do begin write('Фамилия: ');readln(fm); write('Имя: ');readln(im); write('Отчество: ');readln(ot); write('Должность: ');readln(dl); write('Стаж работы: ');readln(st); write('Оклад: ');readln(ok); write(f,r); end; end; close(f); end; procedure tab; begin writeln('------------------------------------------------------------------'); writeln('| Фамилия | Имя | Отчество | Должность|Стаж|Оклад|'); writeln('------------------------------------------------------------------'); end; procedure spisok(var f:tfile); var r:rab; begin writeln('Полный список работающих'); tab; reset(f); while not eof(f) do begin read(f,r); with r do writeln('|',fm:15,'|',im:10,'|',ot:15,'|',dl:10,'|',st:4,'|',ok:5,'|'); end; writeln('------------------------------------------------------------------'); end; procedure staz(var f:tfile); var r:rab; k:byte; begin reset(f); writeln('Список работников чей стаж больше 10 лет'); k:=0; tab; while not eof(f) do begin read(f,r); with r do begin if st>10 then begin k:=1; writeln('|',fm:15,'|',im:10,'|',ot:15,'|',dl:10,'|',st:4,'|',ok:5,'}'); end; end; end; if k=0 then writeln('Таких работников нет') else writeln('------------------------------------------------------------------'); close(f); end; procedure poisk(var f:tfile); var r:rab; fam:string[15]; k:byte; begin write('Введите фамилию для поиска'); readln(fam); reset(f); writeln('Список работников чья фамилия ',fam); k:=0; tab; while not eof(f) do begin read(f,r); with r do begin if fm=fam then begin k:=1; writeln('|',fm:15,'|',im:10,'|',ot:15,'|',dl:10,'|',st:4,'|',ok:5,'}'); end; end; end; if k=0 then writeln('Таких работников нет') else writeln('------------------------------------------------------------------'); close(f); end; var f:tfile; begin createfile(f); spisok(f); staz(f); poisk(f); end.
Объяснение кода листинга программы
- Создание файла rabotniki с использованием типа rab и переменной f.
- Задание имени файла в переменной fname.
- Объявление типа rab и переменной r.
- Объявление переменных n и i для использования в процедуре createfile.
- Вызов процедуры createfile с переменной f.
- Чтение ввода о количестве записей для внесения в файл (n).
- Цикл for для внесения n записей в файл.
- Внутри цикла вызов процедуры createfile для каждой записи.
- Вывод информации о работнике на экран.
- Запись информации о работнике в файл.
- Вызов процедуры close для закрытия файла.
- Объявление переменной k для использования в процедуре staz.
- Вызов процедуры staz с переменной f.
- Проверка, есть ли работники с стажем больше 10 лет.
- Вывод сообщения в зависимости от результата проверки.
- Вызов процедуры close для закрытия файла.
- Объявление переменных fam и k для использования в процедуре poisk.
- Вызов процедуры poisk с переменной f.
- Проверка введенной фамилии на соответствие фамилии работника.
- Вывод сообщения в зависимости от результата проверки.
- Вызов процедуры close для закрытия файла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д