Mam zrobic baze danych. I chce zeby w moim programie bylo tak: jak plik nie istnieje to go utworz, jak istnieje wczytaj zawartosc, jesli jest pusty zapisz dane, jesli nie dopisz kolejne dane, bez kasowania poprzednich i wyswietl, stan po operacji. Na razie mam cos takiego, niestety nie dziala.
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int z;
class pokoj
{ public:
string miasto;
int numer;
int ile_osob;
int pietro;
string balkon;
int cena_doba;
}; pokoj dane[500];
Wczytaj()
{
ifstream plik("pokoje.txt", ios::in);
plik>>z;
if (!plik)
{
cout<<"Brak pliku"<<endl;
system("pause");
}
else
{
int j=0;
do
{
plik>>dane[j].miasto;
plik>>dane[j].numer;
plik>>dane[j].ile_osob;
plik>>dane[j].pietro;
plik>>dane[j].balkon;
plik>>dane[j].cena_doba;
j++;
}while(!plik.eof());
}
}
Wyswietl()
{
int j;
system("cls");
if (z!=0)
{
for (j=0;j<z;j++)
{
cout<<dane[j].miasto;
cout<<dane[j].numer;
cout<<dane[j].ile_osob;
cout<<dane[j].pietro;
cout<<dane[j].balkon;
cout<<dane[j].cena_doba;
}
}
else
{
cout<<"Plik pusty"<<endl;
}
}
Dodaj()
{
system ("cls");
cout<<"Podaj miasto"<<endl;
cin>>dane[z].miasto;
cout<<"Podaj numer"<<endl;
cin>>dane[z].numer;
cout<<"Podaj ile osob miesci"<<endl;
cin>>dane[z].ile_osob;
cout<<"Podaj pietro"<<endl;
cin>>dane[z].pietro;
cout<<"Czy ma balkon? tak/nie"<<endl;
cin>>dane[z].balkon;
cout<<"Podaj cene za dobe"<<endl;
cin>>dane[z].cena_doba;
}
Zapisz()
{
ofstream plik("pokoje.txt",ios::trunc);
plik<<z<<"\n";
for (int j=0; j<z; j++)
{
plik<<dane[j].miasto;
plik<<dane[j].numer;
plik<<dane[j].ile_osob;
plik<<dane[j].pietro;
plik<<dane[j].balkon;
plik<<dane[j].cena_doba;
}
system("cls");
}
int main(){
ifstream plik("pokoje.txt",ios::in);
if(!plik)
{
Dodaj();
Zapisz();
Wczytaj();
Wyswietl();
system("pause");
return 0;
}
else
{do
{
int j=0;
plik>>dane[j].miasto;
plik>>dane[j].numer;
plik>>dane[j].ile_osob;
plik>>dane[j].pietro;
plik>>dane[j].balkon;
plik>>dane[j].cena_doba;
}while (!plik.eof());
Dodaj();
Zapisz();
Wczytaj();
Wyswietl();
}
system("cls");
return 0;
}