Объектно-ориентированное программирование Автобусы и маршруты

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

pList_AcceptPath_indexes[idx]=value;}

 

int* pList_FreePath_indexes;

int* pLFPiLen;

 

void ClearIndexes_pList_FreePath_indexes(){

if(pList_FreePath_indexes){

delete []pList_FreePath_indexes,pLFPiLen;

pList_FreePath_indexes=pLFPiLen=NULL;}}

 

void InitIndexes_pList_FreePath_indexes(int len){

pList_FreePath_indexes=new int[len];

*(pLFPiLen=new int)=len;}

 

void SetIndexes_pList_FreePath_indexes(int idx,int value){

pList_FreePath_indexes[idx]=value;}

 

/* ============================

====== ............... =====

============================ */

 

void Load_Race_List(){

pRace_List->ResetContent();

RS=new CMyRecordset(&DB);

RS->Open("SELECT Race.race_ID, Str(Race.race_ID)+') '+Race.description FROM Race ORDER BY Race.description","[race_ID]&,[Expr1001]$");

RS->DefineRealCount();

ClearIndexes_pRace_List_indexes();

if(RS->Count){

InitIndexes_pRace_List_indexes(RS->Count);

for(int i=0;iCount;i++){

pRace_List_indexes[i]=RS->fieldsValue[0].m_lVal;

pRace_List->InsertString(i,RS->fieldsValue[1].m_cstring);

RS->MoveNext();}}

RS->Close();

delete RS;}

 

bool IsSelected_Race_List(){

if(pRace_List->GetCurSel()==-1){

AfxMessageBox("Nothing selected!");

return 0;}

return 1;}

 

void setCurSel_Race_List(int fictionIndex){

for(int i=0;i<*pRLiLen;i++)

if(pRace_List_indexes[i]==fictionIndex){

pRace_List->SetCurSel(i);

return;}}

 

/* ============================

====== Add Edit Remove =====

============================ */

 

void CRaceForm::AddRace_onClick(){

CString newValue;

if((newValue=IsEmpty_CEdit(pEdit_race))=="") return;

sqlFilter(&newValue);

// >>>

CString prepSql="SELECT Race.race_ID FROM Race WHERE Race.description='$$$'";

prepSql.Replace("$$$",newValue);

if(!isUnique(prepSql,"[race_ID]&"))return;

// >>>

CString insertSql="INSERT INTO Race (description) Values('$$$')";

insertSql.Replace("$$$",newValue);

DB.ExecuteSQL(insertSql);

Load_Race_List();

pEdit_race->SetWindowText("");

// :::

RS=new CMyRecordset(&DB);

CString getNewIdSql="SELECT Race.race_ID FROM Race WHERE Race.description='$$1'";

getNewIdSql.Replace("$$1",newValue);

RS->Open(getNewIdSql,"[race_ID]&");

RS->MoveFirst();

long newId=RS->fieldsValue[0].m_lVal;

RS->Close();

delete RS;

setCurSel_Race_List(newId);

this->SelchangeList_onSelectChange();}

 

void CRaceForm::EditRace_onClick(){

if(!IsSelected_Race_List())return;

long cID=pRace_List_indexes[pRace_List->GetCurSel()];

// >>>

CString newValue;

if((newValue=IsEmpty_CEdit(pEdit_race))=="") return;

sqlFilter(&newValue);

// >>>

CString prepSql="SELECT Race.race_ID FROM Race WHERE Race.description='$$$'";

prepSql.Replace("$$$",newValue);

if(!isUnique(prepSql,"[race_ID]&"))return;

// >>>

CString updateSql="UPDATE Race SET Race.description='$$1' WHERE Race.race_ID=$$2";

updateSql.Replace("$$1",newValue);

updateSql.Replace("$$2",toString(cID));

DB.ExecuteSQL(updateSql);

Load_Race_List();

pEdit_race->SetWindowText("");

setCurSel_Race_List(cID);}

 

void CRaceForm::DeleteRace_onClick(){

if(!IsSelected_Race_List())return;

long cID=pRace_List_indexes[pRace_List->GetCurSel()];

// >>>

CString relateTestSql="SELECT Bus.bus_ID FROM Bus WHERE Bus.race_ID=$$$";

relateTestSql.Replace("$$$",toString(cID));

if(isRelate(relateTestSql,"[bus_ID]&"))return;

// >>>

CString deleteSql="DELETE Race.* FROM Race WHERE Race.race_ID=$$$";

deleteSql.Replace("$$$",toString(cID));

DB.ExecuteSQL(deleteSql);

long oldSel=pRace_List->GetCurSel();

Load_Race_List();

pRace_List->SetCurSel(oldSel>pRace_List->GetCount()-1?pRace_List->GetCount()-1:oldSel);

this->SelchangeList_onSelectChange();}

 

/* ============================

======= Accept pathes ======

============================ */

 

void CRaceForm::AcceptPath_onSelchange(){pList_FreePath->SetCurSel(-1);}

void CRaceForm::FreePath_onSelchange(){pList_AcceptPath->SetCurSel(-1);}

 

CString sh1Sql="SELECT Path.path_ID, Station_1.name+' '+Station_2.name";

CString sh2Sql="SELECT PAth.path_ID, Station_1.name+' '+Station_2.name";

 

void Load_List_AcceptPath(long cID){

CString tmpSql(sh1Sql);

tmpSql.Replace("$$1",toString(cID));

Load_List(tmpSql,"[path_ID]&,[Expr1001]$",pList_AcceptPath,ClearIndexes_pList_AcceptPath_indexes,InitIndexes_pList_AcceptPath_indexes,SetIndexes_pList_AcceptPath_indexes);}

 

void Load_List_FreePath(long cID){

CString tmpSql(sh2Sql);

tmpSql.Replace("$$1",toString(cID));

Load_List(tmpSql,"[path_ID]&,[Expr1001]$",pList_FreePath,ClearIndexes_pList_FreePath_indexes,InitIndexes_pList_FreePath_indexes,SetIndexes_pList_FreePath_indexes);}

 

void CRaceForm::toAcceptPath_onCLick(){

long cFictionID=pList_FreePath->GetCurSel();

// ===

if(cFictionID==-1){

AfxMessageBox("Nothing selected!");

return;}

// >>>

CString prepSql="INSERT INTO [Race items] (race_ID,path_ID) Values($$1,$$2)";

prepSql.Replace("$$1",toString(pRace_List_indexes[pRace_List->GetCurSel()]));

prepSql.Replace("$$2",toString(pList_FreePath_indexes[cFictionID]));

DB.ExecuteSQL(prepSql);

// >>>

long cRaceID=pRace_List_indexes[pRace_List->GetCurSel()];

Load_List_AcceptPath(cRaceID);

Load_List_FreePath(cRaceID);}

 

void CRaceForm::toFreePath_onClick(){

long cFictionID=pList_AcceptPath->GetCurSel();

// ===

if(cFictionID==-1){

AfxMessageBox("Nothing selected!");

return;}

// >>>

CString prepSql="DELETE [Race items].* FROM [Race items] WHERE [Race items].path_ID=$$$";

prepSql.Replace("$$$",toString(pList_AcceptPath_indexes[cFictionID]));

DB.ExecuteSQL(prepSql);

// >>>

long cRaceID=pRace_List_indexes[pRace_List->GetCurSel()];

Load_List_AcceptPath(cRaceID);

Load_List_FreePath(cRaceID);}

 

void CRaceForm::SelchangeList_onSelectChange(){

if(pRace_List->GetCurSel()==-1)return;

long cID=pRace_List_indexes[pRace_List->GetCurSel()];

// >>>

Load_List_AcceptPath(cID);

Load_List_FreePath(cID);}

 

/* ============================

=== OnInitDialog OnClose ===

============================ */

 

void CRaceForm::OK_onClick(){SendMessage(WM_CLOSE,0,0);}

 

BOOL CRaceForm::OnInitDialog(){CDialog::OnInitDialog();

// >>>

pRace_List=(CListBox*)GetDlgItem(Race_List);

pEdit_race=(CEdit*)GetDlgItem(Edit_race);

// ===

pList_AcceptPath=(CListBox*)GetDlgItem(List_AcceptPath);

pList_FreePath=(CListBox*)GetDlgItem(List_FreePath);

// >>>

Load_Race_List();

// >>>

return TRUE;}

 

void CRaceForm::OnClose(){CDialog::OnClose();

ClearIndexes_pRace_List_indexes();

ClearIndexes_pList_AcceptPath_indexes();

ClearIndexes_pList_FreePath_indexes();}

CRaceForm.h

#if !defined(AFX_CRACEFORM_H__4F7EEA3A_E810_4324_9EAE_F11652E482D3__INCLUDED_)

#define AFX_CRACEFORM_H__4F7EEA3A_E810_4324_9EAE_F11652E482D3__INCLUDED_

 

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// CRaceForm.h : header file

//

 

/////////////////////////////////////////////////////////////////////////////

// CRaceForm dialog

 

class CRaceForm : public CDialog

{

// Constructio