Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»
Автор работы: Пользователь скрыл имя, 13 Декабря 2014 в 10:49, курсовая работа
Описание работы
Цель работы: получение навыков разработки объектных программ, включая создание набора собственных взаимосвязанных классов для объектной реализации специализированного контейнера. Контейнер предназначен для хранения и обработки данных некоторой информационной задачи. Контейнер представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами – один статически на базе массива (непрерывная реализация), другой – динамически с использованием адресных связей (связная реализация).
Содержание работы
Постановка задачи (цель работы, исходные данные, ожидаемый результат, требования к реализации)……………………………………………………………………………………….2 Теоретическое описание используемых структур данных с алгоритмами реализации основных операций…………………………………………………………….…………….......3 Описание основных понятий и механизмов ООП……………………………………………………………………………………………….9 Описание всех разработанных классов (объектная модель)……………………………...…11 Описание демонстрационного модуля с характеристикой использованных стандартных компонентов……………………………………………………………………………………25 Описание структуры проекта…………………………………………………………………27 Список использованной литературы…………………………………………………………47
Файлы: 1 файл
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();
Информация о работе Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»