Структуры данных в динамической памяти и разработка программного комплекса "Улицы города"
Структура данных в динамической памяти, однонаправленные списки. Разработка программного комплекса, предназначенной для хранения и предоставления пользователям данных об улицах города. Реализация данной программы при помощи метода расширения ядра.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.01.2016 |
Размер файла | 438,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Введение
В результате постоянного развития нашего общества увеличивается сложность задач, которые приходится решать человеку в процессе своей трудовой деятельности.
Современные вычислительные машины представляют одно из самых значительных достижений человеческой мысли, влияние, которого на развитие научно-технического прогресса трудно переоценить. Области применения ЭВМ непрерывно расширяются. Программное обеспечение для ЭВМ становится все более совершенным и в большей мере позволяет автоматизировать труд человека. Эти программы охватывают все отрасли человеческой деятельности, где, по мнению разработчиков, они могут принести пользу, повысив производительность труда и снизив при этом затраты рабочего времени.
Современное общество предъявляет высокие требования к принципам хранения информации.
Компьютеры становятся исключительно полезным инструментом во всех сферах деятельности. В некоторых применениях, они могут служить прекрасными помощниками человека, т.к. современный компьютер может хранить в себе сотни, и даже тысячи миллиардов байт информации.
Предметом курсовой работы является изложение материала на тему «Структуры данных в динамической памяти» и разработка программного комплекса «Улицы города».
Данная программа разрабатывается для пользователей, имеющих базовые навыки работы на ЭВМ. По этой причине она проста в освоении и обращении, имеет простой интуитивно-понятный интерфейс. Программа будет организована так, что пользователю не придется затрачивать много времени на изучение процесса работы с ней, он сможет сразу приступить к работе.
В теоретической части курсовой работы будет изложен материал о принципах и правилах динамического выделения памяти, а также будет представлено использование динамических величин на примере однонаправленных списков.
Структуры данных в динамической памяти. Однонаправленные списки
Динамические структуры данных
При динамическом выделении памяти, память под величины отводится во время выполнения программы. Такие величины называются динамическими. Динамически распределяемый раздел памяти называется динамической памятью (динамически распределяемой памятью) [1].
Использование динамических величин предоставляет программисту ряд дополнительных возможностей:
подключение динамической памяти позволяет увеличить объем обрабатываемых данных;
если потребность в каких-то данных отпала до окончания программы, то занятую ими память можно освободить для другой информации;
использование динамической памяти позволяет создавать структуры данных переменного размера.
Работа с динамическими величинами связана с использованием еще одного типа данных - ссылочного типа. Величины, имеющие ссылочный тип, называют указателями.
Указатель содержит адрес поля в динамической памяти, хранящего величину определенного типа. Сам указатель располагается в статической памяти.
Адрес величины - это номер первого байта поля памяти, в котором располагается величина. Размер поля однозначно определяется типом.
Величина ссылочного типа (указатель) описывается в разделе описания переменных следующим образом:
Var <идентификатор> : ^<имя типа>;
Примеры описания указателей:
Type
TStreetList = array [1..100] of TStreet;
Var
kolStreet: ^Integer;
nameFile: ^String;
streetList: ^TStreetList;
Здесь kolStreet - указатель на динамическую величину целого типа; nameFile - указатель на динамическую величину строкового типа; streetList - указатель на динамический массив, тип которого задан в разделе Type.
Сами динамические величины не требуют описания в программе, поскольку во время компиляции память под них не выделяется. Во время компиляции память выделяется только под статические величины. Указатели -- это статические величины, поэтому они требуют описания [2].
Память под динамическую величину, связанную с указателем, выделяется в результате выполнения стандартной процедуры NEW. Формат обращения к этой процедуре:
NEW(<указатель>);
Считается, что после выполнения этого оператора создана динамическая величина, имя которой имеет следующий вид:
<имя динамической величины> := <указатель>^
Пусть в программе, в которой имеется приведенное выше описание, присутствуют следующие операторы:
NEW(kolStreet); NEW(nameFile); NEW(streetList);
После их выполнения в динамической памяти оказывается выделенным место под три величины (две скалярные и один массив), которые имеют идентификаторы:
kolStreet^, nameFile^, streetList^
Например, обозначение kolStreet^ можно расшифровать так: динамическая переменная, на которую ссылается указатель kolStreet.
Дальнейшая работа с динамическими переменными происходит точно так же, как со статическими переменными соответствующих типов. Им можно присваивать значения, их можно использовать в качестве операндов в выражениях, параметров подпрограмм и пр. Например, если переменной kolStreet^ нужно присвоить число 25, то это делается так:
kolStreet^ := 25;
Кроме процедуры NEW значение указателя может определяться оператором присваивания:
<указатель> := <ссылочное выражение>;
В качестве ссылочного выражения можно использовать
указатель;
ссылочную функцию (т.е. функцию, значением которой является указатель);
константу Nil.
Nil -- это зарезервированная константа, обозначающая пустую ссылку, т.е. ссылку, которая ни на что не указывает. При присваивании базовые типы указателя и ссылочного выражения должны быть одинаковы. Константу Nil можно присваивать указателю с любым базовым типом.
До присваивания значения ссылочной переменной (с помощью оператора присваивания или процедуры NEW) она является неопределенной.
В Паскале имеется стандартная процедура, позволяющая освобождать память от данных, потребность в которых отпала. Ее формат:
DISPOSE(<указатель>);
Например, если динамическая переменная nameFile^ больше не нужна, то оператор
DISPOSE(nameFile);
удалит ее из памяти. После этого значение указателя nameFile становится неопределенным. Особенно существенным становится эффект экономии памяти при удалении больших массивов.
В версиях Турбо-Паскаля, работающих под операционной системой MS DOS, под данные одной программы выделяется 64 килобайта памяти (или, если быть точнее, 65520 байт). Это и есть статическая область памяти. При необходимости работать с большими массивами информации этого может оказаться мало. Размер динамической памяти -- много больше (сотни килобайт). Поэтому использование динамической памяти позволяет существенно увеличить объем обрабатываемой информации [4].
Следует отчетливо понимать, что работа с динамическими данными замедляет выполнение программы, поскольку доступ к величине происходит в два шага: сначала ищется указатель, затем по нему -- величина. Как это часто бывает, действует "закон сохранения неприятностей": выигрыш в памяти компенсируется проигрышем во времени.
Однонаправленные списки
Для организации списков используются структуры типа запись, состоящие из двух частей: информационной, где собственно и находятся данные, и ссылочной, содержащей указатель на следующий элемент списка. Структура типа запись изображена на рисунке 1.1.
Рисунок 1.1 - Пример списковой структуры
где Di - данные. Чтобы получить доступ к данным, достаточно хранить в памяти адрес начала этого списка nach.
В Паскале существует основное правило: перед использованием какого-либо объекта он должен быть описан. Исключение сделано лишь для указателей, которые могут ссылаться на еще не объявленный тип [3].
Type
ukazat= ^TStreet;
TStreet = record
dlina: real;
naim: string;
kol: integer;
tip: TTip;
Next: ukazat;
End;
Чтобы список существовал, надо определить указатель на его начало.
Создадим первый элемент списка:
New (street); {выделяем место в памяти}
street^. Next:= nil; {указатель пуст}
street^. dlina:=30;
…
Продолжим формирование списка. Для этого нужно добавить элемент либо в конец списка, либо в голову.
Для добавления элемента в “голову” списка необходимо выполнить последовательность действий:
получить память для нового элемента;
поместить туда информацию;
присоединить элемент к голове списка.
New(newStreet);
newStreet^.naim:='Chehova';
…
newStreet^. Next:= street;
street:= newStreet;
Для добавления элемента в конец списка необходимо ввести вспомогательную переменную, которая будет хранить адрес последнего элемента. Пусть это будет указатель с именем hv (хвост). Организация процедуры представлена на рисунке 1.2.
newStreet:= hv;
Рисунок 1.2 - Организация формирования списка
Выделение памяти для следующего элемента, рисунок 1.3.
New(newStreet^.next); {выделяем память для следующего элемента}
newStreet:= newStreet^.next;
newStreet^.next:= nil;
newStreet^. dlina:= 5;
…
hv:=newStreet;
Рисунок 1.3 - Выделение памяти для следующего элемента
Просмотр списка:
While street<> nil do
Begin
Writeln (street^.inf);
street:= street^.next;>
end;
Удаление элемента из списка:
удаление первого элемента. Для этого во вспомогательном указателе запомним первый элемент, указатель на голову списка переключим на следующий элемент списка и освободим область динамической памяти, на которую указывает вспомогательный указатель. Процедура удаления первого элемента изображена на рисунке 1.4.
delStreet:= street;
street:= street^.next;
dispose(delStreet);
Рисунок 1.4 - Удаление первого элемента
удаление элемента из середины списка. Для этого нужно знать адреса удаляемого элемента и элемента, стоящего перед ним, что изображено на рисунке 1.5. Допустим, что delStreet - это длина удаляемой улицы.
newStreet:= street;
while(newStreet<>nil) and (newStreet^.dlina <> delStreet) do
begin
dx:= newStreet;
newStreet:= newStreet^.next;
end;
dx:= newStreet^.next:
dispose(newStreet);
Рисунок 1.5 - Удаление элемента из середины списка
удаление из конца списка. Для этого нужно найти предпоследний элемент.
newStreet:= street;
dx:= street;
while newStreet^.next<> nil do
begin
dx:= newStreet;
newStreet:= newStreet^.next;
end;
dx^.next:= nil;
dispose(newStreet);
Прохождение списка. Важно уметь перебирать элементы списка, выполняя над ними какую-либо операцию. Пусть необходимо найти сумму длин улиц.
summa:= 0;
newStreet:= street;
while newStreet<> nil do
begin
summa:= summa+ newStreet^.dlina;
newStreet:= newStreet^.next;
end;
Описание программного комплекса
Предмет курсовой работы
Темой курсовой работы является разработка программного комплекса «Улицы города».
Программа предназначена для хранения и предоставления пользователям данных об улицах города.
Функции программы:
1 Создание набора данных.
2 Добавление новых элементов в конец набора данных.
3 Просмотр всех элементов набора данных.
4 Поиск элемента по номеру.
5 Переход к работе с другим набором данных.
6 Просмотр элементов и вычисление среднего, минимума и максимума на множестве тех элементов, которые попадают в заданный диапазон по заданному полю (длина улицы).
7 Добавление содержимого другого набора данных в конец текущего.
В программе предусмотрено добавление необходимого количества улиц и информации о них, а именно: название улицы, длина в километрах, количество зданий, тип и важность улицы. Заполнение поля «тип и важность улицы» осуществляется выбором одного из предложенных значений: центральная, проезжая, пешеходная, переулок.
Для функционирования программного комплекса в каталоге с программой должны присутствовать файлы:
base.dat;
settings.dat.
При написании программы были реализованы следующие процедуры:
openSettingsFile - процедура открытия файла настроек;
saveSettingsFile - процедура записи данных в файл настроек;
createND - процедура создание нового набора данных;
openND - процедура открытия набора данных;
openDB - процедура открытия файла с набором данных;
saveDB - процедура записи набора данных в файл;
view - процедура просмотра данных об улицах;
add - процедура добавления улиц;
found - процедура поиска улиц по номеру;
viewDiapazon - процедура вычисления минимальной, максимальной, средней длины и просмотр улиц, которые попадают в заданный диапазон;
addND - процедура добавления другого набора данных в конец текущего;
menu - процедура главного меню программы.
При вычисление средней длины улицы была использована следующая формула (2.1):
где
- количество улиц;
- длина i-й улицы.
Структура данных представлена в таблице 2.1.
Таблица 2.1 - Структура данных
Наименование поля |
Тип |
Пояснение |
|
dlina |
real |
Длина улицы |
|
naim |
string |
Название улицы |
|
kol |
Integer |
Количество зданий |
|
tip |
Ttip |
Тип и важность улицы (перечислимый тип) |
Реализация программы
динамический память программный улица
При реализации данной программы наиболее подходящим методом проектирования был выбран метод расширения ядра.
При использовании метода расширения ядра основное внимание уделяется выявлению множества вспомогательных функций, а не определению функции всей программы в целом. Проектируемая по этому методу программа рассматривается как механизм, с помощью которого входные данные преобразуются в выходные.
На начальной стадии выделяется круг проблем, определяющих проектные решения. При решении каждой из них формируется отдельный модуль, что в последствии облегчает модификацию уже созданной программы. Область определения указанных проблем зависит от организации данных и спецификации алгоритма. Список проблем, определяющих проектные решения, не является описанием иерархии вызываемых модулей. Решение этих проблем производится независимо от определения управляющих структур.
Технологический подход к решению данной задачи целесообразно выбрать каскадно-возвратный. В нем разрешено возвращаться к предыдущим стадиям, уточнять и пересматривать принятые на этом этапе решения. Каждая итерация является завершенным этапом, и ее итогом будет некоторый конкретный результат. Возможно, данный результат будет промежуточным, не реализующим всю ожидаемую функциональность.
Демонстрация программы
После запуска программы на экране появится главное меню, рисунок 2.1. После чего необходимо выбрать один из пунктов.
Рисунок 2.1 - Главное меню программы
Для создания нового набора данных необходимо в главном меню выбрать пункт «1» и ввести название нового набора данных, рисунок 2.2. После чего программа перейдет к добавлению улиц в новый набор данных, рисунок 2.3.
Рисунок 2.2 - Создание нового набора данных
Рисунок 2.3 - Добавление данных
Для добавления улиц в текущий набор данных необходимо в главном меню выбрать пункт «2» и ввести данные о новой улице, рисунок 2.3.
Для просмотра данных необходимо в главном меню выбрать пункт «3», рисунок 2.4.
Рисунок 2.4 - Просмотр данных
Для поиска данных необходимо в главном меню выбрать пункт «4» и ввести номер улицы, после чего на экране появится данные искомой улицы, если такая имеется, рисунок 2.5.
Рисунок 2.5 - Поиск данных
Для добавления данных другого набора данных в конец текущего необходимо в главном меню выбрать пункт «5» и ввести название другого набора данных, рисунок 2.6.
Рисунок 2.6 - Добавление другого набора данных
Для просмотра и подсчета минимальной, максимальной и средней длины улицы в заданном диапазоне необходимо в главном меню выбрать пункт «6» и ввести название начало и конец диапазоне, после чего появятся улицы подходящие под данные критерии, рисунок 2.7.
Рисунок 2.7 - Просмотр данных в заданном диапазоне
Для работы с другим набором данных необходимо в главном меню выбрать пункт «7» и ввести название другого набора данных, рисунок 2.8.
Рисунок 2.8 - Переход к работе с другим набором данных
Заключение
Результатом проделанной работы стал программный комплекс «Улицы города». Программа предназначена для хранения и предоставления пользователям данных об улицах города.
Разработанная программа позволяет решить проблему с формой хранения данных.
Во время разработки данной программы были усовершенствованы навыки работы с языком программирования Pascal и со средой программирования Turbo Pascal 7.0, в результате чего написана программа, соответствующая всем требованиям, предъявленным к ней.
Список использованных источников
Абрамов, В. Г. Введение в язык Паскаль / В. Г. Абрамов, Н. П. Трифонов, Г. Н. Трифонова - М. : Наука, 1988.
Вирт, Н. А. Алгоритмы + структуры данных = программы / Н. А. Вирт. - М. : 1985.
Грогоно, П. П. Программирование на языке Паскаль / П. П. Грогоно - М. : Мир, 1982.
Культин, Н. Б. Программирование в Turbo Pascal и Delphi / Н. Б. Культин - СПб. : BHV, Санкт-Петербург, 1998.
Приложение А
Код программы
Program kursach;
Uses Crt;
Type
TTip = (centr,proezgaj,peshehodnaj,pereylok);
TStreet = record
dlina: real;
naim: string;
kol: integer;
tip: TTip;
end;
TStreetList = array [1..100] of TStreet;
Var
fileStreet: file of TStreetList;
streetList,street1List: TStreetList;
i,j,kolStreet,kol1Street: integer;
nameFile: string;
Procedure openSettingsFile;
Var
fileSettings: text;
Begin
Assign(fileSettings,'settings.dat');
Reset(fileSettings);
Read(fileSettings,nameFile);
Close(fileSettings);
end;
Procedure saveSettingsFile;
var
fileSettings: text;
Begin
Assign(fileSettings,'settings.dat');
ReWrite(fileSettings);
Write(fileSettings,nameFile);
Close(fileSettings);
end;
Procedure createND;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Writeln('Vvedite nazvanie novogo ND: ');
Readln(nameFile);
saveSettingsFile;
Assign(fileStreet,nameFile+'.dat');
Rewrite(fileStreet);
Close(fileStreet);
for i:=1 to 100 do Begin
streetList[i].dlina:=0;
streetList[i].naim:='';
streetList[i].kol:=0;
end;
end;
Procedure openND;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Write('Vvedite nazvanie ND: ');
Readln(nameFile);
saveSettingsFile;
end;
Procedure openDB(fl: string);
Begin
Assign(fileStreet,fl+'.dat');
Reset(fileStreet);
Read(fileStreet,streetList);
Close(fileStreet);
for i:=1 to 100 do Begin
if (streetList[i].naim='') Then Begin
kolStreet:=i-1;
break;
end;
end;
end;
Procedure saveDB(fl: string);
Begin
Assign(fileStreet,fl+'.dat');
Rewrite(fileStreet);
Write(fileStreet,streetList);
Close(fileStreet);
end;
Procedure view;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Writeln('_________________________________________________________');
Writeln('| # | Dlina | Nazvanie | kol Zdanii | tip |');
Writeln('_________________________________________________________');
for i:=1 to kolStreet do Begin
with streetList[i] do Begin
Write('|',i:3,'|');
Write(dlina:9:0,'|');
Write(naim:12,'|');
Write(kol:14,'|');
if (tip=centr) Then
Write('central''naj':13,'|');
if (tip=proezgaj) Then
Write('proezgaj':13,'|');
if (tip=peshehodnaj) Then
Write('peshehodnaj':13,'|');
if (tip=pereylok) Then
Write('pereylok':13,'|');
Writeln;
end;
end;
Writeln('_________________________________________________________');
readln;
end;
Procedure add;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Writeln('Dannie novoi ylici');
Write(' dlina: ');
Readln(streetList[kolStreet+1].dlina);
Write(' nazvanie: ');
Readln(streetList[kolStreet+1].naim);
Write(' kolichestvo zdanii: ');
Readln(streetList[kolStreet+1].kol);
Writeln(' tip ylici: ');
Writeln;
Writeln(' 1 central''naj');
Writeln(' 2 proezgaj');
Writeln(' 3 peshehodnaj');
Writeln(' 4 pereylok');
Writeln;
Write(' Num:');
Readln(i);
Case i of
1: streetList[kolStreet+1].tip:=centr;
2: streetList[kolStreet+1].tip:=proezgaj;
3: streetList[kolStreet+1].tip:=peshehodnaj;
4: streetList[kolStreet+1].tip:=pereylok;
end;
Writeln;
kolStreet:=kolStreet+1;
saveDB(nameFile);
Writeln('Ylica dobavlena');
Readln;
end;
Procedure found;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Repeat
Writeln;
Write('Vvedite porjdkovii nomer ylici: ');
Readln(j);
Until ((j>0) AND (j<kolStreet+1));
Writeln;
Writeln('_______________________________________________');
Writeln('| # | Dlina | Nazvanie | kol Zdanii | tip |');
Writeln('__________________________________________________');
with streetList[j] do Begin
Write('|',j:3,'|');
Write(dlina:9:0,'|');
Write(naim:12,'|');
Write(kol:14,'|');
if (tip=centr) Then
Write('central''naj':13,'|');
if (tip=proezgaj) Then
Write('proezgaj':13,'|');
if (tip=peshehodnaj) Then
Write('peshehodnaj':13,'|');
if (tip=pereylok) Then
Write('pereylok':13,'|');
Writeln;
end;
Writeln('____________________________________________');
readln;
end;
Procedure viewDiapazon;
Var
start,finish,max,min,kol1,summa:real;
sredn: real;
maxStreet,minStreet:string;
temp:Boolean;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Write('Vvedite nachalo diapazona: ');
Readln(start);
Write('Vvedite konec diapazona: ');
Readln(finish);
Writeln;
max:=-1;
min:=999999999;
maxStreet:=streetList[1].naim;
minStreet:=streetList[1].naim;
ПРИЛОЖЕНИЕ А
Продолжение
summa:=0;
temp:=false;
kol1:=0;
Writeln('___________________________________________');
Writeln('| # | Dlina | Nazvanie | kol Zdanii | tip |');
Writeln('_____________________________________________');
for i:=1 to kolStreet do Begin
with streetList[i] do Begin
if ((dlina>start-1) AND (dlina<finish+1)) Then Begin
Write('|',i:3,'|');
Write(dlina:9:0,'|');
Write(naim:12,'|');
Write(kol:14,'|');
if (tip=centr) Then
Write('central''naj':13,'|');
if (tip=proezgaj) Then
Write('proezgaj':13,'|');
if (tip=peshehodnaj) Then
Write('peshehodnaj':13,'|');
if (tip=pereylok) Then
Write('pereylok':13,'|');
Writeln;
if (dlina>max) Then Begin
max:=dlina;
maxStreet:=naim;
end;
if (dlina<min) Then Begin
min:=dlina;
minStreet:=naim;
end;
summa:=summa+dlina;
kol1:=kol1+1;
temp:=true;
end;
end;
end;
Writeln('______________________________________');
if temp Then Begin
Writeln('Minimal''naj ylica ',minStreet,' dlinoi ',min:0:0,'km');
Writeln('Maximal''naj ylica ',maxStreet,' dlinoi ',max:0:0,'km');
sredn:=summa/kol1;
Writeln('Srednjj dlina ylic: ',sredn:0:0,'km');
end else
Writeln('V zadannom diapazone ylic ne naideno');
readln;
end;
Procedure addND;
Var
newND: String;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Write('Vvedite nazvanie drugogo ND: ');
Readln(newND);
Assign(fileStreet,newND+'.dat');
Reset(fileStreet);
Read(fileStreet,street1List);
Close(fileStreet);
for i:=1 to 100 do Begin
if (street1List[i].naim='') Then Begin
kol1Street:=i-1;
break;
end;
end;
for i:=kolStreet+1 to kolStreet+kol1Street do
streetList[i]:=street1List[i-kolStreet];
saveDB(nameFile);
Writeln;
Writeln('ND dobavlen');
Readln;
end;
Procedure delete;
Var
s: string;
Begin
clrscr;
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Writeln('Ydalenie');
Write('Vvedite nomer elementa: ');
Readln(j);
Writeln;
Write('Ydalit'' elementi nachinaj s ',j,'-go? (Y/N):');
Readln(s);
if (s='Y') Then Begin
for i:=j to kolStreet do Begin
streetList[i].naim:='';
streetList[i].dlina:=0;
streetList[i].kol:=0;
end;
saveDB(nameFile);
Writeln('Ylici ydaleni');
Readln;
end;
end;
Procedure menu;
Var
idMenu: integer;
Begin
Writeln('Tekyschii ND: '+nameFile);
Writeln;
Writeln('Menu');
Writeln(' 1 Sozdanie novogo nabora dannih');
Writeln(' 2 Dobavlenie v tekyschii ND');
Writeln(' 3 Prosmotr tekyschego ND');
Writeln(' 4 Poisk po nomery v tekyschem ND');
Writeln(' 5 Dobavlenie sodergimogo grugogo ND v konec tekyschego ND');
Writeln(' 6 Prosmotr elementov v zadannom diapazone');
Writeln(' 7 Rabota s drygim ND');
Writeln;
Writeln(' 0 Vihod');
Writeln;
Write('Vvedite pynkt menu:');
Readln(idMenu);
Case idMenu of
1: Begin
createND;
kolStreet:=0;
add;
clrscr;
menu;
end;
2: Begin
openDB(nameFile);
add;
clrscr;
menu;
end;
3: Begin
openDB(nameFile);
view;
clrscr;
menu;
end;
4: Begin
openDB(nameFile);
found;
clrscr;
menu;
end;
5: Begin
openDB(nameFile);
addND;
clrscr;
menu;
end;
6: Begin
openDB(nameFile);
viewDiapazon;
clrscr;
menu;
end;
7: Begin
openND;
openDB(nameFile);
clrscr;
menu;
end;
111: Begin
openDB(nameFile);
delete;
clrscr;
menu;
end;
end; end;
Begin
clrscr;
openSettingsFile;
menu;
end.
Размещено на Allbest.ru
Подобные документы
Создание программы, которая создает набор данных в динамической памяти компьютера и позволяет корректировать его. Описание программного комплекса. Обзор особенностей реализации программы с использованием модулей. Добавление данных в конец текущего набора.
курсовая работа [455,2 K], добавлен 28.08.2017Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.
лабораторная работа [788,2 K], добавлен 14.06.2009Общая характеристика и функциональные особенности микросхем динамической памяти SDRAM, их классификация и типы, внутреннее устройство. Основные требования к конструкции корпусов. Отношение между тактовым сигналом и циклами передачи данных памяти RDRAM.
презентация [277,4 K], добавлен 27.08.2013Разработка информационной системы для хранения данных для предметной области "Самолеты аэропорта". Формат хранения исходных данных, их загрузка в табличный процессор. Тестирование программного комплекса. Возможности пакета MS Excel по обработке данных.
курсовая работа [1,2 M], добавлен 23.04.2014База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.
дипломная работа [1,0 M], добавлен 23.06.2012Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.
курсовая работа [1,1 M], добавлен 04.09.2014Проектирование программного обеспечения для классифицирования выпускников высшего учебного заведения. Выбор системы управления базами данных и языка программирования. Разработка структуры данных, схема базы данных. Реализация программного комплекса.
дипломная работа [2,4 M], добавлен 27.03.2013Проектирование структуры информационной базы и разработка программного комплекса, позволяющего автоматизировать процесс учета налогоплательщиков. Разработка конфигурации и создание интерфейса базы данных, форм и отчетов в программе "1С Предприятие".
дипломная работа [3,2 M], добавлен 21.06.2015Разработка подсистемы отдела кадров, предназначенной для работы с базой данных в виде типизированного файла с расширением txt. Анализ возможности редактировать записи, осуществления выборки данных на основе правил отбора и построения графиков и диаграмм.
контрольная работа [125,3 K], добавлен 08.06.2011