Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ООП-база данных для пассажиров поезда

.cpp
Скачиваний:
47
Добавлен:
01.05.2014
Размер:
2.78 Кб
Скачать
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>

class Error
{
public:
	char *b;
	int a;
    Error(char *b1){b=b1;}
	//Error(int a1){a=a1;}

};


class Time
{
protected:	
	int hour;
	int minute;
public:
	void SetTime (int h0,int min0)
	{
		hour=h0;
		minute=min0;
	}
	virtual void Set()=0;
};

class Date
{
protected:	
	int day;
	int month;
	int year;
public:
	void SetDate (int d0, int m0, int y0) 
	{
		day=d0; month=m0; year=y0;
	}
	virtual void Set ()=0;

};

class Dep:virtual public Date, public Time
{
public:
	virtual void Set ()
	{
	    cout <<day<<"."<<month<<"."<<year<<"\n";
    	 cout <<hour<<":"<<minute<<"\n";
	}
		int SetD(){return day;}


};

class Ticket;

class Pass: virtual public Date
{
protected:	
	char *name;
public:
	Pass (char * name0) 
	{
		int N=strlen(name0);
		name=new char[N];
		name=name0;
	} 
	~Pass(){/*delete []name; */
		cout<<"Destructor\n";
	}
	virtual void Set ()
	{
	 cout <<"\nPassazhir \n";
	 cout <<"Data rozhdeniya:";
	 cout <<day<<"."<<month<<"."<<year<<"\n";
	 cout <<"Name:";
	 cout <<name<<"\n";
	}
	friend void SvE (Pass ob1, Ticket ob2);
};

class Ticket:public Pass, public Dep
{
	int V;
	int place;
//	Dep D1;
public:
	Ticket (char *name0, int v0, int place0,Dep d): Pass (name0)
	{
		V=v0;
		place=place0;      
		day=d.SetD();
	/*	Dep::month=D.SetM();
		Dep::year=D.SetY();
		hour=D.SetH();
		minute=D.SetMIN();*/

	}
	~Ticket(){cout<<"Destr\n";}

	virtual void Set ()
	{
	 cout <<"\nBilet\n";
	 cout <<Dep::day<<"."<<Dep::month<<"."<<Dep::year<<"\n";
	 cout <<hour<<":"<<minute<<"\n";
     cout <<V<<"  Vagon\n";
	 cout <<place<<"  Mesto\n";
	 cout <<name<<" Name\n";
	}
	friend void SvE (Pass ob1, Ticket ob2);

};


//Friend function
void SvE (Pass ob1, Ticket ob2)
{	 
	if (strcmp (ob1.name, ob2.name)==1) throw Error(ob2.name);
	else 
	{	  
		cout<<"\n";
		cout <<"Sravnenie imen v Pass i Ticket:TRUE\n";
		cout<<"Name:"<<ob1.name<<"\n";
		cout<<"Data rozhdeniya:"<<ob1.day<<"."<<ob1.month<<"."<<ob1.year<<"\n";
	}
}

main()
{
int hour=12;
int minute=10;
int day=12;
int month=5;
int year=2005;
Time *t1;
Date *d1;
Dep D1;
t1=&D1;
d1=&D1;
try
{
	cout<<"Otpravlenie: \n";
	t1->SetTime(hour,minute);
	d1->SetDate(day,month,year);
	t1->Set();
	Pass P1("Rew");
	Date *d2;
	d1=&P1;
	d1->SetDate(18,5,2004);
	d1->Set();
	int vagon=15;
	int mesto=34;
	Ticket T1 ("Rew", vagon, mesto,D1);
	t1=&T1;
	t1->Set();
	SvE (P1,T1);
//	~Ticket();
}
catch (Error i) {cout <<"Error "<<i.b<<"\n";}
catch (...) {cout <<"Another Error";}


	return 0;
}