Klasy i menu w C++

0

Mama problem z programem 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.
Zacząłem już pisać ten program ale mam problemy, m.in. z menu.

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
class towar
{
    public:
        char nazwa[64];
        float cena;
        int ilosc;
        void wpisz();
        float oblicz(float kwota);
        void wyswietl();
    };
    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;
        }
        
        main()
        {
            int i,ile;
            towar tow[i];
            cout<<"\nWpisz ilosc pozycji";
            cin>>ile;
            for (i=0,i<ile,i++)
            tow[i].wpisz();
            tow[i].wartosc();
            cout<<"\nIle pozycji chcesz wyswietlic";
            cin>>ile;
            for(i=0,i<ile,i++)
            tow[i].wyswietl();
            getch();
        }    
        Czy ktoś mógłby zmodyfikować ten program aby funkcjonował i posiadał menu. Z góry dziękuję za pomoc.
0

na pewno Ci nie bede pisał gotowego programu, ani modyfikowal bo mi sie nie chce, ale ogolna wizja menu:
Mozesz <ort>po prostu </ort>zrobic funkcje która wyswietla mozliwe opcje programu na ekranie wraz z informacja, ktory klawisz trzeba wybrac aby funkcja zostala zrealizowana.
Tworzysz zmienna, w ktorej bedziesz przechowywal wybrana opcje.
Tworzysz pętle dopoki ww. zmienna nie bedzie miała wartosci okreslajacej zakonczenie programu.
Jako pierwsza funkcje dajesz tę, ktora wyswietla opcje menu.
Nastepnie mozesz zobie zrobic poszczegolne funkcje, ktore odpowadaja za wyswietlanie okreslinych danych i przekazywac im jako parametr wybrana opcje. Jesli wybrana opcja (numer wpisany na klawiaturze) zgadza się z numerem odpowiadajacym dzialania, ktore wykonuje ta funkcja to wyswietlasz to co trzeba.

Mozesz tez w petli glownej zamiast tego zastosowac instrukcje switch, ktora bedzie wybierala bezparametrowe funkcje odpowiadajace za dane działanie.

Tak czy inaczej musisz eleganckim wyjsciem bedzie zastosowanie pęti głownej programu.

Pozdrawiam i zachecam do samodzielnego myslenia (bo nie latwo podpierac sie moim opisem :p)

0

Trochę zmieniłem ten program ale i tak sa w nim błedy. Czy ktośmógłby mi pomóc i je poprawić ??

#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";
        }
        main()
        {
       int i,ile;
       towar tow[100];
       char menu;
        {
        wyswietl_menu();
        cin>>menu;
        if(menu='1')do
        {
            cout<<"\nWpisz ilosc pozycji";
            cin>>ile;
            while(i<ile)
            {
            tow[i].wpisz();
            }
            if(menu='2')do
            {
            tow[i].wartosc();
            }
            if(menu='3')do
            cout<<"\nIle pozycji chcesz wyswietlic";
            cin>>ile;
            while(i<ile)
            {
            tow[i].wyswietl();
            }
            if(menu='4')do
            {
            getch();
        }
        getch();
        }
0

Zmodyfikowałem ten program ale teraz po wpisaniu jakiejkolwiek liczby nie mogę wprowadzać danych tylko wybiera inna opcję z programu.
#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;

}
Jak powinien ten kod źródłowy być napisany. Proszę o pomoc.

0

jest
if(menu='1')
powinno być
if(menu=='1')

0

poprawiłem, kompiluje sie tylko są błędy w programie.

0
if(menu='3')
        {  
          cout<<"\nWartosc towarow wynosi";
          towar::oblicz;
          }

Nie wiem jakim sposobem wywolujesz :

towar::oblicz;

Ale metoda oblicz po pierwsze nie jest statyczna, a po drugie ma parametr, z tego co zobaczylem. Po co uzywacie klas, jezeli wszystko jest publiczne, mozna uzyc struktury ten sam efekt, a nie trzeba public pisac ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1