Mam do napisania program, który będzie dodawał osoby do ksiązki adresowej, następnie po wpisaniu imienia bądź nazwiska ma znaleźć daną osobę. Problem polega na tym, że jeśli zapiszę jedną osobę, program ją znajduje, ale jesli zapiszę już dwie osoby, to program znajduje pierwszą, ale nie chce znaleźć drugiej i mówi, że nie ma takiej osoby. Tak samo jest z nazwiskiem.
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <sstream>
using namespace std;
struct daneOsob
{
string imie, nazwisko, email, adres, numerTelefonu;
int idOsoby;
};
/*string konwersjaIntNaString (int liczba)
{
ostringstream ss;
ss << liczba;
string str = ss.str();
return str;
}*/
int zapisywanieOsoby (daneOsob osoby[], int iloscOsob)
{
string imie, nazwisko, email, adres, numerTelefonu;
int id;
cout << "Dodawanie osoby: ";
cout << "Podaj imie: ";
cin >> imie;
cout << "Podaj nazwisko: ";
cin >> nazwisko;
cout << "Podaj numer telefonu: ";
cin.sync(); //oproznanie buforu po poprzednim cin spróbuj cin.ignore()
getline(cin, numerTelefonu);
cout << "Podaj email: ";
cin >> email;
cout << "Podaj adres: ";
cin.ignore();
getline(cin, adres);
id = iloscOsob + 1;
osoby[iloscOsob].imie = imie;
osoby[iloscOsob].nazwisko = nazwisko;
osoby[iloscOsob].email = email;
osoby[iloscOsob].adres = adres;
osoby[iloscOsob].numerTelefonu = numerTelefonu;
osoby[iloscOsob].idOsoby = iloscOsob + 1;
cout << "Osoba zostala dodana.\n";
Sleep(1500);
return iloscOsob + 1;
}
int wyszukiwanieOsobyPoImieniu (daneOsob osoby[], int iloscOsob)
{
string imie;
int i = 0;
cout << "Podaj imie: ";
while (i < iloscOsob)
{
cin >> imie;
if(osoby[i].imie == imie)
{
cout << "Znaleziono osoby o takim imieniu: \n";
cout << osoby[i].imie << " " << endl;
Sleep(3000);
return osoby[i].idOsoby;
}
i++;
}
cout << "Nie ma uzytkownikow z takim imieniem!" << endl;
Sleep(3000);
return 0;
}
int wyszukiwanieOsobyPoNazwisku (daneOsob osoby[], int iloscOsob)
{
string nazwisko;
int i = 0;
cout << "Podaj nazwisko: ";
while (i < iloscOsob)
{
cin >> nazwisko;
if(osoby[i].nazwisko == nazwisko)
{
cout << "Znaleziono osoby o takim nazwisku: \n";
cout << osoby[i].nazwisko << endl;
Sleep(3000);
return osoby[i].idOsoby;
}
else
{
cout << "Nie ma uzytkownikow z takim nazwiskiem!" << endl;
cout << osoby[i].nazwisko;
Sleep(3000);
return 0;
}
i++;
}
}
void wyswietlanieWszystkichOsob (daneOsob osoby[], int iloscOsob)
{
int i = 0;
cout << "Wszystkie osoby: \n";
while (i < iloscOsob)
{
cout << osoby[i].imie << " " << osoby[i].nazwisko << " " << osoby[i].numerTelefonu << " " << osoby[i].email << " " << osoby[i].adres << endl;
Sleep(3000);
i++;
}
}
int main()
{
string imie, nazwisko;
int IDOsoby;
int iloscOsob = 0;
daneOsob osoby[1000];
int wybor;
//iloscOsob = wczytajOsobyZPliku(osoby);
while (true)
{
system("cls");
cout << "Witaj w ksiazce adresowej!" << endl;
cout << "Wybierz opcje: " << endl;
cout << "1. Zapisz osobe" << endl;
cout << "2. Wyszukuj osoby po imieniu" << endl;
cout << "3 Wyszukuj osoby po nazwisku" << endl;
cout << "4. Wyswietl wszystie osoby" << endl;
cout << "5. Wyjdz z ksiazki" << endl;
cin >> wybor;
switch (wybor)
{
case 1:
{
iloscOsob = zapisywanieOsoby (osoby, iloscOsob); //funkcja ma zapisywac osobe
break;
}
case 2:
{
cout << wyszukiwanieOsobyPoImieniu (osoby, iloscOsob);
break;
}
case 3:
{
wyszukiwanieOsobyPoNazwisku(osoby, iloscOsob);
break;
}
case 4:
{
wyswietlanieWszystkichOsob (osoby, iloscOsob);
break;
}
case 5:
{
exit(0);
break;
}
default:
break;
}
}
return 0;
}