Skocz do zawartości
Misiek690

Klasy I Menu W C++

Rekomendowane odpowiedzi

Mam problem z programem w c++, który ma umożliwiać przechowywanie informacji o towarach w magazynie. Program ten powinien posiadać menu: 1. wprowadzanie danych, 2. wyświetlanie danych, 3. obliczenie wartości, 4. koniec pracy. program powinien umożliwić wybranie ilości wprowadzanych elementów oraz wyświetlanych elementów. Wybranie opcji obliczanie wartości powinno wywoływać metodę oblicz(float kwota) obliczającą i oddającą do programu sumę cen wszystkich wprowadzonych elementów. Menu programu powinno powtarzać się aż do wybrania opcji koniec pracy.

 

#include<iostream.h> #include<stdio.h> #include<conio.h> class towar{   public:      char nazwa[64];      float cena;      int ilosc, i, ile;            void wpisz();      float oblicz(float kwota);      void wyswietl();      void wyswietl_menu();};void towar::wpisz(){    cout<<"\nPodaj nazwe towaru";    cin>>nazwa;    cout<<"\nPodaj cene twaru";    cin>>cena;    cout<<"\nPodaj ilosc towaru";    cin>>ilosc;};float towar::oblicz(float kwota){    cout<<"\nWartosc towarow wynosi";    kwota=cena*ilosc;    return (kwota);}void towar::wyswietl(){      cout<<"\nNazwa towaru";      cout<<nazwa;      cout<<"\nIlosc";      cout<<ilosc;      cout<<"\nCena";      cout<<cena;}void wyswietl_menu(){      cout<<"\n1. Wprowadzanie danych";      cout<<"\n2. Wyświetlanie danych";      cout<<"\n3. Obliczanie wartości towarów";      cout<<"\n4. Koniec programu";      cout<<"\nWybierz numer opcji";}int main() {      int i,ile;      towar tow[100];      char menu;               wyswietl_menu();        cin>>menu;                          if(menu=='1')        {           cout<<"\nWpisz ilosc pozycji";           cin>>ile;           while(i<ile) tow[i].wpisz();         }        if(menu=='3')        {            cout<<"\nWartosc towarow wynosi";          towar::oblicz;          }                if(menu=='2')        {         cout<<"\nIle pozycji chcesz wyswietlic";         cin>>ile;         while(i<ile) tow[i].wyswietl();       }       if(menu=='4') getch();            return 0;}

// Używaj tagów

 

// ParanoiK

Program przechodzi kompilację, po uruchomieniu wyświetla menu i pozwala wybrać opcję ale gdy chcę wprowadzić np. dla ilu pozycji chcę wprowadzać dane to zamiast pod zmienna "ile" podstawia to co wpiszę pod zmienną "menu" i wybiera inną opcję z menu a później "wyskakuje" z programu :(

czy ktoś mógłby zmodyfikować ten kod źródłowy żeby program działał dobrze ?? Z góry dziękuję za pomoc.

Edytowane przez ParanoiK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Coś tutaj sknociłeś nie da się ukryc ale co??

 

Napewno menu , funkcja wyświetl menu powinna zawierać jakąś pętle nie prawdasz?? i w dobrym stylu wywoływać inne funkcje przez Switch i case???

proste menu:

 

for(;;){if(!run)break;zapelnijTab(ptr);drukuj(ptr);wyborstrony(ptr,ptr1,ptr2);drukuj(ptr);go: cout<<"powtorzyc?\n(TAK-T)\n(NIE - N)\n";//nie chciało mi się już chrzanić z usówaniem gotocin>>jak;switch(jak){case 't':run = true;break;case 'n' :run = false;break;default :  cout<<"podales nie wlasciwa litere \n";goto go;break;//nie chciało mi się już chrzanić z usówaniem goto}}
Jest to przykład prostego zapytania w formie cyklicznego menu , jak podasz "t" to pętla for będzie dalej się kręcić , jeżeli podasz n , wyyjdziesz z pętli , a jak podasz coś innego , to instrukcją goto(wiem że to zły zwyczaj) wrucisz do wczytywania ponoownie wyboru Edytowane przez Contrast

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie da sie ukryć Misiek że namieszałeś. Ja bym to zrobił tak.

Napisane w C++Builder aby działo w DevC++ wystarczy skomentować jedno clrscr().

Ale wtedy będzie rolować a nie czyścić ekran...

 

#include <iostream>#include <cstdio>#include <conio.h>using namespace std;//------------------------------------------------------------------------------class towar{     char nazwa[64];     float cena;     int ilosc ,  i, ile;     static int ilosc_w_magazynie, ilosc_rodzajow;     static float calkowity_koszt;public:     void wpisz();     static void oblicz();     void wyswietl();     void wyswietl_menu();};//------------------------------------------------------------------------------void towar::wpisz(){   cout << "Podaj nazwe towaru - ";   cin >> nazwa;   cout << "Podaj cene twaru - ";   cin >> cena;   cout << "Podaj ilosc towaru - ";   cin >> ilosc;   cout << endl;   calkowity_koszt = ilosc*cena+calkowity_koszt;   ilosc_rodzajow++;   ilosc_w_magazynie += ilosc;};void towar::oblicz(){   cout << "\nIlosc pozycji : " << ilosc_rodzajow        << "\nIlosc towarow : " << ilosc_w_magazynie        << "\nCalkowity koszt : " << calkowity_koszt << endl;   getch();}void towar::wyswietl(){     cout << "\n| Nazwa towaru : " << nazwa          << "\t| Cena : " << cena          << "\t| Ilosc : " << ilosc          << "\t|" ;}void wyswietl_menu(){     cout << "\n1. Wprowadzanie danych"          << "\n2. Wyswietlanie danych"          << "\n3. Obliczanie wartosci towarow"          << "\n4. Koniec programu"          << "\nWybierz numer opcji - ";}//------------------------------------------------------------------------------float towar::calkowity_koszt;  // obiekty statyczne klasyint towar::ilosc_w_magazynie;  // aby byly znane globalnieint towar::ilosc_rodzajow;     ////------------------------------------------------------------------------------int main(){     int i= 0,ile = 0 ,j = 0 , menu;     towar tow[100];   do {         clrscr();  //to wykasować aby program działal na devc++         wyswietl_menu();         cin>>menu;        if(menu==1)        {            cout << "\n\nWpisz ilosc pozycji - ";            cin >> ile;            int war;                                            // tu taka sztczka aby            for(war = i; war < ile+i; war++) tow[war].wpisz(); // dopis. do konca tablicy            i = war;                                            // obiektów a nie od poczatku        }        else if(menu==3)        {            cout << "\n\nZestawienie magazynu : \n" ;            towar::oblicz();        }        else if(menu==2)        {            cout << "\nIle pozycji chcesz wyswietlic - ";            cin >> ile;            while(ile > j) tow[j++].wyswietl();            j = 0;            cout << endl ;            towar::oblicz();        }        else break;     }     while(1);     return 0;}//------------------------------------------------------------------------------

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...