Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»

Автор работы: Пользователь скрыл имя, 13 Декабря 2014 в 10:49, курсовая работа

Описание работы

Цель работы: получение навыков разработки объектных программ, включая создание набора собственных взаимосвязанных классов для объектной реализации специализированного контейнера. Контейнер предназначен для хранения и обработки данных некоторой информационной задачи. Контейнер представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами – один статически на базе массива (непрерывная реализация), другой – динамически с использованием адресных связей (связная реализация).

Содержание работы

Постановка задачи (цель работы, исходные данные, ожидаемый результат, требования к реализации)……………………………………………………………………………………….2
Теоретическое описание используемых структур данных с алгоритмами реализации основных операций…………………………………………………………….…………….......3
Описание основных понятий и механизмов ООП……………………………………………………………………………………………….9
Описание всех разработанных классов (объектная модель)……………………………...…11
Описание демонстрационного модуля с характеристикой использованных стандартных компонентов……………………………………………………………………………………25
Описание структуры проекта…………………………………………………………………27
Список использованной литературы…………………………………………………………47

Файлы: 1 файл

KURSOVAYaYa.docx

— 243.02 Кб (Скачать файл)

{

  int x=CheckListBox1->Items->Count;

  for(int i=0;i<x;i++)

  {

   if(CheckListBox1->Checked[i]==true&&CheckListBox1->Selected[i]!=true)

   {

CheckListBox1->Checked[i]=false;

   }

   if(CheckListBox1->Selected[i]==true)

   {

ApartmentHouse *tmp=0;

int y=StrToInt(CheckListBox1->Items->Strings[i]);

Label4->Caption=y;

tmp=Current->search(y);

if(tmp!=0)

{

ListBox2->Clear();

ListBox3->Clear();

while(tmp->checkShowAll())

{

Apartment *TMP=tmp->ShowAll();

ListBox2->Items->Add(TMP->getNumber());

float x=TMP->getArea();

AnsiString str = FormatFloat("0.00",x);

ListBox3->Items->Add(str);

}

LB2=tmp->getNumber();

tmp->~ApartmentHouse();

}

   }

  }

}

//---------------------------------------------------------------------------

void __fastcall TForm7::ComboBox1Select(TObject *Sender)//отображение  инф-ии //выбранного дома при прокрутке

{

ListBox1->Clear();

if(ComboBox1->Text!="")

{

try{

int x=StrToInt(ComboBox1->Text);

ApartmentHouse *tmp=0;

tmp=Current->search(x);

if(tmp!=0)

{

while(tmp->checkShowAll())

{

  ListBox1->Items->Add(tmp->ShowAll()->getNumber());

}

LB1=tmp->getNumber();

tmp->~ApartmentHouse();

}

}

catch(...)

{

  ShowMessage("Возможен ввод целых чисел");

 }

}

}

//---------------------------------------------------------------------------

void __fastcall TForm7::Edit1MouseMove(TObject *Sender, TShiftState Shift, int X,

  int Y)//справка

{

Edit1->Hint="Наберите название компании,кликните для ввода";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::Edit4MouseMove(TObject *Sender, TShiftState Shift, int X,

          int Y) )//справка

{

Edit4->Hint="Наберите номер дома,кликните для ввода";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::Edit5MouseMove(TObject *Sender, TShiftState Shift, int X,

          int Y) )//справка

{

 Edit5->Hint="Введите номер квартиры";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::Edit6MouseMove(TObject *Sender, TShiftState Shift, int X,

          int Y) )//справка

{

Edit6->Hint="Введите площадь квартиры";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::Edit7MouseMove(TObject *Sender, TShiftState Shift, int X,

          int Y) )//справка

{

  Edit7->Hint="Введите номер квартиры";

}

//---------------------------------------------------------------------------

 

void __fastcall TForm7::FormCloseQuery(TObject *Sender, bool &CanClose)

{

if(Current!=0)

{

   SWITCH=3;

   OKRightDlg->ShowModal();

 }

}

//---------------------------------------------------------------------------

 

  Ко второму модулю подключены файлы из стандартной библиотеки С++: fstream,  iostream – для файлового ввода-вывода, string – для работы с объектами библиотечного класса string. Также подключены заголовочные файлы главного модуля и модуль с разработанными контейнерами. Также к модулю подключены глобальные переменные из главного модуля: Current, SWITCH, LB1, LB2, CLEAR, P.  Прописаны прототипы функций для сохранения данных на диск и обратной загрузки.

 

//---------------------------------------------------------------------

void __fastcall TOKRightDlg::OKBtnClick(TObject *Sender) //сохранить данные

{

if(SWITCH==2)//переход из вкладки-создать

 {

  SWITCH=0;

if(SaveDialog1->Execute())

{

if(SaveDialog1->FileName!="")

{

AnsiString str2 = SaveDialog1->FileName;

string s= AnsiString(str2).c_str();

SaveToFile(Current,s); //сохранение данных

Current->~ManagementCompany();

Current=0;

Current=new ManagementCompany();//создание нового контейнера

 LB1=0;    //компоненты LisBox1,LisBox2(LisBox3) ничего не содержат

LB2=0;

CLEAR=1;  //можно очистить  компоненты

}

}

}

else if(SWITCH==1)//переход из  вкладки-открыть

 {

  SWITCH=0;

if(SaveDialog1->Execute())

{

if(SaveDialog1->FileName!="")

{

AnsiString str2 = SaveDialog1->FileName;

string s= AnsiString(str2).c_str();

SaveToFile(Current,s); //сохранение данных

Current->~ManagementCompany();

Current=0;

LB2=0;    //компоненты LisBox1,LisBox2(LisBox3) ничего не содержат

 LB1=0;

}

}

if(OpenDialog1->Execute())

{

if(OpenDialog1->FileName!="")

{

AnsiString str2 = OpenDialog1->FileName;

string s= AnsiString(str2).c_str();

Current=new ManagementCompany();

LoadFromFile(Current,s);  //загрузка данных с диска

 }

}

 

}

else if(SWITCH==3)//переход из  вкладки-закрыть

 {

  SWITCH=0;

  if(SaveDialog1->Execute())

{

if(SaveDialog1->FileName!="")

{

AnsiString str2 = SaveDialog1->FileName;

string s= AnsiString(str2).c_str();

SaveToFile(Current,s);    //сохранение данных

Current->~ManagementCompany(); //освобождение памяти

Current=0;

LB1=0;    //компоненты LisBox1,LisBox2(LisBox3) ничего не содержат

 LB2=0;

}

}

}

else if(SWITCH==4)//переход из  вкладки-выход

 {

  SWITCH=0;

if(SaveDialog1->Execute())

{

if(SaveDialog1->FileName!="")

{

AnsiString str2 = SaveDialog1->FileName;

string s= AnsiString(str2).c_str();

SaveToFile(Current,s); //сохранение данных

Current->~ManagementCompany();//освобождение памяти

Current=0;

LB1=0;    //компоненты LisBox1,LisBox2(LisBox3) ничего не содержат

 LB2=0;

}

}

}

 OKRightDlg->Close();  //закрытие диалога

}

//---------------------------------------------------------------------------

void __fastcall TOKRightDlg::Button1Click(TObject *Sender)//не сохранять данные

{

if(SWITCH==1) //переход из вкладки-открыть

 {

  SWITCH=0;

  Current->~ManagementCompany(); //освобождение памяти

  Current=0;

  LB1=0;   //компоненты LisBox1,LisBox2(LisBox3) ничего не содержат

  LB2=0;

if(OpenDialog1->Execute())

{

if(OpenDialog1->FileName!="")

{

AnsiString str2 = OpenDialog1->FileName;

string s= AnsiString(str2).c_str();

Current=new ManagementCompany();

LoadFromFile(Current,s);    //загрузка данных с диска

     }

}

}

else if(SWITCH==2) //переход из  вкладки-создать

 {

  SWITCH=0;

  Current->~ManagementCompany(); //освобождение памяти

  Current=0;

  Current=new ManagementCompany();//создание нового контейнера

Информация о работе Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»