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");
}