Witam,
Mam do zrobienia prosta księgarnie:
Książki są reprezentowane przez tytuł, nazwisko autora, indeks, cenę.
Program wykonuje następujące operacje po wciśnięciu odpowiedniego przycisku:
1 - Koniec;
2 - Dopisanie nowej książki do księgarni;
3 - Wypisanie wszystkich książek;
4 - Wypisanie książek autora o podanym nazwisku.
Dane o książkach mają być zapisane w pliku tekstowym.
Mam problem z tytułem wielowyrazowym oraz szukaniem po nazwisku.
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int i;
struct ksiegarnia
{
string tytul_ksiazki;
string autor;
string indeks;
string cena;
};
ksiegarnia dane[50];
void Dodaj();
void Zapisz();
void Znajdz();
void Baza();
int main()
{
int k;
short x;
cout<<"\n\n\tWczytanie danych ";
cout<<"\n\n\t1 - TAK wczytanie danych z istniejacego pliku baza.txt";
cout<<"\n\t2 - NIE - utworzenie pustego pliku ";
cout<<"\n\n\tPodaj nr opcji: ";
cin>>x;
if(x==1)
{
ifstream plik("baza.txt", ios::in);
plik >> i;
if (!plik)
{
cout << "\n\n\t\tBrak pliku - program zostanie zakonczony";
cout<<"\n\n\t\t";
system("pause");
return 0;
}
else
{
int j = 0;
do
{
plik >>dane[j].tytul_ksiazki;
plik >>dane[j].autor;
plik >>dane[j].indeks;
plik >>dane[j].cena;
j++;
}
while( !plik.eof() );
cout <<"\n\n\tWczytano dane. Nacisnij ENTER!";
getchar();
getchar();
} }
system("cls");
cout << "\n\n\t\t";
do
{
cout <<"\n\t\t1. Dodaj ksiazke\n";
cout <<"\n\t\t2. Zapis \n";
cout <<"\n\t\t3. Znajdz ksiazke \n";
cout <<"\n\t\t4. Wyswietl wszystkie ksiazki\n";
cout <<"\n\n\n\t\t0. zakonczenie programu ";
cout<<"\n\n\t\tWybrano: ";
cin>>k;
if(k>4 || k<0)
{
system("cls");
cout<<"\n\n\n\t\tBlad danych !!!";
cout<<"\n\n\n\t\tDzialanie programu zakonczono!!!\n\n";
system ("pause");
return 0;
};
switch (k)
{
case 0: cout<<"Dzialanie programu zakonczono\n ";
system("pause");
return 0;
break;
case 1: Dodaj();
break;
case 2: Zapisz();
break;
case 3: Znajdz();
break;
case 4: Baza();
break;
}
system("cls");
}
while (k!= 0);
cin.ignore();
getchar();
return 0;
}
void Dodaj()
{
system("cls");
cout <<"\n\n\t\tPodaj tytul : ";
cin >>dane[i].tytul_ksiazki;
cout <<"\n\n\t\tPodaj nazwisko Autora: ";
cin >>dane[i].autor;
cout <<"\n\n\t\tPodaj indeks: ";
cin >>dane[i].indeks;
cout <<"\n\n\t\tPodaj cene: ";
cin >>dane[i].cena;
i++;
cin.ignore();
cout <<"\n\n\t\tNacisnij dowolny klawisz";
getchar();
}
void Zapisz()
{
ofstream plik("baza.txt",ios::trunc);
plik <<i<<"\n";
for (int j = 0; j < i; j++)
{
plik <<dane[j].tytul_ksiazki<<"\n";
plik <<dane[j].autor<<"\n";
plik <<dane[j].indeks<<"\n";
plik <<dane[j].cena<<"\n";
}
system("cls");
cout <<"\n\n\t\tDane zostaly zapisane! \n\n\t\t";
system("pause");
}
/*Funkcja wyœwietla zawartoœæ bazy danych*/
void Baza()
{
int j;
system("cls");
if ( i != 0)
{
cout<<"\n\n\n";
for (j = 0; j < i; j++)
{
cout <<"*-----------------------------------------------------------------------*"<<endl;
cout <<"x Tytul: "<<dane[j].tytul_ksiazki<<"\n";
cout <<"x Autor: "<<dane[j].autor<<"\n";
cout <<"x Indeks: "<<dane[j].indeks<<"\n";
cout <<"x Cena: "<<dane[j].cena<<"\n";
cout <<"x";
cout <<"------------------------------------------------------------------------- "<<endl;
}
}
else
cout <<"\n\nBrak ksiazki\n\n\t\t";
system("pause");
}
/*Funkcja umozliwia zmiane zawartosci wybranego rekordu*/
void Znajdz()
{
int nr;
if (i != 0)
{
system("cls");
cout <<"\n\n\t\tPodaj autora: ";
cin >>dane[i].autor;
cin.ignore();
getchar();
Zapisz();
if (nr<0 || nr > i)
{
system("cls");
cout <<"\n\n\t\tNie mozna wykonac operacji - brak danych\n\n\t\t";
system("pause");
}
}
else
{
system("cls");
cout <<"\n\n\t\tBrak ksiazki. Nacisnij dowolny klawisz";
system("pause");
}
}