Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»
Курсовая работа, 13 Декабря 2014, автор: пользователь скрыл имя
Описание работы
Цель работы: получение навыков разработки объектных программ, включая создание набора собственных взаимосвязанных классов для объектной реализации специализированного контейнера. Контейнер предназначен для хранения и обработки данных некоторой информационной задачи. Контейнер представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами – один статически на базе массива (непрерывная реализация), другой – динамически с использованием адресных связей (связная реализация).
Содержание работы
Постановка задачи (цель работы, исходные данные, ожидаемый результат, требования к реализации)……………………………………………………………………………………….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(); //открытие диалогового окна
}