baza danych zapisujaca z konsoli do pliku

0

Witam mam pewien problem bo mam zrobić projekt a troche sie zagapiłem i zamiast zapisywania do pliku zrobiłem program co zapisuje w konsoli i podmienia to co jest a potem od nowa jak sie wyjdzie , a jednak mam zrobic cos takiego zeby to co zmienie zapisywało sie do pliku i tam pozostało , Troche robilem i szukam teraz informacji jak to zrobicz plikiem bo zostalo nie wiele czasu. Da sie to jakos przerobic prostym dopisaniem czegos i pododawaniem komend czy musze wszystko od nowa robić ? Zostały mi niecałe dwa dni.

#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;

struct samochody
{
    string marka;
    string typ;
    int rok;
    int przebieg;
};

void wyswietlenie_menu()
{
    system("CLS");
    cout << "MENU" << endl;
    cout << "1.Wyswietl produkty." << endl;
    cout << "2.Dodaj samochody." << endl;
    cout << "3.Usun samochody." << endl;
    cout << "4.Zmien samochody." << endl;
    cout << "0.Wyjdz." << endl;
}
void wczytaj_s(samochody* tab)
{
    tab[0].marka = "bmw";
    tab[1].marka = "audi";
    tab[2].marka = "fiat";
    tab[0].typ = "coupe";
    tab[1].typ = "combi";
    tab[2].typ = "sedan";
    tab[0].rok = 1999;
    tab[1].rok = 2000;
    tab[2].rok = 2001;
    tab[0].przebieg = 123456;
    tab[1].przebieg = 1234567;
    tab[2].przebieg = 12345678;
}
void wyswietl_s(samochody *tab)
{
    system("CLS");
    int i=0;
    do
    {
        cout << i+1 << "." << tab[i].marka << " | " << tab[i].typ << " | " << tab[i].rok << " | " << tab[i].przebieg << endl;
        i++;
    }while(tab[i].marka.empty() != true);
}
void dodawanie_s(samochody *tab)
{
    system("CLS");
    int i = 0;
    bool flag = true;
    do
    {
        if( tab[i].marka.empty())
        {
            cout << "Podaj samochod: ";
            cin >> tab[i].marka;
            cout << "Podaj typ: ";
            cin >> tab[i].typ;
            cout << "Podaj rok: ";
            cin >> tab[i].rok;
            cout << "Podaj przebieg: ";
            cin >> tab[i].przebieg;
            flag = false;
        }
        i++;
    }while(flag != false);
}
void usuwanie_s(samochody *tab)
{
    system("CLS");
    wyswietl_s(tab);
    cout << endl << "Podaj index samochodu do usuniecia: ";
    int n;
    cin >> n;
    do
    {
        tab[n-1].marka = tab[n].marka;
        tab[n-1].typ = tab[n].typ;
        tab[n-1].rok = tab[n].rok;
        tab[n-1].przebieg = tab[n].przebieg;
        n++;
    }while(tab[n-1].marka.empty() != true);
}
void zmiana_s(samochody *tab)
{
    system("CLS");
    wyswietl_s(tab);
    cout << endl << "Podaj index samochodu do zmiany: ";
    int n;
    cin >> n;
    cout << "Podaj nowa marke: ";
    cin >> tab[n-1].marka;
    cout << "Podaj nowy typ: ";
    cin >> tab[n-1].typ;
    cout << "Podaj nowy rocznik: ";
    cin >> tab[n-1].rok;
    cout << "Podaj nowy przebieg: ";
    cin >> tab[n-1].przebieg;

}
int main ()
{
    samochody *tab = new samochody[20];
    wczytaj_s(tab);
    int n;
    do
    {
    wyswietlenie_menu();
    cin >> n;
    if(n == 1)
    {
        wyswietl_s(tab);
        system("pause");
    }
    else if(n == 2)
        dodawanie_s(tab);
    else if(n == 3)
        usuwanie_s(tab);
    else if(n == 4)
        zmiana_s(tab);
    }while(n != 0);
    return 0;
}
0

Chyba najlepiej będzie jak wykorzystasz typ std::ofstream, zapis do tego strumienia jest identyczny jak w przypadku std::cout więc nie będziesz miał dużo roboty ze zmianami. Tutaj masz dokumentację std::ofstream: https://en.cppreference.com/w/cpp/io/basic_ofstream, a na końcu jest przykład.

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