Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа (Borland C++ Builder) / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "fstream.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString pathAS;
char* path;
const int Ma = 30;
char per1[Ma];
ofstream outfile;
ifstream infile;
//---------------------------------------------------------------------------
//--------------------АБК----------------------------------------------------
//---------------------------------------------------------------------------
class optic_pribor
{
protected:
AnsiString model, // Модель
firm, // Фирма производитель
country, // Страна производитель
kachestvo; // Качество изображения
int focus, // Фокусное расстояние
masshtab; // Масштаб изображения
public:
//Конструктор по умолчанию//
optic_pribor(){}
//Инициирующий конструктор//
optic_pribor(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh)
: model(mod),
firm(fir),
country(coun),
kachestvo(kach),
focus(fok),
masshtab(massh)
{}
//Конструктор копирования//
Plotters(const optic_pribor&);
void operator = (const optic_pribor&); //Оператор присваивания
bool operator == (const optic_pribor&); //Оператор "Равно"
bool operator != (const optic_pribor&); //Оператор "Не равно"
virtual void print(TMemo*)=0; //Функция вывода на дисплей
virtual void Get_vals(AnsiString*)=0; //Функция для возврата массива со значениями полей класса
virtual void Write_to_file() = 0; //Функция записи в файл
virtual void Read_from_file() = 0; //Функция чтения из файла
~optic_pribor(){} //Деструктор
};
//--------------------Любительские----------------------------------------------
class lubitel : public optic_pribor
{
protected:
AnsiString vid_pribora; // Вид прибора
int optich_sila; // Оптическая сила
public:
lubitel(){}
lubitel(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString v_p,int o_s)
: optic_pribor(mod,fir,coun,kach,fok,massh),
vid_pribora(v_p),
optich_sila(o_s)
{}
void print(TMemo* Memo)
{
Memo->Lines->Add("Модель "+model);
Memo->Lines->Add("Страна производитель "+country);
Memo->Lines->Add("Фирма производитель "+firm);
Memo->Lines->Add("Качество изображения "+kachestvo);
Memo->Lines->Add("Фокусное расстояние "+IntToStr(focus));
Memo->Lines->Add("Масштаб "+IntToStr(masshtab));
Memo->Lines->Add("Вид прибора "+vid_pribora);
Memo->Lines->Add("Оптическая сила "+IntToStr(optich_sila));
}
void Get_vals(AnsiString* ptrd)
{}
~lubitel(){}
};
//--------------------Профессиональные----------------------------------------------
class professional : public optic_pribor
{
protected:
AnsiString tip_pribora; // Тип прибора
int kol_linz; // Количество линз
public:
professional(){}
professional(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString t_p,int k_l)
: optic_pribor(mod,fir,coun,kach,fok,massh),
tip_pribora(t_p),
kol_linz(k_l)
{}
void print(TMemo* Memo)
{
Memo->Lines->Add("Модель "+model);
Memo->Lines->Add("Страна производитель "+country);
Memo->Lines->Add("Фирма производитель "+firm);
Memo->Lines->Add("Качество изображения "+kachestvo);
Memo->Lines->Add("Фокусное расстояние "+IntToStr(focus));
Memo->Lines->Add("Масштаб "+IntToStr(masshtab));
Memo->Lines->Add("Тип прибора "+tip_pribora);
Memo->Lines->Add("Количество линз "+IntToStr(kol_linz));
}
void Get_vals(AnsiString* ptrd)
{}
~professional(){}
};
//--------------------Очки----------------------------------------------
class ochki : public lubitel
{
protected:
int chuvstvitelnost; // Чувствительность
public:
ochki(){};
ochki(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString v_p,int o_s,int chu)
: lubitel(mod,fir,coun,kach,fok,massh,v_p,o_s),
chuvstvitelnost(chu)
{}
ochki(const ochki& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
chuvstvitelnost = obj.chuvstvitelnost;
}
void operator = (const ochki& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
chuvstvitelnost = obj.chuvstvitelnost;
}
bool operator == (const ochki& obj)
{
if((model == obj.model)&&(firm == obj.firm)&&
(country == obj.country)&&(kachestvo == obj.kachestvo)&&
(focus == obj.focus)&&(masshtab == obj.masshtab )&&
(vid_pribora == obj.vid_pribora)&&(optich_sila == obj.optich_sila)&&
(chuvstvitelnost == obj.chuvstvitelnost)) return true;
else return false;
}
bool operator != (const ochki& obj)
{if(*(this)==obj) return false; else return true;};
void print(TMemo* Memo)
{
Memo->Lines->Add("=============================================");
Memo->Lines->Add("================Класс очки===================");
Memo->Lines->Add("=============================================");
lubitel::print(Memo);
Memo->Lines->Add("Чувствительность "+IntToStr(chuvstvitelnost));
Memo->Lines->Add("=============================================");
Memo->Lines->Add("");
Memo->Lines->Add("");
}
void Get_vals(AnsiString* ptrd)
{
ptrd[0] = model;
ptrd[1] = firm;
ptrd[2] = country;
ptrd[3] = kachestvo;
ptrd[4] = IntToStr(focus);
ptrd[5] = IntToStr(masshtab);
ptrd[6] = vid_pribora;
ptrd[7] = IntToStr(optich_sila);
ptrd[8] = IntToStr(chuvstvitelnost);
}
void Write_to_file()
{
outfile
<<model.c_str()<<endl
<<firm.c_str()<<endl
<<country.c_str()<<endl
<<kachestvo.c_str()<<endl
<<focus<<endl
<<masshtab<<endl
<<vid_pribora.c_str()<<endl
<<optich_sila<<endl
<<chuvstvitelnost<<endl;
}
void Read_from_file()
{
infile.getline(per1,Ma);
model = per1;
infile.getline(per1,Ma);
firm = per1;
infile.getline(per1,Ma);
country = per1;
infile.getline(per1,Ma);
kachestvo = per1;
infile.getline(per1,Ma);
focus = StrToInt(per1);
infile.getline(per1,Ma);
masshtab = StrToInt(per1);
infile.getline(per1,Ma);
vid_pribora = per1;
infile.getline(per1,Ma);
optich_sila = StrToInt(per1);
infile.getline(per1,Ma);
chuvstvitelnost = StrToInt(per1);
}
~ochki(){}
};
//--------------------Лупы----------------------------------------------
class lupa : public lubitel
{
protected:
AnsiString tip_lupi, // Тип лупы
character_uvel; // Характер увеличения
public:
lupa(){}
lupa(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString v_p,int o_s,AnsiString t_l,AnsiString c_u)
: lubitel(mod,fir,coun,kach,fok,massh,v_p,o_s),
tip_lupi(t_l),
character_uvel(c_u)
{}
lupa(const lupa& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
tip_lupi = obj.tip_lupi; character_uvel = obj.character_uvel;
}
void operator = (const lupa& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
tip_lupi = obj.tip_lupi; character_uvel = obj.character_uvel;
}
bool operator == (const lupa& obj)
{
if((model == obj.model)&&(firm == obj.firm)&&
(country == obj.country)&&(kachestvo == obj.kachestvo)&&
(focus == obj.focus)&&(masshtab == obj.masshtab )&&
(vid_pribora == obj.vid_pribora)&&(optich_sila == obj.optich_sila)&&
(tip_lupi == obj.tip_lupi)&&(character_uvel == obj.character_uvel)) return true;
else return false;
}
bool operator != (const lupa& obj)
{if(*(this)==obj) return false; else return true;};
void print(TMemo* Memo)
{
Memo->Lines->Add("=============================================");
Memo->Lines->Add("==================Класс лупы=================");
Memo->Lines->Add("=============================================");
lubitel::print(Memo);
Memo->Lines->Add("Тип лупы "+tip_lupi);
Memo->Lines->Add("Характер увеличения "+character_uvel);
Memo->Lines->Add("=============================================");
Memo->Lines->Add("");
Memo->Lines->Add("");
}
void Get_vals(AnsiString* ptrd)
{
ptrd[0] = model;
ptrd[1] = firm;
ptrd[2] = country;
ptrd[3] = kachestvo;
ptrd[4] = IntToStr(focus);
ptrd[5] = IntToStr(masshtab);
ptrd[6] = vid_pribora;
ptrd[7] = IntToStr(optich_sila);
ptrd[8] = tip_lupi;
ptrd[9] = character_uvel;
}
void Write_to_file()
{
outfile
<<model.c_str()<<endl
<<firm.c_str()<<endl
<<country.c_str()<<endl
<<kachestvo.c_str()<<endl
<<focus<<endl
<<masshtab<<endl
<<vid_pribora.c_str()<<endl
<<optich_sila<<endl
<<tip_lupi.c_str()<<endl
<<character_uvel.c_str()<<endl;
}
void Read_from_file()
{
infile.getline(per1,Ma);
model = per1;
infile.getline(per1,Ma);
firm = per1;
infile.getline(per1,Ma);
country = per1;
infile.getline(per1,Ma);
kachestvo = per1;
infile.getline(per1,Ma);
focus = StrToInt(per1);
infile.getline(per1,Ma);
masshtab = StrToInt(per1);
infile.getline(per1,Ma);
vid_pribora = per1;
infile.getline(per1,Ma);
optich_sila = StrToInt(per1);
infile.getline(per1,Ma);
tip_lupi = per1;
infile.getline(per1,Ma);
character_uvel = per1;
}
~lupa(){}
};
//--------------------Бинокли----------------------------------------------
class binocular : public lubitel
{
protected:
int radius_priblizh; // Радиус приближения
public:
binocular(){}
binocular(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString v_p,int o_s,int r_p)
: lubitel(mod,fir,coun,kach,fok,massh,v_p,o_s),
radius_priblizh(r_p)
{}
binocular(const binocular& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
radius_priblizh = obj.radius_priblizh;
}
void operator = (const binocular& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
vid_pribora = obj.vid_pribora; optich_sila = obj.optich_sila;
radius_priblizh = obj.radius_priblizh;
}
bool operator == (const binocular& obj)
{
if((model == obj.model)&&(firm == obj.firm)&&
(country == obj.country)&&(kachestvo == obj.kachestvo)&&
(focus == obj.focus)&&(masshtab == obj.masshtab )&&
(vid_pribora == obj.vid_pribora)&&(optich_sila == obj.optich_sila)&&
(radius_priblizh == obj.radius_priblizh)) return true;
else return false;
}
bool operator != (const binocular& obj)
{if(*(this)==obj) return false; else return true;};
void print(TMemo* Memo)
{
Memo->Lines->Add("=============================================");
Memo->Lines->Add("================Класс бинокли================");
Memo->Lines->Add("=============================================");
lubitel::print(Memo);
Memo->Lines->Add("Радиус приближения "+IntToStr(radius_priblizh));
Memo->Lines->Add("=============================================");
Memo->Lines->Add("");
Memo->Lines->Add("");
}
void Get_vals(AnsiString* ptrd)
{
ptrd[0] = model;
ptrd[1] = firm;
ptrd[2] = country;
ptrd[3] = kachestvo;
ptrd[4] = IntToStr(focus);
ptrd[5] = IntToStr(masshtab);
ptrd[6] = vid_pribora;
ptrd[7] = IntToStr(optich_sila);
ptrd[8] = IntToStr(radius_priblizh);
}
void Write_to_file()
{
outfile
<<model.c_str()<<endl
<<firm.c_str()<<endl
<<country.c_str()<<endl
<<kachestvo.c_str()<<endl
<<focus<<endl
<<masshtab<<endl
<<vid_pribora.c_str()<<endl
<<optich_sila<<endl
<<radius_priblizh<<endl;
}
void Read_from_file()
{
infile.getline(per1,Ma);
model = per1;
infile.getline(per1,Ma);
firm = per1;
infile.getline(per1,Ma);
country = per1;
infile.getline(per1,Ma);
kachestvo = per1;
infile.getline(per1,Ma);
focus = StrToInt(per1);
infile.getline(per1,Ma);
masshtab = StrToInt(per1);
infile.getline(per1,Ma);
vid_pribora = per1;
infile.getline(per1,Ma);
optich_sila = StrToInt(per1);
infile.getline(per1,Ma);
radius_priblizh = StrToInt(per1);
}
~binocular(){}
};
//--------------------Телескопы----------------------------------------------
class telescop : public professional
{
protected:
int max_rast_to_obj; // Максимальное расстояние до объекта
public:
telescop(){}
telescop(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString t_p,int k_l,int m_r_o)
: professional(mod,fir,coun,kach,fok,massh,t_p,k_l),
max_rast_to_obj(m_r_o)
{}
telescop(const telescop& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
tip_pribora = obj.tip_pribora; kol_linz = obj.kol_linz;
max_rast_to_obj = obj.max_rast_to_obj;
}
void operator = (const telescop& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
tip_pribora = obj.tip_pribora; kol_linz = obj.kol_linz;
max_rast_to_obj = obj.max_rast_to_obj;
}
bool operator == (const telescop& obj)
{
if((model == obj.model)&&(firm == obj.firm)&&
(country == obj.country)&&(kachestvo == obj.kachestvo)&&
(focus == obj.focus)&&(masshtab == obj.masshtab )&&
(tip_pribora == obj.tip_pribora)&&(kol_linz == obj.kol_linz)&&
(max_rast_to_obj == obj.max_rast_to_obj)) return true;
else return false;
}
bool operator != (const telescop& obj)
{if(*(this)==obj) return false; else return true;};
void print(TMemo* Memo)
{
Memo->Lines->Add("=============================================");
Memo->Lines->Add("==============Класс телескопы================");
Memo->Lines->Add("=============================================");
professional::print(Memo);
Memo->Lines->Add("Максимальное расстояние до объекта "+IntToStr(max_rast_to_obj));
Memo->Lines->Add("=============================================");
Memo->Lines->Add("");
Memo->Lines->Add("");
}
void Get_vals(AnsiString* ptrd)
{
ptrd[0] = model;
ptrd[1] = firm;
ptrd[2] = country;
ptrd[3] = kachestvo;
ptrd[4] = IntToStr(focus);
ptrd[5] = IntToStr(masshtab);
ptrd[6] = tip_pribora;
ptrd[7] = IntToStr(kol_linz);
ptrd[8] = IntToStr(max_rast_to_obj);
}
void Write_to_file()
{
outfile
<<model.c_str()<<endl
<<firm.c_str()<<endl
<<country.c_str()<<endl
<<kachestvo.c_str()<<endl
<<focus<<endl
<<masshtab<<endl
<<tip_pribora.c_str()<<endl
<<kol_linz<<endl
<<max_rast_to_obj<<endl;
}
void Read_from_file()
{
infile.getline(per1,Ma);
model = per1;
infile.getline(per1,Ma);
firm = per1;
infile.getline(per1,Ma);
country = per1;
infile.getline(per1,Ma);
kachestvo = per1;
infile.getline(per1,Ma);
focus = StrToInt(per1);
infile.getline(per1,Ma);
masshtab = StrToInt(per1);
infile.getline(per1,Ma);
tip_pribora = per1;
infile.getline(per1,Ma);
kol_linz = StrToInt(per1);
infile.getline(per1,Ma);
max_rast_to_obj = StrToInt(per1);
}
~telescop(){}
};
//--------------------Микроскопы----------------------------------------------
class microscop : public professional
{
protected:
int kratnost_uvel; // Кратность увеличения
public:
microscop(){};
microscop(AnsiString mod,AnsiString fir,AnsiString coun,AnsiString kach,int fok,int massh,AnsiString t_p,int k_l,int kra)
: professional(mod,fir,coun,kach,fok,massh,t_p,k_l),
kratnost_uvel(kra)
{}
microscop(const microscop& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
tip_pribora = obj.tip_pribora; kol_linz = obj.kol_linz;
kratnost_uvel = obj.kratnost_uvel;
}
void operator = (const microscop& obj)
{
model = obj.model; firm = obj.firm;
country = obj.country; kachestvo = obj.kachestvo;
focus = obj.focus; masshtab = obj.masshtab;
tip_pribora = obj.tip_pribora; kol_linz = obj.kol_linz;
kratnost_uvel = obj.kratnost_uvel;
}
bool operator == (const microscop& obj)
{
if((model == obj.model)&&(firm == obj.firm)&&
(country == obj.country)&&(kachestvo == obj.kachestvo)&&
(focus == obj.focus)&&(masshtab == obj.masshtab )&&
(tip_pribora == obj.tip_pribora)&&(kol_linz == obj.kol_linz)&&
(kratnost_uvel == obj.kratnost_uvel)) return true;
else return false;
}
bool operator != (const microscop& obj)
{if(*(this)==obj) return false; else return true;};
void print(TMemo* Memo)
{
Memo->Lines->Add("=============================================");
Memo->Lines->Add("==============Класс микроскопы===============");
Memo->Lines->Add("=============================================");
professional::print(Memo);
Memo->Lines->Add("Кратность увеличения "+IntToStr(kratnost_uvel));
Memo->Lines->Add("=============================================");
Memo->Lines->Add("");
Memo->Lines->Add("");
}
void Get_vals(AnsiString* ptrd)
{
ptrd[0] = model;
ptrd[1] = firm;
ptrd[2] = country;
ptrd[3] = kachestvo;
ptrd[4] = IntToStr(focus);
ptrd[5] = IntToStr(masshtab);
ptrd[6] = tip_pribora;
ptrd[7] = IntToStr(kol_linz);
ptrd[8] = IntToStr(kratnost_uvel);
}
void Write_to_file()
{
outfile
<<model.c_str()<<endl
<<firm.c_str()<<endl
<<country.c_str()<<endl
<<kachestvo.c_str()<<endl
<<focus<<endl
<<masshtab<<endl
<<tip_pribora.c_str()<<endl
<<kol_linz<<endl
<<kratnost_uvel<<endl;
}
void Read_from_file()
{
infile.getline(per1,Ma);
model = per1;
infile.getline(per1,Ma);
firm = per1;
infile.getline(per1,Ma);
country = per1;
infile.getline(per1,Ma);
kachestvo = per1;
infile.getline(per1,Ma);
focus = StrToInt(per1);
infile.getline(per1,Ma);
masshtab = StrToInt(per1);
infile.getline(per1,Ma);
tip_pribora = per1;
infile.getline(per1,Ma);
kol_linz = StrToInt(per1);
infile.getline(per1,Ma);
kratnost_uvel = StrToInt(per1);
}
~microscop(){};
};
/*========================================================*/
/*============Обобщенный контейнерный класс===============*/
/*========================================================*/
class Stack1
{
private:
void* data;
AnsiString name;
Stack1 *head, *next;
public:
Stack1()
{
head = next = NULL;
}
void Add_elem_head(void* x, AnsiString n)
{
Stack1 *el;
el = new Stack1;
el->data = x;
el->name = n;
if (head == NULL)
{
el->next = NULL;
head = el;
} else
{
el->next = head;
head = el;
}
}
void Delete_elem_head()
{
if(head!=NULL)
head = head->next;
}
void Set_data(void* x, AnsiString nname)
{
bool flag = true;
Stack1 *hhead;
hhead = head;
if (head ==NULL) Add_elem_head(x,nname);
else
while (hhead !=NULL)
{
if(hhead->name == nname)
{
hhead->data = x;
flag = false;
}
hhead = hhead->next;
}
if (flag) Add_elem_head(x,nname);
}
void* Get_data(AnsiString nname)
{
Stack1 *hhead;
hhead = head;
while (hhead !=NULL)
{
if(hhead->name == nname)
{
return hhead->data;
}
hhead = hhead->next;
}
return NULL;
}
~Stack1(){};
};
/*========================================================*/
/*========Шаблон для хранения указателей на АБК===========*/
/*========================================================*/
template <class T>
class Stack :private Stack1
{
public:
Stack()
{Stack1::Stack1();}
void Add_elem_head(T x, AnsiString n)
{Stack1::Add_elem_head(reinterpret_cast<void*>(x),n);}
void Delete_elem_head()
{Stack1::Delete_elem_head();}
void Set_data(T x, AnsiString n)
{Stack1::Set_data(reinterpret_cast<void*>(x),n);}
T Get_data(AnsiString nname)
{
if (Stack1::Get_data(nname) != NULL)
return reinterpret_cast<T>(Stack1::Get_data(nname));
else
{ dyn_vect* obj=new dyn_vect;
return reinterpret_cast<T>(obj);
}
}
~Stack(){};
};
//--------------------------------------------
//-----------Динамический вектор--------------
//--------------------------------------------
const MAX = 100;
class dyn_vect
{
private:
long size;
optic_pribor** arr;
public:
dyn_vect(long s = MAX): size(s)
{
arr = new optic_pribor*[size];
if(!arr) ShowMessage("Ошибка при создании массива!");
}
void Set_one(optic_pribor* x, int num)
{
arr[num] = x;
}
long length () const {return size;}
dyn_vect(const dyn_vect& arrr)
{
size = arrr.size;
arr = new optic_pribor*[size];
for(int i = 0; i<size; i++)
arr[i] = arrr.arr[i];
}
dyn_vect& operator=(const dyn_vect& arrr)
{
if (this != &arrr)
{
size = arrr.size;
if (arr) delete[] arr;
arr = new optic_pribor*[size];
for(int i = 0; i<size; i++)
arr[i] = arrr.arr[i];
}
return *this;
}
void orderVoz(int k, int l, int num, char typ)
{
AnsiString mas1[11];
AnsiString mas2[11];
this->arr[k]->Get_vals(mas1);
this->arr[l]->Get_vals(mas2);
switch(typ)
{
case 'i':
{
if (StrToInt(mas1[num])>StrToInt(mas2[num]))
{
optic_pribor* temp;
temp = this->arr[k];
this->arr[k] = this->arr[l];
this->arr[l] = temp;
}
} break;
case 'a':
{
if (mas1[num]>mas2[num])
{
optic_pribor* temp;
temp = this->arr[k];
this->arr[k] = this->arr[l];
this->arr[l] = temp;
}
} break;
}
}
void orderUb(int k, int l, int num, char typ)
{
AnsiString mas1[11];
AnsiString mas2[11];
this->arr[k]->Get_vals(mas1);
this->arr[l]->Get_vals(mas2);
switch(typ)
{
case 'i':
{
if (StrToInt(mas1[num])<StrToInt(mas2[num]))
{
optic_pribor* temp;
temp = this->arr[k];
this->arr[k] = this->arr[l];
this->arr[l] = temp;
}
} break;
case 'a':
{
if (mas1[num]<mas2[num])
{
optic_pribor* temp;
temp = this->arr[k];
this->arr[k] = this->arr[l];
this->arr[l] = temp;
}
} break;
}
}
void bsortUb(int razm, int numm, char typp)
{
for(int i=0; i<razm-1; i++)
for(int j=i+1; j<razm; j++)
orderUb(i,j,numm,typp);
}
void bsort(int razm, int numm, char typp)
{
for(int i=0; i<razm-1; i++)
for(int j=i+1; j<razm; j++)
orderVoz(i,j,numm,typp);
}
void find(AnsiString findd, TMemo* Memo, int razm, int num, char typ)
{
AnsiString mas1[11];
for(int k=0; k<razm; k++)
{
this->arr[k]->Get_vals(mas1);
switch(typ)
{
case 'i':
{
if (StrToInt(mas1[num])==StrToInt(findd))
{this->arr[k]->print(Memo);}
} break;
case 'a':
{
if (mas1[num]==findd)
{this->arr[k]->print(Memo);}
} break;
}
}
}
void find_Diap(AnsiString find_from, AnsiString find_to, TMemo* Memo, int razm, int num, char typ)
{
AnsiString mas1[11];
for(int k=0; k<razm; k++)
{
this->arr[k]->Get_vals(mas1);
switch(typ)
{
case 'i':
{
if ((StrToInt(find_from)<=StrToInt(mas1[num]))&&
(StrToInt(mas1[num])<=StrToInt(find_to)))
{this->arr[k]->print(Memo);}
} break;
case 'a':
{
if ((find_from<=mas1[num])&&(mas1[num]<=find_to))
{this->arr[k]->print(Memo);}
} break;
}
}
}
optic_pribor* operator[](long n) const
{
if(n<0||n>MAX) exit(0);
return arr[n];
}
~dyn_vect(){};
};
dyn_vect dyn_vect_och,dyn_vect_lup,dyn_vect_bin,dyn_vect_tel,dyn_vect_mic;
int kol_och,kol_lup,kol_bin,kol_tel,kol_mic;
Stack<dyn_vect*> MyStack;
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
switch (ListBox1->ItemIndex)
{
case 0:{
GroupBox1->Visible = true;
GroupBox2->Visible = true;
GroupBox3->Visible = false;
GroupBox4->Visible = true;
GroupBox5->Visible = false;
GroupBox6->Visible = false;
GroupBox7->Visible = false;
GroupBox8->Visible = false;
} break;
case 1:{
GroupBox1->Visible = true;
GroupBox2->Visible = true;
GroupBox3->Visible = false;
GroupBox4->Visible = false;
GroupBox5->Visible = true;
GroupBox6->Visible = false;
GroupBox7->Visible = false;
GroupBox8->Visible = false;
} break;
case 2:{
GroupBox1->Visible = true;
GroupBox2->Visible = true;
GroupBox3->Visible = false;
GroupBox4->Visible = false;
GroupBox5->Visible = false;
GroupBox6->Visible = true;
GroupBox7->Visible = false;
GroupBox8->Visible = false;
} break;
case 3:{
GroupBox1->Visible = true;
GroupBox2->Visible = false;
GroupBox3->Visible = true;
GroupBox4->Visible = false;
GroupBox5->Visible = false;
GroupBox6->Visible = false;
GroupBox7->Visible = true;
GroupBox8->Visible = false;
} break;
case 4:{
GroupBox1->Visible = true;
GroupBox2->Visible = false;
GroupBox3->Visible = true;
GroupBox4->Visible = false;
GroupBox5->Visible = false;
GroupBox6->Visible = false;
GroupBox7->Visible = false;
GroupBox8->Visible = true;
} break;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
if ((Edit1->Text != "")&&(Edit3->Text != "")&&(Edit2->Text != "")&&
(ComboBox1->Text != "")&&(Edit4->Text != "")&&
(Edit5->Text != "")&&(Edit6->Text != "")&&
(Edit7->Text != "")&&(Edit10->Text != ""))
{
ochki* ob1=new ochki(Edit1->Text,Edit3->Text,Edit2->Text,
ComboBox1->Text,StrToInt(Edit4->Text),
StrToInt(Edit5->Text),Edit6->Text,
StrToInt(Edit7->Text),StrToInt(Edit10->Text));
dyn_vect_och.Set_one(ob1,kol_och);
MyStack.Set_data(&dyn_vect_och,"ochki");
kol_och++;
Application->MessageBox("Добавление успешно.","Добавление",MB_OK);
} else Application->MessageBox("Необходимо заполнить все поля!","Ошибка ввода",MB_ICONHAND+MB_OK);
}
catch(EConvertError&)
{Application->MessageBox("Проверьте правльность ввода данных!","Ошибка типов",MB_ICONHAND+MB_OK);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
try
{
if ((Edit1->Text != "")&&(Edit3->Text != "")&&(Edit2->Text != "")&&
(ComboBox1->Text != "")&&(Edit4->Text != "")&&
(Edit5->Text != "")&&(Edit6->Text != "")&&
(Edit7->Text != "")&&(Edit11->Text != "")&&(Edit12->Text != ""))
{
lupa* ob1=new lupa(Edit1->Text,Edit3->Text,Edit2->Text,
ComboBox1->Text,StrToInt(Edit4->Text),
StrToInt(Edit5->Text),Edit6->Text,
StrToInt(Edit7->Text),Edit11->Text,
Edit12->Text);
dyn_vect_lup.Set_one(ob1,kol_lup);
MyStack.Set_data(&dyn_vect_lup,"lupa");
Application->MessageBox("Добавление успешно.","Добавление",MB_OK);
kol_lup++;
} else Application->MessageBox("Необходимо заполнить все поля!","Ошибка ввода",MB_ICONHAND+MB_OK);
}
catch(EConvertError&)
{Application->MessageBox("Проверьте правльность ввода данных!","Ошибка типов",MB_ICONHAND+MB_OK);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
try
{
if ((Edit1->Text != "")&&(Edit3->Text != "")&&(Edit2->Text != "")&&
(ComboBox1->Text != "")&&(Edit4->Text != "")&&
(Edit5->Text != "")&&(Edit6->Text != "")&&
(Edit7->Text != "")&&(Edit13->Text != ""))
{
binocular* ob1=new binocular(Edit1->Text,Edit3->Text,Edit2->Text,
ComboBox1->Text,StrToInt(Edit4->Text),
StrToInt(Edit5->Text),Edit6->Text,
StrToInt(Edit7->Text),StrToInt(Edit13->Text));
dyn_vect_bin.Set_one(ob1,kol_bin);
MyStack.Set_data(&dyn_vect_bin,"binokular");
Application->MessageBox("Добавление успешно.","Добавление",MB_OK);
kol_bin++;
} else Application->MessageBox("Необходимо заполнить все поля!","Ошибка ввода",MB_ICONHAND+MB_OK);
}
catch(EConvertError&)
{Application->MessageBox("Проверьте правльность ввода данных!","Ошибка типов",MB_ICONHAND+MB_OK);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
try
{
if ((Edit1->Text != "")&&(Edit3->Text != "")&&(Edit2->Text != "")&&
(ComboBox1->Text != "")&&(Edit4->Text != "")&&
(Edit5->Text != "")&&(Edit8->Text != "")&&
(Edit9->Text != "")&&(Edit14->Text != ""))
{
telescop* ob1=new telescop(Edit1->Text,Edit3->Text,Edit2->Text,
ComboBox1->Text,StrToInt(Edit4->Text),
StrToInt(Edit5->Text),Edit8->Text,
StrToInt(Edit9->Text),StrToInt(Edit14->Text));
dyn_vect_tel.Set_one(ob1,kol_tel);
MyStack.Set_data(&dyn_vect_tel,"telescop");
Application->MessageBox("Добавление успешно.","Добавление",MB_OK);
kol_tel++;
} else Application->MessageBox("Необходимо заполнить все поля!","Ошибка ввода",MB_ICONHAND+MB_OK);
}
catch(EConvertError&)
{Application->MessageBox("Проверьте правльность ввода данных!","Ошибка типов",MB_ICONHAND+MB_OK);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
try
{
if ((Edit1->Text != "")&&(Edit3->Text != "")&&(Edit2->Text != "")&&
(ComboBox1->Text != "")&&(Edit4->Text != "")&&
(Edit5->Text != "")&&(Edit8->Text != "")&&
(Edit9->Text != "")&&(Edit15->Text != ""))
{
microscop* ob1=new microscop(Edit1->Text,Edit3->Text,Edit2->Text,
ComboBox1->Text,StrToInt(Edit4->Text),
StrToInt(Edit5->Text),Edit8->Text,
StrToInt(Edit9->Text),StrToInt(Edit15->Text));
dyn_vect_mic.Set_one(ob1,kol_mic);
MyStack.Set_data(&dyn_vect_mic,"microscop");
Application->MessageBox("Добавление успешно.","Добавление",MB_OK);
kol_mic++;
} else Application->MessageBox("Необходимо заполнить все поля!","Ошибка ввода",MB_ICONHAND+MB_OK);
}
catch(EConvertError&)
{Application->MessageBox("Проверьте правльность ввода данных!","Ошибка типов",MB_ICONHAND+MB_OK);}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListBox2->ItemIndex=0;
Form1->ListBox2Click(Form1);
kol_och = 0;
kol_lup = 0;
kol_bin = 0;
kol_tel = 0;
kol_mic = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox2Click(TObject *Sender)
{
switch (ListBox2->ItemIndex)
{
case 0:{
ComboBox2->Items->Clear();
ComboBox2->Items->Add("Модель");
ComboBox2->Items->Add("Страна производитель");
ComboBox2->Items->Add("Фирма производитель");
ComboBox2->Items->Add("Фокусное расстояние");
ComboBox2->Items->Add("Масштаб изображения");
ComboBox2->Items->Add("Качество изображения");
ComboBox2->Items->Add("Вид прибора");
ComboBox2->Items->Add("Оптическая сила");
ComboBox2->Items->Add("Чувствительность");
} break;
case 1:{
ComboBox2->Items->Clear();
ComboBox2->Items->Add("Модель");
ComboBox2->Items->Add("Страна производитель");
ComboBox2->Items->Add("Фирма производитель");
ComboBox2->Items->Add("Фокусное расстояние");
ComboBox2->Items->Add("Масштаб изображения");
ComboBox2->Items->Add("Качество изображения");
ComboBox2->Items->Add("Вид прибора");
ComboBox2->Items->Add("Оптическая сила");
ComboBox2->Items->Add("Тип лупы");
ComboBox2->Items->Add("Характер увеличения");
} break;
case 2:{
ComboBox2->Items->Clear();
ComboBox2->Items->Add("Модель");
ComboBox2->Items->Add("Страна производитель");
ComboBox2->Items->Add("Фирма производитель");
ComboBox2->Items->Add("Фокусное расстояние");
ComboBox2->Items->Add("Масштаб изображения");
ComboBox2->Items->Add("Качество изображения");
ComboBox2->Items->Add("Вид прибора");
ComboBox2->Items->Add("Оптическая сила");
ComboBox2->Items->Add("Радиус приближения");
} break;
case 3:{
ComboBox2->Items->Clear();
ComboBox2->Items->Add("Модель");
ComboBox2->Items->Add("Страна производитель");
ComboBox2->Items->Add("Фирма производитель");
ComboBox2->Items->Add("Фокусное расстояние");
ComboBox2->Items->Add("Масштаб изображения");
ComboBox2->Items->Add("Качество изображения");
ComboBox2->Items->Add("Тип прибора");
ComboBox2->Items->Add("Количество линз");
ComboBox2->Items->Add("Расстояние до объекта");
} break;
case 4:{
ComboBox2->Items->Clear();
ComboBox2->Items->Add("Модель");
ComboBox2->Items->Add("Страна производитель");
ComboBox2->Items->Add("Фирма производитель");
ComboBox2->Items->Add("Фокусное расстояние");
ComboBox2->Items->Add("Масштаб изображения");
ComboBox2->Items->Add("Качество изображения");
ComboBox2->Items->Add("Тип прибора");
ComboBox2->Items->Add("Количество линз");
ComboBox2->Items->Add("Кратность увеличения");
} break;
};
ComboBox2->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
if (RadioGroup1->ItemIndex == 0)
switch (ListBox2->ItemIndex)
{
case 0:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_och.bsort(kol_och,0,'a'); break;
case 1: dyn_vect_och.bsort(kol_och,2,'a'); break;
case 2: dyn_vect_och.bsort(kol_och,1,'a'); break;
case 3: dyn_vect_och.bsort(kol_och,4,'i'); break;
case 4: dyn_vect_och.bsort(kol_och,5,'i'); break;
case 5: dyn_vect_och.bsort(kol_och,3,'a'); break;
case 6: dyn_vect_och.bsort(kol_och,6,'a'); break;
case 7: dyn_vect_och.bsort(kol_och,7,'i'); break;
case 8: dyn_vect_och.bsort(kol_och,8,'i'); break;
};
Memo2->Clear();
dyn_vect_och = *MyStack.Get_data("ochki");
for(int i = 0; i<kol_och; i++)
dyn_vect_och[i]->print(Memo2);
} break;
case 1:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_lup.bsort(kol_lup,0,'a'); break;
case 1: dyn_vect_lup.bsort(kol_lup,2,'a'); break;
case 2: dyn_vect_lup.bsort(kol_lup,1,'a'); break;
case 3: dyn_vect_lup.bsort(kol_lup,4,'i'); break;
case 4: dyn_vect_lup.bsort(kol_lup,5,'i'); break;
case 5: dyn_vect_lup.bsort(kol_lup,3,'a'); break;
case 6: dyn_vect_lup.bsort(kol_lup,6,'a'); break;
case 7: dyn_vect_lup.bsort(kol_lup,7,'i'); break;
case 8: dyn_vect_lup.bsort(kol_lup,8,'a'); break;
case 9: dyn_vect_lup.bsort(kol_lup,9,'a'); break;
};
Memo2->Clear();
dyn_vect_lup = *MyStack.Get_data("lupa");
for(int i = 0; i<kol_lup; i++)
dyn_vect_lup[i]->print(Memo2);
} break;
case 2:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_bin.bsort(kol_bin,0,'a'); break;
case 1: dyn_vect_bin.bsort(kol_bin,2,'a'); break;
case 2: dyn_vect_bin.bsort(kol_bin,1,'a'); break;
case 3: dyn_vect_bin.bsort(kol_bin,4,'i'); break;
case 4: dyn_vect_bin.bsort(kol_bin,5,'i'); break;
case 5: dyn_vect_bin.bsort(kol_bin,3,'a'); break;
case 6: dyn_vect_bin.bsort(kol_bin,6,'a'); break;
case 7: dyn_vect_bin.bsort(kol_bin,7,'i'); break;
case 8: dyn_vect_bin.bsort(kol_bin,8,'i'); break;
};
Memo2->Clear();
dyn_vect_bin = *MyStack.Get_data("binokular");
for(int i = 0; i<kol_bin; i++)
dyn_vect_bin[i]->print(Memo2);
} break;
case 3:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_tel.bsort(kol_tel,0,'a'); break;
case 1: dyn_vect_tel.bsort(kol_tel,2,'a'); break;
case 2: dyn_vect_tel.bsort(kol_tel,1,'a'); break;
case 3: dyn_vect_tel.bsort(kol_tel,4,'i'); break;
case 4: dyn_vect_tel.bsort(kol_tel,5,'i'); break;
case 5: dyn_vect_tel.bsort(kol_tel,3,'a'); break;
case 6: dyn_vect_tel.bsort(kol_tel,6,'a'); break;
case 7: dyn_vect_tel.bsort(kol_tel,7,'i'); break;
case 8: dyn_vect_tel.bsort(kol_tel,8,'i'); break;
};
Memo2->Clear();
dyn_vect_tel = *MyStack.Get_data("telescop");
for(int i = 0; i<kol_tel; i++)
dyn_vect_tel[i]->print(Memo2);
} break;
case 4:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_mic.bsort(kol_mic,0,'a'); break;
case 1: dyn_vect_mic.bsort(kol_mic,2,'a'); break;
case 2: dyn_vect_mic.bsort(kol_mic,1,'a'); break;
case 3: dyn_vect_mic.bsort(kol_mic,4,'i'); break;
case 4: dyn_vect_mic.bsort(kol_mic,5,'i'); break;
case 5: dyn_vect_mic.bsort(kol_mic,3,'a'); break;
case 6: dyn_vect_mic.bsort(kol_mic,6,'a'); break;
case 7: dyn_vect_mic.bsort(kol_mic,7,'i'); break;
case 8: dyn_vect_mic.bsort(kol_mic,8,'i'); break;
};
Memo2->Clear();
dyn_vect_mic = *MyStack.Get_data("microscop");
for(int i = 0; i<kol_mic; i++)
dyn_vect_mic[i]->print(Memo2);
} break;
};
if (RadioGroup1->ItemIndex == 1)
switch (ListBox2->ItemIndex)
{
case 0:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_och.bsortUb(kol_och,0,'a'); break;
case 1: dyn_vect_och.bsortUb(kol_och,2,'a'); break;
case 2: dyn_vect_och.bsortUb(kol_och,1,'a'); break;
case 3: dyn_vect_och.bsortUb(kol_och,4,'i'); break;
case 4: dyn_vect_och.bsortUb(kol_och,5,'i'); break;
case 5: dyn_vect_och.bsortUb(kol_och,3,'a'); break;
case 6: dyn_vect_och.bsortUb(kol_och,6,'a'); break;
case 7: dyn_vect_och.bsortUb(kol_och,7,'i'); break;
case 8: dyn_vect_och.bsortUb(kol_och,8,'i'); break;
};
Memo2->Clear();
dyn_vect_och = *MyStack.Get_data("ochki");
for(int i = 0; i<kol_och; i++)
dyn_vect_och[i]->print(Memo2);
} break;
case 1:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_lup.bsortUb(kol_lup,0,'a'); break;
case 1: dyn_vect_lup.bsortUb(kol_lup,2,'a'); break;
case 2: dyn_vect_lup.bsortUb(kol_lup,1,'a'); break;
case 3: dyn_vect_lup.bsortUb(kol_lup,4,'i'); break;
case 4: dyn_vect_lup.bsortUb(kol_lup,5,'i'); break;
case 5: dyn_vect_lup.bsortUb(kol_lup,3,'a'); break;
case 6: dyn_vect_lup.bsortUb(kol_lup,6,'a'); break;
case 7: dyn_vect_lup.bsortUb(kol_lup,7,'i'); break;
case 8: dyn_vect_lup.bsortUb(kol_lup,8,'a'); break;
case 9: dyn_vect_lup.bsortUb(kol_lup,9,'a'); break;
};
Memo2->Clear();
dyn_vect_lup = *MyStack.Get_data("lupa");
for(int i = 0; i<kol_lup; i++)
dyn_vect_lup[i]->print(Memo2);
} break;
case 2:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_bin.bsortUb(kol_bin,0,'a'); break;
case 1: dyn_vect_bin.bsortUb(kol_bin,2,'a'); break;
case 2: dyn_vect_bin.bsortUb(kol_bin,1,'a'); break;
case 3: dyn_vect_bin.bsortUb(kol_bin,4,'i'); break;
case 4: dyn_vect_bin.bsortUb(kol_bin,5,'i'); break;
case 5: dyn_vect_bin.bsortUb(kol_bin,3,'a'); break;
case 6: dyn_vect_bin.bsortUb(kol_bin,6,'a'); break;
case 7: dyn_vect_bin.bsortUb(kol_bin,7,'i'); break;
case 8: dyn_vect_bin.bsortUb(kol_bin,8,'i'); break;
};
Memo2->Clear();
dyn_vect_bin = *MyStack.Get_data("binokular");
for(int i = 0; i<kol_bin; i++)
dyn_vect_bin[i]->print(Memo2);
} break;
case 3:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_tel.bsortUb(kol_tel,0,'a'); break;
case 1: dyn_vect_tel.bsortUb(kol_tel,2,'a'); break;
case 2: dyn_vect_tel.bsortUb(kol_tel,1,'a'); break;
case 3: dyn_vect_tel.bsortUb(kol_tel,4,'i'); break;
case 4: dyn_vect_tel.bsortUb(kol_tel,5,'i'); break;
case 5: dyn_vect_tel.bsortUb(kol_tel,3,'a'); break;
case 6: dyn_vect_tel.bsortUb(kol_tel,6,'a'); break;
case 7: dyn_vect_tel.bsortUb(kol_tel,7,'i'); break;
case 8: dyn_vect_tel.bsortUb(kol_tel,8,'i'); break;
};
Memo2->Clear();
dyn_vect_tel = *MyStack.Get_data("telescop");
for(int i = 0; i<kol_tel; i++)
dyn_vect_tel[i]->print(Memo2);
} break;
case 4:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_mic.bsortUb(kol_mic,0,'a'); break;
case 1: dyn_vect_mic.bsortUb(kol_mic,2,'a'); break;
case 2: dyn_vect_mic.bsortUb(kol_mic,1,'a'); break;
case 3: dyn_vect_mic.bsortUb(kol_mic,4,'i'); break;
case 4: dyn_vect_mic.bsortUb(kol_mic,5,'i'); break;
case 5: dyn_vect_mic.bsortUb(kol_mic,3,'a'); break;
case 6: dyn_vect_mic.bsortUb(kol_mic,6,'a'); break;
case 7: dyn_vect_mic.bsortUb(kol_mic,7,'i'); break;
case 8: dyn_vect_mic.bsortUb(kol_mic,8,'i'); break;
};
Memo2->Clear();
dyn_vect_mic = *MyStack.Get_data("microscop");
for(int i = 0; i<kol_mic; i++)
dyn_vect_mic[i]->print(Memo2);
} break;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
Memo1->Clear();
dyn_vect_och = *MyStack.Get_data("ochki");
for(int i = 0; i<kol_och; i++)
dyn_vect_och[i]->print(Memo1);
dyn_vect_lup = *MyStack.Get_data("lupa");
for(int i = 0; i<kol_lup; i++)
dyn_vect_lup[i]->print(Memo1);
dyn_vect_bin = *MyStack.Get_data("binokular");
for(int i = 0; i<kol_bin; i++)
dyn_vect_bin[i]->print(Memo1);
dyn_vect_tel = *MyStack.Get_data("telescop");
for(int i = 0; i<kol_tel; i++)
dyn_vect_tel[i]->print(Memo1);
dyn_vect_mic = *MyStack.Get_data("microscop");
for(int i = 0; i<kol_mic; i++)
dyn_vect_mic[i]->print(Memo1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
if (Edit16->Text == "") ShowMessage("Необходимо ввести значение для поиска!");
if (RadioGroup2->ItemIndex == 0)
if (Edit16->Text !="")
switch (ListBox2->ItemIndex)
{
case 0:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,0,'a'); break;
case 1: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,2,'a'); break;
case 2: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,1,'a'); break;
case 3: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,4,'i'); break;
case 4: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,5,'i'); break;
case 5: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,3,'a'); break;
case 6: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,6,'a'); break;
case 7: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,7,'i'); break;
case 8: dyn_vect_och.find(Edit16->Text,Memo2,kol_och,8,'i'); break;
};
} break;
case 1:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,0,'a'); break;
case 1: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,2,'a'); break;
case 2: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,1,'a'); break;
case 3: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,4,'i'); break;
case 4: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,5,'i'); break;
case 5: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,3,'a'); break;
case 6: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,6,'a'); break;
case 7: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,7,'i'); break;
case 8: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,8,'a'); break;
case 9: dyn_vect_lup.find(Edit16->Text,Memo2,kol_lup,9,'a'); break;
};
} break;
case 2:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,0,'a'); break;
case 1: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,2,'a'); break;
case 2: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,1,'a'); break;
case 3: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,4,'i'); break;
case 4: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,5,'i'); break;
case 5: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,3,'a'); break;
case 6: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,6,'a'); break;
case 7: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,7,'i'); break;
case 8: dyn_vect_bin.find(Edit16->Text,Memo2,kol_bin,8,'i'); break;
};
} break;
case 3:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,0,'a'); break;
case 1: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,2,'a'); break;
case 2: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,1,'a'); break;
case 3: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,4,'i'); break;
case 4: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,5,'i'); break;
case 5: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,3,'a'); break;
case 6: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,6,'a'); break;
case 7: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,7,'i'); break;
case 8: dyn_vect_tel.find(Edit16->Text,Memo2,kol_tel,8,'i'); break;
};
} break;
case 4:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,0,'a'); break;
case 1: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,2,'a'); break;
case 2: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,1,'a'); break;
case 3: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,4,'i'); break;
case 4: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,5,'i'); break;
case 5: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,3,'a'); break;
case 6: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,6,'a'); break;
case 7: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,7,'i'); break;
case 8: dyn_vect_mic.find(Edit16->Text,Memo2,kol_mic,8,'i'); break;
};
} break;
};
if ((Edit17->Text == "")||(Edit18->Text == "")) ShowMessage("Необходимо ввести все значения для поиска!");
if (RadioGroup2->ItemIndex == 1)
if ((Edit17->Text != "")&&(Edit18->Text != ""))
switch (ListBox2->ItemIndex)
{
case 0:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,0,'a'); break;
case 1: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,2,'a'); break;
case 2: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,1,'a'); break;
case 3: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,4,'i'); break;
case 4: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,5,'i'); break;
case 5: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,3,'a'); break;
case 6: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,6,'a'); break;
case 7: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,7,'i'); break;
case 8: dyn_vect_och.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_och,8,'i'); break;
};
} break;
case 1:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,0,'a'); break;
case 1: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,2,'a'); break;
case 2: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,1,'a'); break;
case 3: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,4,'i'); break;
case 4: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,5,'i'); break;
case 5: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,3,'a'); break;
case 6: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,6,'a'); break;
case 7: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,7,'i'); break;
case 8: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,8,'a'); break;
case 9: dyn_vect_lup.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_lup,9,'a'); break;
};
} break;
case 2:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,0,'a'); break;
case 1: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,2,'a'); break;
case 2: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,1,'a'); break;
case 3: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,4,'i'); break;
case 4: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,5,'i'); break;
case 5: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,3,'a'); break;
case 6: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,6,'a'); break;
case 7: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,7,'i'); break;
case 8: dyn_vect_bin.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_bin,8,'i'); break;
};
} break;
case 3:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,0,'a'); break;
case 1: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,2,'a'); break;
case 2: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,1,'a'); break;
case 3: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,4,'i'); break;
case 4: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,5,'i'); break;
case 5: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,3,'a'); break;
case 6: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,6,'a'); break;
case 7: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,7,'i'); break;
case 8: dyn_vect_tel.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_tel,8,'i'); break;
};
} break;
case 4:{
switch (ComboBox2->ItemIndex)
{
case 0: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,0,'a'); break;
case 1: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,2,'a'); break;
case 2: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,1,'a'); break;
case 3: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,4,'i'); break;
case 4: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,5,'i'); break;
case 5: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,3,'a'); break;
case 6: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,6,'a'); break;
case 7: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,7,'i'); break;
case 8: dyn_vect_mic.find_Diap(Edit17->Text, Edit18->Text,Memo2,kol_mic,8,'i'); break;
};
} break;
};
}
//---------------------------------------------------------------------------
void write_file()
{
//----сохранение в файла-------
outfile.open(path);
dyn_vect_och = *MyStack.Get_data("ochki");
for(int i = 0; i<kol_och; i++)
dyn_vect_och[i]->Write_to_file();
dyn_vect_lup = *MyStack.Get_data("lupa");
for(int i = 0; i<kol_lup; i++)
dyn_vect_lup[i]->Write_to_file();
dyn_vect_bin = *MyStack.Get_data("binokular");
for(int i = 0; i<kol_bin; i++)
dyn_vect_bin[i]->Write_to_file();
dyn_vect_tel = *MyStack.Get_data("telescop");
for(int i = 0; i<kol_tel; i++)
dyn_vect_tel[i]->Write_to_file();
dyn_vect_mic = *MyStack.Get_data("microscop");
for(int i = 0; i<kol_mic; i++)
dyn_vect_mic[i]->Write_to_file();
outfile.close();
ofstream outfile1("C:\\fdat.dat");
outfile1
<<kol_och<<' '
<<kol_lup<<' '
<<kol_bin<<' '
<<kol_tel<<' '
<<kol_mic<<' ';
}
void read_file()
{
try
{
//----загрузка из файла-------
ifstream infile1("C:\\fdat.dat");
infile1
>>kol_och
>>kol_lup
>>kol_bin
>>kol_tel
>>kol_mic;
infile.open(path);
infile.seekg(0);
Stack<dyn_vect*> MyStack1;
for(int i = 0; i<kol_och; i++)
{
ochki* och_obj = new ochki;
och_obj->Read_from_file();
dyn_vect_och.Set_one(och_obj,i);
}
MyStack1.Add_elem_head(&dyn_vect_och,"ochki");
for(int i = 0; i<kol_lup; i++)
{
lupa* lup_obj = new lupa;
lup_obj->Read_from_file();
dyn_vect_lup.Set_one(lup_obj,i);
}
MyStack1.Add_elem_head(&dyn_vect_lup,"lupa");
for(int i = 0; i<kol_bin; i++)
{
binocular* bin_obj = new binocular;
bin_obj->Read_from_file();
dyn_vect_bin.Set_one(bin_obj,i);
}
MyStack1.Add_elem_head(&dyn_vect_bin,"binokular");
for(int i = 0; i<kol_tel; i++)
{
telescop* tel_obj = new telescop;
tel_obj->Read_from_file();
dyn_vect_tel.Set_one(tel_obj,i);
}
MyStack1.Add_elem_head(&dyn_vect_tel,"telescop");
for(int i = 0; i<kol_mic; i++)
{
microscop* mic_obj = new microscop;
mic_obj->Read_from_file();
dyn_vect_mic.Set_one(mic_obj,i);
}
MyStack1.Add_elem_head(&dyn_vect_mic,"microscop");
infile.close();
MyStack = MyStack1;
}catch(...)
{Application->MessageBox("Файл содержит неправильные значения!","Ошибка!",MB_ICONHAND+MB_OK);}
}
void __fastcall TForm1::Button9Click(TObject *Sender)
{
if(SaveDialog1->Execute())
{
pathAS = SaveDialog1->FileName;
path = pathAS.c_str();
write_file();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
pathAS = OpenDialog1->FileName;
path = pathAS.c_str();
read_file();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup2Click(TObject *Sender)
{
switch (RadioGroup2->ItemIndex)
{
case 0: {Panel2->Visible=true; Panel1->Visible=false;}break;
case 1: {Panel2->Visible=false; Panel1->Visible=true;}break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form1->Button10->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
Form1->Button9->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N13Click(TObject *Sender)
{
kol_och = 0;
kol_lup = 0;
kol_bin = 0;
kol_tel = 0;
kol_mic = 0;
Memo1->Clear();
Memo2->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N8Click(TObject *Sender)
{
ListBox1->ItemIndex=0;
Form1->ListBox1Click(N8);
PageControl1->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N9Click(TObject *Sender)
{
ListBox1->ItemIndex=1;
Form1->ListBox1Click(N9);
PageControl1->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N10Click(TObject *Sender)
{
ListBox1->ItemIndex=2;
Form1->ListBox1Click(N10);
PageControl1->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N11Click(TObject *Sender)
{
ListBox1->ItemIndex=3;
Form1->ListBox1Click(N11);
PageControl1->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N12Click(TObject *Sender)
{
ListBox1->ItemIndex=4;
Form1->ListBox1Click(N12);
PageControl1->ActivePageIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N15Click(TObject *Sender)
{
PageControl1->ActivePageIndex = 2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N16Click(TObject *Sender)
{
PageControl1->ActivePageIndex = 2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N17Click(TObject *Sender)
{
PageControl1->ActivePageIndex = 1;
Button8->Click();
}
//---------------------------------------------------------------------------
Соседние файлы в папке Курсовая работа (Borland C++ Builder)