Operacje na bazie danych z pliku tekstowego

0

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;
}
4

Co znaczy, że Nie działa? Oczekujesz, że sami odpalimy ten kod i będziemy weryfikować opisane przez Ciebie założenia?
Jak przychodzisz do mechanika, to mówisz, że coś stuka z prawej strony, hamulce piszczą, silnik nie odpala lub kopci, czy też lakonicznie stwierdzasz, że Nie działa i idziesz sobie?

0

Po pierwsze, powcinaj, wyrównaj, daj puste linie itp.
Po drugie:

z.cpp:16:9: error: ISO C++ forbids declaration of ‘Wczytaj’ with no type [-fpermissive]
 Wczytaj()
         ^
z.cpp:41:10: error: ISO C++ forbids declaration of ‘Wyswietl’ with no type [-fpermissive]
 Wyswietl()
          ^
z.cpp:63:7: error: ISO C++ forbids declaration of ‘Dodaj’ with no type [-fpermissive]
 Dodaj()
       ^
z.cpp:79:8: error: ISO C++ forbids declaration of ‘Zapisz’ with no type [-fpermissive]
 Zapisz()
        ^

Kompilowało Ci się???

0

tak

0
dziadek69 napisał(a):

tak

Niemożliwe. Wszystkie cztery funkcje mają nieprawidłową składnię.
Brakuje pliku nagłówkowego

#include <string>

Logiki nie przeglądałem, bo nie opisałeś problemu z jakim się zmagasz.

0
YooSy napisał(a):
dziadek69 napisał(a):

tak

Niemożliwe. Wszystkie cztery funkcje mają nieprawidłową składnię.

Chyba, że miał włączoną jakąś tam opcję (-fpermissive), która to (niestety) umożliwia

Brakuje pliku nagłówkowego

#include <string>

A to akurat nie jest tu konieczne, bo <fstream> lub <iostream> (a może i oba) inkludują string. Ale byłoby ładniej.

Logiki nie przeglądałem, bo nie opisałeś problemu z jakim się zmagasz.

No właśnie, @dziadek69, napisz, o co chodzi dokładnie. Napisałeś tylko "niestety nie dziala"...

0

A to akurat nie jest tu konieczne, bo <fstream> lub <iostream> (a może i oba) inkludują string. Ale byłoby ładniej.

To zależy od implementacji i należy dodawać pliki nagłówkowe, z których pochodzą klasy, z których się korzysta, aby uniknąć przykrych niespodzianek.

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