Объектная реализация контейнера на основе комбинированной структуры «Динамический упорядоченный список массивов-стеков»
Автор работы: Пользователь скрыл имя, 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); //загрузка данных с диска
}
}