wczytywanie danych z pliku
Ostatnio zmodyfikowano 2015-01-28 22:42
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; } |
|
darko202 |
» 2015-01-28 11:21:23 |
|
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ć
|
|
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 #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ąć ? |
|
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
|
|
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
|
|
« 1 » |