Witam.
Ostatnio pomagałem na forum i napisałem taki kod.
#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 << "BlaD: nie mozna otworzyc pliku." << endl;
cout<<"Wcisnij dowolny klawisz aby wrocic do menu "<<endl;
cin.get();
main();
}
}
I dostałem takie uwagi od jednego z użytkowników forum. I proszę o wyjaśnienie a poniżej jest cytat tego użytkownika.
Zmienne globalne, wywoływanie
main();
,#define
#undef
a potem napisanie z ręki nazwy pliku, formatowanie... nie rób tak!