Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wczytywanie danych z pliku

Ostatnio zmodyfikowano 2015-01-28 22:42
Autor Wiadomość
Neylea
Temat założony przez niniejszego użytkownika
wczytywanie danych z pliku
» 2015-01-27 18:17:43
chciałabym aby do mojej bazy danych można było dodawać również dane z pliku. niestety nie wiem jak to zrobić.

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <string.h>
#include <fstream>



using namespace std;

struct obuwie
{
    char nazwa[256], kraj [100], kolor[50];

    int rozmiar, sztuka, data;
    string kategoria, uwagi;
    float cena;
};


    void wczytaj(obuwie& but)
{
    cout<<"Podaj nazwe obuwia: ";
    cin>>but.nazwa;
    cout<<"Kraj pochodzenia: ";
    cin>>but.kraj;
    cout<<"podaj do jakiej kategori nalezy obuwie: ";
    cin>>but.kategoria;
    cout<<"Rozmiar: ";
    cin>>but.rozmiar;
    cout<<"Kolor: ";
    cin>>but.kolor;
    cout<<"Liczba dostepnych sztuk: ";
    cin>>but.sztuka;
    cout<<"Cena obuwia: ";
    cin>>but.cena;
    cout<<"Data dostawy: ";
    cin>>but.data;
    cin.ignore(99999, '\n');
    cout<<"Uwagi dotyczace danego modelu:";
    getline(cin, but.uwagi);
}

void wyswietl(obuwie& but)
{
    cout<<but.nazwa<<"/"<<but.kraj<<"/"<<but.kategoria<<"/"<<but.rozmiar<<"/"<<but.kolor<<"/"<<but.cena<<"/"<<but.sztuka<<"/"<<but.cena<<"/"<<but.data<<"/"<<but.uwagi;
}
void zpliku(int& n, obuwie& but)
{
    ifstream plik;
    plik.open("obuwie.txt");

    for(int i=n-1;i<n+4;i++) //bo w pliku mam 5 produktow
    {
        plik>>but.nazwa ;
        plik>>but.kraj ;
        plik>>but.kategoria ;
        plik>>but.rozmiar ;
        plik>>but.sztuka ;
        plik>>but.cena ;
        plik>>but.data ;
        plik>>but.uwagi ;

    }
    plik.close();
}

int main()
{
    const int n=99999;
    obuwie *bazza=new obuwie[n];
    int wprowadzone=0;
    int i=0;
    char odpowiedzb;
    int odpowiedzc;
    for(;;)
    {
        cout<< " Witaj w bazie danych sklepu 'BUCIK'"<<endl<<endl;
    cout<<" //////****MENU GLOWNE****\\\\\\ "<<endl;
    cout<<"1)   Dodaj produkt"<<endl;
    cout<<"2)   Wczytaj baze danych z pliku"<<endl;
    cout<<"3)   Usun produkt"<<endl;
    cout<<"4)   Zmien dane produktu"<<endl;
    cout<<"5)   Dodaj/zmien date dostawy"<<endl;
    cout<<"6)   Wyswietl wszystko"<<endl;
    cout<<"7)   Szukaj produktow"<<endl;

    cout<<"Wybieram: ";
        char odpowiedz;
        odpowiedz=getch();
        cout<<endl;

        switch(odpowiedz)
        {
        case '1':
            {
                for(i=0;i<n;i++)
                {
                    cout<<"Obuwie nr: "<<i+1<<endl;
                    wczytaj(*(bazza+i));
                    cout<<"Czy chcesz wprowadzic do bazy wiecej produktow? "<<"T/N: ";
                    cin>>odpowiedzb;
                    cout<<endl;
                    wprowadzone++;
                    if((odpowiedzb=='N')||(odpowiedzb=='n'))break;
                }
                cout<<"Ilosc wprowadzonych produktow: "<<i+1<<endl;
            }
        break;
        case '2':
            {
              void zpliku(wprowadzone,*(bazza+i));

                    cout<<but.nazwa ;
                    cout<<but.kraj ;
                    cout<<but.kategoria ;
                    cout<<but.rozmiar ;
                    cout<<but.sztuka ;
                    cout<<but.cena ;
                    cout<<but.data ;
                    cout<<but.uwagi ;



            }
            break;

        case '3':
            {
      
            }
            break;

        case '4':
            {
                cout<<endl<<"Dane wszystkich produktow znajdujacych sie w bazie:"<<endl;
                for(int i=0;i<wprowadzone;i++)
                {
                    cout<<endl<<"produkt nr: "<<i+1<<endl;
                    wyswietl(*(bazza+i));
                }
            }
        break;



        case '5':
            {
                exit(0);
            }
        break;

        default: cout<<"Nie ma takiej opcji w menu!";
        }
        getchar();
        getchar();
        system("cls");
    }
return 0;
}
P-125625
darko202
» 2015-01-28 11:21:23
P-125660
Neylea
Temat założony przez niniejszego użytkownika
» 2015-01-28 13:24:31
;/ nie za wiele mi to pomogło, liczyłam że ktoś mi pokaże jak się za to zabrać
P-125664
darko202
» 2015-01-28 16:02:04
Nie wiem co Ci powiedzieć :(
chyba tego nie przeczytałeś ze zrozumieniem

we wskazanej lekcji i kolejnych na ten temat jest wszystko dokładnie omówione :
* Otwarcie/zamknięcie pliku
* przeczytanie kolejnego wiersza
* obsługa błędów
jest np. pełny program
C/C++
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
    fstream plik;
    plik.open( "dane.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
    getch();
    return( 0 );
}

Ty formatujesz dane w pliku. Czyli jest jak chcesz ?
jeśli wszystkie dane umieścisz w jednej linii to po przeczytaniu
tej linii masz już dane do wprowadzania.

nie rozumiem co Cię powstrzymuje ?
aby zacząć ?



P-125673
Neylea
Temat założony przez niniejszego użytkownika
» 2015-01-28 18:39:25
ok, z tym juz sobie poradzilam:) teraz czy macie pomysl jak usuwac rekordy? probowalam zrobic to tak jak na normalnych tablicach ale mi nie wychodzi tak jak powinno
P-125683
darko202
» 2015-01-28 22:42:02
jeśli próbujesz usunąć rekord z pliku to rzeczywiście nie można zrobić tego tak jak na tablicach

najprościej jest :
utworzyć nowy plik o zmienionej nazwie
przepisać plik bez wybranego rekordu
usunąć stary
zmienić nazwę nowego


P-125703
« 1 »
  Strona 1 z 1