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

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

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

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

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

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

Файлы: 1 файл

KURSOVAYaYa.docx

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

tmp->~ApartmentHouse();

}

Edit1->Enabled=true;     //сделать  активными компоненты

Edit4->Enabled=true;

ComboBox1->Enabled=true;

Edit5->Enabled=true;

Edit6->Enabled=true;

Edit7->Enabled=true;

ComboBox2->Enabled=true;

ComboBox3->Enabled=true;

   }

   else   //если не удалось загрузить данные с диска

   {

Current->~ManagementCompany();

Current=0;

Edit1->Enabled=false;

Edit4->Enabled=false;

ComboBox1->Enabled=false;

Edit5->Enabled=false;

Edit6->Enabled=false;

Edit7->Enabled=false;

ComboBox2->Enabled=false;

ComboBox3->Enabled=false;

ShowMessage("Невозможно загрузить  файл");

       }

}

}

}

}

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

void __fastcall TForm7::N3Click(TObject *Sender) //вкладка меню-сохранить

{

 if(Current!=0)       //если контейнер создан

{

if(SaveDialog1->Execute())

{

  if(SaveDialog1->FileName!="")

  {

AnsiString str2 = SaveDialog1->FileName;

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

SaveToFile(Current,s);

  }

}

}

else

{

ShowMessage("Данные Отсутствуют");

}

}

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

void __fastcall TForm7::N4Click(TObject *Sender) //вкладка меню-закрыть

{

 if(Current!=0) //если контейнер создан

{

  if(Current->getflag()) //если выполнялись действия над данными

  {

SWITCH=3;

OKRightDlg->ShowModal();  //открытие диалогового окна

  CLEAR=0;

  Edit1->Clear();          //очистка компонентов

  ListBox2->Clear();

  CheckListBox1->Clear();

  Edit4->Clear();

  ComboBox1->Clear();

  Edit5->Clear();

  Edit6->Clear();

  Edit7->Clear();

  ComboBox2->Clear();

  ComboBox3->Clear();

  ListBox1->Clear();

  ListBox3->Clear();

  Label5->Caption="НАЗВАНИЕ  КОМНАНИИ";

  Label4->Caption="ННН";

Edit1->Enabled=false;

Edit4->Enabled=false;

ComboBox1->Enabled=false;

Edit5->Enabled=false;

Edit6->Enabled=false;

Edit7->Enabled=false;

ComboBox2->Enabled=false;

ComboBox3->Enabled=false;

  }

  else   //если операции над данными не производились

  {

   Current->~ManagementCompany();

   Current=0;

   Edit1->Clear();              //очистка компонентов

  ListBox2->Clear();

  CheckListBox1->Clear();

  Edit4->Clear();

  ComboBox1->Clear();

  Edit5->Clear();

  Edit6->Clear();

  Edit7->Clear();

  ComboBox2->Clear();

  ComboBox3->Clear();

  ListBox1->Clear();

  ListBox3->Clear();

  Label5->Caption="НАЗВАНИЕ  КОМНАНИИ";

  Label4->Caption="ННН";

Edit1->Enabled=false;

Edit4->Enabled=false;

ComboBox1->Enabled=false;

Edit5->Enabled=false;

Edit6->Enabled=false;

Edit7->Enabled=false;

ComboBox2->Enabled=false;

ComboBox3->Enabled=false;

  }

}

}

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

void SaveToFile(ManagementCompany *New,string &Name)//сохранение  данных в файл

{

string str=Name;

string str1=".DAT";

str+=str1;

const char *p=(str).c_str();

ofstream outfile(p, ios::binary);

int key=221218137;                  //идентификационный ключ

outfile.write(reinterpret_cast<char*>(&key), sizeof(int));

int x=sizeof(New->getName());

outfile.write(reinterpret_cast<char*>(&x), sizeof(int));        //размер  имени

outfile.write(reinterpret_cast<char*>(&(New->getName())), x);   //имя

x=New->getCount();

outfile.write(reinterpret_cast<char*>(&x), sizeof(int));        //количество  домов

while(New->checkpass())

{

   ApartmentHouse *TMP=New->pass();

   int y=TMP->getCount();

   outfile.write(reinterpret_cast<char*>(&y), sizeof(int));  //количество квартир  в доме

   y=TMP->getNumber();

   outfile.write(reinterpret_cast<char*>(&y), sizeof(int));//номер дома

   while(TMP->checkShowAll())

   {

   Apartment *tmp=TMP->ShowAll();

   int n=tmp->getNumber();

   float s=tmp->getArea();

   outfile.write(reinterpret_cast<char*>(&n), sizeof(int));

   outfile.write(reinterpret_cast<char*>(&s), sizeof(float));

   }

}

New->setflag(false);

outfile.close();

}

void LoadFromFile(ManagementCompany *New,string &Name) //загрузка данных с диска(New-пуст)

{

string str=Name;

string str1=".DAT";

const char *p=(str).c_str();

int a=sizeof(p);        //проверка расширения файла

 a--;

char Q[4]={'T','A','D','.'};

int Count=0;

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

{

if(Q[i]==p[a])

{

  Count++;

}

a--;

}

if(Count!=4)

{

  str+=str1;

}

ifstream infile(p, ios::binary);

if(infile.is_open()==true)  //проверка возможности открытия файла

 {

  int key;

  infile.read( reinterpret_cast<char*>(&key), sizeof(int));

  if(key==221218137)  //если ключ совпал,то считываем файл

  {

  P=1;

  int x;

  infile.read( reinterpret_cast<char*>(&x), sizeof(int));

  string name;

  infile.read( reinterpret_cast<char*>(&name), x);

  New->setName(name);                                  //запись имени

  infile.read( reinterpret_cast<char*>(&x), sizeof(int)); //кол-во домов

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

  {

   int q;

   infile.read( reinterpret_cast<char*>(&q), sizeof(int)); //количетво квартир

   int w;

   infile.read( reinterpret_cast<char*>(&w), sizeof(int)); //номер дома

   New->Add(w);

   for(int r=0;r<q;r++)

   {

int n;

float s;

infile.read(reinterpret_cast<char*>(&n), sizeof(int));

infile.read(reinterpret_cast<char*>(&s), sizeof(float));

New->AddAp(w,n,s);

   }

  }

  infile.close();

}

}

}

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

void __fastcall TForm7::N5Click(TObject *Sender)  //вкладка меню-выход

{

 if(Current!=0) //если контейнер создан

{

  if(Current->getflag()) //если выполнялись действия над данными

  {

SWITCH=4;

OKRightDlg->ShowModal(); //открытие диалогового окна

  }

 

}

Form7->Close();         //закрытие главной формы

}

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

void __fastcall TForm7::Edit1Click(TObject *Sender) //запись названия компании

{

 if(Current!=0)//если контейнер создан

{

if(Edit1->Text!="")//если Edit1 не пуст

{

string s=AnsiString(Edit1->Text).c_str();

Current->setName(s);const char *p=(Current->getName()).c_str();Label5->Caption=p; Edit1->Clear();

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