Организация базы данных для хранения динамических моделей беспроводных компьютерных Ad hoc сетей
Моделирование поведения узлов беспроводной ad hoc сети при равномерном движении на плоскости. Разработка базы данных для хранения полученных графов и организация ее взаимодействия с другими приложениями, осуществляющими создание моделей и их анализ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.02.2016 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
}
}
void __fastcall TfView::FormActivate(TObject *Sender) //активация формы
{
dsNames->DataSet = dm->tGraphNames;
dsGraph->DataSet = dm->qGraph;
predPoint=0;
FormResize(Sender);
eTime->OnChange = eTimeChange;
}
//---------------------------------------------------------------------------
void __fastcall TfView::FormResize(TObject *Sender) //изменение размера
{
CalcGraph();
PaintGraph();
}
//---------------------------------------------------------------------------
void __fastcall TfView::gImageMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
int T= UpDown1->Position;
if (gImage->Canvas->Pixels[X][Y]==clPoint)
{ dm->qGraph->DisableControls();
TBookmark BK = dm->qGraph->GetBookmark();
for (dm->qGraph->First();!dm->qGraph->Eof;dm->qGraph->Next())
{
double x1=scale*(dm->qGraphX->Value+dm->qGraphA->Value*T-minX)-RPoint,
y1=scale*(dm->qGraphY->Value+dm->qGraphB->Value*T-minX)-RPoint,
x2=scale*(dm->qGraphX->Value+dm->qGraphA->Value*T-minX)+RPoint,
y2=scale*(dm->qGraphY->Value+dm->qGraphB->Value*T-minX)+RPoint;
if (((x1<=X)&&(x2>=X)&&(y1<=Y)&&(y2>=Y))&&(predPoint!=dm->qGraph->RecNo))
{
if (HWin == NULL)
{
HWin = new THintWindow(this);
HWin->Parent = fView;
HWin->Color = clInfoBk;
}
predPoint = dm->qGraph->RecNo;
String
s = "X="+dm->qGraphX->AsString+", Y="+dm->qGraphY->AsString+", R="+dm->qGraphR->AsString;
TRect Tr;
Tr.Left = fView->Left+gImage->Left+X-gImage->Canvas->TextWidth(s)/2;
Tr.Top = fView->Top+gImage->Top+Y;
Tr.Right = Tr.Left + gImage->Canvas->TextWidth(s)+20;
Tr.Bottom = Tr.Top + gImage->Canvas->TextHeight(s);
PaintGraph();
HWin->ActivateHint(Tr,s);
}
}
dm->qGraph->GotoBookmark(BK);
dm->qGraph->FreeBookmark(BK);
dm->qGraph->EnableControls();
}
else
{
if (predPoint != 0)
{
predPoint = 0;
PaintGraph();
}
predPoint = 0;
if (HWin!=NULL)
{
HWin->Free();
HWin=NULL;
predPoint = 0;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfView::FormClose(TObject *Sender, TCloseAction &Action)
{
dsNames->DataSet = NULL;
dsGraph->DataSet = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TfView::BitBtn1Click(TObject *Sender) //новый граф
{
rmGetName->ShowModal();
if (rmGetName->ModalResult==mrOk)
{
dm->spNewGraph->Params->Items[1]->Value = rmGetName->Edit1->Text;
int id;
dm->spNewGraph->ExecProc();
id = dm->spNewGraph->Params->Items[0]->Value;
dm->tGraphNames->Refresh();
TLocateOptions opt;
dm->tGraphNames->Locate("ID",id, opt);
}
eTimeChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfView::BitBtn2Click(TObject *Sender) //удалить граф
{
if (MessageDlg("Удалить граф "+dm->tGraphNamesNAME->AsString+"?",mtConfirmation,TMsgDlgButtons() << mbYes<<mbNo,0)== mrYes)
{
dm->spDeleteGraph->Params->Items[0]->Value = dm->tGraphNamesID->Value;
dm->spDeleteGraph->ExecProc();
dm->tGraphNames->Refresh();
}
eTimeChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfView::Button2Click(TObject *Sender) //удалить узел
{
if (MessageDlg("Удалить узел?",mtConfirmation,TMsgDlgButtons() << mbYes << mbNo,0)== mrYes)
{
dm->spDeletePoint->Params->Items[0]->Value = dm->qGraphGRAPH_ID->Value;
dm->spDeletePoint->Params->Items[1]->Value = dm->qGraphGRAPH_TIME->Value;
dm->spDeletePoint->Params->Items[2]->Value = dm->qGraphX->Value;
dm->spDeletePoint->Params->Items[3]->Value = dm->qGraphY->Value;
dm->spDeletePoint->Params->Items[4]->Value = dm->qGraphA->Value;
dm->spDeletePoint->Params->Items[5]->Value = dm->qGraphB->Value;
dm->spDeletePoint->Params->Items[6]->Value = dm->qGraphR->Value;
dm->spDeletePoint->ExecProc();
dm->qGraph->Close();
dm->qGraph->Open();
}
eTimeChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfView::Button1Click(TObject *Sender) //добавить узел
{
newPoint->ShowModal();
if (newPoint->ModalResult==mrOk)
{
dm->spAddPoint->Params->Items[0]->Value = dm->tGraphNamesID->Value;
dm->spAddPoint->Params->Items[1]->Value = 0;
dm->spAddPoint->Params->Items[2]->Value = StrToFloat(newPoint->eX->Text);
dm->spAddPoint->Params->Items[3]->Value = StrToFloat(newPoint->eY->Text);
dm->spAddPoint->Params->Items[4]->Value = StrToFloat(newPoint->eA->Text);
dm->spAddPoint->Params->Items[5]->Value = StrToFloat(newPoint->eB->Text);
dm->spAddPoint->Params->Items[6]->Value = StrToFloat(newPoint->eRin->Text);
dm->spAddPoint->ExecProc();
dm->qGraph->Close();
dm->qGraph->Open();
}
eTimeChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfView::dsNamesDataChange(TObject *Sender, TField *Field)
{
dm->qGraph->Close();
dm->qGraph->Params->Items[0]->Value = dm->tGraphNamesID->Value;
dm->qGraph->Params->Items[1]->Value = 0;
dm->qGraph->Open();
eTimeChange(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfView::eTimeChange(TObject *Sender)
{
CalcGraph();
PaintGraph();
}
//---------------------------------------------------------------------------
void __fastcall TfView::BitBtn3Click(TObject *Sender) //сохранить
{
dm->qGraph->DisableControls();
TBookmark BK = dm->qGraph->GetBookmark();
int T= UpDown1->Position;
TStringList *stm = new TStringList();
stm->Add(dm->tGraphNamesNAME->AsString);
stm->Add(eTime->Text);
for (dm->qGraph->First();!dm->qGraph->Eof;dm->qGraph->Next())
{
double X =dm->qGraphX->Value+dm->qGraphA->Value*T,
Y =dm->qGraphY->Value+dm->qGraphB->Value*T;
stm->Add(FloatToStr(X)+" "+FloatToStr(Y)+" "+dm->qGraphA->AsString+" "+dm->qGraphB->AsString+" "+dm->qGraphR->AsString);
}
dm->qGraph->GotoBookmark(BK);
dm->qGraph->FreeBookmark(BK);
dm->qGraph->EnableControls();
SaveDialog1->DefaultExt="txt";
SaveDialog1->Filter="ASCII files (*.txt)|*.txt|";
SaveDialog1->Title="Сохранить граф "+dm->tGraphNamesNAME->AsString;
if(SaveDialog1->Execute())
{
try
{
AnsiString FileNameR = SaveDialog1->FileName;
stm->SaveToFile(FileNameR);
}
catch(...)
{
MessageDlg("Не удалось сохранить",mtError, TMsgDlgButtons() << mbOK ,0);
}
}
delete stm;
}
//---------------------------------------------------------------------------
void __fastcall TfView::Button3Click(TObject *Sender) //загрузить из файла
{
OpenDialog1->DefaultExt="txt";
OpenDialog1->Filter="ASCII files (*.txt)|*.txt|";
OpenDialog1->Title="Сохранить граф "+dm->tGraphNamesNAME->AsString;
if(OpenDialog1->Execute())
{ int T=0;
TStringList *stm = new TStringList(); // а надо ли в Мемо?
AnsiString FileNameR = OpenDialog1->FileName;
stm->LoadFromFile(FileNameR);
if (stm->Count>2)
{
char buf[100];
strcpy(buf, stm->Strings[0].c_str());
FileNameR = String(buf);
dm->spNewGraph->Params->Items[1]->Value = FileNameR ;
dm->spNewGraph->ExecProc();
int id = dm->spNewGraph->Params->Items[0]->Value;
dm->tGraphNames->Refresh();
TLocateOptions opt;
dm->tGraphNames->Locate("ID",id, opt);
strcpy(buf, stm->Strings[1].c_str());
T = StrToInt(String(buf));
double X,Y,A,B,R;
for (int i=2; i<stm->Count;i++ )
{
strcpy(buf, stm->Strings[i].c_str());
char *p = strtok(buf, " \r\n");
X = StrToFloat(String(p));
p = strtok(NULL, " \r\n");
Y = StrToFloat(String(p));
p = strtok(NULL, " \r\n");
A = StrToFloat(String(p));
p = strtok(NULL, " \r\n");
B = StrToFloat(String(p));
p = strtok(NULL, " \r\n");
R = StrToFloat(String(p));
dm->spAddPoint->Params->Items[0]->Value = id;
dm->spAddPoint->Params->Items[1]->Value = 0;
dm->spAddPoint->Params->Items[2]->Value = X-A*T;
dm->spAddPoint->Params->Items[3]->Value = Y-B*T;
dm->spAddPoint->Params->Items[4]->Value = A;
dm->spAddPoint->Params->Items[5]->Value = B;
dm->spAddPoint->Params->Items[6]->Value = R;
dm->spAddPoint->ExecProc();
}
}
dm->qGraph->Close();
dm->qGraph->Open();
delete stm;
UpDown1->Position=T;
eTimeChange(Sender); }
}
Размещено на Allbest.ru
Подобные документы
Использование базы данных статистики последовательного соединения мобильных узлов беспроводной сети с использованием средств программирования Delphi и языка ADO. Оптимизация, отладка и тестирование программы AD-HOC сетей, решение аномалий в узлах сети.
дипломная работа [1,7 M], добавлен 13.06.2012Процесс разработки базы данных для хранения и обработки информации. Ключи, индексы, триггеры, хранимые процедуры. Разработка пользовательского интерфейса и базы данных. Основные инструментальные средства для разработки клиентской и серверной частей.
дипломная работа [225,0 K], добавлен 18.05.2013Автоматизированные базы данных в учебном процессе. Создание базы данных для МОУ СОШ № 12 с целью помощи в обеспечении централизованного управления, хранения информации об учениках. Требования к программе, условия эксплуатации. Программный код базы данных.
дипломная работа [2,0 M], добавлен 25.03.2014Описание внешних иерархических моделей базы данных. Проектирование нормализованных локальных ER-моделей. Выявление и устранение эквивалентных сущностей и категорий, дублирования атрибутов и связей. Создание внутренней реляционной модели данного проекта.
курсовая работа [87,9 K], добавлен 20.01.2015Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".
дипломная работа [5,4 M], добавлен 06.06.2013Информационная система – совокупность организационных, технических и программных средств, объединенных в единую систему для сбора, хранения, обработки, выдачи необходимой информации. Анализ особенностей инфологической, логической моделей базы данных.
курсовая работа [675,2 K], добавлен 16.09.2017Создание базы данных для хранения и обработки информации городской телефонной станции. Состав программного продукта. Практические аспекты лицензирования Access. Инфологическое моделирование системы. Определение логической структуры реляционной базы.
курсовая работа [295,1 K], добавлен 16.12.2013Этапы создания и разработки базы данных. Построение модели предметной области. Разработка даталогической и физической моделей данных, способы обработки данных о сотрудниках организации. Проектирование приложений пользователя. Создание кнопочной формы.
курсовая работа [2,1 M], добавлен 14.02.2011Понятие электронного бизнеса и его основные направления. Исследование моделей взаимодействия субъектов рынка в компьютерных сетях. Торговые и платежные системы в Интернет. Проектирование реляционной пользовательской базы данных средствами СУБД MS Aссess.
курсовая работа [1,2 M], добавлен 29.05.2014Изучение особенностей функционирования базы данных Excel. Организация ввода и просмотра данных, сортировка, фильтрация и консолидация данных в таблицах. Подведение итогов и сводная таблица. Организация базы данных в Access. Создание запроса и отчетов.
курсовая работа [2,7 M], добавлен 04.10.2013