Wykorzystanie pętli - powrót do menu programu

0

Witam mam problem z wykorzystaniem pętli w dodawaniu książek, nie mam pojęcia jak ją zastosować, mianowicie chce zęby pętla wykonywała sie n razy i spowodowała powrót do menu wciśnięciem konkretnego przycisku.
Mam do napisania program będący bazą książek. Program pobiera od użytkownika N książek, Książka powinna być opisana co najmniej imieniem i nazwiskiem autora, tytułem,
wydawnictwem i numerem bibliotecznym. Program ma mieć możliwość wyświetlenia
danych posortowanych wg nr tytułu oraz zapisu importu danych z pliku. Ma również zawierać menu
Udało mi się napisać tyle programu

Jestem kompletnie zielony w te klocki, Proszę o pomoc

#include <cstdlib>
#include <iostream>
#include <fstream>


using namespace std;

string imie, nazwisko, tyt, wyd;
int nr_bib;

int main(int argc, char *argv[])
{
    
    int x = 0; 
    while(x>5 || x<1)
    {
    cout<<"*******************MENU********************"<<endl;
    cout<<"1.Dodawanie ksiazki"<<endl;
    cout<<"2.Wyswietl ksiazki"<<endl;
    cout<<"3.Wyswietl ksiazki posortowane według numeru bibliotecznego"<<endl;
    cout<<"4.Wyswietl ksiazki posortowane według tytulu"<<endl;
    cout<<"5.Wyjscie z programu."<<endl;
    cout<<"Wybieram : ";
    cin>>x;
    system("cls");
     }
    
    switch (x)
    {
       case 1:
       	
  {
    string const nazwaPliku("ksiazki.txt");
    ofstream mojStrumien("ksiazki.txt", ios::app);
 
    if(mojStrumien)    
    {
        
        
        cout << "Podaj imie: ";         cin>>imie; 
         cout << "Podaj nazwisko: ";         cin>>nazwisko;
         cout << "Podaj tytul: ";         cin>>tyt;
         cout << "Podaj wydawnictwo: ";         cin>>wyd;
         cout << "Podaj numer biblioteczny: ";         cin>>nr_bib;
        
        mojStrumien 
		<< "Imie autora: " << imie  <<endl
        << "Nazwisko autora: " << nazwisko <<endl
        << "Tytul: " << tyt <<endl
        << "Wydawnictwo: " << wyd  <<endl
        << "Numer biblioteczny: " << nr_bib  <<endl
        
        
		  << endl;
		  
		  
    }
    else
    {
        cout << "BŁĄD: nie można otworzyć pliku." << endl;
    }
    return 0;
}
       	
       	
       	
              break;
       case 2:
       	
       	
       	{
    string linia;
    fstream plik;
 
    plik.open("ksiazki.txt", ios::in);
    if(plik.good() == true)
    {
        while(!plik.eof())
        {
            getline(plik, linia);
            cout << linia << endl; 
        }
        plik.close();
         
    }
    else
    {
        cout << "BLvAD: nie mozna otworzyc pliku." << endl;
    }
    
   
 
    system("PAUSE");
    return(0);
}


       	
              break;
       case 3:
       	
       	
       	
       	
              break;
       case 4:                   
              break;
       case 5:    
              break;    
           }

    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Witam.

Jeśli chodzi o wykonywanie się n razy to użyj for budowa to for(od ilu ma zacząć;warunek kiedy ma skończyć; co ile ma przesuwać). Masz przykład for(int i=0;i<10;i++){kod źródłowy }
A jeśli chodzi o oczekiwanie na znak to polecam się pobawić np: cin.get() a żeby wrócić do menu to pozwoli na to zapis main();
Sorka ale w momencie pisania tego postu nie miałem za dużo czasu i jak będę miał czas to postaram się tym zająć na miarę możliwości.

Życzę miłego dnia :)

0

pestka12 byłbym bardzo wdzięczny gdybyś pokazał jak ma wyglądać kod, z góry dziękuje :)
Pozdrawiam i życzę miłego dnia :)

0

Witam ponownie.

Przepraszam ale nie miałem zbyt dużo czasu żeby się temu przyjrzeć ale znalazłem czas.

#include<iostream>
#include<windows.h>
#include<cstdlib>
#include<fstream>
#define nazwa_pliku "ksiazki.txt"
using namespace std;

void dodaj_ksiazke(int ile=1);
void wyswietl_ksizki();

string imie,nazwisko,tyt,wyd;
int nr_bib;

int main(int argc,char *argv[])
{
int x,ilosc=1;


    cout<<"*******************MENU********************"<<endl;
    cout<<"1.Dodawanie ksiazki"<<endl;
    cout<<"2.Wyswietl ksiazki"<<endl;
    cout<<"3.Wyswietl ksiazki posortowane według numeru bibliotecznego"<<endl;
    cout<<"4.Wyswietl ksiazki posortowane według tytulu"<<endl;
    cout<<"5.Wyjscie z programu."<<endl;
    cout<<"Wybieram : ";
    cin>>x;
    switch(x)
{
   case 1:
   cout<<"Podaj ile chcesz wprowadzic ksiazek: ";cin>>ilosc;
   dodaj_ksiazke(ilosc);
   system("pause");
   main();

   break;
   case 2:

   break;
   case 3:

   break;
   case 4:

   break;
   case 5:

   #undef nazwa_pliku
   exit(0);

   break;
   default:
   cout<<"Program nie posiada funkcji o takim numerze: "<<x<<endl;
   cout<<"Wcisnij dowolny klawisz aby powrocic do menu "<<endl;
   cin.get();
   main();
   break;

}


}




void dodaj_ksiazke(int ile=1)
{
ofstream mojStrumien(nazwa_pliku,ios::app);
if(mojStrumien)
{
for(int i=0;i<ile;i++)
{
     cout << "Podaj imie: ";         cin>>imie; 
     cout << "Podaj nazwisko: ";         cin>>nazwisko;
     cout << "Podaj tytul: ";         cin>>tyt;
     cout << "Podaj wydawnictwo: ";         cin>>wyd;
     cout << "Podaj numer biblioteczny: ";         cin>>nr_bib;
 
        mojStrumien 
        << "Imie autora: " << imie  <<endl
        << "Nazwisko autora: " << nazwisko <<endl
        << "Tytul: " << tyt <<endl
        << "Wydawnictwo: " << wyd  <<endl
        << "Numer biblioteczny: " << nr_bib  <<endl
 
          << endl;

}
else
{

cout << "BŁĄD: nie można otworzyć pliku." << endl;
cout<<"Wcisnij dowolny klawisz aby wrocic do menu "<<endl;
cin.get();
main();

}

}




}
void wyswietl_ksizki()
{
    string linia;
    fstream plik;
 
    plik.open(nazwa_pliku, ios::in);
    if(plik.good() == true)
    {
        while(!plik.eof())
        {
            getline(plik, linia);
            cout << linia << endl; 
        }
        plik.close();
 
    }
    else
    {
        cout << "BLvAD: nie mozna otworzyc pliku." << endl;
        cout<<"Wcisnij dowolny klawisz aby wrocic do menu "<<endl;
        cin.get();
        main();
    }


}

Jeśli będą jakieś błędy lub będzie złe działanie programu proszę o jakieś info :)

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