Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
rob
Chuda Jedynka
Dołączył: 15 Cze 2007
Posty: 145
Przeczytał: 0 tematów
|
Wysłany: Pią 20:13, 30 Lis 2007 Temat postu: Magazyn w/g Kłosowskiego |
|
|
Temat był mniej więcej: Napisać dwie klasy, jedna do przechowywania informacji o produkcie (nazwa, oznaczenie kodowe, cena i termin ważności).
Druga klasa - magazyn, zawierająca metody do: dodawania, usuwania, inwentaryzacji, obliczania wartości wszystkich produktów, wyświetlania przeterminowanych produktów.
Moje rozwiązanie (rzecz jasna tylko do celów edukacyjnych ):
Kod: | #include<iostream>
#include<string>
/****************************************************************************/
/* Prezentacja klas CProdukt i CMagazyn, metod do dodawania, usuwania itP. */
/* */
/* Copyright Robert Krolak 2007 */
/****************************************************************************/
using namespace std;
class CProdukt
{
public:
int iWaznosc;
float fCena;
string sNazwa, sOznaczenie;
};
class CMagazyn
{
public:
CProdukt * *CPZawartosc;
CMagazyn(int); // Tworzymy magazyn o okreslonym rozmiarze
~CMagazyn();
bool Dodaj(CProdukt *produkt);
bool Usun(CProdukt *produkt);
void Inwentaryzuj(void); // wyjscie od razu na interface
float Wartosc(void);
CProdukt * Przeterminowane(void); // Wyjscie od razu na interface
private:
int iRozmiar, iZajetych;
};
int main(int argc, char* argv[])
{
CMagazyn CMSklad(10);
CProdukt * CPnowy;
CProdukt * CPdousuwania;
CPnowy=new CProdukt;
CPnowy->iWaznosc=15;
CPnowy->fCena=5.5;
CPnowy->sNazwa="Zeszyt A4";
CPnowy->sOznaczenie="ZA4-1";
CMSklad.Dodaj(CPnowy);
CPnowy=new CProdukt;
CPnowy->iWaznosc=20;
CPnowy->fCena=10;
CPnowy->sNazwa="Organizer";
CPnowy->sOznaczenie="OrD-2008";
CMSklad.Dodaj(CPnowy);
CPdousuwania=CPnowy;
CPnowy=new CProdukt;
CPnowy->iWaznosc=15;
CPnowy->fCena=5.5;
CPnowy->sNazwa="Zeszyt A4";
CPnowy->sOznaczenie="ZA4-1";
CMSklad.Dodaj(CPnowy);
CPnowy=new CProdukt;
CPnowy->iWaznosc=15;
CPnowy->fCena=5.5;
CPnowy->sNazwa="Zeszyt A4";
CPnowy->sOznaczenie="ZA4-1";
CMSklad.Dodaj(CPnowy);
CPnowy=new CProdukt;
CPnowy->iWaznosc=20;
CPnowy->fCena=10;
CPnowy->sNazwa="Organizer";
CPnowy->sOznaczenie="OrD-2008";
CMSklad.Dodaj(CPnowy);
CPnowy=new CProdukt;
CPnowy->iWaznosc=-100;
CPnowy->fCena=10;
CPnowy->sNazwa="Jajo kurze";
CPnowy->sOznaczenie="JKM-1";
CMSklad.Dodaj(CPnowy);
CMSklad.Inwentaryzuj();
CMSklad.Usun(CPdousuwania);
CMSklad.Inwentaryzuj();
if(CPdousuwania=CMSklad.Przeterminowane())
CMSklad.Usun(CPdousuwania);
CMSklad.Inwentaryzuj();
system("PAUSE");
return 0;
}
CMagazyn::CMagazyn(int rozmiar):iRozmiar(rozmiar)
{
CPZawartosc=new CProdukt*[rozmiar]; // Nowy sklad
iZajetych=0;
}
CMagazyn::~CMagazyn()
{
delete[] CPZawartosc;
}
bool CMagazyn::Dodaj(CProdukt *produkt)
{
if(iZajetych<iRozmiar) // Jesli jest miejsce
{
CPZawartosc[iZajetych++]=produkt; // Dopisz produkt do listy
return true;
}
else
return false; // Nie dalo sie dopisac - braklo miejsca w magazynie
}
bool CMagazyn::Usun(CProdukt *produkt)
{
for(int index=0;index<iZajetych;index++)
{
if(CPZawartosc[index]==produkt)
{
delete CPZawartosc[index];
for(;index<iZajetych;index++) // Przesuwanie pozostalych elementow, by zalatac dziure po usunietym
CPZawartosc[index]=CPZawartosc[index+1];
iZajetych--;
return true; // Poprawnie usunieto produkt.
}
}
return false; // Nie mozna usunac - produkt nie istnieje.
}
void CMagazyn::Inwentaryzuj(void)
{
if(iZajetych)
{
cout<<"inwentaryzuje, czekaj...\n";
string * Nazwy=new string[iZajetych]; // Podreczn alista produktow i ich ilosci
int * Ilosc=new int[iZajetych];
int iIloscTypow=0;
float fWartosc=0;
for(int tmp=0;tmp<iZajetych;tmp++) // Dla kazdego produktu w magazynie
{
CProdukt * CPprodukt=CPZawartosc[tmp]; // aktualnie sprawdzany produkt
bool koniec=false;
for(int index=0;(index<iIloscTypow)&&(!koniec);index++) // sprawdzam czy juz taki sie pojawil
{
if(Nazwy[index]==CPprodukt->sNazwa) // jesli tak to tylko zwiekszam ilosc sztuk
{
Ilosc[index]++;
koniec=true;
}
}
if(!koniec)
{
Ilosc[iIloscTypow]=1; // jesli tego produktu jeszcze nie bylo to umiescic go na podrecznej liscie
Nazwy[iIloscTypow]=CPprodukt->sNazwa;
iIloscTypow++;
}
fWartosc+=CPprodukt->fCena; // Przy okazji zsumuje wartosc wszystkich produktow
}
cout<<"W magazynie jest "<<iZajetych<<" produkt[-y/-ow], na laczna wartosc: "<<fWartosc<<" W tym:\n[nazwa]\t\t[ilosc]\n";
for(int index=0;index<iIloscTypow;index++)
cout<<Nazwy[index]<<"\t"<<Ilosc[index]<<endl; // Wyswietlam zgromadzone dane
cout<<"\nKoniec inwentaryzacji.\n";
delete[] Nazwy;
delete[] Ilosc;
}
else
cout<<"Magazyn jest pusty.\n";
}
float CMagazyn::Wartosc(void)
{
float fWartosc=0;
for(int index=0;index<iZajetych;index++)
fWartosc+=CPZawartosc[index]->fCena;
return fWartosc;
}
CProdukt * CMagazyn::Przeterminowane(void)
{
CProdukt * Pprzeterminowany=NULL;
cout<<"Szukam przeterminowanych produktow...\n";
for(int index=0;index<iZajetych;index++)
{
if(CPZawartosc[index]->iWaznosc<0)
{
cout<<CPZawartosc[index]->sNazwa<<endl;
if(!Pprzeterminowany)
Pprzeterminowany=CPZawartosc[index];
}
}
cout<<"koniec.\n";
// To dolozylem od siebie:
return Pprzeterminowany; // zwracam wskaznik do pierwszego znalezionego przeterminowanego produktu
}
|
|
|
Powrót do góry |
|
 |
|
 |
staniol
ELEKTRONIK - on już ciągnie druty
Dołączył: 12 Paź 2006
Posty: 387
Przeczytał: 0 tematów
Skąd: Piekary Śl.
|
Wysłany: Sob 4:19, 01 Gru 2007 Temat postu: |
|
|
tak sobie na to popatrzylem i dochodze do wniosku ze albo ci sie bardzo nudzi w domu albo poprostu kochasz programowanie :] pozdro
|
|
Powrót do góry |
|
 |
rob
Chuda Jedynka
Dołączył: 15 Cze 2007
Posty: 145
Przeczytał: 0 tematów
|
Wysłany: Sob 10:50, 01 Gru 2007 Temat postu: |
|
|
Na imprezę nie idę bo chory jestem - przeziębiłem się Jak mam leżeć w łóżku to mnie k0rw1c4 strzela. Poza tym kumpel mnie prosił.
No i w sumie lubię C++
|
|
Powrót do góry |
|
 |
Gość
|
Wysłany: Sob 12:17, 01 Gru 2007 Temat postu: |
|
|
R3$P3cT
|
|
Powrót do góry |
|
 |
Ice
ELEKTRONIK - on już ciągnie druty
Dołączył: 03 Lis 2006
Posty: 301
Przeczytał: 0 tematów
Skąd: Świętochłowice
|
Wysłany: Sob 12:36, 01 Gru 2007 Temat postu: |
|
|
to je koniec ;]
|
|
Powrót do góry |
|
 |
|