Создать программу с абстрактным базовым классом и множественным наследованием,реализовать в нем:
- конструктор,деструктор, виртуальную функцию просмотра текущего состояния объекта print(), friend – функцию Run ().
Используя стандартные файловые потоки, информацию об объектах вывести в файл.Для корректной работы с файлом использовать обработку исключительных ситуаций.
17. Отдел кадров (ФИО, отдел, должность, дата приема на работу, внутренний стаж –функция Run (), ставка).
Вот мой код программы...в main выдает ошибку..не могу понять почему...может я что-то неправильно делаю..помогите, плиз, доделать лабу..
Код:
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <istream>
#include <fstream>
#include <conio.h>
using namespace std;
#define SIZE 255
class base
{
public:
virtual void print()=0;
virtual void fileprint()=0;
};
//---------------------------------------------------------
class name: public base
{
protected:
char *familiya, *imya, *ot4estvo;
public:
name();
name(char *,char *,char *);
~name() {
cout<<" FIO uni4togeno"<<endl;}
void print() {
cout<<"Familiya="<<familiya<<endl;
cout<<"Imya="<<imya<<endl;
cout<<"Ot4estvo="<<ot4estvo<<endl;}
};
name::name()
{
familiya=new char[SIZE];
familiya[0]='\0';
imya =new char[SIZE];
imya[0]='\0';
ot4estvo=new char[SIZE];
ot4estvo[0]='\0';
}
//-------------------------------------------------------
class sved: public base
{
protected:
char *otdel, *dolgnost, *data;
double stavka;
public:
sved();
sved(char *,char *,char *,double);
~sved() {
cout<<"Svedeniya uni4togeny"<<endl;}
void print() {
cout<<"Otdel="<<otdel<<endl;
cout<<"Dolgnost'="<<dolgnost<<endl;
cout<<"Data'="<<data<<endl;
cout<<"Stavka="<<stavka<<endl; }
};
sved::sved()
{
otdel=new char[SIZE];
otdel[0]='\0';
dolgnost=new char[SIZE];
dolgnost[0]='\0';
data=new char[SIZE];
data[0]='\0';
}
//-------------------------------------------------------
class anketa: public name, public sved
{
public:
char *a_fam, *a_imya, *a_ot4, *a_otdel, *a_dol, *a_data;
double a_stavka,a_stag;
anketa(char *familiya, char *imya, char *ot4estvo, char *otdel, char *dolgnost, char *data, double stavka)
{
a_fam=new char[SIZE];
a_fam=familiya;
a_imya=new char[SIZE];
a_imya=imya;
a_ot4=new char[SIZE];
a_ot4=ot4estvo;
a_otdel=new char[SIZE];
a_otdel=otdel;
a_dol=new char[SIZE];
a_dol=dolgnost;
a_data=new char[SIZE];
a_data=data;
a_stavka=stavka;
cout<<"Anketa gotova"<<endl<<"------------------------"<<endl;
}
~anketa()
{
cout<<" Anketa sterlas' "<<endl;
}
void print()
{
cout<<"Familiya="<<a_fam<<endl;
cout<<"Imya="<<a_imya<<endl;
cout<<"Ot4estvo="<<a_ot4<<endl;
cout<<"Otdel="<<a_otdel<<endl;
cout<<"Dolgnost'="<<a_dol<<endl;
cout<<"Data priema na rabotu="<<a_data<<endl;
cout<<"Stavka="<<a_stavka<<endl;
cout<<"Vnutrennij stag="<<a_stag<<endl;
}
void fileprint()
{
try
{
ofstream of;
of.open("anketa.txt", ios::out | ios::app);
if(of==0) throw "Error open file";
of<<"---------------------------------------"<<endl;
of<<"Familiya="<<a_fam<<endl;
of<<"Imya="<<a_imya<<endl;
of<<"Ot4estvo="<<a_ot4<<endl;
of<<"Otdel="<<a_otdel<<endl;
of<<"Dolgnost'="<<a_dol<<endl;
of<<"Data priema na rabotu="<<a_data<<endl;
of<<"Stavka="<<a_stavka<<endl;
of<<"Vnutrennij stag="<<a_stag<<endl;
of<<"---------------------------------------"<<endl;
of.close();
}
catch(const char *report)
{
cout<<report<<endl;
}
}
friend void Run(anketa *);
};
void run (anketa *a)
{
a->a_stag=((a->a_stavka)*1.5);
}
//-------------------------------------------------------------
void main ()
{
char *familiya, *imya, *ot4estvo, *otdel, *dolgnost,*data, str[SIZE];
double stavka;
familiya=new char[SIZE];
imya =new char[SIZE];
ot4estvo=new char[SIZE];
otdel=new char[SIZE];
dolgnost=new char[SIZE];
data=new char[SIZE];
cout<<"Vvedite familiyu: ";
cin>>familiya;
cout<<"Vvedite imya: ";
cin>>imya;
cout<<"Vvedite ot4estvo: ";
cin>>ot4estvo;
cout<<"Otdel: ";
cin>>otdel;
cout<<"Dolgnost': ";
cin>>dolgnost;
cout<<"Data: ";
cin>>data;
try
{
cout<<"Stavka: ";
void *b = cin>>stavka;
if (b && stavka==0 && stavka<0)
{
throw 1;
}
else
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
}
}
catch (...)
{
cout<<"parameter will be corrected to 0"<<endl;
}
anketa class1;
class1.print();
class1.fileprint();
cout<<"soderzhimoe faila:"<<endl;
fstream stream;
stream.open("anketa.txt", ios::in);
while(stream.eof()==0)
{
stream.getline(str,256);
cout<<str<<endl;
}
stream.close();
cout<<endl;
}