Witam,
mój problem polega na tym że nie wiem jak zrobić żeby dodawało rekord do bazy ,ale do tablicy posortowanej.
Próbowałem sam do tego dojść, ale niepowiodło sie.
Jeżeli byłby ktoś tak miły i pomógł mi w tym byłbym wdzięczny
Niżej podaje kod całego programu:
#include
#include
using namespace std;
class Ksiazka
{
protected:
char Tytul[50],Autor[30];
int iloscStron,RokWydania;
float Cena;
public:
void ZapiszDoPliku();
void WczytajZPliku();
void Wczytaj();
const char* Ksiazka::DajTytul() const
{return Tytul;}
const char* Ksiazka::DajAutor() const
{return Autor;}
int Ksiazka::DajStrony()
{return iloscStron;}
int Ksiazka::DajRok()
{return RokWydania;}
float Ksiazka::DajCena()
{return Cena;}
};
void ZapiszBazeDoPliku();
void WczytajBazeZPliku();
void DrukujPomoc();
void DodajRekordNaKoniec();
void Drukuj();
void usun();
void ZestiloscStron();
void ZestRokWydania();
void ZestCena();
void PokazRaport();
void PokazTabela();
const char PlikBazy[]="d:\\baza.txt";
int MAXROZMIAR=10;
Ksiazka*Tablica=NULL;
int Rozmiar=0;
fstream Plik;
void Ksiazka::Wczytaj()
{
cout<<"Podaj tytul :"<
while (cin.peek()=='\n') cin.get();
cin.getline(Tytul,sizeof (Tytul));
int i;
Tytul[0]=toupper(Tytul[0]);
for(i=1;Tytul[i] ! =0;i++)
Tytul[i]=tolower(Tytul[i]);
cout<<"Podaj autora:"<
while (cin.peek()=='\n') cin.get();
cin.getline(Autor,sizeof (Autor));
for (i = 0; Autor[i] ! = '\0'; ++i)
{
if ((i == 0) || (Autor[i - 1] == ' '))
Autor[i] = toupper(Autor[i]);
else
Autor[i] = tolower(Autor[i]);
}
cout<<"Podaj ilosc stron:"<
cin>>iloscStron;
cout<<"Podaj cene:"<
cin>>Cena;
if (Cena<0)
cout<<"BLAD! \n Podaj cene wieksza od 0:"<
while(Cena<0)
cin>>Cena;
cout<<"Podaj rok wydania:"<
cin>>RokWydania;
if(!(RokWydania > 1900 && RokWydania < 2010))
cout<<"BLAD! \n Podaj rok z zakresu 1900-2010:"<
while(!(RokWydania > 1900 && RokWydania < 2010))
cin>>RokWydania;
}
void Ksiazka::ZapiszDoPliku()
{
Plik<
Plik<
Plik<
Plik<
Plik<
}
void Ksiazka::WczytajZPliku()
{
while (Plik.peek()=='\n') Plik.get();
Plik.getline(Tytul,sizeof (Tytul));
while (Plik.peek()=='\n') Plik.get();
Plik.getline(Autor,sizeof (Autor));
Plik>>iloscStron;
Plik>>Cena;
Plik>>RokWydania;
}
void ZapiszBazeDoPliku()
{
Plik.clear();
Plik.open("d:\\baza.txt", ios::out);
if(!Plik.good())
{
cout<<"BLAD: Nie moge otworzyc pliku do zapisu!"<
return;
}
Plik << Rozmiar << endl;
int i;
for(i=0;i
Tablica[i].ZapiszDoPliku();
Plik.close();
}
void WczytajBazeZPliku()
{
Plik.open("d:\\baza.txt", ios::in);
if(!Plik.good())
{
cout<<"BLAD:Nie moge otworzyc pliku do odczytu!"<
MAXROZMIAR=Rozmiar+10;
Tablica = new Ksiazka [MAXROZMIAR];
return;
}
Plik >> Rozmiar;
MAXROZMIAR=Rozmiar+10;
Tablica = new Ksiazka [MAXROZMIAR];
int i;
for(i=0;i
Tablica [i].WczytajZPliku();
Plik.close();
}
void DrukujPomoc()
{
cout<<"Dostepne polecenia:\n"
" n - dodaj nowy rekord na koniec tabeli:\n"
" d - drukuj baze:\n"
" c - zestawienie cena:\n"
" s - zestawienie ilości stron:\n"
" r - zestyawienie wg rok wydania:\n"
" u - usun:\n"
" q - koniec pracy programu:\n"
" h - wydruk html:\n"
" t - wydruk raport jako tabela:\n";
}
void DodajRekordNaKoniec()
{
Tablica[Rozmiar++].Wczytaj();
if (Rozmiar+1 == MAXROZMIAR)
{
int i;
Ksiazka*Tab1;
MAXROZMIAR +=10;
Tab1 = new Ksiazka [MAXROZMIAR];
for (i=0;i
Tab1[i]=Tablica[i];
delete [] Tablica;
Tablica = Tab1;
}
}
void Drukuj()
{
int i;
cout<<"Zawartosc bazy:"<
for(i=0; i
cout<
<<"Tytul - "<
<<"Autor - "<
<<"Ilosc stron - "<
<<"Cena - "<
<<"Rok wydania - "<
cout<<"\t\t\t\t---KONIEC---"<
}
void usun()
{
int i, j;
cout << "\nWpisow: " <
cout << "\nPodaj nr wpisu, ktory chcesz usunac: ";
cin >> j;
j--;
for (i=j; i
Tablica[i]=Tablica[i+1];
Rozmiar--;
}
void ZestiloscStron()
{
float c1, c2;
int i;
cout << "Podaj ilosc stron poczatkowa(dolna granica): ";
cin >> c1;
if (c1<0)
{
cout << "Podales liczbe mniejsza od zera! ";
return;
}
cout << "Podaj ilosc stron koncowa(gorna granica): ";
cin >> c2;
if (c2<0)
{
cout << "Podales liczbe mniejsza od zera!";
return;
}
for (i=0; i
if (Tablica[i].DajStrony()>=c1 && Tablica[i].DajStrony()<=c2)
cout<
<<"Tytul:"<
<<"Autor:"<
<<"Ilosc stron:"<< Tablica[i].DajStrony()<
<<"Cena:"<< Tablica[i].DajCena()<
<<"Rok wydania:"<
}
void ZestRokWydania()
{
int i,j;
cout<<"\nPodaj rok wydania:";
cin>>j;
for(i=0;i
if(Tablica[i].DajRok()==j)
cout<
<<"Tytul:"<
<<"Autor:"<
<<"Ilosc stron:"<< Tablica[i].DajStrony()<
<<"Cena:"<< Tablica[i].DajCena()<
<<"Rok wydania:"<
}
void ZestCena()
{
float c1, c2;
int i;
cout << "Podaj cene poczatkowa: ";
cin >> c1;
if (c1<0)
{
cout << "Podales liczbe mniejsza od zera! ";
return;
}
cout << "Podaj cene koncowa: ";
cin >> c2;
if (c2<0)
{
cout << "Podales liczbe mniejsza od zera!";
return;
}
for (i=0; i
if (Tablica[i].DajCena()>=c1 && Tablica[i].DajCena()<=c2)
cout<
<<"Tytul:"<
<<"Autor:"<
<<"Ilosc stron:"<< Tablica[i].DajStrony() <
<<"Cena:"<< Tablica[i].DajCena()<
<<"Rok wydania:"<
return;
}
void PokazRaport()
{
float c1,c2;
int i;
cout << "Podaj cene poczatkowa: ";
cin >> c1;
if (c1<0)
{
cout << "Podales liczbe mniejsza od zera! ";
return;
}
cout << "Podaj cene koncowa: ";
cin >> c2;
if (c2<0)
{
cout << "Podales liczbe mniejsza od zera!";
return;
}
Plik.clear();
Plik.open("D:\\Raport.htm",ios::out);
if(!Plik.good())
{
cout<<"blad"<
return ;
}
Plik<<"type=text/css>"
"
" "
" “** Raport-zestawienie ksiazek wedlug cen”
"face=‘Comic Sans MS’ color=‘red’>**
“< Plik<<”
Lista ksiazek wedlug cen od: "<
“< Plik<<”
- “; int licznik=0; for(i=0;i if (Tablica[i].DajCena()>=c1 && Tablica[i].DajCena()<=c2) { Plik<<”
pozycja
-
Tytul:_"
<face=‘Castellar’>_
face=‘Arial narrow’> "< Plik<<“Autor:”<face=‘Castellar’> face=‘Arial narrow’>"< Plik<<“ilosc stron:”
<face=‘Arial narrow’>"< Plik<<“rok wydania:”
<face=‘Arial narrow’>"< Plik<<“cena:”
<face=‘Arial narrow’>"< Plik<<"
“< licznik++; } if(licznik==0) Plik<<”
brak książek w bazie dla podanych kryteriów"< Plik<<" wszystkich ksiazek w bazie:"
"<font face="Tahoma" color="#FF0000">"
<
w tym spełniajacych warunek:"
"<font face="Tahoma" color="#FF0000">"
<"< Plik.close(); system (“D:\raport.htm”); } void PokazTabela() { float c1, c2; int i; cout << "\nPodaj cene poczatkowa: "; cin >> c1; if (c1<0) { cout << "\nPodales liczbe mniejsza od zera! "; return; } cout << "\nPodaj cene koncowa: "; cin >> c2; if (c2<0) { cout << “\nPodales liczbe mniejsza od zera!”; return; } Plik.clear(); Plik.open(“d:\raport.htm”, ios::out); if (!Plik.good()) { cout<<“BLAD: Nie moge otworzyc pliku do zapisu!”< return; } Plik<<"type=text/css>
" "Zestawienie ksiazek w cenie od: "<
-
“< int j=0; for (i=0; i if (Tablica[i].DajCena()>=c1 && Tablica[i].DajCena()<=c2) { Plik<<”
" “”"<font face="Times New Roman" color="#cc0000"><u>Numer KSIAZKI W BAZIE w bazie: "<<i></i></u></font></b></font>"\< Plik\<\<" " "
| Tytul | "< |
" “Autor"<”< Plik<<" " “iloscStron"<”< Plik<<" " “Rok wydania"<”< Plik<<" " “Cena"<”< Plik<<"