usuwanie pojedynczych rekordow

0

Cześć nie moge znależc jak usunac tylko jeden pojedynczy rekord bo chce go zastosowac w funcji kasuj, czy ktos mialby pomysl jak nie zmieniajac programu usuwac wybrane rekordy.

#include <iostream>
#include <fstream>
#include<conio.h>
#include<string.h>
using namespace std;
//---------------------------
struct biblioteka
{
    char tytul[20];
    int rok_wyd;
    char rodzaj[20];
    char autor[20];
    char miejsce_wyd[20];
};
biblioteka a;
//---------------------------
int menu();
void wprowadz_dane(); 
void wyswietl_dane(); 
void kryterium_1(); 
void kryterium_2();
void kasuj(); 
//---------------------------
int main()
{
    int koniec=1,wybor;
    while(koniec)
    {       wybor=menu();

        if(wybor==6)
            koniec=0;
        else
            switch(wybor)
            {
                case 1: wprowadz_dane();
                        break;
                case 2: wyswietl_dane();
                        break;
                case 3: kryterium_1();
                        break;
                case 4: kryterium_2();
                        break;
                case 5: wyswietl_dane();
                        kasuj();
                        break;

            }
    }
    return 0;
}
//---------------------------
int menu()
{
    int wybor;
    cout << "- - - M E N U - - -"<<endl;
    cout << "1-wprowadz dane"<<endl;
    cout << "2-wyswietl dane z pliku"<<endl;
    cout << "3-wyszykiwanie wg kryterium miejsce wydania"<<endl;
    cout << "4-wyszykiwanie wg kryterium rodzaj"<<endl;
    cout << "5-skasuj zawartosc pliku"<<endl;
    cout << "6-zakoncz program"<<endl<<endl;
    cin >> wybor;    

    return wybor;   
}
//---------------------------
void wprowadz_dane()
{

    ofstream plik1("dane1.dat",ios::binary | ios::app| ios::out);

        cout<<"Podaj tytul ksiazki: ";
        cin>>a.tytul;
        cout<<"Podaj autora ksiazki: ";
        cin>>a.autor; 
        cout<<"Podaj rodzaj ksiazki(epika, liryka, dramat): ";
        cin>>a.rodzaj; 
        cout<<"Podaj rok wydania ksiazki: ";
        cin>>a.rok_wyd; 
        cout<<"Podaj miejsce wydania ksiazki(Warszawa, Wroclaw Krakow): ";
        cin>>a.miejsce_wyd; 

        plik1.write(reinterpret_cast<char*>(&a),sizeof(a));

    plik1.close();
    system("cls");
}
//---------------------------
void wyswietl_dane()
{

    int i=1;
    ifstream plik("dane1.dat",ios::binary| ios::in);
    while (1)
        {
                plik.read(reinterpret_cast<char*>(&a),sizeof(a));
                if(plik.eof()) break;

        cout<<i<<" "<<a.tytul<<" "<<a.autor<<" "<<a.rodzaj<<" "<<a.rok_wyd<<" "<<a.miejsce_wyd<<endl;
        i++;
    }
    plik.close();
    getch();
    system("cls");
}
//---------------------------

void kryterium_1()
{
    int i=1;
    char miejsce[20];
    cout<<"Wedlug jakiego miejsca ma zostac wyswietlona lista?"<<endl;
    cout<<"Do wyboru: Warszawa, Wrocław, Krakow?"<<endl;
    cin>>miejsce;
    ifstream plik("dane1.dat",ios::binary| ios::in);

    while (1)
        {

    plik.read(reinterpret_cast<char*>(&a),sizeof(a));
    if(plik.eof()) break;
    if (strcmp(a.miejsce_wyd,miejsce) ==0)
    {
        cout<<i<<" "<<a.tytul<<" "<<a.autor<<" "<<a.rodzaj<<" "<<a.rok_wyd<<" "<<a.miejsce_wyd<<endl;
        i++;

    }}
    plik.close();
    getch();
    system("cls");
}

void kryterium_2()
{
    int i=1;
    char rodzaj[20];
    cout<<"Wedlug jakiego rodzaju ma zostac wyswietlona lista?"<<endl;
    cout<<"Do wyboru: epika, liryka, dramat?"<<endl;
    cin>>rodzaj;
    ifstream plik("dane1.dat",ios::binary| ios::in);

    while (1)
        {

    plik.read(reinterpret_cast<char*>(&a),sizeof(a));
    if(plik.eof()) break;
    if (strcmp(a.rodzaj,rodzaj) ==0)
    {
        cout<<i<<" "<<a.tytul<<" "<<a.autor<<" "<<a.rodzaj<<" "<<a.rok_wyd<<" "<<a.miejsce_wyd<<endl;
        i++;

    }}
    plik.close();
    getch();
    system("cls");
}
//---------------------------
void kasuj()
{int i;
int n;
cout<<"podaj numer ksiazki do usuniecia"<<endl;
cin>>n;
    ofstream plik1("dane1.txt", ios::trunc | ios::out);
    plik1.close();        
    system("cls");
}
1

Na lenia:

  1. wczytaj wszystkie linie do wektora
  2. usuń linię
  3. zapisz wektor do pliku

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