Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» icon

Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список»



НазваниеПояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список»
Дата17.10.2016
Размер
ТипПояснительная записка


Министерство Образования и Науки Украины

Харьковский Государственный Технический Университет

Строительства и Архитектуры


Кафедра компьютерного моделирования и информационных технологий


Пояснительная записка к курсовому проекту


Тема:

«Линейный двунаправленный список»


Выполнила: ст.гр.ЭКБ-21

Черкасова Ирина.

Проверил:

Литвиненко Е.Н.


Харьков 2013

Содержание


Введение 3

Раздел 1. Предметная область 4

1.1 Постановка задачи 4

1.2 Актуальность создания программы 4

Раздел 2. Теоретическая часть 5
^

2.1. Связное представление данных в памяти 5


2.2. Связные линейные списки 6

2.3. Машинное представление связных линейных списков 6

Раздел 3. Практическая часть 9

3.1 Техническое задание 9

3.2 Описание программы 9

3.3 Использование программы 10

Заключение 11

Список использованной литературы 12

Приложение 1 13

Приложение 2 22

Приложение 3 24

Введение


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

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

Раздел 1

Предметная область


    1. Постановка задачи

При помощи среды визуального программирования Delphi создать программу – оболочку для управления структурой данных «Список». Реализовать операции создание списка, просмотра содержимого списка, удаление списка, добавление элемента в список, удаление заданного элемента из списка, поиска в списке по заданному значению. Также реализовать встроенный в программу синтаксический реализатор, при помощи которого производят вывод на экран искомого множества элементов списка (синтаксический анализатор должен работать как минимум по 3м полям и использовать как минимум 3 булевых оператора).


Создать линейный двунаправленный список.

Элемент списка – квартира:

1. адрес;

2. количество комнат;

3. количество жильцов;

4. общая площадь;

5. жилая площадь.

Осуществить поиск по:

1. количеству комнат;

2. общей площади;

3. жилой площади.


1.2. Актуальность создания программы

Актуальность создания данной программы заключается в следующем:

  1. можно составить базу данных содержащую сведенья о квартирах;

  2. можно исправить уже имеющиеся базу данных;

  3. можно просмотреть все сведенья о квартирах содержащихся в базе данных;

  4. можно осуществить поиск квартиры по заданным параметрам.


Раздел 2

Теоретическая часть

^

2.1. Связное представление данных в памяти


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

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

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

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

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

Достоинства связного представления данных - в возможности обеспечения значительной изменчивости структур;

  1. размер структуры ограничивается только доступным объемом машинной памяти;

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

Вместе с тем связное представление не лишено и недостатков, основные из которых:

  1. работа с указателями требует, как правило, более высокой квалификации от программиста;

  2. на поля связок расходуется дополнительная память;

  3. доступ к элементам связной структуры может быть менее эффективным по времени.

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

^

2.2. Связные линейные списки


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

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


2.3. Машинное представление связных линейных списков

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



Рис.2.1. Структура односвязного списка

Однако, обработка односвязного списка не всегда удобна, так как отсутствует возможность продвижения в противоположную сторону. Такую возможность обеспечивает двухсвязный список, каждый элемент которого содержит два указателя: на следующий и предыдущий элементы списка. Структура линейного двухсвязного списка приведена на рис. 2.2, где поле NEXT - указатель на следующий элемент, поле PREV - указатель на предыдущий элемент. В крайних элементах соответствующие указатели должны содержать nil, как и показано на рис. 2.2.

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



Рис.2.2. Структура двухсвязного списка

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

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



Рис.2.3. Структура кольцевого двухсвязного списка

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


Раздел 3

Практическая часть


3.1. Техническое задание

3.1.1 Основание для разработки

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

3.1.2 Интерфейс

Данная программа предназначена для работы в ОС Windows 95 и выше. Она представляет собой один автономный «exe» файл.

3.1.3 Минимальные системные требования

Процессор: IBM-совместимый 100 МГц;

Оперативная память: 32 Mb;

Дисковое пространство: 1 Mb + 200 Mb для нормального функционирования ОС;

Видео адаптер: S3 Trio3D 4 Mb;

Устройства ввода-вывода.

3.1.4 Требования к защите

Данная программа не защищена паролем, так как предназначена для общего пользования.

3.1.5 Тестирование программы

Тестирование программы проводилось в нормальных и критических условиях.

3.1.6 Требования к продуктивности

Программа должна выдавать результаты сразу после выполнения соответствующего действия пользователем, час ответа должен быть <=1 секунде.

3.1.7 Требования к мобильности

Данная программа представляет собой один автономный «exe» файл и работает на всех компьютерах с требованиями указанными в п.п.3.1.2 и 3.1.3

3.1.8 Требования к надежности

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


3.2. Описание программы

Данная программа была написано на языке Borland Pascal в реализации Borland Delphi 7.0. Она состоит из одной формы на которой имеется 3 вкладки: «Ввод данных о квартире»(Рис.1 пр.№2), «Просмотр данных о квартире» (Рис.2 пр.№2) и «Поиск заданной квартиры» (Рис.3 пр.№2).

На первой вкладке «Ввод данных о квартире» находятся:

  1. кнопки: «Открыть список», «Сохранить список» и «Записать»;

  2. окна для ввода информации о квартире: «Адрес», «Кол-во комнат», «Кол-во жильцов», «Общая площадь» и «Жилая площадь»;

  3. таблица в которой мы можем наблюдать занесенные элементы.

На второй вкладке «Просмотр данных о квартире» находятся:

  1. кнопка для открытия файла;

  2. таблица для просмотра открытого(текущего) файла

На третьей вкладке «Поиск заданной квартиры» находятся:

  1. кнопки предназначенные для поиска: «По кол-ву комнат», «По общей площади» и «По жилой площади»;

  2. таблица для просмотра данных поиска.

Также в низу формы находится кнопка «Выход».


3.3. Использование программы

Для запуска программы необходимо активировать файл Apartment.exe. После чего на экране появится окно программы как показано на рис.1(пр.№2).

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

Если у вас какой-то элемент лишний в списке то его можно легко удалить. Для этого следует лишь нажать левое клавишей мыши на нужном элементе и щелчком правой – вызвать пункт меню «Удалить». После чего элемент удалится (элемент возврату не подлежит).

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

После окончания работы программу можно закрыть с помощью кнопки «Выход» или нажатием на «Х» в верхнем правом углу окна.

Заключение


В ходе выполнения данной курсовой работы была достигнута поставленная цель – написана программа линейного двунаправленного списка с элементом - квартира. Данная программа была разработана в объектно-ориентированной среде Borland Delphi 7.0 на языке Borland Pascal. Она является универсальной стандартизированной под Windows.

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

Список использованной литературы


  1. Фаронов В.В. Турбо Паскаль 7.0.– М.: Издательство ООО ОМД «Групп», 2003.- 576 с.

  2. Немнюгин Turbo Pascal / С.А.– СПб.: Питер, 2003.- 492 с.

  3. Конспект лекций по программированию. / Под ред. Е.Н. Литвиненко.

  4. Фленов Михаил „Библия Delphi”

Приложение 1

Листинг программы


unit ApartmentUnit;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, ComCtrls, ExtCtrls, StdCtrls, Buttons, Spin, Menus;


type

Ap=^z;

z=record

Adres:string;

KKomn:integer;

KZylcov:integer;

OPlosh:integer;

ZPlosh:integer;

Next:Ap;

Prev:Ap;

end;


FF=record

Adr:string[80];

KKom:integer;

KZylc:integer;

OPlos:integer;

ZPlos:integer;

end;


TForm1 = class(TForm)

PageControl1: TPageControl;

Panel1: TPanel;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

StringGrid1: TStringGrid;

BitBtn1: TBitBtn;

Edit1: TLabeledEdit;

Edit2: TLabeledEdit;

Edit3: TLabeledEdit;

Edit4: TLabeledEdit;

Edit5: TLabeledEdit;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

TabSheet3: TTabSheet;

BitBtn5: TBitBtn;

StringGrid2: TStringGrid;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

BitBtn8: TBitBtn;

StringGrid3: TStringGrid;

Panel2: TPanel;

SpinEdit1: TSpinEdit;

BitBtn9: TBitBtn;

BitBtn10: TBitBtn;

Save: TSaveDialog;

Open: TOpenDialog;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

StatusBar1: TStatusBar;

procedure BitBtn6Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure Find(k,l:integer);

procedure StrGrClear(NN:integer);

procedure StrGrZap(k,l:integer);

procedure ElementRemove(k:integer);

procedure BitBtn9Click(Sender: TObject);

procedure BitBtn10Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

procedure BitBtn8Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure StringGrid1Click(Sender: TObject);

private

n,nend,ntop:Ap;

i,kof1,kof2,Xrow:integer;

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.dfm}


//Поиск по заданым параметрам

procedure TForm1.Find(k,l:integer);

var q:integer;

begin

q:=1;

n:=ntop;

case k of

1:

begin

Repeat

if q<=9 then StringGrid3.RowCount:=q+1;

If n^.KKomn=l then

begin

StrGrZap(q,2);

inc(q);

end;

n:=n^.Next;

until n=nil;

end;

2:

begin

Repeat

if q<=9 then StringGrid3.RowCount:=q+1;

If n^.OPlosh=l then

begin

StrGrZap(q,2);

inc(q);

end;

n:=n^.Next;

until n=nil;

end;

3:

begin

Repeat

if q<=9 then StringGrid3.RowCount:=q+1;

If n^.ZPlosh=l then

begin

StrGrZap(q,2);

inc(q);

end;

n:=n^.Next;

until n=nil;

end;

end;

end;


//Отчистка StringGrid

procedure TForm1.StrGrClear(NN:integer);

var

t,c:integer;

begin

case nn of

1:

for t:=1 to StringGrid1.RowCount do

for c:=0 to 5 do

StringGrid1.Cells[c,t]:='';

2:

for t:=1 to StringGrid2.RowCount do

for c:=0 to 5 do

StringGrid2.Cells[c,t]:='';

3:

for t:=1 to StringGrid3.RowCount do

for c:=0 to 5 do

StringGrid3.Cells[c,t]:='';

end;

end;


//Заполнение StringGrid денамическими переменными

procedure TForm1.StrGrZap(k,l:integer);

begin

case l of

1:

begin

StringGrid1.Cells[0,k]:=IntToStr(k);

StringGrid1.Cells[1,k]:=n^.Adres;

StringGrid1.Cells[2,k]:=IntToStr(n^.KKomn);

StringGrid1.Cells[3,k]:=IntToStr(n^.KZylcov);

StringGrid1.Cells[4,k]:=IntToStr(n^.OPlosh);

StringGrid1.Cells[5,k]:=IntToStr(n^.ZPlosh);

StringGrid2.Cells[0,k]:=IntToStr(k);

StringGrid2.Cells[1,k]:=n^.Adres;

StringGrid2.Cells[2,k]:=IntToStr(n^.KKomn);

StringGrid2.Cells[3,k]:=IntToStr(n^.KZylcov);

StringGrid2.Cells[4,k]:=IntToStr(n^.OPlosh);

StringGrid2.Cells[5,k]:=IntToStr(n^.ZPlosh);

end;

2:

begin

StringGrid3.Cells[0,k]:=IntToStr(k);

StringGrid3.Cells[1,k]:=n^.Adres;

StringGrid3.Cells[2,k]:=IntToStr(n^.KKomn);

StringGrid3.Cells[3,k]:=IntToStr(n^.KZylcov);

StringGrid3.Cells[4,k]:=IntToStr(n^.OPlosh);

StringGrid3.Cells[5,k]:=IntToStr(n^.ZPlosh);

end;

end;

end;


//Удаление элемента из списка

procedure TForm1.ElementRemove(k:integer);

var

l:integer;

begin

l:=1;

n:=ntop;

If k=1 then

begin

n^.Next^.Prev:=nil;

ntop:=n^.Next;

dispose(n);

end else

begin

while (n<>nil) and (l<>k) do

begin

n:=n^.Next;

inc(l);

end;

if n^.Next<>nil then n^.Next^.Prev:=n^.Prev;

if n^.Next=nil then nend:=n^.Prev;

n^.Prev^.Next:=n^.Next;

dispose(n);

end;

//Вывод списка на экран без удаленного элемента

StrGrClear(1);

StrGrClear(2);

n:=ntop;

l:=1;

repeat

StrGrZap(l,1);

inc(l);

n:=n^.Next;

until n=nil;

end;


procedure TForm1.BitBtn6Click(Sender: TObject);

begin

Panel2.Visible:=True;

kof1:=1;

StrGrClear(3);

end;


//Создание списка

procedure TForm1.BitBtn2Click(Sender: TObject);

var

st1:string;

st2,st3,st4,st5:integer;

proverka:boolean;

begin

proverka:=false;

try

st1:=Edit1.Text;

st2:=StrToInt(Edit2.Text);

st3:=StrToInt(Edit3.Text);

st4:=StrToInt(Edit4.Text);

st5:=StrToInt(Edit5.Text);

proverka:=true;

except

Application.MessageBox('Проверте правильность ввода данных','Ошибка',mb_ok);

end;

if proverka=true then

begin

if i=0 then

begin

inc(i);

new(n);

n^.Next:=nil;

n^.Prev:=nil;

n^.Adres:=st1;

n^.KKomn:=st2;

n^.KZylcov:=st3;

n^.OPlosh:=st4;

n^.ZPlosh:=st5;

ntop:=n;

nend:=n;

end else

begin

if i>=8 then StringGrid1.RowCount:=i+1;

new(n^.Next);

n:=n^.Next;

n^.Adres:=st1;

n^.KKomn:=st2;

n^.KZylcov:=st3;

n^.OPlosh:=st4;

n^.ZPlosh:=st5;

n^.Next:=nil;

n^.Prev:=nend;

nend:=n;

end;

StrGrZap(i,1);

inc(i);

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

end;

end;


procedure TForm1.FormActivate(Sender: TObject);

begin

i:=0;

StringGrid1.Cells[0,0]:='№ п/п';

StringGrid1.Cells[1,0]:='Адрес';

StringGrid1.Cells[2,0]:='Кол-во комнат';

StringGrid1.Cells[3,0]:='Кол-во жильцов';

StringGrid1.Cells[4,0]:='Общая площадь';

StringGrid1.Cells[5,0]:='Жилая площадь';

StringGrid2.Cells[0,0]:='№ п/п';

StringGrid2.Cells[1,0]:='Адрес';

StringGrid2.Cells[2,0]:='Кол-во комнат';

StringGrid2.Cells[3,0]:='Кол-во жильцов';

StringGrid2.Cells[4,0]:='Общая площадь';

StringGrid2.Cells[5,0]:='Жилая площадь';

StringGrid3.Cells[0,0]:='№ п/п';

StringGrid3.Cells[1,0]:='Адрес';

StringGrid3.Cells[2,0]:='Кол-во комнат';

StringGrid3.Cells[3,0]:='Кол-во жильцов';

StringGrid3.Cells[4,0]:='Общая площадь';

StringGrid3.Cells[5,0]:='Жилая площадь';

PageControl1.TabIndex:=0;

end;


procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Close;

end;


//Сохранение списка

procedure TForm1.BitBtn3Click(Sender: TObject);

var

fa:FF;

f:file of FF;

begin

try

n:=ntop;

if Save.Execute then

begin

AssignFile(f,Save.FileName+'.lbd');

rewrite(f);

repeat

fa.Adr:=n^.Adres;

fa.KKom:=n^.KKomn;

fa.KZylc:=n^.KZylcov;

fa.OPlos:=n^.OPlosh;

fa.ZPlos:=n^.ZPlosh;

write(f,fa);

n:=n^.Next;

until n=nil;

closefile(f);

end;

except

Application.MessageBox('Невозможно сохранить из-за неверных параметров','Ошибка',mb_ok);

end;

end;


procedure TForm1.BitBtn9Click(Sender: TObject);

begin

kof2:=StrToInt(SpinEdit1.Text);

Find(kof1,kof2);

Panel2.Visible:=False;

end;


procedure TForm1.BitBtn10Click(Sender: TObject);

begin

Panel2.Visible:=False;

end;


procedure TForm1.BitBtn7Click(Sender: TObject);

begin

Panel2.Visible:=True;

kof1:=2;

StrGrClear(3);

end;


procedure TForm1.BitBtn8Click(Sender: TObject);

begin

Panel2.Visible:=True;

kof1:=3;

StrGrClear(3);

end;


//Открытие списка

procedure TForm1.BitBtn5Click(Sender: TObject);

var

fa:FF;

f:file of FF;

begin

i:=0;

StrGrClear(2);

StrGrClear(1);

if open.Execute then

begin

AssignFile(f,open.FileName);

reset(f);

while not eof(f) do

begin

read(f,fa);

if i=0 then

begin

inc(i);

new(n);

n^.Next:=nil;

n^.Prev:=nil;

n^.Adres:=fa.Adr;

n^.KKomn:=fa.KKom;

n^.KZylcov:=fa.KZylc;

n^.OPlosh:=fa.OPlos;

n^.ZPlosh:=fa.ZPlos;

ntop:=n;

nend:=n;

end else

begin

if i>=8 then StringGrid1.RowCount:=i+1;

if i>=14 then StringGrid2.RowCount:=i+1;

new(n^.Next);

n:=n^.Next;

n^.Adres:=fa.Adr;

n^.KKomn:=fa.KKom;

n^.KZylcov:=fa.KZylc;

n^.OPlosh:=fa.OPlos;

n^.ZPlosh:=fa.ZPlos;

n^.Next:=nil;

n^.Prev:=nend;

nend:=n;

end;

StrGrZap(i,1);

inc(i);

end;

end;

end;


procedure TForm1.N1Click(Sender: TObject);

begin

try

ElementRemove(Xrow);

except

Application.MessageBox('Если хочешь удалить элемент, то клацни на нем мышкой','внимание',mb_ok);

end;

end;


procedure TForm1.StringGrid1Click(Sender: TObject);

begin

Xrow:=StringGrid1.Row;

StatusBar1.SimpleText:='Строка №'+Inttostr(Xrow)+' готова к удалению';

end;


end.

Приложение 2

Вид программы




Рис.1 1-ая вкладка программы

(ввод и редактирование элементов списка)



Рис.2 2-ая вкладка программы

(просмотр списка)



Рис.3 3-я вкладка программы

(поиск элементов)

Приложение 3

Блок схемы к программе




Похожие:

Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту по дисциплине «экспертные системы» на тему : «Экспертная система на базе vp-expert»
Пояснительная записка к курсовому проекту по дисциплине «экспертные системы» на тему
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту
Тема проекта: «Технико–экономическое обоснование технического обслуживания и ремонта автомобильного транспорта»
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconФакультет нефти, газа и энергетики пояснительная записка к курсовому проекту по дисциплине электрооборудование автомобилей ( наименование дисциплины ) ( тема курсового проекта, работы )
Факультета специальности
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту по предмету " Системное программное обеспечение эвм" Тема: Win32-приложение Картотека аудио дисков
Учреждение образования «белорусский государственный университет информатики и радиоэлектроники»
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту 160413-04-вк. Пз
В данной курсовой работе запроектированы внутренние системы водоснабжения и канализации жилого дома
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту 160413-04-вк. Пз
В данной курсовой работе запроектированы внутренние системы водоснабжения и канализации жилого дома
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconПояснительная записка к курсовому проекту по дисциплине «Локальные системы управления»
Расчет синхронизирующего устройства при двухотсчетной системе измерения угла рассогласования 8
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconСистема кондиционирования воздуха ресторана в г. Санкт-петербурге расчётно-пояснительная записка к курсовому проекту
Планировка помещения. Расчёт коэффициентов теплопередачи ограждающих конструкций. 12
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconДисциплина: тэа расчетно-пояснительная записка к курсовому проекту Тема: Разработка технологического процесса ео автомобиля газ-53
...
Пояснительная записка к курсовому проекту Тема: «Линейный двунаправленный список» iconДисциплина: тэа расчетно-пояснительная записка к курсовому проекту Тема: Разработка технологического процесса ео автомобиля зил-130
Изучить фактическую трудоемкость работ по ежедневному техническому обслуживанию автомобиля зил-130 и составить её математическое...
Разместите ссылку на наш сайт:
Справочники, творчество


База данных защищена авторским правом ©dmee.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
контакты