Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

с определением уровня, на котором




находится найденный элемент}

findel(right,m+1,ikey);

end;

end;

procedure ttree.delel(var t:pnode;ikey:integer);

var q:pnode;

procedure del(var r:pnode);

Begin

if r^.right<> nil then del(r^.right)

Else begin

q^.key:=r^.key; {Обязательное переприсваивание}

q:=r; {полей}

r:=r^.left;

end;

end;{Конец процедуры поворота узла дерева}

Begin

if t<>nil then

if ikey<>t^.key then

Begin

delel(t^.left,ikey);

delel(t^.right,ikey);

End else

{двигаемся по дереву, пока не найдем искомый

элемент в дереве}

Begin

writeln('элемент найден и удален=',t^.key);

q:=t;

if q^.right=nil then {Повороты в

случае удаления "не листьев" из дерева}

t:= q^.left else

if q^.left=nil then

t:=q^.right

Else

del(q^.left);

dispose(q);

{Удаляем найденный элемент}

end;

end;

procedure ttree.addel(ikey:integer;var t:pnode);

Begin

if t= nil then begin

new(t);

with t^ do begin

key:=ikey;

left:=nil;

right:=nil;

end;

end else {Добавляем элемент в дерево

по величине числа вправо или влево}

if t^.key<ikey then addel(ikey,t^.left)

else addel(ikey,t^.right);

end;

End.


Разработка многомодульных задач.

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

2.6.1. Разработать систему определения заработка любого гражданина некоторого города.

Сведения о жителях города имеют следующий формат:

Фамилия имя отчество Место работы Сведения о средней величине заработка

Место работы создается двух типов: постоянная работа или временная работа. Для характеристик постоянной работы должны быть сведения о названии организации, ее адрес, должность гражданина по штатному расписанию и список заработков по каждому месяцу.

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

2.6.2. Путешественник во время своего путешествия записывал информацию о маршруте в форме — пункт отправления и признак (например, погода в пути). Каждая запись занимала один листочек. Все листочки перемешались. Для отчета в форме таблицы путешественнику требуется упорядочить все сведения в соответствии с направлением движения.

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

Модули:

Ø Ввод, контроль и первичная обработка данных.

Ø Формирование упорядоченного маршрута в виде таблицы.

Ø Вывод на печать маршрута в виде некоторой таблицы.

Ø Запись упорядоченного маршрута в файл.

Ø Графическая иллюстрация маршрута.

2.6.3. Составить данные об абонентах телефонной сети. Обеспечить следующие виды работ с данными об абонентах телефонной сети:

Ø Упорядочить список по фамилиям абонентов.

Ø Ввести в список нового абонента.

Ø Изменить данные об абоненте.

Ø Удалить абонента из списка.

Модули:

Ø Формирование списка абонентов.

Ø Запись списка абонентов в файл.

Ø Вывод упорядоченного или неупорядоченного списков заданного типа на экран.

Ø Поиск абонентов по фамилии, адресу (Город, улица или город, улица, номер дома).

Выполнение всех видов работы обеспечить через меню.

2.6.4. Разработать комплекс программ для расчетов с покупателями. Создается три объекта данных:

Ø Отгрузочные документы, содержащие записи о товарах по их номерам. Обработка данных этого типа должна обеспечивать сортировку товаров на каждый запрос, обновление записей.

Ø Счета по покупателям. Счета содержат записи о товарах по номерам покупателей, сортировку товаров по номеру каждого покупателя, составление регистра счетов для каждого покупателя.

Ø Данные о вырученных суммах по каждому месяцу на основании данных обо всех оплаченных сделках, данные о задержанных оплатах(кредит и другие виды отсроченных платежей). Создание списка наличных платежей.

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

2.6.5. Разработать библиотечную информационную систему. Три типа объектов обеспечат полную обработку данных: объект -читатель, объект- читательский билет, объект -книга.

Ø Для читательских билетов методы обработки: подготовить читательский билет, изъять билет, обработать потерянные билеты.

Ø У читателей обеспечить условие рассылки напоминания, обновление файлов читателей.

Ø В книгах обеспечить заказ книг, изъятие книг, составление списка по разделам хранения книг, добавление книг в общий список по разделам.

Модули должны обеспечивать формирование всех типов сведений.

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

2.6.6. Разработать обучающую систему для запоминания исторических дат. Два типа объектов создать для системы: обучаемые и вопросы. Реализуется следующий принцип обучения:

Ø Задается вопрос: ”В каком году была Куликовская битва”?

Ø Если ответ правильный, тогда на экран выдается следующий вопрос.

Ø Если ответ не верен, тогда выводится на экран правильный ответ, а через несколько вопросов задается каждый из вопросов, на которые были даны неверные ответы.

В процессе работы системы необходимо обеспечить:

Ø Учет всех обучаемых и количества баллов, которые они получили за один сеанс обучения(один сеанс обучения содержит не более 10 вопросов). Каждый вопрос с правильным ответом дает один балл.

Ø Форматированный вывод сведений обо всех обучаемых и любом из запрашиваемых(обучался или не обучался, сколько получил баллов).

Ø Формирование для каждого обучаемого последовательности вопросов, отличной от остальных обучаемых. Количество обучаемых для проверки не более 10 человек.

2.6.7. Разработать обучающую программу для заучивания слов английского(можно и любого другого) языка.

Принцип обучения:

Ø Предлагается слово на исходном языке.

Ø Для этого слова выводится список иностранных слов.

Ø Обучаемый должен выбрать из предложенного списка слово-перевод.

Ø Если ответ верен, тогда выдается следующее слово.

Ø Если ответ не верен, тогда выдается правильное слово и через некоторое время опять предлагается одно из ранее не угаданных слов. Обучение продолжается до тех пор, пока не появится предложение завершить сеанс обучения.

Результаты каждого сеанса обучения выводятся в формате: идентификация обучаемого, количество заданных слов, количество правильных ответов, количество ошибок.

В программе должно быть два объекта: словарь и обучаемых и все методы обработки этих объектов.

2.6.8. Разработать обработчик библиотеки авторов периодический печати. Два объекта с их методами обработки - это объект- издание и объект-автор. Тип данных для представления автора должен содержать фамилию, имя, отчество автора, издание, дата издания(год, месяц, число), название статьи. Тип данных для издания должен отражать тип издания (газета или журнал), название издания. Разработчик должен создать список доступных для анализа изданий, соответственно, газет и журналов. Методы должны обеспечить:

Ø Поиск по автору всех изданий, где автор встречается.

Ø Чтение списков доступных газет и журналов и соответственно редактирование списков.

Ø Поиск автора и издания по названию статьи.

Ø Поиск всех статей названного автора с указанием издания, его типа, даты издания.

2.6.9. Разработать объект - описатель рабочего места. Рабочие места предполагаются двух типов и это, соответственно, два списка: рабочие места, которые требуются и рабочие места, которые есть в наличии, то-есть вакантны. Формат данных для списков типа ”Спрос”: профессия, квалификация, минимальный размер оплаты труда, дополнительные условия(например, знание иного языка и т.п.), название организации. Формат данных для списков типа “Предложение”: профессия, квалификация, стаж работы по квалификации. Методы обработки данного объекта должны обеспечить формирование списков всех предложений и соответствующих возможностей предоставления работ по списку ”Спроса”, исключение тех вакансий, которые были выбраны, включение в списки новых запросов из типов и “Предложение” и ”Спрос”, создание таблиц всех вакансий на каждый из запросов по профессии с разными предложениям по организациям и уровню оплаты труда.

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

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

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

Ø Вывод списка всех работающих в каждой из организаций(без указания подразделений).

Ø Вывод самой полной информации о работающем из списка в пункте 1: подразделение, должность, заработок.

Ø Удаление сотрудника по введенным фамилии и организации.

Ø Исправление всех списков с учетом дополнений или удалений сведений о сотрудниках.

Ø Определение для каждой организации количества свободных мест.

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

Ø Создание полного описания склада.

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

Ø Исправление данных по организациям (например, фамилии ответственного лица).

Ø Вывод списка всех организаций, которые на момент опроса занимают складские площади.

Ø Вывод всех исправлений по организациям, которые производились за время истекшее время с начала работ.

Ø Вывод сведений о свободных площадях склада.

 

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

Временная ось не должна ограничиваться одним экраном. На каждом из входов рисуется с помощью клавиш перемещения курсора (,­,®,¯) последовательность сигналов. Формат данных для каждого входа: имя блока, номер входа, время, состояние(“0” или “1”).Методы объекта должны выполнять следующие действия:

Ø Ввод временных диаграмм на все заданные блоки и их входы(этот список должен формироваться в некотором файле перед началом работ).

Ø Сохранение всех нарисованных временных диаграмм в одном файле.

Ø Вывод из файла по запросу всех заданных последовательностей входных сигналов.

Ø Редактирование любой из диаграмм и сохранение результатов редактирования.

Ø Листание диаграммы вправо или влево при размещении ее не на одном экране.

На экране должны выводиться имена блоков, номера соответствующих входов, время для каждого состояния “0” или “1”.

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

2.6.15. Разработать комплекс программ для обработки сведений о некоторой спортивной команде, состоящей из определенного набора игроков: вратарь, защитник, нападающий. Каждый из игроков должен быть представлен своим описателем - объектом, в котором должны быть отражены особенности игры каждого из участников команды.

Вратарь описывается следующей информацией: фамилия, имя, отчество игрока, год рождения, “Время в игре”, количество бросков по воротам(в том числе различных- взятых или пропущенных). Защитник должен иметь те же описатели, что и вратарь, но у него есть еще “Штрафное время” и количество перехваченных подач. Нападающий характеризуется, кроме фамилии, имени, отчества и года рождения, “времени в игре”, еще и характеристикой “штрафное время” и количеством бросков по воротам с указанием их качества (результативные иди нет). Методы объекта или класса “команда“ должны обеспечить вывод следующей информации о команде и ее игроках: определить амплуа игрока, определить в соответствии с амплуа игрока его временные характеристики и результаты, включить нового игрока, удалить выбывшего игрока, ввести новые данные или изменить старые данные об игроке. Объект, описывающий команду, должен все исходные данные об игроках хранить в файле, а обработку информации выполнить с помощью таблицы, в каждой строке которой - номер игрока по списку команды.

2.6.16. Разработать модель банковской системы по работе с вкладчиками.

Каждый вклад в банк может быть одного из двух типов: срочный и обычный. Операции по срочным вкладам выполняются только со всем вкладом, а обычные вклады допускают работу с частичными суммами вкладов. Характеристика обычного вклада состоит из сведений: сумма вклада, дата открытия вклада, дата последней операции с вкладом, процент начислений по вкладу. Характеристики срочного вклада - это сумма вклада, дата открытия вклада, процент начислений по вкладу, коэффициент уменьшения суммы процентных начислений при досрочном закрытии вклада. Класс, который описывает работу банка с вкладчиками должен создать таблицу из всех вкладчиков банка. Формировать таблицу можно или по номерам счетов(некоторым ключам, эквивалентным этим номерам или по фамилиям вкладчиков - по алфавиту). Методы должны обеспечить: открытие нового счета, закрытие счета, дополнение суммы вклада, снятие процентов по вкладу, снятие части вклада, вывести информацию по каждому из вкладчиков. Для обеспечения всех действий по типу вкладов и по вкладчикам организовать диалог.

2.6.17. Разработать комплекс программ для описания работы экскурсионного бюро. В бюро предлагается два типа экскурсий: однодневные и многодневные. Для каждого типа экскурсий создать объект и методы работы с этим типом экскурсии. Структура данных каждого типа экскурсии должна содержать название экскурсии (или по географическому названию места или конкретного объекта экскурсии), возможное число экскурсантов, стоимость экскурсии для одного экскурсанта, минимальное количество мест, при котором экскурсия не отменяется, дата экскурсии со временем отправления. Кроме этих общих данных для каждого типа экскурсии имеются собственные данные, например, для многодневной экскурсии надо отметить длительность экскурсии (в днях). Обработка всех типов экскурсий выполняется с помощью таблицы, в которой содержится некоторый порядковый номер экскурсии, определяемый при построении таблицы из ее названия, и указатель на тип экскурсии. Методы обработки должны обеспечить: создание начального набора информации об экскурсиях в файле, чтение из файла сведений в таблицу, вывод информации об экскурсиях названного типа, вывод сведений о конкретной экскурсии, вывод всех имеющихся в списке экскурсий, изменение данных о любой из экскурсий, удаление отмененных экскурсий. При обработке данных в диалоге обеспечить создание списка заполненности экскурсий и сохранение этого списка в файле.

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

Каталожный файл описывается: право доступа к каталогу(можно ли читать из каталога, писать в каталог новые файлы, количество записей в каталоге, размер одной записи в каталоге, виртуальный адрес каталога).

Специальный файл содержит описатели: права доступа к файлу(можно или нельзя читать файл, писать в файл), тип файла(байтовый или блочно-ориентированный), виртуальный адрес драйвера устройства.

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

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

2.6.19. Разработать класс, определяющий некоторый лабиринт и методы перемещения в этом лабиринте. Лабиринт должен иметь один вход и один единственный выход. Вывести лабиринт на экран. При движении по лабиринту необходимо отображать траекторию движения. Все неправильные или повторные траектории выделить цветом. Объект, движущиеся по лабиринту, должен иметь имя, и координаты положения при движении по лабиринту. Методы класса должны содержать: создание(генерацию) нового лабиринта, изменение траектории движения (стирание ненужной траектории), вывод некоторого движущегося по лабиринту объекта, обработку выхода объекта из лабиринта. При решении задачи в диалоге надо обеспечить вывод сведений о движении объекта в табличной форме на экран. Последний из созданных лабиринтов должен сохраняться в файле и при запуске программы должно возникать предложение: работать со старым лабиринтом или создать новый.


Приложение.

Program Number_2_10;

uses menu1;

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

Begin

menu_;

End.

unit utable;{этот модуль нужен для описания всех методов, обеспечивающих обработку заданной структуры данных - таблицы }

Interface

Const

lenstr=40;

Type

st1=string[lenstr];

elmnt=record

st:st1; {Наименование раздела из неболее чем 40 символов}

ik:word;{количество записей}

nn:word; {номер раздела}

end;

Tpzap=^zap; {элемент строки таблицы – это элемент списка}

zap=record

el:elmnt;

pnext:Tpzap;

end;

ff=file of elmnt; {сохраняемые в файле данные}

Tabl=^tst;

tst= array [0..0] of Tpzap;{индексы элементов- это ключи хеш-функции.Количество индексов-ключей можно выбрать любое. В данном решении возьмем количество ключей, равное 10}

OTabl=object

tbl:Tabl;{Объект- таблица включает в себя табличные переменные}

T,P,Q,PQ:Tpzap;{Элементы для формирования списков в строках таблицы}

iEl:elmnt;

f:ff;

constructor init(var Ok:boolean);

destructor done(var Ok:boolean);

procedure new_el_tb(nEl:elmnt);{запись элемента в хеш-таблицу}

procedure vvod_tb;{ввод таблицы}

procedure dopoln;{поиск пустых разделов таблицы}

procedure read_f;{читать из файла}

procedure save_f;{записать элементы таблицы в файл}

procedure show_tb;{вывести таблицу}

end;

var init_Ok:boolean;

Implementation

uses crt,utils;

constructor Otabl.init(var Ok:boolean);

var i:word;

Begin

getmem(Tbl,10*sizeof(Tpzap));{}

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

for i:=0 to 9 do

Tbl^[i]:=nil;

{Указатели делаем пустыми, чтобы работать только с имеющимися в данном тексте длинами слов}

Ok:=true;

end;

procedure Otabl.new_el_tb(nEl:elmnt);

var m:word;

stop:boolean;

Begin

m:=nEl.nn mod 10;

T:=Tbl^[m];{ключ найден в соотвествии с номером раздела}

if (T=nil) then

Begin

new(p);

P^.el:=nEl;

P^.pnext:=nil;{этот оператор работает только для создания первого элемента списка типа стека}

Tbl^[m]:=P;

End else

Begin

new(PQ);

PQ^.el:=nEl;

PQ^.pnext:=Tbl^[m];

Tbl^[m]:=PQ;

end;

end;{Конец метода включения нового элемента в таблицу }

procedure OTabl.vvod_tb;

Var

stop:boolean;

L,iL:byte;

s:st1;

d,code:word;

ch:char;

Begin

assign(f,'tab.dat');

rewrite(f);

Repeat

window(40,12,79,18); clrscr;

textcolor(yellow);

gotoxy(1,1); {stop:=false;}

writeln(' Введите данные картотеки');

write(' Раздел номер ');

readln(iEl.nn);

write(' Количество записей в разделе ');

readln(iEl.ik);

write(' Название раздела ');

readln(iEl.st);

write(f,iEl);

new_el_tb(iEl);

writeln(' Есть еще данные?');

readln(ch);

until ch='n';

window(1,1,80,24);

end;

procedure OTabl.dopoln;

var i:word;

n:boolean;

Begin

window(1,1,80,24);

clrscr;n:=true;

writeln(' Пустые разделы: ':40);

writeln(' Номер раздела':20,' Название раздела':40);

for i:=0 to 9 do

Begin

P:=Tbl^[i];

while P<>nil do

Begin

if (P^.el.ik=0) then

Begin

write(i:10);

writeln('| ',P^.el.nn:10,' |',P^.el.st:20,' |');

n:=false;

end;

P:=P^.pnext;

end;

end;

readln;

If n then begin

help_line(' Пустых разделов нет');

write(^G);{Для звукового сопровождения отсутствия пустых разделов}

readkey;

end;

end;

procedure OTabl.read_f;

Begin

Assign(f,'tab.dat');

{$I-}

reset(f);

{$I+}

if ioresult<>0 then exit;

While not eof(f) do

Begin

read(f,iEl);

new_el_tb(iEl);

end;

close(f);

end;

procedure OTabl.save_f;

var i:word;

Begin

assign(f,'tab.dat');

rewrite(f);

for i:=0 to 9 do

Begin

P:=Tbl^[i];

while P<>nil do

Begin

write(f,P^.el);

P:=P^.pnext;

end;

end;

close(f);

end;

procedure oTabl.show_tb;

var i: word;

l: byte;

Begin

window(4,6,76,24); clrscr;

write(' Ключ раздела',' Номер ':6);

writeln(' Название раздела':30);

L:=0;

for i:=0 to 9 do

Begin

T:=Tbl^[i];p:=T;

while P<> nil do

Begin

write (i:10);

writeln(' |',P^.el.nn:6,' |',P^.el.ik:15,' |',P^.el.st:34,' |');

P:=P^.pnext;

end;

end;

readkey;

window(1,3,80,25);

end;

destructor OTabl.done;

var i:word;{при выходе уничтожаем все списки}

Begin

for i:=0 to 9 do

Begin

P:=Tbl^[i];

while P<> nil do

Begin

Q:=P;

P:=P^.pnext;

dispose(Q);

end;

Tbl^[i]:=nil;

end;

init_ok:=false;

end;

Begin

init_ok:=false;

End.

unit menu1;

Interface

procedure menu_;

{Работа только с меню для обработки таблицы, описывающей работу с библиотекой данных }

Implementation

uses crt,Utable,utils;

Var

stop:boolean;

Tbl:OTabl;

L:byte;

function run_menu:byte;{главное меню с основными пунктами работы}

Begin

window(1,1,80,25);

clrscr;

gotoxy(1,1);

textcolor(15);

textbackground(11);

gotoxy(1,1); write(' Файл ');

gotoxy(11,1); write(' Таблица ');

gotoxy(72,1); write(' Выход ');

textbackground(1);

textcolor(7);

stop:=false;

L:=1;

Case readkey of

#0: case readkey of

#75: if L>1 then dec(L);

#77: if L<3 then inc(L);

end;{case}

#13: begin

stop:=true;

run_menu:=L;

end;

end;

run_menu:=L;

textbackground(0);

window(1,1,80,25);

While not stop do

Begin

Case L of

Begin

gotoxy(1,1);

textcolor(15);

write(' Файл ');

help_line(' Операции с файлом');

end;

Begin

gotoxy(11,1);

textcolor(15);

write(' Таблица ');

help_line(' Операции с таблицей ');

end;

Begin

gotoxy(72,1);

textcolor(15);

write(' Выход ');

help_line(' Закончить работу ');

end;

end;{case}

Case readkey of

#0: case readkey of

#75: if L>1 then dec(L);

#77: if L<3 then inc(L);

end;{case}

#13: begin

stop:=true;

run_menu:=L;

end;

end;

run_menu:=L;

textbackground(0);

window(1,1,80,25);

end;

end;

function pop_menu1:byte;{работа с первым пунктом меню}

Var

stop:boolean;

Begin

window(1,1,80,25);

clrscr;

textcolor(15);

textbackground(11);

gotoxy(2,1); write(' Открыть ');

gotoxy(2,2); write(' Сохранить ');

textbackground(1);

textcolor(7);

stop:=false;

L:=1;

While not stop do

Begin

Case L of

Begin

gotoxy(2,1);

textbackground(4);

write(' Открыть ');

help_line(' Открыть файл данных');

end;

Begin

gotoxy(2,2);

textbackground(4);

write(' Сохранить ');

help_line(' Сохранить в файле ');

end;

end;

Case readkey of

#0: case readkey of

#72: if L<1 then inc(L);

#80: if L>2 then dec(L);

end;{case}

#13: begin

pop_menu1:=L;

stop:=true;

end;

#27: begin

pop_menu1:=L;

stop:=true;

end;

end;{case}

end;

pop_menu1:=L;

{ textbackground(0);}

window(1,1,80,25);

end;

function pop_menu2:byte;

Var

stop:boolean;

L:byte;

i:byte;

Begin

stop:=false;

L:=1;

While not stop do

Begin

textcolor(15);

textbackground(11);

gotoxy(12,1); write(' Ввод ');

gotoxy(12,2); write(' Показать ');

gotoxy(12,3); write(' Изменить ');

gotoxy(12,4); write(' Очистить ');

textbackground(1);

textcolor(7);

Case L of

Begin

gotoxy(12,1);

textbackground(4);

write(' Ввод ');

help_line(' Ввод новых разделов');

end;

Begin

gotoxy(12,2);

textbackground(4);

write(' Показать ');

help_line(' Просмотреть картотеку ');

end;

Begin

gotoxy(12,3);

textbackground(4);

write(' Изменить ');

help_line(' Ввод в пустые разделы');

end;

Begin

gotoxy(12,4);

textbackground(4);

write(' Очистить ');

help_line(' Удалить картотеку ');

end;

end;

Case readkey of

#0: case readkey of

#72: if L>1 then dec(L) else L:=4;

#80: if L<4 then inc(L) else L:=1;

end;{case}

#13: begin

pop_menu2:=L;

stop:=true;

end;

#27: begin

stop:=true;

pop_menu2:=L;

end;

end;{case}

end;

pop_menu2:=L;

gotoxy(1,3);

textbackground(0);

end;

procedure menu_;

var stop:boolean;

L:byte;

Begin

stop:=false;

L:=1;

Repeat

window(1,1,80,25);

clrscr;

Case run_menu of

Begin

Case pop_menu1 of

Begin

If not init_ok then

Tbl.init(init_ok);

Tbl.read_f;

end;

2: Tbl.save_f;

end;{case pop_menu1}

end;

2:

Case pop_menu2 of

Begin

Tbl.init(init_ok);

Tbl.vvod_tb;

stop:=false

end;

2: Tbl.show_tb;

Begin

Tbl.dopoln;

end;

4: Tbl.done(init_ok);

end;{case pop_menu2}

Begin

Tbl.done(init_ok);

stop:=true;

end;

end;

until stop;

textbackground(0);

end;

Begin

End.

unit Utils;{Вспомогательный модуль используется только для оформления окон и вывода дополнительных сообщений-комментариев}

Interface

uses Utable;

procedure help_line(s:st1);

{ строка помощи}

Implementation

uses crt,Dos;

Const

segm=$B800;

cX=160*20;

nmax=1000;

datemax=100;

procedure help_line(s:st1);

Var

i:byte;

w:word;

Begin

window(4,20,30,22);

clrscr;

gotoxy(1,1);

textcolor(7);

textbackground(0);

write(s);

end;

Begin

End.


Список литературы

 

1. Вирт Н. Алгоритмы+структуры данных= программы. - М.: Мир, 1985.

2. Кнут Д. Искусство программирования для ЭВМ, т.3. - М.: Мир, 1978.

3. Методы программирования. Учебное пособие.- М.: Вузовская книга, 1999. - 208 с.

4. Абрамов С.А., Гнездилов Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию.- М.: Наука. Гл. ред. физ.-мат. лит., 1988.- 224 с.

5. Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учебное пособие для вузов. - М.: Наука. Гл. ред. физ.-мат. лит., 1989. - 160с.

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

7. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие.- М.: “Нолидж”, 1997. - 616с.

8. Бабалова И.Ф. Турбо-Паскаль. -М.: МИФИ,1994. - 128 с.

9. Фаронов В.В. Delphi 3. Учебный курс.- М.: “Нолидж”, 1998. -400 с.

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...