Witam!
Mam do zrobienia taki program obslugujacy "baze danych" :D
Baze danych dałem w cudzysłowie, gdyż nie ma ona nic wspólnego z prawdziwą bazą danych :D
Chodzi o to, ze mam dopisac do powstalego juz pliku binarnego kolejne osoby. Ale chcialbym , zeby program pisal ktora osobe dopisujemy. I teraz niewiem jak to uczynić. Chciałbym to zrobic najprostszym sposobem, zeby sie nie pogubic.
Słyszalem cos o funkcji tellp i tellg ale niestety tylko bylo cos wspomniane na laborkach.
Czy ma ma ktos jakis pomysl?
Wklejam tutaj to co udalo mi sie na razie zrobic:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct dane
{
string imie,nazwisko;
float stan_konta;
};
void utworz_plik()
{
int i = 1;
dane a;
char znak;
ofstream dane ("dane.bin",ios::binary);
do
{
cout << "Osoba " << i << ":" << endl << endl;
cout << "Podaj imie:" << endl;
cin >> a.imie;
cout << "Podaj nazwisko:" << endl;
cin >> a.nazwisko;
cout << "Podaj stan konta:" << endl;
cin >> a.stan_konta;
cout << endl << endl;
dane.write((char*)&a, sizeof(dane));
cout << "Czy chcesz wprowadzic kolejna osobe? , T/t" << endl << endl;
cin >> znak;
i++;
}
while (znak == 'T' || znak == 't');
dane.close();
}
void dopisz_osobe()
{
dane b;
int ilosc;
char znak;
fstream dane ("dane.bin", ios::binary|ios::ate);
ilosc = dane.tellp();
do
{
cout << "Osoba " << ??? << endl << endl;
cout << "Podaj imie:" << endl;
cin >> b.imie;
cout << "Podaj nazwisko:" << endl;
cin >> b.nazwisko;
cout << "Podaj stan konta:" << endl;
cin >> b.stan_konta;
cout << endl << endl;
dane.write((char*)&b,sizeof(dane));
cout << "Czy chcesz podac kolejna osobe? , T/t" << endl << endl;
cin >> znak;
}
while(znak == 't' || znak == 'T');
dane.close();
}
int main()
{
int wybor,ilosc;
cout << "Witaj w programie!" << endl << endl << endl;
cout << "Wybierz:" << endl;
cout << "[1] - aby utworzy nowa baze danych" << endl;
cout << "[2] - aby dopisac osoby do bazy danych" << endl;
cout << "[3] - aby wyswietlic dane osob z bazy od podanego numeru" << endl;
cout << "[4] - aby zapisac do pliku tekstowego dane tych osob" << endl;
cout << " ,ktorych stan konta jest wiekszy lub rowny od zadanego progu" << endl;
cin >> wybor;
cout << endl << endl;
switch(wybor)
{
case 1:
utworz_plik();
break;
case 2:
dopisz_osobe();
break;
case 3:
case 4:
default:
cout << "Niewlasciwy wybor!" << endl << endl;
}
return 0;
}