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

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

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

µжду таблицами Race и Path. Содержит два поля: первое - уникальный идентификатор рейса, второе - уникальный идентификатор пути.

Название

тип

 

race_ID

счетчик

 

path_ID

поле memo

 

  • Station - таблица, размещающая информацию об остановочных пунктах автобусов. Имеет два поля - это уникальный идентификатор остановочного пункта, однозначно определяющий его во всем множестве других остановочных пунктах, и поле с его названием.

Название

тип

 

station_ID

длинное целое

 

name

длинное целое

 

  • Time - таблица, размещающая информацию о временах отправлений автобусов. Автобусы, привязанные к одному рейсу, в течении определенного периода могут неоднократно отправляться в рейс в разные часы, что и отражается структурой данной таблицы. Таблица состоит из 3 полей: первое - это уникальный идентификатор времени, однозначно определяющий его во всем множестве других времен отправлений, второе поле - это идентификатор автобуса, свеянный с таблицей Bus (поскольку таблица Bus связанна с Time связью “один ко многим”, в Time может присутствовать несколько идентификаторов одного автобуса), третье поле - время отправления.

Название

тип

 

time_ID

счетчик

 

bus_ID

длинное целое

 

time

длинное целое

 

  • Type - таблица, размещающая информацию о типах автобусов (классов). Имеет два поля - это уникальный идентификатор типа, однозначно определяющий его во всем множестве других типов, и поле с названием типа.

Название

тип

 

busType_ID

счетчик

 

name

поле memo

 

 

Схема данных представлена в таблице 1. Она отражает сущности, а также связи и их типы.

 

Таблица 1 - схема данных

4. Описание основных классов

На рисунке 1 изображена диаграмма классов. Она отражает все классы проекта. Практически все классы являются пользовательскими. Они переопределены от встроенных классов путем однократного и множественного наследования.

Класс CMyDBVariant представляет собой объект, способный хранить различные типы данных. Он незаменим для работы с базой данный. Его прародителем стал класс CDBVariant. Поскольку возможностей базового класса оказалось недостаточно, пришлось его переопределить, вводя дополнительные переменные m_cstring для передачи строк типа Cstring и m_time для передачи времени типа CTime.

CMyDBRecordset новый класс от CDBRecordset. Более гибок, нежели стандартный класс. Позволяет легко, без внедрения дополнительных переопределений, на месте, быстро создать представление сущности. В него добавлены: Count член класса, хранящий количество записей (это сделано в силу того, что метод GetCount не возвращает реального количества), DefineRealCount метод, определяющий Count. Также в этот класс входит fieldnames и fieldValues, позволяющий не передавать непосредственно переменные в метод DoFieldExchange а держать их прямо в классе в качестве его членов, что значительно упрощает код и способ обращения к полям представления.

 

Полное описание классов находиться в листинге программы.

Рисунок 1 - Диаграмма классов5. Листинг программы

CAboutForm.cpp

#include "stdafx.h"

#include "../main.h"

#include "CAboutForm.h"

 

CAboutForm::CAboutForm(CWnd* pParent):CDialog(CAboutForm::IDD,pParent){

//{{AFX_DATA_INIT(CAboutForm)

//}}AFX_DATA_INIT

}

 

void CAboutForm::DoDataExchange(CDataExchange* pDX){

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutForm)

//}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CAboutForm, CDialog)

//{{AFX_MSG_MAP(CAboutForm)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

CAboutForm.h

#if !defined(AFX_CABOUTFORM_H__09D6634D_16A6_44E9_849C_AD1B2E71646D__INCLUDED_)

#define AFX_CABOUTFORM_H__09D6634D_16A6_44E9_849C_AD1B2E71646D__INCLUDED_

 

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// CAboutForm.h : header file

//

 

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

// CAboutForm dialog

 

class CAboutForm : public CDialog

{

// Construction

public:

CAboutForm(CWnd* pParent = NULL); // standard constructor

 

// Dialog Data

//{{AFX_DATA(CAboutForm)

enum { IDD = AboutForm };

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

 

 

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutForm)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

 

// Implementation

protected:

 

// Generated message map functions

//{{AFX_MSG(CAboutForm)

// NOTE: the ClassWizard will add member functions here

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

 

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

 

#endif // !defined(AFX_CABOUTFORM_H__09D6634D_16A6_44E9_849C_AD1B2E71646D__INCLUDED_)

CBusForm.cpp

#include "stdafx.h"

#include "../main.h"

#include "CBusForm.h"

#include "CTypeForm.h"

#include "../ExLibrary/CMyRecordset.h"

char* toString(int value,int radix=10);

CString IsEmpty_CEdit(CEdit* ctrl);

void sqlFilter(CString* value);

bool isUnique(CString sql,CString fields);

bool isRelate(CString sql,CString fields);

void Load_List(CString sql,CString fields,CListBox* ctrl,void clearIdxFunc(void),void initIdxFunc(int),void setIdxFunc(int,int));

void Load_List(CString sql,CString fields,CComboBox* ctrl,void clearIdxFunc(void),void initIdxFunc(int),void setIdxFunc(int,int));

 

CBusForm::CBusForm(CWnd* pParent):CDialog(CBusForm::IDD, pParent){

//{{AFX_DATA_INIT(CBusForm)

//}}AFX_DATA_INIT

}

 

void CBusForm::DoDataExchange(CDataExchange* pDX){

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CBusForm)

//}}AFX_DATA_MAP

}

 

BEGIN_MESSAGE_MAP(CBusForm, CDialog)

//{{AFX_MSG_MAP(CBusForm)

ON_BN_CLICKED(Button_showBusType, showBusType_onClick)

ON_BN_CLICKED(Button_DeleteBus, DeleteBus_onClick)

ON_BN_CLICKED(Button_EditBus, EditBus_onClick)

ON_BN_CLICKED(Button_AddBus, AddBus_onClick)

ON_BN_CLICKED(IDOK, OK_onClick)

ON_WM_CLOSE()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

 

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

===== User realization =====

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

 

CListBox* pList_Bus;

CComboBox* pComboBox_BusType;

CComboBox* pComboBox_RaceInBus;

 

extern CDa