Rejestracja FAQ Użytkownicy Szukaj Forum Forum studentów WSHE we Włocławku Strona Główna

Forum Forum studentów WSHE we Włocławku Strona Główna » Sesja,zaliczenia,koła » Projekty z C++ dla tych ktorzy do tej pory nie maja:D
Napisz nowy temat  Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat 
Projekty z C++ dla tych ktorzy do tej pory nie maja:D
PostWysłany: Czw 23:37, 30 Cze 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Projekt 1 System bankowy:

konto.h
Kod:
#ifndef kontoH
#define kontoH
#include "karta.h"

class Konto {
friend class Karta;

public:
       Konto(int aNumer,double aSaldo,int PIN);   //konstruktor
       Konto(const Konto& konto); //konstruktor kopiujacy
   ~Konto();  //destruktor
       int wplata(double kwota);   //wplata pieniedzy na konto
       int wyplata(double kwota,int PIN); //wyplata pieniedzy z konta
       int bilans(int PIN); //wyswietlenie bilansu konta
   int zmiana_hasla(int PIN); //zmiana hasla konta
       int dodajkarte(int PIN,int numer,char *nazwisko,double limit,double aSaldo);
       int rozliczkarte(int numer,char *nazwisko);
   int likwidacjakarty(int numer,int PIN);
   int wplatazkonta(Konto& konto,double kwota,int numer,int PIN); //zasilenie konta z innego konta
   int wplatazkarty(Karta& karta,double kwota,int numer,int PIN);       //zasilenie konta z karty kredytowej
private:
     const int numer_konta; //numer konta
       double saldo;  //saldo konta
       int haslo;  //numer PIN
   Karta *obj;
   bool status;
};
#endif


karta.h
Kod:
#ifndef kartaH
#define kartaH
#include "konto.h"

class Karta {
friend class Konto;

public:
        Karta(Konto *konto,int aNumer,char *aNazwisko,double aSaldo,int PIN,double aLimit);
        Karta(const Karta& karta);  //konstruktor kopiujacy
   ~Karta();
        int trans_gotowkowa(double kwota,int nr_karty,int PIN); //transakcja gotowkowa
   int trans_bezgotowkowa(double kwota,int nr_karty,char *aNazwisko);
   int trans_bezgotowkowa(double kwota,int nr_karty,int PIN);
   int zasilenie(double kwota);
   static void set_prow_bezgotow(double newprowizja) {prowizja_bezgotowkowa=newprowizja;}
   static void set_prow_gotow(double newprowizja) {prowizja_gotowkowa=newprowizja;}
   static double get_prow_bezgotow() {return prowizja_bezgotowkowa;}
   static double get_prow_gotow() {return prowizja_gotowkowa;}
        int zasileniezkonta(Konto& konto,double kwota,int numer);
private:
   static char *kopiujstring(const char *zrodlo);
   const int numer_karty;
        const char *nazwisko;
   bool status;
        int haslo;
        double saldo;
        double limit;
   static double prowizja_gotowkowa;
        static double prowizja_bezgotowkowa;
        Konto *obj;
};
#endif


konto.cpp
Kod:
#include "konto.h"
#include <iostream.h>
#include <assert.h>
Konto::Konto(int aNumer,double aSaldo,int PIN): numer_konta(aNumer),saldo(aSaldo),haslo(PIN),obj(NULL),status(true)
{     
   assert(aSaldo>0);
   assert(aNumer>0);
        obj=NULL;
        cout<<"Utworzono konto o nastepujacych parametrach:\nNumer: "<<numer_konta<<"\nPIN: "<<haslo<<
         "\nSaldo: "<<saldo<<"\n\n";
}

Konto::~Konto() {
   delete obj;
}

int Konto::wplata(double kwota) {
        if(kwota<=0) {
      cout<<"Kwota jest mniejsza lub rowna zero!!\n";
      return 1;
      }
   saldo+=kwota;
        return 0;       //sukces
}

int Konto::wyplata(double kwota, int PIN) {
        if(kwota<=0) {
      cout<<"Kwota mniejsza od zera!!\n";
      return 1;
      }
        if(saldo<kwota) {
      cout<<"Zbyt duza kwota do wyplacenia!!\n";
      return 2;
      }
        if(PIN!=haslo) {
      cout<<"Zle haslo!!\n";      
      return 3;
                }
   if(status==false) {
      cout<<"Wyplaty zablokowane!!\n";
      return 4;
      }
   saldo-=kwota;
        return 0;  //sukces
}

int Konto::bilans(int PIN) {
        if(!(PIN==haslo)) {
                cout<<"Zle haslo!\n";
                return 1; 
                }
        cout<<"Stan konta "<<numer_konta<<" wynosi: "<<saldo<<"\n";
        return 0; //sukces
}

int Konto::zmiana_hasla(int PIN) {
      if(PIN!=haslo) {
                cout<<"Zle haslo!\n";
                return 1;
                }
        cout<<"Podaj nowe haslo: ";
        cin>>haslo;
        cout<<"Haslo zostalo zmienione\n";
        return 0; //sukces
}

int Konto::rozliczkarte(int numer,char *nazwisko) {
          if(!obj) {
      cout<<"Karta kredytowa dla tego konta nie istnieje!!\n";
      return 1;
      }
   if(numer!=obj->numer_karty || strcmp(nazwisko,obj->nazwisko)==NULL) {
      cout<<"Zly numer karty badz nazwisko. Rozliczenie karty niemozliwe!!\n";
      return 4;
      }
   if(saldo<=0) {
      cout<<"Brak pieniedzy na koncie do rozliczenia karty!!\n";
      return 3;
      }
   if(obj->saldo<(0-(obj->limit))) {
      cout<<"Przekroczono limit kredytu,konto i karta zablokowane!!\n";
      status=false;
      obj->status=false;
      }
        if((obj->saldo)>saldo) {
      cout<<"Brak pieniedzy na rozliczenie karty!!\n";
      status=false;
      obj->status=false;
      return 2;
      }
   saldo=saldo-(obj->saldo);
   obj->saldo=0;
   status=true;
   obj->status=true;
   return 0;
}

int Konto::dodajkarte(int PIN,int numer,char *nazwisko,double limit,double aSaldo) {
        if(!obj) {
            obj = new Karta(this,numer,nazwisko,aSaldo,PIN,limit);
            return 0; //sukces
            }
        cout<<"Karta kredytowa juz istnieje dla tego konta!!\n";
   return 1;
}

int Konto::likwidacjakarty(int numer,int PIN) {
   if(!obj) {
      cout<<"Nie istnieje karta kredytowa dla tego konta!!\n";
      return 1;
      }
   if(numer!=obj->numer_karty) {
      cout<<"Zly numer karty!!\n";
      return 2;
      }
   if(PIN!=obj->haslo) {
      cout<<"Zle haslo!!\n";
      return 3;
      }
   if(obj->status!=true) {
      cout<<"Nie mozna zlikwidowac karty,poniewaz nie zostala ona wczesniej rozliczona!!\n";
      return 4;
      }
   delete obj;
   return 0;
}

int Konto::wplatazkonta(Konto& konto,double kwota,int numer,int PIN) {
   if(PIN!=konto.haslo) {
      cout<<"Zle haslo!!\n";
      return 2;
      }
   if(numer!=konto.numer_konta) {
      cout<<"Zle podany numer konta!!\n";
      return 3;
      }
   if(konto.status==false) {
      cout<<"Konto wplacajacego zablokowane!!Nie mozna dokonac przelewu\n";
      return 4;
      }
   if(kwota>konto.saldo) {
      cout<<"Zbyt duza kwota!!\n";
      return 5;
      }
   saldo=saldo+kwota;
   konto.saldo=(konto.saldo)-kwota;
   if(saldo>0)
      status=true;
   return 0;
}

int Konto::wplatazkarty(Karta& karta,double kwota,int numer,int PIN) {
   if(PIN!=karta.haslo) {
      cout<<"Zle haslo!!\n";
      return 2;
      }
   if(numer!=karta.numer_karty) {
      cout<<"Zle podany numer konta!!\n";
      return 3;
      }
   if(karta.status==false) {
      cout<<"Karta wplacajacego zablokowana!!Nie mozna dokonac przelewu\n";
      return 4;
      }
   saldo=saldo+kwota;
   karta.saldo=(karta.saldo)-kwota;
        if(saldo>0)
      status=true;
   return 0;
}


karta.cpp
Kod:
#include "karta.h"
#include <iostream.h>
#include <assert.h>

Karta::Karta (Konto *konto,int aNumer,char *aNazwisko,double aSaldo,int PIN,double aLimit): nazwisko(kopiujstring(aNazwisko)),
      numer_karty(aNumer),saldo(aSaldo),haslo(PIN),limit(aLimit),obj(konto)
{
      assert(aNumer>0);
      assert(aSaldo>0);
      if (!nazwisko) {
         delete [] nazwisko;
              status=false;
         return;
         }           
      status=true;
}

Karta::Karta (const Karta& karta): nazwisko(kopiujstring(karta.nazwisko)),numer_karty(karta.numer_karty),
                    saldo(karta.saldo),haslo(karta.haslo),limit(karta.limit),obj(karta.obj)

{
      assert(karta.status==true);
      if (!nazwisko) {
         delete [] nazwisko;
              status=false;
         return;
         }
           status=true;      
}

Karta::~Karta () {
      delete [] (char *)nazwisko;
}

char* Karta::kopiujstring(const char *zrodlo) {
      if ( !zrodlo ) return NULL;
      char* cel = new char [strlen(zrodlo)+1];
      if ( cel ) strcpy(cel,zrodlo);
      return cel;
}

int Karta::trans_gotowkowa(double kwota,int nr_karty,int PIN) {
      if(kwota<0) {
         cout<<"Kwota jest ujemna!!\n";
         return 3;
         }
      if(PIN!=haslo) {
         cout<<"Zle haslo!!\n";
         return 1;
         }
      if(nr_karty!=numer_karty) {
         cout<<"Zle podany numer karty!!\n";
         return 2;
         }
           if(status==false) {
                  cout<<"Karta zablokowana!!\n";
                  return 4;
                  }
      saldo=saldo-(kwota+(kwota*prowizja_gotowkowa));
      return 0;
}

int Karta::trans_bezgotowkowa(double kwota,int nr_karty,char *aNazwisko) {
      if(kwota<0) {
         cout<<"Kwota jest ujemna!!\n";
         return 3;
         }
      if(!(strcmp(aNazwisko,nazwisko))) {
         cout<<"Zle podane nazwisko!!\n";
         return 1;
         }
      if(nr_karty!=numer_karty) {
         cout<<"Zly numer karty!!\n";
         return 2;
         }
           if(status==false) {
                  cout<<"Karta zablokowana!!\n";
                  return 4;
                  }
      saldo=saldo-(kwota+(kwota*prowizja_bezgotowkowa));
      return 0;
}

int Karta::trans_bezgotowkowa(double kwota,int nr_karty,int PIN) {
      if(kwota<0) {
         cout<<"Kwota jest ujemna!!\n";
         return 3;
                  }
      if(haslo!=PIN) {
         cout<<"Zle haslo!!\n";
         return 1;
         }
      if(nr_karty!=numer_karty) {
         cout<<"Zly numer karty!!\n";
         return 2;
         }
           if(status==false) {
                  cout<<"Karta zablokowana!!\n";
                  return 4;
                  }
      saldo=saldo-(kwota+(kwota*prowizja_bezgotowkowa));
      return 0;
}

int Karta::zasilenie(double kwota) {
      if(kwota<0) {
         cout<<"Kwota jest ujemna!!\n";
         return 1;
         }
      saldo+=kwota;
      return 0;
}

int Karta::zasileniezkonta(Konto& konto,double kwota,int numer) {
            if(numer!=konto.numer_konta) {
         cout<<"Zle podany numer konta!!\n";
         return 2;
         }
      if(konto.status==false) {
         cout<<"Konto wplacajacego zablokowane!!Nie mozna dokonac przelewu\n";
         return 3;
         }
      if(kwota>konto.saldo) {
         cout<<"Zbyt duza kwota!!\n";
         return 4;
         }
      saldo=saldo+kwota;
      konto.saldo=(konto.saldo)-kwota;
      if(saldo>0)
         status=true;
      return 0;
}


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Czw 23:40, 30 Cze 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Projekt 2- Klasa TVector i operatory:

Vector.h
Kod:

class TVector {
      public:
             TVector();
             TVector(int _rozmiar);
             TVector(double* _v,int _rozmiar);
             TVector(const TVector& _v);
             
             int Rozmiar() const {return rozmiar;}
             
             TVector& operator += (const TVector& a);
             TVector& operator -= (const TVector& a);
             TVector& operator *= (const TVector& a);

             TVector operator + (const TVector& a);
             TVector& operator = (const TVector& a);
             TVector operator - (const TVector& a);
             TVector operator * (const TVector& a);     
             TVector operator * (double a);   
             double& operator [](int i)
             
      private:
             int rozmiar;
             double *v;
};             

friend ostream& operator << (const ostream& o, const TVector& _v);


Vector.cpp
Kod:
#include "Vector.h"

TVector::~TVector() {
        if(v)
             delete [] v;
}
/*******************************KONSTRUKTORY***********************************/
TVector::TVector(): v(NULL);rozmiar(0) {};

TVector::TVector (int _rozmiar) {
        v=new double[_rozmiar];
        rozmiar=_rozmiar;
}

TVector::TVector (double * _v,int _rozmiar) {
        v=new double[_rozmiar];
        rozmiar=_rozmiar;
        for(int i=0;i<rozmiar;i++)
                v[i]=_v[i];
}

TVector::TVector(const TVector& _v) {
        v=new double [_v.TVector()];
        rozmiar=_v.Rozmiar();
        for(int i=0;i<rozmiar;i++)
                v[i]=_v[i];
}
/**********************************OPERATORY***********************************/

double& TVector::operator [](int i) {
        return v[i];
}

TVector TVector::operator + (const TVector& _v) {
        if(rozmiar !=_v.Rozmiar())
                   throw NIEZGODNA_DLUGOSC;
        TVector wynik(rozmiar)
        for(int i=0;i<rozmiar;i++)
                wynik[i]=v[i];
        return wynik;
}

TVector TVector::operator - (const TVector& _v) {
        if(rozmiar !=_v.Rozmiar())
                   throw NIEZGODNA_DLUGOSC;
        TVector wynik(rozmiar)
        for(int i=0;i<rozmiar;i++)
                wynik[i]=v[i];
        return wynik;
}

TVector TVector::operator * (double a) {
        TVector wynik(rozmiar);
        for(int i=0;i<rozmiar;i++)
                wynik[i]=v[i]*a;
        return wynik;
}

TVector TVector:: operator * (const TVector & _v)
        double wynik=0;
        for(int i=0;i<rozmiar;i++)
                wynik+=v[i]*_v[i];
        return wynik;
}

TVector& TVector:: operator = (const TVector &_v) {
         if(v)
              delete [] v;
         rozmiar=_v.Rozmiar();
         v=new double [_v.Rozmiar()];
         for(int i=0; i<rozmiar;i++)
                 v[i]=_v[i];
         return *this;
}

TVector& TVector::operator += (const TVector& _v) {
         if(rozmiar!= _v.Rozmiar() )
                      throw NIEZGODNA_DLUGOSC;
         for(int i=0;i<rozmiar;i++)
                 v[i]+=_v[i];
         return *this;
}

TVector& TVector::operator -= (const TVector& _v) {
         if(rozmiar!= _v.Rozmiar() )
                      throw NIEZGODNA_DLUGOSC;
         for(int i=0;i<rozmiar;i++)
                 v[i]-=_v[i];
         return *this;
}

TVector & TVector:: operator *=(double a) {
        if(rozmiar!=_v.Rozmiar() )
                      throw NIEZGODNA_DLUGOSC;
        for(int i=0;i<rozmiar;i++)
                v[i]*=_v[i];
        return *this;
}

friend ostream & operator << (const ostream& o, const TVector& v) {
       for(int i=0;i<v.Rozmiar();i++)
               o<<v[i]<<' ';
       return o;
}
[/u]


Post został pochwalony 0 razy
Zobacz profil autora
pierwsza nominacja
PostWysłany: Czw 23:41, 30 Cze 2005
Jur@s
Nowy na forum

 
Dołączył: 29 Cze 2005
Posty: 3
Przeczytał: 0 tematów

Skąd: Lipno


Frycek na Prezydenta Włocławka !!!! kto jest za....wpisywac sie, stołek gwarantowany !!! Very Happy


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Czw 23:44, 30 Cze 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Projekt 3- klasy dokumentow osobistych czlowieka - Dziedziczenie:

TDokument.h
Kod:
#include "STRING3.h"
#include "JDATE.h"

                                 /* I POZIOM */
/***************************KLASA TDokument***********************************/

class TDokument {   

public:
        TDokument(const TString&,const TString&,char,const TJDate&,
                  const TString&,const TString&,const TJDate&,const TString&,
                  const TString&);   //konstruktor

        TString GetImie() const {return Imie;}
        TString GetNazwisko() const {return Nazwisko;}
        char    GetPlec() const {return Plec;}
        TJDate  GetDataUrodz() const {return DataUrodz;}
        TString GetMiejsceUrodz() const {return MiejsceUrodz;}
        TString GetAdres() const {return Adres;}
        TJDate  GetDataWydania() const {return DataWydania;}
        TString GetOrganWydajacy() const {return OrganWydajacy;}
        TString GetNumerDokumentu() const {return NumerDokumentu;}

protected:
        TString Imie;
        TString Nazwisko;
        char    Plec;
        TJDate  DataUrodz;
        TString MiejsceUrodz;
        TString Adres;
        TJDate  DataWydania;
        TString OrganWydajacy;
        TString NumerDokumentu;
};
                                 /* II POZIOM */
/******************************KLASA TDokWygasajacy****************************/

class TDokWygasajacy: public TDokument {

public:
        TDokWygasajacy(const TJDate&);      //konstruktor

        TJDate GetDataWaznosci() const {return DataWaznosci;}
protected:
        TJDate DataWaznosci;
};

/******************************KLASA TDowodOsobisty****************************/

class TDowodOsobisty: public TDokument {

public:
        TDowodOsobisty(const TString&,const TString&,const int,const TString&,
                       const TString&);      //konstruktor
       
        TString GetNazwiskoRodowe const {return NazwiskoRodowe;}
        TString GetImionaRodzicow const {return ImionaRodzicow;}
        int     GetWzrost const {return Wzrost;}
        TString GetKolorOczu const {return KolorOczu;}
        TString GetPesel const {return Pesel;}

protected:
        TString NazwiskoRodowe;
        TString ImionaRodzicow;
        int     Wzrost;
        TString KolorOczu;
        TString Pesel;
};

                                /* III POZIOM */
/****************************KLASA TPaszport***********************************/

class TPaszport: public TDokWygasajacy {

public:
        TPaszport(const TString&);

        TString GetObywatelstwo() const {return Obywatelstwo;}
protected:
        TString Obywatelstwo;
};

/*****************************KLASA TPrawoJazdy********************************/

class TPrawoJazdy: public TDokWygasajacy {

public:
        TPrawoJazdy(const TString&,const TString&);

        TString GetPesel() const {return Pesel;}
        TString GetKategorie() const {return Kategorie;}
protected:
        TString Pesel;
        TString Kategorie;
};


TDokument.cpp
Kod:
#include "TDokument.h"

/*******************************KLASA TDokument********************************/
TDokument::TDokument(const TString& _imie,const TString& _nazwisko,
                     const char _plec,const TJDate& _dataurodz,
                     const TString& _miejsceurodz,const TString& _adres,
                     const TJDate& _datawydania,const TString& _organwydajacy,
                     const TString& _numerdokumentu):
                     Imie(_imie),Nazwisko(_nazwisko),Plec(_plec),
                     DataUrodz(_dataurodz),MiejsceUrodz(_miejsceurodz),
                     Adres(_adres),DataWydania(_datawydania),
                     OrganWydajacy(_organwydajacy),NumerDokumentu(_numerdokumentu)
{
}

/*********************************KLASA TDokWygasajacy*************************/
TDokWygasajacy::TDokWygasajacy(const TJDate& _datawaznosci):
                               TDokument(_imie,_nazwisko,_plec,_dataurodz,
                               _miejsceurodz,_adres,_datawydania,_organwydajacy,
                               _numerdokumentu)
                               DataWaznosci(_datawaznosci)
{
}
/*********************************KLASA TDowodOsobisty*************************/
TDowodOsobisty::TDowodOsobisty(const TString& _nazwiskorodowe,
                               const TString& _imionarodzicow,const int _wzrost,
                               const TString& _koloroczu,const TString& _pesel):
                               TDokument(_imie,_nazwisko,_plec,_dataurodz,
                               _miejsceurodz,_adres,_datawydania,_organwydajacy,
                               _numerdokumentu)
                               NazwiskoRodowe(_nazwiskorodowe),
                               ImionaRodzicow(_imionarodzicow),Wzrost(_wzrost),
                               KolorOczu(_koloroczu),Pesel(_pesel)
{
}
/********************************KLASA TPaszport*******************************/
TPaszport::TPaszport(const TString& _obywatelstwo):
                     TDokWygasajacy(_datawaznosci),Obywatelstwo(_obywatelstwo)
{
}
/******************************KLASA TPrawoJazdy*******************************/
TPrawoJazdy::TPrawoJazdy(const TString& _pesel,const TString& _kategorie):
                         TDokWygasajacy(_datawaznosci),Pesel(_pesel),
                         Kategorie(_kategorie)
{
}


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Czw 23:48, 30 Cze 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Projekt 4- Polimorfizm(nieskończony projekt)

TOsoba.h
Kod:
#include "string3.h"
#include "jdate.h"

struct TPrzedmiot {
   int No;
   TString Nazwa;
   int LGodz;
   TPrzedmiot* Next;
};
                                 /* I Poziom */
/**********************************KLASA TOsoba********************************/

class TOsoba {            //Klasa abstrakcyjna                                                                 

public:
          TOsoba(const TString&,const TString&,const TString&,const TJDate&,
                 const TString&);     //konstruktor
          virtual ~TOsoba();   //desktruktor wirtualny
          //Akcesory
          TString GetNumer() const {return Numer;}
          TString GetNazwisko() const {return Nazwisko;}
          TString GetImie() const {return Imie;}
          TJDate  GetDataUrodz() const {return DataUrodz;}
          TString GetAdres() const {return Adres;}                   
          //Settery
          void SetAdres(const TString& newAdr) {Adres=newAdr;}
          void SetNazwisko(const TString& newNazw) {Nazwisko=newNazw;}
          int LiczbaGodzin();
          void Przedmioty(TPrzedmiot *przedm);
          //Funkcja czysto wirtualna
          virtual void Print()=0;
          virtual void Wczytaj()=0;
         
protected:
          TOsoba(const TOsoba& source);
         TOsoba& operator = (const TOsoba& source);
         
          TString Numer;     //numer indeksu lub kod dydaktyka
          TString Nazwisko;
          TString Imie;
          TJDate  DataUrodz;
          TString Adres;
          TPrzedmiot* Przedmiot;
         
};

                                /* II Poziom */
/********************************KLASA TStudent********************************/

class TStudent: public TOsoba {
          public:
                 TStudent(const int);     //konstruktor
                 virtual ~TStudent();             //destruktor
                 
                 int GetRok() const {return Rok;}    //akcesor
                 void SetRok( int newRok ) {Rok = newRok;}    //setter
                 //Funkcja wirtualna
                 virtual void Print();
                 virtual void Wczytaj();
          protected:
                    TStudent(const TStudent& source);
                   TStudent& operator = (const TStudent& source);
                    int Rok;           //rok studiow
};                         

/**********************************KLASA TNauczyciel***************************/

class TNauczyciel: public TOsoba {
      public:
             TNauczyciel(const TString&);   //konstruktor
             virtual ~TNauczyciel();   //destruktor
             
             TString GetJednostka() const { return Jednostka; } //akcesor
             void SetJednostka( int newJedn ) { Jednostka = newJedn; } //setter
             
             //Funkcja wirtualna
             virtual void Print();
             virtual void Wczytaj();
      protected:
                TNauczyciel(const TNauczyciel& source);
               TNauczyciel& operator = (const TNauczyciel& source);
                TString Jednostka;    //jednostka w ktorej zatrudniony nauczyciel
};

/****************************KLASY TWydzial i TLudzie**************************/


class TWydzial {
      public:
             friend class TLudzie;
      private:
              TWydzial(TOsoba* osoba):Osoba(osoba) {}
              ~TWydzial() {if (Osoba) {delete Osoba; Osoba=0;}}
              TOsoba* Osoba;
              TWydzial *Next,*Prev;
};

class TLudzie {
      public:
             TLudzie();
             ~TLudzie();
             
             void NowyElement();
             void Wyswietl();
      private:
              TWydzial *First,*Last;
              TOsoba* Znajdz(const TString&);
              void Wstaw(TOsoba*);
};


TOsoba.cpp
Kod:
#include "TOsoba.h"

/*******************************KLASA TOsoba***********************************/

TOsoba::TOsoba(const TString& _numer,const TString& _nazwisko,
               const TString& _imie,const TJDate& _dataurodz,
               const TString& _adres):Numer(_numer),Nazwisko(_nazwisko),
               Imie(_imie),DataUrodz(_dataurodz),Adres(_adres),Przedmiot(NULL)
{
}

TOsoba::~TOsoba() {
   TPrzedmiot* ptr;
   while (ptr=Przedmiot) {
      Przedmiot=Przedmiot->Next;
      delete ptr;
   }
}

TOsoba::TOsoba(const TOsoba& osoba): Numer(osoba.Numer),Nazwisko(osoba.Nazwisko),
                                  Imie(osoba.Imie),DataUrodz(osoba.DataUrodz),
                                     Adres(osoba.Adres),Przedmiot(osoba.Przedmiot)
{
}

int TOsoba::LiczbaGodzin() {
   TPrzedmiot* ptr = Przedmiot;
   int suma = 0;
   while ( ptr ) {
      suma+=ptr->LGodz;
      ptr = ptr->Next;
   }
   return suma;
}

void TOsoba::Przedmioty(TPrzedmiot* przedm) {
   przedm->Next = Przedmiot;
   Przedmiot = przedm;
}

void TOsoba::Wczytaj() {
    char buf[80];
   cout<<endl;
   cout<<"Nazwisko: "; cin.getline(buf,80,'\n'); Nazwisko = buf;
   cout<<"Imie: "; cin.getline(buf,80,'\n'); Imie = buf;
   cout<<"Numer indeksu lub kod dydaktyka: "; cin.getline(buf,80,'\n'); Numer = buf;
   cout<<"Data urodzenia (DDMMCCYY): "; cin>>DataUrodz;
   cout<<"Adres: "; cin.getline(buf,80,'\n'); Adres = buf;
   cin.getline(buf,80,'\n');
}
/***********************************KLASA TStudent*****************************/

TStudent::TStudent(const int _rok):TOsoba(_numer,_nazwisko,_imie,_dataurodz,
                                   _adres),Rok(_rok)
{
}

TStudent::~TStudent() {
}

TStudent::TStudent(const TStudent& student):TOsoba(osoba),Rok(student.Rok)
{
}

void TStudent::Print() {
   cout<<"Nazwisko: "<<Nazwisko<<
         "      Imie: "<<Imie<<endl;
   cout<<"Data urodzenia: "<<DataUrodz<<
   cout<<"Adres: "<<Adres<<endl;
   cout<<"Numer albumu: "<<Numer<<
         "      Rok studiow: "<<Rok<<endl;
   cout<<"Liczba godzin wybranych zajec: "<<LiczbaGodzin()<<endl;
}

void TStudent::Wczytaj() {
     TOsoba::Wczytaj();
     char buf[80];
     cout<<"Rok studiow: " cin>>Rok; cin.getline(buf,80,'\n');
}
/*********************************KLASA TNauczyciel****************************/

TNauczyciel::TNauczyciel(const TString& _jednostka):TOsoba(_numer,_nazwisko,
                         _imie,_dataurodz,_adres),Jednostka(_jednostka)
{
}

TNauczyciel::~TNauczyciel() {
}

void TNauczyciel::Wczytaj() {
   TOsoba::Wczytaj();
   char buf[80];
   cout<<"Jednostka: "; cin.getline(buf,80,'\n'); Jednostka = buf;
    cin.getline(buf,80,'\n');

}

void TNauczyciel::Print() {
   cout<<"Nazwisko: "<<Nazwisko<<endl;
         "Imie: "<<Imie<<endl;
   cout<<"Data urodzenia: "<<DataUrodz<<endl;
   cout<<"Adres: "<<Adres<<endl;
   cout<<"Kod dydaktyka: "<<Numer<<endl;
         "Jednostka w ktorej zatrudniony nauczyciel: "<<Jednostka<<endl;
   cout<<"Liczba godzin wybranych zajec: "<<LiczbaGodzin()<<endl;
}

/***********************  LISTA PRACOWNIKOW I STUDENTOW WYDZIALU***************/

TLudzie:TLudzie() {
                  First=new TWydzial(NULL);
                  Last=new TWydzial(NULL);
                  First->Next=Last;
                  Last->Prev=First;
}

TLudzie::~TLudzie() {
                  TWydzial* ptr=First->Next;
                  while(ptr!=Last) {
                       First->Next=ptr->Next;
                     delete ptr;
                     ptr=First->Next;
                       }
}

void TLudzie::Wstaw(TOsoba* osoba) {
     for (TWydzial* ptr=First->Next; ptr!=Last; ptr=ptr->Next)
      if ( ptr->Osoba->GetNazwisko() > osoba->GetNazwisko() ) break;

    TWydzial *nowy = new TWydzial(osoba);
     nowy->Next = ptr->Prev->Next;
     nowy->Prev = ptr->Prev;
     ptr->Prev->Next = nowy;
     ptr->Prev = nowy;
}


void TLudzie::NowyElement() {
     cout<<endl;
    cout<<"Wybierz kogo chcesz dodac do listy:"<<endl;
     cout<<"1. Student\n";
     cout<<"2. Nauczyciel"<<endl<<endl;
     cout<<"Twoj wybor: ";
     TOsoba *ptr;
     char ss;
   do ss=getch(); while ((ss<'1') || (ss>'2') );
      cout<<endl;
     switch ( ss ) {
          case '1': ptr = new TStudent(); break;
          case '2': ptr = new TNauczyciel(); break;
           }
     ptr->Wczytaj();
     Wstaw(ptr);
}

TOsoba* TLudzie::Znajdz(const TString& nazw) {
     for (TWydzial* ptr=First->Next; ptr!=Last; ptr=ptr->Next)
         if ( ptr->Osoba->GetNazwisko() == nazw ) return ptr->Item;
         else
         if ( ptr->Osoba->GetNazwisko() > nazw ) break;
     return NULL;
}

void TLudzie::Wyswietl() {
   char buf[80];
     cout<<endl<<endl;
     cout<<"Podaj nazwisko osoby: "; cin.getline(buf,30,'\n');
     TOsoba *_osoba = Znajdz(buf);
     if (_osoba) _osoba->Print();
     else cout<<"Nie znaleziono osoby o podanym nazwisku"<<endl;
     getch();
}


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Czw 23:50, 30 Cze 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Na Prezydenta Wloclawka nie chce startowac, nie kreci mnie to:P Mam nadzieje ze pomoga Wam te projekty i powodzenia na zaliczeniu, bedzie dobrze:) Ja na szczescie juz mam to wszystko za soba:)


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pon 16:40, 15 Sie 2005
Xena
Obserwator

 
Dołączył: 10 Sie 2005
Posty: 11
Przeczytał: 0 tematów

Skąd: Włocławek


Fritzu a masz ten projekt z funkcją wirtualną bo mam z nim mały problemik Confused


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pon 22:36, 15 Sie 2005
Fritz
Administrator

 
Dołączył: 29 Cze 2005
Posty: 110
Przeczytał: 0 tematów

Skąd: Włocławek


Projekt z funkcja wirtualna to jest ten 4 projekt ktory wkleilem. Wszystkie funkcje wirtualne sa dobrze zaimplementowane, problem mialem tylko z bazą danych. W klasie TOsoba stworzylem tzw funkcje czysto wirtualne, dzieki czemu klasa ta stala sie klasa abstrakcyjna. Nauczcie sie co to jest funkcja czysto wirtualna i klasa abstrakcyjna. To sie znajduje gdzies pod koniec jego skryptu. Moze o to pytac.


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Śro 20:26, 17 Sie 2005
Xena
Obserwator

 
Dołączył: 10 Sie 2005
Posty: 11
Przeczytał: 0 tematów

Skąd: Włocławek


Wielkie dzieki bo u mnie sa jakies bledy!!!


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Śro 20:26, 17 Sie 2005
Xena
Obserwator

 
Dołączył: 10 Sie 2005
Posty: 11
Przeczytał: 0 tematów

Skąd: Włocławek


Wielkie dzieki bo u mnie sa jakies bledy!!!


Post został pochwalony 0 razy
Zobacz profil autora
PostWysłany: Pią 19:22, 20 Kwi 2007
Hannah59387
Obserwator

 
Dołączył: 20 Kwi 2007
Posty: 12
Przeczytał: 0 tematów



BDSM heaven!
[link widoczny dla zalogowanych]


Post został pochwalony 0 razy
Zobacz profil autora
Projekty z C++ dla tych ktorzy do tej pory nie maja:D
  Forum Forum studentów WSHE we Włocławku Strona Główna » Sesja,zaliczenia,koła
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Wszystkie czasy w strefie CET (Europa)  
Strona 1 z 1  

  
  
 Napisz nowy temat  Odpowiedz do tematu  



fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © phpBB Group
Theme designed for Trushkin.net | Themes Database.
Regulamin