Witam,
Przeszukałem już chyba cały internet i dalej nie jestem w stanie rozwiązać mojego problemu, dlatego też chciałbym prosić o pomoc kogoś z forum :). Pisze program wspomagajacy zarzadzanie baza danych, tablica ma sie tworzyc dla 2 struktur (jedna z nich jest zagnieżdżona w drugiej). Postanowilem użyć tablic dynamicznych - słyszałem coś o vectorach, ale nie pracowałem z tym jeszcze. Wszystkie dane sa zapisywane i odczytywane z pliku tekstowego. Chcialem by tablica tworzyla sie dla dodawanych osob, a takze przy odczytywaniu danych z pliku tekstowego, ale nie do konca wiem w ktorym miejscu mam umiescic tworzenie sie tablic, może ktoś z was miałby dla mnie jakieś rady, albo naprawdę dobry poradnik :) Skoro to baza danych to dobrze by bylo gdyby dane mogły być sortowane, modyfikowane i usuwane, narazie zatrzymalem sie po dodawaniu osob do bazy i wczytywaniu wszystkich ;'). Najwazniejsze w tym wszystkim by na poczatku odpalalo sie memu...
Poniżej przedstawiam swój kod
#include <iostream>
#include <fstream>
#include <string>
#include <limits>
#include <algorithm>
#include <sstream>
using namespace std;
struct adres
{
string wojewodztwo;
string miasto;
string kod;
string ulica;
};
struct dane
{
string imie;
string nazwisko;
int wiek;
string zainteresowania;
string plec;
adres adreszamieszkania;
};
void naglowek()
{
cout<<"Witaj w programie wspomagajacym zarzadzanie baza danych osob"<<endl;
}
void czytaj()
{
fstream odczytaj;
cout<<endl;
cout<<"Wyswietlam dane osob z pliku tekstowego: "<<endl;
cout<<endl;
odczytaj.open("dane.txt", ios::in);
if (odczytaj.good()==true)
{
for (int i=0, lp=1; !odczytaj.eof(); i++, lp++)
{
string linia;
getline(odczytaj,linia);
istringstream iss(linia);
string wyraz;
getline(iss,wyraz);
cout<<"Osoba nr."<<lp<<": "<<wyraz<<endl;
}
cout<<endl;
odczytaj.close();
}
else
{
cout<<"Nie mozna znalezc pliku dane.txt!"<<endl;
}
}
void zapisz()
{
fstream zapisz;
zapisz.open("dane.txt", ios::app);
int ileosob=0;
cout<<endl;
cout<<"Ile osob chcesz wpisac do bazy danych?: ";
cin>>ileosob;
dane *osoby = new dane [ileosob];
if (ileosob>0)
{
for (int i=0; i<ileosob; i++)
{
if (i<ileosob)
cout<<"WPROWADZ DANE UZYTKOWNIKA NR: "<<i+1<<": "<<endl;
cout<<"Podaj imie: ";
cin>>osoby[i].imie;
zapisz<<osoby[i].imie<<" ";
cout<<"Podaj nazwisko: ";
cin>>osoby[i].nazwisko;
zapisz<<osoby[i].nazwisko<<" ";
cout<<"Podaj wiek: ";
cin>>osoby[i].wiek;
cin.ignore(10000, '\n');
zapisz<<osoby[i].wiek<<" ";
cout<<"Podaj zainteresowania: ";
getline(cin, osoby[i].zainteresowania);
zapisz<<osoby[i].zainteresowania<<" ";
cout<<"Podaj plec: ";
cin>>osoby[i].plec;
cin.ignore(10000, '\n');
zapisz<<osoby[i].plec<<" ";
cout<<"WPROWADZ ADRES UZYTKOWNIKA NR: "<<i<<": "<<endl;
cout<<"Podaj wojewodztwo: ";
getline(cin, osoby[i].adreszamieszkania.wojewodztwo);
zapisz<<osoby[i].adreszamieszkania.wojewodztwo<<" ";
cout<<"Podaj miasto: ";
getline(cin, osoby[i].adreszamieszkania.miasto);
zapisz<<osoby[i].adreszamieszkania.miasto<<" ";
cout<<"Podaj kod w postaci 00-000: ";
getline(cin, osoby[i].adreszamieszkania.kod);
zapisz<<osoby[i].adreszamieszkania.kod<<" ";
cout<<"Podaj nazwe ulicy numer/lokal: ";
getline(cin, osoby[i].adreszamieszkania.ulica);
zapisz<<osoby[i].adreszamieszkania.ulica;
if (i!=ileosob)
{
zapisz<<"\n";
}
cout<<"DANE ZOSTALY DODANE DO BAZY DANYCH"<<endl;
cout<<endl;
}
}
if (cin.fail())
{
cout<<"Nie podano liczby tylko litere!"<<endl;
cin.clear(); //Blokuje powtarzanie sie komunikatu o wprowadzeniu litery
}
else if (ileosob==0)
{
cout<<"Podano zla liczbe!"<<endl;
}
delete [] osoby;
zapisz.close();
}
void usuwanie()
{
fstream odczytaj;
cout<<endl;
cout<<"Wyswietlam dane osob z pliku tekstowego: "<<endl;
cout<<endl;
odczytaj.open("dane.txt", ios::in);
int lp=1;
if (odczytaj.good()==true)
{
for (int i=0; !odczytaj.eof(); i++, lp++)
{
string linia;
getline(odczytaj,linia);
istringstream iss(linia);
string wyraz;
getline(iss,wyraz);
cout<<"Osoba nr."<<lp<<": "<<wyraz<<endl;
}
cout<<endl;
odczytaj.close();
}
else
{
cout<<"Nie mozna znalezc pliku dane.txt!"<<endl;
cout<<endl;
}
int usun;
cout<<"Dane ktorej osoby chcesz usunac?: ";
cin>>usun;
cout<<endl;
if(usun!=0)
{
lp=usun;
}
}
void edycja()
{
}
void sortowanie()
{
}
int menu()
{
int n;
cout<<"Aby rozpoczac, wybierz jedna z ponizszych opcji: "<<endl;
cout<<"[0]. Zakoncz prace"<<endl;
cout<<"[1]. Wprowadz dane do pliku tekstowego"<<endl;
cout<<"[2]. Odczytaj dane z pliku tekstowego"<<endl;
cout<<"[3]. Posortuj dane wedlug..."<<endl;
cout<<"[4]. Test"<<endl;
cout<<"Wybieram opcje: ";
cin>>n;
return n;
}
int menu_sortowanie()
{
int wybor;
cout<<endl;
cout<<"*****Wybierz sortowanie*****"<<endl;
cout<<"[0].Wyjdz"<<endl;
cout<<"[1].Po imieniu"<<endl;
cout<<"[2].Po nazwisku"<<endl;
cout<<"[3].Po plci"<<endl;
cout<<"[4].Po zainteresowaniach"<<endl;
cout<<"[5].Po wojewodztwie"<<endl;
cout<<"[6].Po miescie"<<endl;
cout<<"Wybieram opcje: ";
cin>>wybor;
cout<<endl;
}
int main()
{
naglowek();
int wybor=-1;
while (wybor!=0)
{
wybor = menu();
switch(wybor)
{
case 0:
{
cout<<endl;
cout<<"Program zakonczyl prace"<<endl;
exit(0);
}
break;
case 1:
{
zapisz();
}
break;
case 2:
{
czytaj();
}
break;
case 3:
{
menu_sortowanie();
}
break;
case 4:
{
usuwanie();
}
break;
case 5:
{
}
break;
}
}
}