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

Программный комплекс по обработке заданного множества данных в динамической памяти компьютера. Запросы к массиву записей множества данных – групп в детском саду. Функция сортировки массива по числовому полю. Использование главной программы MAINPRO.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.07.2014
Размер файла 419,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

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

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

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

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

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

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

Исполнитель

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

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

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

Гомель 2013

Содержание

Введение

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

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

1.2 Модуль меню MYMENU

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Приложение А

Введение

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

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

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

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

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

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

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

шифр группы (string);

количество детей в группе (integer);

фамилия воспитателя (string);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

uses crt,add,addafter,mymenu,open,show,writing,sorting,zamena,elemzam;

var a:masmenu;

pos,x,y:byte; raz,nm:integer; u:char; put:string;

begin

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

vvod(nd,raz);

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

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

{Выводим меню на экран}

vertmenu(a,nm,x,y,pos);

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

end.

1.2 Модуль меню MYMENU

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

unit mymenu;

interface

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

uses crt,types;

type masmenu=array[1..25] of string[50];

procedure vertmenu(a:masmenu;n,x,y:byte;var pos:byte);

implementation

procedure vertmenu(a:masmenu;n,x,y:byte;var pos:byte);

var i,j,x1,y1,p,max:byte;

key:char;

begin

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

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

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

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

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

window(x,y,x1,y1);

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

end.

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

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

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

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

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

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

unit types;

interface

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

uses crt;

type

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

uk=^zap;

{Определяем сам тип запись}

zap=record

kol:integer;

shifr:string[20];

famil:string[30];

end;

{Создаем массив указателей на запись}

mas=array[1..200] of uk;

{Определяем переменную файлового типа для работы с файлом хранения записей}

var nd:file of zap;

implementation

end.

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

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

unit open;

interface

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

uses crt,types;

var nd:mas;

n,raz,nvs:integer;

z:zap;

f:file of zap;

procedure vvod(var nd:mas;var n:integer);

implementation

procedure vvod;

var i:integer; kl:char;

begin

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

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

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

end.

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

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

unit show;

interface

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

uses crt,types;

procedure showw(nd:mas;raz:integer);

implementation

procedure showw;

var i:integer;

z:zap;

begin

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

end.

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

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

unit add;

interface

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

uses crt,types,show;

procedure dob(var nd:mas;var raz:integer);

implementation

procedure dob(var nd:mas;var raz:integer);

var key:char;

nz:zap;

i:integer;

begin

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

{Создаем новую запись и загружаем ее в память}

new(nd[raz]);

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

showw(nd,raz);

end.

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

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

unit writing;

interface

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

uses crt,types;

const put='NABOR.dat';

var n:integer;

z:zap;

f:file of zap;

procedure writingg(nd:mas;raz:integer);

implementation

procedure writingg;

var i:integer;

begin

{Открываем файл для записи}

assign(f,put);

rewrite(f);

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

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

end.

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

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

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

unit elemzam;

interface

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

uses crt,mymenu,open,types,show,writing;

procedure elem(nom:integer;var nd:mas;var raz:integer);

implementation

procedure elem(nom:integer;var nd:mas;var raz:integer);

var a:masmenu;

pos,x,y:byte;

nz:zap;

i,nm:integer;

u:char;

begin

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

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

vertmenu(a,nm,x,y,pos);

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

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

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

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

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

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

end.

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

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

unit sorting;

interface

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

uses crt,types,show;

procedure sort(nd:mas;raz:integer);

implementation

procedure sort;

var vsp:zap;

i,j:integer;

begin

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

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

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

showw(nd,raz);

end.

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

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

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

unit zamena;

interface

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

uses crt,types,show;

procedure zamen(nom:integer;var nd:mas;var raz:integer);

implementation

procedure zamen(nom:integer;var nd:mas;var raz:integer);

var nz:zap;

i:integer;

begin

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

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

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

showw(nd,raz);

end.

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

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

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

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

2.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» положительно. Если пользователь не хочет больше добавлять записи в массив, то пользователю нужно ответить отрицательно.

2.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

Заключение

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

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

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

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

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

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

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

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

Зуев, Е. А. Программирование на языке Turbo Pascal 6.0,7.0,/ Е. А. Зуев// М.:Веста,Радио и связь, 1993. - 376с.

Свободная энциклопедия ВикипедиЯ [Электронный ресурс]. - 2011. - Режим доступа: http://ru.wikipedia.org. - Дата доступа: 07.05.2011.

Pascaler [Электронный ресурс]. - 2011. - Режим доступа: http://pascaler.ru. - Дата доступа: 07.05.2011.

Каталог картин [Электронный ресурс]. - 2011. - Режим доступа: http://catalog-kartin.ru. - Дата доступа: 07.05.2011.

Приложение А

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

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

program mainpro;

{Перечисление используемых модулей}

uses crt,add,addafter,mymenu,open,show,writing,sorting,zamena,elemzam;

var a:masmenu;

pos,x,y:byte;

raz,nm:integer;

u:char;

put:string;

begin

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

vvod(nd,raz);

clrscr;

x:=1;

y:=1;

nm:=6;

repeat

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

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

a[2]:='Добавить данных в конец';

a[3]:='Записать данные в файл';

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

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

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

clrscr;

{Вывод меню}

vertmenu(a,nm,x,y,pos);

textbackground(black);

textcolor(white);

clrscr;

window(1,1,80,25);

case pos of

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

1:begin

clrscr;

showw(nd,raz);

end;

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

2:begin

clrscr;

dob(nd,raz);

end;

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

3:begin

clrscr;

writingg(nd,raz);

end;

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

4:begin

clrscr;

writeln('Bведите номер:');

readln(n);

elem(n,nd,raz);

end;

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

5:begin

clrscr;

sort(nd,raz);

end;

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

6:begin

clrscr;

writeln('Bведите номер:');

readln(n);

zamen(n,nd,raz);

end;

end;

writeln('нажмите Esc для выхода или любую клавишу');

u:=readkey;

until u=#27;

end.

Модуль меню MYMENU

unit mymenu;

interface

{Перечисление используемых модулей}

uses crt,types;

type masmenu=array[1..25] of string[50];

procedure vertmenu(a:masmenu;n,x,y:byte;var pos:byte);

implementation

procedure vertmenu(a:masmenu;n,x,y:byte;var pos:byte);

var i,j,x1,y1,p,max:byte;

key:char;

begin

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

if (x<0) or (x>80) or (y<0) or (y>25) then

begin

writeln('верхний угол не попадает в границы экрана');

exit

end;

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

которая будет входить в меню }

max:=length(a[1]);

for i:=2 to n do

if max<length(a[i]) then

max:=length(a[i]);

i:=0;

for i:=1 to n do

for j:=length(a[i]) to max do

a[i]:=a[i]+' ';

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

x1:=x+max;

y1:=y+n;

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

if (x1<0) or (x1>80) or (y1<0) or (y1>25) then

begin

writeln('нижний угол не попадает в границы экрана');

exit

end;

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

и массив строковых значений меню, отображаем его}

window(x,y,x1,y1);

textbackground(white);

textcolor(green);

asm

mov ah,$01

mov ch,$20

mov cl,$00

int $10

end;

for i:=1 to n do

begin

gotoxy(1,i);

write(a[i])

end;

gotoxy(1,1);

textbackground(red);

textcolor(white);

write(a[1]);

pos:=1;

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

от нажатой функциональной клавишы}

repeat

p:=pos;

key:=readkey;

if key=#0 then

key:=readkey;

case key of

#27:begin {Esc}

pos:=0;

break

end;

#13:break; {Enter}

#72:begin {Стрелочка вверх}

pos:=pos-1;

if pos=0 then

pos:=n;

end;

#80:begin {Стрелочка вниз}

pos:=pos+1;

if pos=n+1 then

pos:=1;

end;

end;

gotoxy(1,p);

textbackground(white);

textcolor(green);

write(a[p]);

gotoxy(1,pos);

textbackground(red);

textcolor(white);

write(a[pos]);

until false;

asm

mov ah,$01

mov ch,$06

mov cl,$07

int $10

end;

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

unit types;

interface

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

uses crt;

type

{Указатель на запись}

uk=^zap;

{Определение типа запись}

zap=record

kol:integer;

shifr:string[20];

famil:string[30];

end;

{Массив указателей на запись}

mas=array[1..200] of uk;

{Файл для хранения запис}

var nd:file of zap;

implementation

end.

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

unit open;

interface

{Перечисление используемых модулей}

uses crt,types;

var nd:mas;

n,raz,nvs:integer;

z:zap;

f:file of zap;

procedure vvod(var nd:mas;var n:integer);

implementation

procedure vvod;

var i:integer;

kl:char;

begin

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

assign(f,'NABOR.dat');

reset(f);

n:=0;

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

while not eof(f) do

begin

inc(n);

read(f,z);

for i:=1 to 20-length(z.shifr) do

z.shifr:=z.shifr+' ';

for i:=1 to 30-length(z.famil) do

z.famil:=z.famil+' ';

new(nd[n]);

nd[n]^.kol:=z.kol;

nd[n]^.shifr:=z.shifr;

nd[n]^.famil:=z.famil;

end;

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

close(f);

end;

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

unit show;

interface

uses crt,types;

procedure showw(nd:mas;raz:integer);

implementation

procedure showw;

var i:integer;

z:zap;

begin

i:=0;

writeln

writeln('¦ # ¦ Шифр группы ¦ Количество детей ¦ Фамилия воспитателя ¦');

while i<>(raz-1) do

begin

inc(i);

writeln

z.shifr:=nd[i]^.shifr;

z.kol:=nd[i]^.kol;

z.famil:=nd[i]^.famil;

writeln('¦',i:3,'¦',z.shifr,'¦',z.kol:20,'¦',z.famil:30,'¦');

end;

writeln

end;

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

unit add;

interface

{Перечисление используемых модулей}

uses crt,types,show;

procedure dob(var nd:mas;var raz:integer);

implementation

procedure dob(var nd:mas;var raz:integer);

var key:char;

nz:zap;

i:integer;

begin

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

repeat

with nz do

begin

clrscr;

writeln('Введите щифр группы:');

readln(shifr);

writeln('Введите количество детей в группе:');

readln(kol);

writeln('Введите фамилию воспитателя:');

readln(famil);

for i:=1 to 20-length(shifr) do

shifr:=shifr+' ';

for i:=1 to 30-length(famil) do

famil:=famil+' ';

end;

{Создаем новую запись и загружаем ее в память}

new(nd[raz]);

nd[raz]^:=nz;

inc(raz);

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

showw(nd,raz);

writeln('Продолжить:y/n');

readln(key);

until key='n';

end;

end.

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

unit writing;

interface

uses crt,types;

const put='NABOR.dat';

var n:integer;

z:zap;

f:file of zap;

procedure writingg(nd:mas;raz:integer);

implementation

procedure writingg;

var i:integer;

begin

assign(f,put);

rewrite(f);

for n:=1 to raz do

begin

z.kol:=nd[n]^.kol;

z.shifr:=nd[n]^.shifr;

z.famil:=nd[n]^.famil;

write(f,z)

end;

close(f);

writeln('Записано');

end;

end.

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

unit elemzam;

interface

{Перечисление используемых модулей}

uses crt,mymenu,open,types,show,writing;

procedure elem(nom:integer;var nd:mas;var raz:integer);

implementation

procedure elem(nom:integer;var nd:mas;var raz:integer);

var a:masmenu;

pos,x,y:byte;

nz:zap;

i,nm:integer;

u:char;

begin

clrscr;

x:=1;

y:=10;

nm:=5;

repeat

{Задаем пункты меню}

a[1]:='Изменить шифр группы';

a[2]:='Изменить количество детей в группе';

a[3]:='Изменить фамилию преподавателя';

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

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

clrscr;

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

writeln('Изменяемая запись:');

with nd[nom]^ do

begin

write('Группа - ');

writeln(shifr);

write('Кол-во детей - ');

writeln(kol:5);

write('Воспитатель - ');

writeln(famil);

end;

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

vertmenu(a,nm,x,y,pos);

textbackground(black);

textcolor(white);

clrscr;

window(1,1,80,25);

case pos of

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

1:begin

clrscr;

writeln('Введите щифр группы:');

readln(nz.shifr);

nd[nom]^.shifr:=nz.shifr;

for i:=length(nd[nom]^.shifr)to 20 do

nd[nom]^.shifr:=nd[nom]^.shifr+' ';

writeln('Шифр группы изменен');

end;

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

2:begin

clrscr;

writeln('Введите количество детей в группе:');

readln(nz.kol);

nd[nom]^.kol:=nz.kol;

writeln('Количество детей в группе изменено');

end;

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

3:begin

clrscr;

writeln('Введите фамилию воспитателя:');

readln(nz.famil);

nd[nom]^.famil:=nz.famil;

for i:=length(nd[nom]^.famil)to 30 do

nd[nom]^.famil:=nd[nom]^.famil+' ';

writeln('Фамилия воспитателя изменена');

end;

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

4:begin

clrscr;

showw(nd,raz);

end;

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

5:begin

clrscr;

writingg(nd,raz);

end;

end;

writeln('нажмите Esc для выхода или любую клавишу');

u:=readkey;

until u=#27;

end;

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

unit sorting;

interface

{Перечисление используемых модулей}

uses crt,types,show;

procedure sort(nd:mas;raz:integer);

implementation

procedure sort;

var vsp:zap; i,j:integer;

begin

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

for i:=1 to raz do

for j:=i+1 to raz-1 do

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

begin

vsp:=nd[i]^;

nd[i]^:=nd[j]^;

nd[j]^:=vsp;

end;

writeln('Отсортировано');

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

showw(nd,raz);

end;

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

unit zamena;

interface

{Перечисление используемых модулей}

uses crt,types,show;

procedure zamen(nom:integer;var nd:mas;var raz:integer);

implementation

procedure zamen(nom:integer;var nd:mas;var raz:integer);

var nz:zap; i:integer;

begin

{Заполнения данных для новой записи}

with nz do

begin

writeln('Введите щифр группы:');

readln(shifr);

writeln('Введите количество детей в группе:');

readln(kol);

writeln('Введите фамилию воспитателя:');

readln(famil);

clrscr;

end;

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

nd[nom]^.kol:=nz.kol;

nd[nom]^.shifr:=nz.shifr;

for i:=length(nd[nom]^.shifr)to 20 do

nd[nom]^.shifr:=nd[nom]^.shifr+' ';

nd[nom]^.famil:=nz.famil;

for i:=length(nd[nom]^.famil)to 30 do

nd[nom]^.famil:=nd[nom]^.famil+' ';

writeln('Заменено');

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

showw(nd,raz);

end; end.

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [455,2 K], добавлен 28.08.2017

  • Общая характеристика организации массива в виде двоичного дерева. Особенности линейного и двоичного поиска заданного элемента массива. Методика упорядочения массива методом сортировки деревом. Инструкции и текст программы для нечисленной обработки данных.

    курсовая работа [242,3 K], добавлен 12.11.2010

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

    курсовая работа [3,5 M], добавлен 22.06.2012

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

    курсовая работа [265,6 K], добавлен 28.08.2017

  • Анализ основных алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Сортировка пузырьком, методами вставок, выбора, методом Шелла, быстрая сортировка. Операция разделения массива внутренней сортировки.

    курсовая работа [161,7 K], добавлен 17.12.2015

  • Разработка на языке ассемблера алгоритма контроля, на циклический CRC-код, массива данных хранящегося в некоторой области памяти. Сохранение кода для последующей периодической проверки массива данных. Сообщение об искажении данных. Описание алгоритма.

    курсовая работа [453,0 K], добавлен 27.02.2009

  • Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.

    курсовая работа [359,0 K], добавлен 23.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.