<font size="2">Witam, mam mały problem ze swoim programem: Napisz bazę danych osób opartą o listę jedno lub dwukierunkową. Program ma możliwość dodawania, usuwania i przeglądania rekordów oraz posiada interfejs użytkownika działający w trybie tekstowym. Nie wiem jak wyszukać poszczególne rekordy, i jak usunąć tylko wybrane. Proszę o jakąś pomoc, z góry dziękuje.
Mój program w C++:</span>

#include <iostream> //standardowa biblioteka c++
#include <string> //biblioteka do obslugi string
#include <fstream.h> //biblioteka do operacji na plikach

using namespace std;

//baza danych (rekordy)
//ponizej opisane pola rekordu
struct osoby {
string imie;
string nazw;
int wiek;
};

//odwolanie do bazy
//baza jest tablica; 100 rekordów
struct osoby baza[100];

//spis procedur umozliwiajaacych wykonanie dzialan na bazie danych
int zapis();
int odczyt();
int z_plik();
int kasuj();
int main();

//zmienna przechowuja;ca liczbe wprowadzonych rekordów
int ile_p;

//procedura wprowadzania danych do tablicy baza
int zapis()
{
//zmienne pomocnicze
int ile,i;


cout << "Podaj ilosc osob : ";
cin >> ile;

//warunek jesli (ile > 100) zacznij procedure od nowa
if (ile > 100) zapis();

//wpis do bazy podawanych elementow
for (i = 1; i <= ile; i+=1 ) {

cout << i << ". Imie: ";
cin >> baza[i].imie;

cout << i << ". Nazwisko: ";
cin >> baza[i].nazw;

cout << i << ". Pesel: ";
cin >> baza[i].wiek;

cout << endl;
}

ile_p=ile;

//zakonczenie procedury i powrot do menu
main();
}

//procedura wydruku wprowadzonych danych z tablicy baza
int odczyt()
{
int i;
int w;

cout << "Lista wpisanych osób: " << endl;

//wypisanie listy wpisanych osob
for (i = 1; i <= ile_p; i+=1) {
cout << i << ". Imie: " << baza[i].imie << endl;
cout << i << ". Nazwisko: " << baza[i].nazw << endl;
cout << i << ". Pesel: " << baza[i].wiek << endl;
cout << endl;
}

cout << "\n" << "1. Powrot ";
cin >> w;
switch(w) {
default: main();
}
}

//procedura zapisu zawartosci tablicy baza do pliku na dysk
int z_plik() {

int i;

//otwarcie pliku do zapisu
ofstream plik("baza.txt", ios::out);

//wpisanie danych z bazy do pliku
for (i = 1; i <= ile_p; i+=1) {
plik << baza[i].imie << endl;
plik << baza[i].nazw << endl;
plik << baza[i].wiek << endl;
plik << endl;
}
//zamkniecie pliku
plik.close();

//powrot do menu
main();
}

//procedura czyszczenia zawartosci tablicy baza
int kasuj()
{
char w;
int i;

cout << "Czy chcesz wykasowac dane z bazy ? [T/N]";

cin >> w;

//jesli w = T lub t czysci baze
if (w == 'T' or w == 't') {

for (i = 1; i <= 99; i+=1) {

baza[i].imie="";
baza[i].nazw="";
baza[i].wiek=0;

}
ile_p=0;
}

//zakonczenie procedury i powrót do menu
main();
}

//glowny program
int main()
{
char wybor;



//wypisanie listy do wyboru
cout << "1. Wpisz do bazy dane" << endl;
cout << "2. Odczyta dane z bazy" << endl;
cout << "3. Zapisz do pliku" << endl;
cout << "4. Kasuj dane z bazy" << endl;
cout << "5. Exit" << "\n\n";
cout << "Wybierz numer opcji: ";

//wybor opcji
cin >> wybor;
switch(wybor) {
case '1': zapis(); break;
case '2': odczyt(); break;
case '3': z_plik(); break;
case '4': kasuj(); break;
case '5': cout << "Bye..." << endl; system("exit"); break;
default: main();
}

return 0;
}
//koniec