Обработка массива указателей

 

Министерство образования Республики Беларусь

Учреждение образования

«Гомельский государственный университет имени Франциска Скорины»

Физический факультет

Кафедра автоматизированных систем обработки информации










Курсовой проект

Основы алгоритмизации и программирования

Обработка массива указателей




Исполнитель

Полицына О.А.

Руководитель

Дробышевский В.А.






Гомель 2013

Содержание


Введение

. Описание программного комплекса

.1Главная программа MAINPRO

.2Модуль меню MYMENU

.3Модуль описания основных типов данных TYPES

.4Модуль ввода информации из текстового файла в массив записей OPEN

.5Модуль просмотр всех элементов массива SHOW

.6Модуль добавления новых элементов в конец массива ADD

.7Модуль вывода информации из массива в текстовый файл WRITING

.8Модуль корректировки полей выбранного элемента ELEMZAM

.9Модуль сортировки массива по числовому полю SORTING

.10Модуль замены выбранного элемента ZAMENA

. Проверка программы на контрольном примере

.1Запуск главной программы MAINPRO

.2Запуск модуля просмотра всех элементов массива SHOW

.3Запуск модуля добавления новых элементов в конец массива ADD

.4Запуск модуля вывода информации из массива в текстовый файл WRITING

.5Запуск модуля корректировки полей выбранного элемента ELEMZAM

.6Запуск модуля сортировки массива по числовому полю SORTING

.7Запуск модуля замены выбранного элемента ZAMENA

Заключение

Список использованных источников

Приложение А


Введение


Основной целью данного курсового проекта является разработка программного комплекса по обработке заданного множества данных в динамической памяти компьютера. В процессе работы над курсовым проектом должна быть создана программа, которая создает набор данных в динамической памяти компьютера и позволяет корректировать его. Набор данных представляет собой массив указателей, каждый из элементов которого внесен в динамическую память при помощи константы типа запись из файла на внешнем носителе.

Запись (комбинированный тип) - составной тип, который служит для представления совокупности разнородных данных. Записи напоминают по структуре массивы: они составлены из ряда отдельных компонент, однако если компоненты массива должны принадлежать одному типу, записи могут содержать компоненты разных типов.

Для работы с динамическими программными объектами используется ссылочный тип или тип указателей. В переменной ссылочного типа хранится ссылка на программный объект (адрес объекта). Указатель может находиться в состояниях: содержать адрес какой-либо переменной, память под которую уже выделена; содержать специальный пустой адрес Nil.

Программа реализована с использованием модулей, в каждом из которых описана процедура.

Процедура - подпрограмма, которая вызывается специальным оператором из основной программы и после своего выполнения возвращает одно или несколько значений. Из вызывающей программы в процедуру передается список формальных параметров. Между списками формальных и фактических параметров должны быть установлены соответствия по количеству, порядку следования и по типу.

Модуль - отдельно хранимая и независимо компилируемая единица. Представляет собой совокупность программных ресурсов, предназначенных для использования другими модулями и программами.

Множество данных - группы в детском саду.

  1. шифр группы (string);
  2. количество детей в группе (integer);
  3. фамилия воспитателя (string);

Перечень запросов выполняемых в разрабатываемом программном комплексе:

)ввод информации из текстового файла в массив записей;

)добавление новых элементов в конец массива;

)просмотр всех элементов массива;

)вывод информации из массива в текстовый файл;

)корректировка полей выбранного элемента (по индексу);

)сортировка массива по числовому полю;

)замена выбранного элемента;


1. Описание программного комплекса


.1 Главная программа MAINPRO


Данная программа является основной. Она вызывает все модули, используемые для реализации запросов. В начале программы с помощью процедуры vvod модуля OPEN массив заполняется данными из файла NABOR.DAT. Выводится текущий элемент данных. Дальше создается меню для работы пользователя, заполняются пункты меню, и вызывается процедура vertmenu модуля MYMENU, которая формирует и выводит меню на экран. В конце программы в зависимости от выбранного пользователем пункта меню вызывается процедура определённого модуля и выполняется запрос. В меню программы вначале идут основные пункты меню, а затем дополнительные. программа компьютер детский mainpro

Основные пункты меню вызывают функции, которые выполняют основные операции программного комплекса. Первый пункт меню «Просмотр данных» вызывает процедуру showw модуля SHOW, которая выводит данные массива на экран в виде таблицы. Второй пункт меню «Добавить данных в конец» вызывает процедуру dob модуля ADD, с помощью которой добавляются данные в конец массива. Третий пункт «Записать данные в файл» вызывает процедуру writingg модуля WRITING, которая записывает данные в файл.

Дополнительные пункты меню вызывают функции, выполняющие дополнительные запросы по заданию курсовой работы. Шестой пункт меню «Корректировка полей выбранного элемента» вызывает процедуру elem модуля ELEMZAM, которая позволяет изменять любое поле выбранного пользователем элемента. Седьмой пункт меню «Сортировка массива по числовому полю» с помощью процедуры sort модуля SORTING сортирует записи массива по числовому полю. И последний восьмой пункт меню «Замена выбранного элемента» вызывает процедуру zamen модуля ZAMENA, которая позволяет полностью заменить все поля выбранной пользователем записи.


{Используемые модули}crt,add,addafter,mymenu,open,show,writing,sorting,zamena,elemzam;a:masmenu;,x,y:byte; raz,nm:integer; u:char; put:string;

{Заполняем массив данными из файла}(nd,raz);

{Задаем координаты расположения меню}

{Задаем строки пунктов меню}

{Выводим меню на экран}(a,nm,x,y,pos);

{В зависимости от выбора пользователя вызываем процедуру выполнения запроса}.


.2 Модуль меню MYMENU


Данный модуль отвечает за отображение меню. В основную процедуру этого модуля vertmenu, из главной программы MAINPRO передается массив строк, которые будут отображаться в виде пунктов создаваемого меню, количество этих пунктов, координаты расположения меню (верхняя левая точка), а также позиция курсора. В этой процедуре проверяется корректность полученных данных, определяется правая нижняя точка меню, определяется позиция курсора и выводится меню. Результатом работы этой процедуры является переменная pos характеризующая позицию курсора, которую выбирает пользователь в меню. В зависимости от выбора пользователя, т.е. от значения переменной pos переданной назад в главную программу MAINPRO выполняется выбранный пользователем запрос к массиву данных.

mymenu;

{ Используемые модули}crt,types;masmenu=array[1..25] of string[50];vertmenu(a:masmenu;n,x,y:byte;var pos:byte);vertmenu(a:masmenu;n,x,y:byte;var pos:byte);i,j,x1,y1,p,max:byte;:char;


Проверяем что-бы левая верхняя точка ненаходилась за пределами экрана.

Определяем ширину меню по максимальной длине надписи,которая будет входить в меню

Получаем координаты правой нижней точки меню.

Проверяем что-бы левая нижняя точка ненаходилась за пределами экрана.

Используя полученные левую верхнюю и правую нижние координаты и массив строковых значений меню, отображаем его.(x,y,x1,y1);

Определяем позицию курсора в зависимости от нажатой функциональной клавишы..

1.3 Модуль описания основных типов данных TYPES


Этот модуль содержит реализацию всех основных типов данных используемых в программном комплексе. К таким типам относятся сама запись zap которая состоит из переменных:

шифр группы - shifr типа string;

количество детей - kol типа integer;

фамилия воспитателя - famil типа string.

Кроме самой записи модуль содержит описание указателя на записи и описание массива этих указателей на записи. А также и описание файловой переменной для работы с записями. Реализация основных типов данных программы в отдельном модуле дает возможность использовать эти типы данных и в других модулях программы.

types;

{ Используемые модули}crt;

{Создаем указатель на запись}=^zap;

{Определяем сам тип запись}=record:integer;:string[20];:string[30];;

{Создаем массив указателей на запись}=array[1..200] of uk;

{Определяем переменную файлового типа для работы с файлом хранения записей}nd:file of zap;.


1.4 Модуль ввода информации из текстового файла в массив записей OPEN


Модуль OPEN создает набор данных в динамической памяти компьютера. Содержит единственную процедуру vvod, в которой открывается файл NABOR.dat для чтения. Дальше все данные содержащиеся в этом файле считываются в массив записей. После окончания считыванию файл закрывается. Результатом работы данной процедуры является nd - массив указателей на записи и n - количество записей данных. При работе программы все изменения данных производятся в динамической памяти компьютера, т.е. те модули, которые корректируют значение данных, выполняют изменения не в файле NABOR.dat в памяти компьютера.

open;

{ Используемые модули }crt,types;nd:mas;,raz,nvs:integer;:zap;:file of zap;vvod(var nd:mas;var n:integer);vvod;i:integer; kl:char;

{Открываем файл NABOR.dat для чтения}

{Читаем файл и загружаем находящиеся в нем данные в динамическую память компьютера}

{Закрываем файл}.


1.5 Модуль просмотр всех элементов массива SHOW


Включает в себя процедуру showw, формальными параметрами которой являются массив указателей и счетчик количества элементов массива. После вызова этой процедуры программой на экране выводится таблица с данными.

show;

{ Используемые модули }crt,types;showw(nd:mas;raz:integer);showw;i:integer; :zap;

{Читаем значения массива из памяти и выводим эти значения в таблице}.

1.6 Модуль добавления новых элементов в конец массива ADD


Этот модуль предназначен для добавления новых данных в конец массива. Во время выполнения единственной процедуры этого модуля dob пользователю предлагается ввести данные для новой записи. После того как он корректно задал данные, в процедуре эти данные добавляются к уже существующему массиву данных. Процедура возвращает обновленный массив данных и его размер.


unit add;

{ Используемые модули }crt,types,show;dob(var nd:mas;var raz:integer);dob(var nd:mas;var raz:integer);key:char; :zap; :integer;

{Получаем данные от пользователя для новой записи}

{Создаем новую запись и загружаем ее в память}(nd[raz]);

{Отображаем измененый массив записей}

showw(nd,raz);.


1.7 Модуль вывода информации из массива в текстовый файл WRITING


Этот модуль предназначен для записи измененного массива записей находящегося в памяти компьютера в файл. Процедура этого модуля writingg получает измененный массив записей и их количество, не каких данных главной программе не возвращает. В процедуре вначале открывается файл NABOR.dat для записи, записывается весь массив записей в файл, затем файл закрывается.


unit writing;

{ Используемые модули }crt,types;put='NABOR.dat';n:integer;:zap;:file of zap;writingg(nd:mas;raz:integer);writingg;i:integer;

{Открываем файл для записи}(f,put);(f);

{Записываем данные в файл}

{Закрываем файл}.

1.8 Модуль корректировки полей выбранного элемента ELEMZAM


Модуль ELEMZAM предназначен для изменения элементов одной записи массива. Из главной программы MAINPRO при вызове процедуры elem этого модуля передается три переменные. Первая переменная nom типа integer это индекс той записи, которую нужно корректировать в массиве записей. Второй переменная nd это сам массив записей, который содержит эту запись. Третья переменная raz это количество записей в массиве, предназначена для вызова дополнительных функций отображения и записи данных в файл.

В начале работы процедуры отображаем данные той записи, которую будем изменять. Затем, для выбора пользователя, какой элемент этой записи он хочет редактировать, создаем меню. На основании выбора пользователя элемента для редактирования в меню, предлагаем ввести новое значение выбранного элемента записи. Изменяем значение выбранного элемента выбранной записи. Результат работы можно посмотреть, выбрав пункт меню «Просмотр данных» этого меню, соответственно сохранить изменения в файле можно пунктом меню «Сохранить изменения».

elemzam;

{ Используемые модули }crt,mymenu,open,types,show,writing;elem(nom:integer;var nd:mas;var raz:integer);elem(nom:integer;var nd:mas;var raz:integer);a:masmenu;,x,y:byte;

nz:zap;,nm:integer;:char;

{Выводим значения редактируемой записи}

{Создаем меню выбора элемента записи для редактирования}(a,nm,x,y,pos);

{В зависимости от выбора пользователя пункта меню}

{Задаем новое значение шифру группы}

{или задаем новое значение колличества детей в группе}

{или задаем новое значение фамилии воспитателя}

{или выводим измененый массив записей на экран}

{или сохраняем измененый массив записей в файл}.


1.9 Модуль сортировки массива по числовому полю SORTING


Содержит процедуру sort, предназначенную для сортировки записей массива. Процедура получает сам массив записей и количество элементов массива. Так как единственным числовым полем нашего массива записей является количество детей в группе, то сортировку выполняем по этому полю. Результат сортировки отображается сразу вызовом процедуры showw модуля SHOW.


unit sorting;

{Используемые модули }crt,types,show;sort(nd:mas;raz:integer);sort;vsp:zap;,j:integer;

{Сортируем массив записей в порядке убывания }

if nd[j]^.kol>nd[i]^.kol then

{Отображаем результаты сортировки}

showw(nd,raz);.


1.10 Модуль замены выбранного элемента ZAMENA


Содержит процедуру zamena с помощью которой можно заменить старую запись на новую запись. В эту процедуру передаются три переменные. Первая переменная nom типа integer это индекс той записи, которую нужно заменить в массиве записей. Второй переменная nd это сам массив записей, который содержит эту запись. Третья переменная raz это количество записей в массиве, предназначена для вызова дополнительной функции отображения измененного массива записей.

Вначале работы процедуры пользователю предлагается ввести новые данные для замены записи. Полученная новая запись записывается поверх существующей записи, номер которой был передан в процедуру. Результат замены отображается сразу вызовом процедуры showw модуля SHOW

zamena;

{ Используемые модули }crt,types,show;zamen(nom:integer;var nd:mas;var raz:integer);zamen(nom:integer;var nd:mas;var raz:integer);nz:zap;:integer;

{Предлогаем пользователю ввести данных для новой записи}

{Заменяем старую запись новой}

{Отображаем результаты замены}

showw(nd,raz);.


2. Проверка программы на контрольном примере


.1 Запуск главной программы MAINPRO


При запуске программы, выводится меню (модуль MYMENU) в котором перечислены пункты запросов, которые может выполнить пользователь с массивом записей. По умолчанию выбирается первый пункт меню «Просмотр данных» (рисунок 2.1). Массив записей автоматически заполняется при запуске программы с помощью модуля OPEN.


Рисунок 2.1 - Запуск главной программы


.2 Запуск модуля просмотра всех элементов массива SHOW


При выборе в меню пункта «Просмотр данных» с помощью модуля SHOW на экран компьютера выводится содержание массива записей в виде таблицы (рисунок 2.2).


Рисунок 2.2 - Запуск модуля просмотра всех элементов массива SHOW


2.3 Запуск модуля добавления новых элементов в конец массива ADD


При выборе пользователя в меню пункта «Добавить данных в конец», ему будет предложено вначале ввести значения новой добавляемой в конец массива записи, такие как шифр группы, количество детей в группе и фамилию воспитателя (рисунок 2.3).


Рисунок 2.3 - Запуск модуля добавления новых элементов в конец массива ADD


После ввода значений записи пользователем, эти данные будут добавлены в конец массива записей модулем ADD. Чтобы посмотреть результат добавления данных в массив, будет запущен модуль SHOW для отображения данных массива в виде таблицы (рисунок 2.4).

Рисунок 2.4 - Результат работы модуля добавления новых элементов в конец массива ADD


Для продолжения ввода записей в массив пользователю ненужно выходить из этого модуля и запускать его заново. Просто нужно ответит на вопрос «Продолжить:y/n» положительно. Если пользователь не хочет больше добавлять записи в массив, то пользователю нужно ответить отрицательно.


.4 Запуск модуля вывода информации из массива в текстовый файл WRITING


При выборе пользователя в меню пункта «Записать данные в файл», модуль WRITING запишет данные массива записей в файл. Об окончании выполнении его работы будет выдано сообщение «Записано» (рисунок 2.5).


Рисунок 2.5 - Сообщение об окончании работы модуля WRITING


2.5 Запуск модуля корректировки полей выбранного элемента ELEMZAM


При выборе пункта меню «Корректировка полей выбранного элемента» пользователю вначале предлагается ввести номер записи в массиве, поля которой он будет редактировать. После выбора пользователем номера записи на экран выводится значения полей выбранной записи. Чуть ниже выводится меню с помощью которого пользователь может выбрать какое из поле этой записи будет редактироваться, может также посмотреть текущее состояние массива и даже сохранить изменения массива в файл (рисунок 2.6).


Рисунок 2.6 - Меню выбора поля записи массива для редактирования


Например, если пользователю нужно изменить количество детей в выбранной группе, то он должен выбрать в меню модуля ELEMZAM пункт «Изменить количество детей в группе» и ввести нужное значение. Результатом будет сообщение (рисунок 2.7).


Рисунок 2.7 - Результат изменения поля в записи с помощью модуля ELEMZAM

2.6 Запуск модуля сортировки массива по числовому полю SORTING


Пункт меню «Сортировка массива по числовому полю» вызывает модуль SORTING, который сортирует записи в массиве в порядке убывания. Для сортировки записей этот модуль использует поле «Количество детей в группе». Результаты сортировки выводятся на экран с помощью модуля SHOW (рисунок 2.8).


Рисунок 2.8 - Запуск модуля сортировки массива по числовому полю SORTING


2.7 Запуск модуля замены выбранного элемента ZAMENA


При выборе пункта меню «Замена выбранного элемента», пользователю предлагается ввести номер изменяемой записи. Дальше ввести новые данные записи, которыми будет заменены данные старой записи. Результат замены записи другой будет выведен на экран модулем SHOW (рисунок 2.9).


Рисунок 2.9 - Замена выбранного элемента, результат работы модуля ZAMENA


Заключение


В рамках этой курсовой работы был создан программный комплекс, в котором реализованы некоторые запросы к массиву записей множества данных - групп в детском саду. У каждой группы есть свои характеристики, такие как шифр группы, количество детей в группе, фамилия воспитателя.

Для каждого запроса был создан отдельный модуль.

Заполнение массива записей из текстового файла осуществляется автоматически при запуске программы.

Запуск остальных запросов осуществляется с помощью меню, пользователем программы. С помощью это программы пользователь может добавлять новые элементы в конец массива, изменять поля выбранной записи массива, заменять выбранную запись на новую. Еще в программном комплексе реализована функция сортировки массива по числовому полю.

При выполнении запросов, которые изменяют значения или порядок следования, записей в массиве, программа выводит результат изменений данных на экран в виде таблицы.

Выполненные изменения программа позволяет сохранить в файл. Данные из этого файла в дальнейшем могут использоваться для работы программы.

Созданный программный комплекс полностью выполняет поставленные вопросы и задачи этой курсовой работы.


Список использованных источников


  1. Зуев, Е. А. Программирование на языке Turbo Pascal 6.0,7.0,/ Е. А. Зуев// М.:Веста,Радио и связь, 1993. - 376с.
  2. Свободная энциклопедия ВикипедиЯ [Электронный ресурс]. - 2011. - Режим доступа: #"justify">Приложение А


    ПРОГРАММНЫЙ КОД МОДУЛЕЙ

    Главная программа MAINPRO

    program mainpro;

    {Перечисление используемых модулей}crt,add,addafter,mymenu,open,show,writing,sorting,zamena,elemzam;a:masmenu;,x,y:byte;,nm:integer;:char;:string;

    {Заполнение массива данными из файла}(nd,raz);;:=1;:=1;:=6;

    {Задание пунктов меню}[1]:='Просмотр данных';[2]:='Добавить данных в конец';[3]:='Записать данные в файл';

    a[4]:='Корректировка полей выбранного элемента';

    a[5]:='Сортировка массива по числовому полю';

    a[6]:='Замена выбранного элемента';;

    {Вывод меню}(a,nm,x,y,pos);(black);(white);;(1,1,80,25);pos of

    {Вызов процедуры отображения данных}

    :begin;(nd,raz);;

    {Вызов процедуры добавления данных в конец массива}

    :begin;(nd,raz);;

    {Вызов процедуры записи массива в файл}

    :begin;(nd,raz);;

    {Вызов процедуры изменения полей выбранного элемента}

    4:begin;('Bведите номер:');(n);(n,nd,raz);;

    {Вызов процедуры сортировки массива по числовому полю}

    5:begin;(nd,raz);;

    {Вызов процедуры замены всех полей выбранного пользователем элемента}

    6:begin;('Bведите номер:');(n);(n,nd,raz);;

    end;('нажмите Esc для выхода или любую клавишу');:=readkey; u=#27;.

    Модуль меню MYMENU

    unit mymenu;

    {Перечисление используемых модулей}crt,types;masmenu=array[1..25] of string[50];vertmenu(a:masmenu;n,x,y:byte;var pos:byte);vertmenu(a:masmenu;n,x,y:byte;var pos:byte);i,j,x1,y1,p,max:byte;:char;

    {Проверяем что-бы левая верхняя точка ненаходилась за пределами экрана}(x<0) or (x>80) or (y<0) or (y>25) then('верхний угол не попадает в границы экрана');;

    {Определяем ширину меню по максимальной длине надписи,

    которая будет входить в меню }:=length(a[1]);i:=2 to n domax<length(a[i]) then:=length(a[i]);:=0;i:=1 to n doj:=length(a[i]) to max do[i]:=a[i]+' ';

    {Получаем координаты правой нижней точки меню}:=x+max;:=y+n;

    {Проверяем что-бы левая нижняя точка ненаходилась за пределами экрана}(x1<0) or (x1>80) or (y1<0) or (y1>25) then('нижний угол не попадает в границы экрана');;

    {Используя полученные левую верхнюю и правую нижние координаты

    и массив строковых значений меню, отображаем его}(x,y,x1,y1);(white);(green);ah,$01ch,$20cl,$00$10;i:=1 to n do(1,i);(a[i]);(1,1);(red);(white);(a[1]);:=1;

    {Определение позиции курсора в зависимости

    от нажатой функциональной клавишы}:=pos;:=readkey;key=#0 then:=readkey;key of

    #27:begin {Esc}:=0;;

    #13:break; {Enter}

    #72:begin {Стрелочка вверх}:=pos-1;pos=0 then:=n;;

    #80:begin {Стрелочка вниз}:=pos+1;pos=n+1 then:=1;;;(1,p);(white);(green);(a[p]);(1,pos);(red);(white);(a[pos]);false;ah,$01ch,$06cl,$07$10;

    Модуль описания основных типов данных TYPES

    unit types;

    {Подключаемые модули}crt;

    {Указатель на запись}=^zap;

    {Определение типа запись}=record:integer;:string[20];:string[30];;

    {Массив указателей на запись}=array[1..200] of uk;

    {Файл для хранения запис}nd:file of zap;.

    Модуль ввода информации из текстового файла в массив записей OPEN

    unit open;

    {Перечисление используемых модулей}crt,types;nd:mas;,raz,nvs:integer;:zap;:file of zap;vvod(var nd:mas;var n:integer);vvod;i:integer;:char;

    {Открываем файл NABOR.dat для чтения}(f,'NABOR.dat');(f);:=0;

    {Читаем файл и загружаем находящиеся в нем данные в динамическую память компьютера}not eof(f) do(n);(f,z);i:=1 to 20-length(z.shifr) do.shifr:=z.shifr+' ';i:=1 to 30-length(z.famil) do.famil:=z.famil+' ';(nd[n]);[n]^.kol:=z.kol;[n]^.shifr:=z.shifr;[n]^.famil:=z.famil;;

    {Закрываем файл}(f);;

    Модуль просмотр всех элементов массива SHOW

    unit show;crt,types;showw(nd:mas;raz:integer);showw;i:integer;:zap;:=0;('? # ? Шифр группы ? Количество детей ? Фамилия воспитателя ?');i<>(raz-1) do(i);.shifr:=nd[i]^.shifr;.kol:=nd[i]^.kol;.famil:=nd[i]^.famil;('?',i:3,'?',z.shifr,'?',z.kol:20,'?',z.famil:30,'?');;;

    Модуль добавления новых элементов в конец массива ADD

    unit add;

    {Перечисление используемых модулей}crt,types,show;dob(var nd:mas;var raz:integer);dob(var nd:mas;var raz:integer);key:char;:zap;:integer;

    {Получаем данные от пользователя для новой записи}nz do;('Введите щифр группы:');(shifr);

    writeln('Введите количество детей в группе:');(kol);('Введите фамилию воспитателя:');(famil);i:=1 to 20-length(shifr) do:=shifr+' ';i:=1 to 30-length(famil) do:=famil+' ';;

    {Создаем новую запись и загружаем ее в память}(nd[raz]);[raz]^:=nz;(raz);

    {Отображаем измененый массив записей}

    showw(nd,raz);('Продолжить:y/n');(key);key='n';;.

    Модуль вывода информации из массива в текстовый файл WRITING

    unit writing;crt,types;put='NABOR.dat';n:integer;:zap;:file of zap;writingg(nd:mas;raz:integer);writingg;i:integer;(f,put);(f);n:=1 to raz do.kol:=nd[n]^.kol;.shifr:=nd[n]^.shifr;.famil:=nd[n]^.famil;(f,z);(f);('Записано');;.

    Модуль корректировки полей выбранного элемента ELEMZAM

    unit elemzam;

    {Перечисление используемых модулей}crt,mymenu,open,types,show,writing;elem(nom:integer;var nd:mas;var raz:integer);elem(nom:integer;var nd:mas;var raz:integer);a:masmenu;,x,y:byte;

    nz:zap;,nm:integer;:char;;:=1;:=10;:=5;

    {Задаем пункты меню}[1]:='Изменить шифр группы';[2]:='Изменить количество детей в группе';[3]:='Изменить фамилию преподавателя';

    a[4]:='Просмотр данных';

    a[5]:='Сохранить изменения';;

    {Выводим значения редактируемой записи}('Изменяемая запись:');nd[nom]^ do('Группа - ');(shifr);('Кол-во детей - ');(kol:5);('Воспитатель - ');(famil);;

    {Создаем меню выбора элемента записи для редактирования}(a,nm,x,y,pos);(black);(white);;(1,1,80,25);pos of

    {Задаем новое значение шифру группы}

    :begin;('Введите щифр группы:');(nz.shifr);[nom]^.shifr:=nz.shifr;i:=length(nd[nom]^.shifr)to 20 do[nom]^.shifr:=nd[nom]^.shifr+' ';('Шифр группы изменен');;

    {Задаем новое значение колличества детей в группе}

    :begin;('Введите количество детей в группе:');(nz.kol);[nom]^.kol:=nz.kol;('Количество детей в группе изменено');;

    {Задаем новое значение фамилии воспитателя}

    :begin;('Введите фамилию воспитателя:');(nz.famil);[nom]^.famil:=nz.famil;i:=length(nd[nom]^.famil)to 30 do[nom]^.famil:=nd[nom]^.famil+' ';('Фамилия воспитателя изменена');;

    {Выводим измененый массив записей на экран}

    4:begin;(nd,raz);;

    {Сохраняем измененый массив записей в файл}

    5:begin;(nd,raz);;;('нажмите Esc для выхода или любую клавишу');:=readkey; u=#27;;

    Модуль сортировки массива по числовому полю SORTING

    unit sorting;

    {Перечисление используемых модулей}crt,types,show;sort(nd:mas;raz:integer);sort;vsp:zap; i,j:integer;

    {Сортировка массива записей}

    for i:=1 to raz doj:=i+1 to raz-1 dond[j]^.kol>nd[i]^.kol then:=nd[i]^;[i]^:=nd[j]^;[j]^:=vsp;;('Отсортировано');

    {Отображение результатов сортировки}

    showw(nd,raz);;

    Модуль замены выбранного элемента ZAMENA

    unit zamena;

    {Перечисление используемых модулей}crt,types,show;zamen(nom:integer;var nd:mas;var raz:integer);zamen(nom:integer;var nd:mas;var raz:integer);nz:zap; i:integer;

    {Заполнения данных для новой записи}nz do('Введите щифр группы:');(shifr);('Введите количество детей в группе:');(kol);('Введите фамилию воспитателя:');(famil);;;

    {Замена новой записью старой}[nom]^.kol:=nz.kol;[nom]^.shifr:=nz.shifr;i:=length(nd[nom]^.shifr)to 20 do[nom]^.shifr:=nd[nom]^.shifr+' ';[nom]^.famil:=nz.famil;i:=length(nd[nom]^.famil)to 30 do[nom]^.famil:=nd[nom]^.famil+' ';('Заменено');

    {Отображение результатов замены}

    showw(nd,raz);; end.


    Министерство образования Республики Беларусь Учреждение образования «Гомельский государственный университет имени Франциска Скорины» Физическ

    Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ