Объектная реализация контейнера на основе комбинированной структуры

Описание основных понятий и механизмов объектно-ориентированного программирования. Исследование демонстрационного модуля с характеристикой использованных стандартных компонентов. Структура проекта и требования к его функциональности, возможности.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.12.2014
Размер файла 240,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

ComboBox1->Clear();

Edit5->Clear();

Edit6->Clear();

Edit7->Clear();

ComboBox2->Clear();

ComboBox3->Clear();

ListBox1->Clear();

ListBox3->Clear();

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

Label4->Caption= «ННН»;

}

}

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

{

Current->~ManagementCompany();

Current=new ManagementCompany();

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=new ManagementCompany();

Edit1->Enabled=true;

Edit4->Enabled=true;

ComboBox1->Enabled=true;

Edit5->Enabled=true;

Edit6->Enabled=true;

Edit7->Enabled=true;

ComboBox2->Enabled=true;

ComboBox3->Enabled=true;

}

}

 // -

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

{

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

{

ComboBox1->Clear();

ComboBox2->Clear();

ComboBox3->Clear();

ListBox1->Clear();

ListBox2->Clear();

ListBox3->Clear();

CheckListBox1->Clear();

Edit1->Clear();

Edit4->Clear();

Edit5->Clear();

Edit6->Clear();

Edit7->Clear();

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

Label4->Caption= «ННН»;

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

{

SWITCH=1;

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

if (P!=0) // проверка на успешность загрузки данных с диска

{

P=0;

const char *p=(Current->getName()).c_str(); // заполнение компонентов загруженными данными

Label5->Caption=p;

while (Current->checkpass())

{

ApartmentHouse *tmp=Current->pass();

int x=tmp->getNumber();

ComboBox3->Items->Add(x);

ComboBox2->Items->Add(x);

ComboBox1->Items->Add(x);

CheckListBox1->Items->Add(x);

tmp->~ApartmentHouse();

}

}

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 («Невозможно загрузить файл»);

}

}

else // если не выполнялись действия над данными

{

if (OpenDialog1->Execute())

{

if (OpenDialog1->FileName!=»»)

{

AnsiString str2 = OpenDialog1->FileName;

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

Current->~ManagementCompany();

Current=new ManagementCompany();

LoadFromFile (Current, s);

if (P!=0) // проверка на успешность загрузки данных с диска

{

P=0;

const char *p=(Current->getName()).c_str(); // заполнение компонентов // загруженными данными

Label5->Caption=p;

while (Current->checkpass())

{

ApartmentHouse *tmp=Current->pass();

int x=tmp->getNumber();

ComboBox3->Items->Add(x);

ComboBox2->Items->Add(x);

ComboBox1->Items->Add(x);

CheckListBox1->Items->Add(x);

tmp->~ApartmentHouse();

}

}

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 («Невозможно загрузить файл»);

}

}

}

}

}

else // если контейнер не создан

{

if (OpenDialog1->Execute())

{

if (OpenDialog1->FileName!=»»)

{

AnsiString str2 = OpenDialog1->FileName;

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

Current=new ManagementCompany();

LoadFromFile (Current, s);

if (P!=0) // проверка на успешность загрузки данных с диска

{

P=0;

const char *p=(Current->getName()).c_str(); // заполнение компонентов // загруженными данными

Label5->Caption=p;

while (Current->checkpass())

{

ApartmentHouse *tmp=Current->pass();

int x=tmp->getNumber();

ComboBox3->Items->Add(x);

ComboBox2->Items->Add(x);

ComboBox1->Items->Add(x);

CheckListBox1->Items->Add(x);

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();

}

}

}

 // -

void __fastcall TForm7: Edit4Click (TObject *Sender) // добавление дома

{

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

{

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

{

try {

int x=StrToInt (Edit4->Text);

Current->Add(x); // добавление

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

ComboBox2->Clear();

ComboBox1->Clear();

CheckListBox1->Clear();

while (Current->checkpass()) // заполнение компонентов загруженными данными

{

ApartmentHouse *tmp=Current->pass();

int x=tmp->getNumber();

ComboBox3->Items->Add(x);

ComboBox2->Items->Add(x);

ComboBox1->Items->Add(x);

CheckListBox1->Items->Add(x);

tmp->~ApartmentHouse();

}

}

catch(…)

{

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

}

Edit4->Clear();

}

}

}

 // -

void __fastcall TForm7: Button2Click (TObject *Sender) // удаление заданного дома

{

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

{

if (ComboBox3->Text!=»»)

{

try {

int x=StrToInt (ComboBox3->Text);

if (Current->checkDel())

{

Current->Del(x); // удаление

}

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

ComboBox2->Clear();

ComboBox1->Clear();

CheckListBox1->Clear();

while (Current->checkpass()) // заполнение компонентов после удаления

{

ApartmentHouse *tmp=Current->pass();

int y=tmp->getNumber();

ComboBox3->Items->Add(y);

ComboBox2->Items->Add(y);

ComboBox1->Items->Add(y);

CheckListBox1->Items->Add(y);

tmp->~ApartmentHouse();

}

if (x==LB1) // очистка компонентов, если в них был выведен удалённый дом

{

ListBox1->Clear();

}

if (x==LB2)

{

ListBox2->Clear();

ListBox3->Clear();

Label4->Caption= «ННН»;

}

}

catch(…)

{

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

}

}

}

}

 // -

void __fastcall TForm7: Button1Click (TObject *Sender) // добавление квартиры в заданный // дом

{

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

{

if (ComboBox1->Text!=» «&&Edit5->Text!=»«&&Edit6->Text!=»»)

{

try {

int x=StrToInt (ComboBox1->Text);

int y=StrToInt (Edit5->Text);

float z=StrToFloat (Edit6->Text);

Current->AddAp (x, y, z); // добавление

int Q=CheckListBox1->Items->Count;

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

{ // если заданный дом отображается в комп-ах, то информация в них обновляется

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

{

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

if (W==x)

{

ApartmentHouse *tmp=0;

tmp=Current->search(W);

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);

}

tmp->~ApartmentHouse();

}

}

break;

}

}

}

catch(…)

{

ShowMessage («Возможен ввод целых чисел (S кв. вещественные)»);

}

}

}

Edit5->Clear();

Edit6->Clear();

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: Button3Click (TObject *Sender) // удаление заданной квартиры из // дома

{

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

{

if (ComboBox2->Text!=» «&&Edit7->Text!=»»)

{

try {

int x=StrToInt (ComboBox2->Text);

int y=StrToInt (Edit7->Text);

Current->DelAp (x, y); // удаление

int Q=CheckListBox1->Items->Count;

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

{ // если заданный дом отображается в комп-ах, то информация в них обновляется

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

{

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

if (W==x)

{

ApartmentHouse *tmp=0;

tmp=Current->search(W);

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);

}

tmp->~ApartmentHouse();

}

}

break;

}

}

}

catch(…)

{

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

}

}

}

Edit7->Clear();

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: CheckListBox1ClickCheck (TObject *Sender) // вывод инф-ии выбранного дома

{

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(); // создание нового контейнера

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

LB2=0;

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

}

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

{

SWITCH=0;

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

Current=0;

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

LB2=0;

}

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

}

 // -

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 TOKRightDlg: FormCloseQuery (TObject *Sender, bool &CanClose)

{

SWITCH=0;

}

 // -

Третий модуль содержит объявление всех разработанных классов и реализацию их методов. К нему подключен файл string из стандартной библиотеки для работы с объектами библиотечного класса string. Объявлена глобальная переменная const int max - задаёт размер массива для стека квартир (класс StackOfApartments).

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

1) Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона (2010)

2) Седжвик Р. Фундаментальные алгоритмы C++. Анализ. Структуры данных. Сортировка. Поиск (2001)

3) Герберт Шилдт - Самоучитель C++

4) Лафоре Р. - Объектно-ориентированное программирование в С++ (4-е изд.) 2004 (2)

5) А.Я. Архангельский - С++ Builder 6 СПРАВОЧНОЕ ПОСОБИЕ Книга 1,2 Язык C++

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.