Skocz do zawartości
stasio1500

[C++] Program do obsługi magazynu

Rekomendowane odpowiedzi

No to od początku. Program ma być prosty. (Może z czasem go rozbuduję) Program ma wczytywać informacje o tym, co jest na magazynie i w jakiś sposób je katalogować w pliku .txt

Moim pomysłem było zapisywanie danych w wierszach i wczytywanie w razie konieczności określonego przez użytkownika wiersza. Jak ktoś ma jakieś sugestie czy źle myślę czy nie proszę o podpowiedzi.

I napotkałem taki oto problem.

Uruchamiając program, który zapisuje coś do pliku .txt w pliku, w którym już coś jest tracę to, co w nim jest. Jest to nadpisywane na bieżące wartości. A tak być nie może.

Z wyświetlaniem informacji jeszcze nie robiłem nic, ale myślę, że poradzę sobie z tym.

Jak będę miał dostęp do mojego lapka postaram się podać tu, co już mam, a jest tego niewiele jak na razie.

 

Program mniej więcej podobny do tego: Program Do Obslugi Magazynu - PurePC.pl - Forum Dyskusyjne ale C# jakoś mi nie przypomina C++

 

 

Z góry dziękuję za pomoc.

Edytowane przez stasio1500

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zgaduję, że to się może przydać:

http://www.cplusplus.com/reference/clibrary/cstdio/fseek/

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ r+

Zamiast bawić się w pliki txt, możesz użyć prostej bazy danych.

Edytowane przez _OskaR
  • Upvote 1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Oto co stworzyłem:

#include <cstdlib>#include <iostream>#include <conio.h>#include <fstream.h>using namespace std;struct magazyn   {        char nazwatow[25];        float cena;        float ilosc;           };   void zapis(){        magazyn magazynu;	ofstream plik1("dane.dat",ios::binary | ios::app| ios::out);                cout<<"podaj nazwe towaru : ";                cin>>magazynu.nazwatow;                cout<<"podaj cene twoaru : ";                cin>>magazynu.cena;                cout<<"podaj ilosc towaru : ";                cin>>magazynu.ilosc;	        plik1.write(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                plik1.close();                cout<<" "<<endl;}void odczyt(){magazyn magazynu;        int a=1;	ifstream plik1("dane.dat",ios::binary| ios::in);	while (1)        {                plik1.read(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                if(plik1.eof()) break;		cout<<a<<" "<<magazynu.nazwatow<<" "<<magazynu.cena<<" "<<magazynu.ilosc<<endl;		a++;	}        plik1.close();        cout<<" "<<endl;        getchar();        getchar();}void popraw(){      magazyn magazynu;	ofstream plik1("dane.dat",ios::binary | ios::in);     int k;     cout<<"podaj ktory rekord chcesz poprawic "<<endl;     cin>>k;     plik1.seekp(sizeof(struct magazyn)*(k-1));                    cout<<"podaj nazwe towaru : ";                cin>>magazynu.nazwatow;                cout<<"podaj cene twoaru : ";                cin>>magazynu.cena;                cout<<"podaj ilosc towaru : ";                cin>>magazynu.ilosc;      plik1.write(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));      plik1.close();                  cout<<" "<<endl;                }                                        void za()                {                    magazyn magazynu;                    ofstream strumien;                    int a=1;                	ifstream plik1("dane.dat",ios::binary| ios::in);                	strumien.open("dane.txt");                 	while (1)                    {                    plik1.read(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                    if(plik1.eof()) break;                    strumien << a <<" "<<magazynu.nazwatow<<" "<<magazynu.cena<<" "<<magazynu.ilosc<<endl;                    a++;                    }                    plik1.close();                    strumien.close();                    cout<<"Zapis do pliku dane.txt zakonczony powodzeniem "<<endl;                      getchar();                      getchar();                }                 void usun()                   {     system("cls");         magazyn magazynu;        int k;        int pom=0,pom1=0;        fstream plik1("dane.dat",ios::binary | ios::in | ios::out);         ofstream plik2("pomoc.tmp",ios::binary | ios::out );        cout<<"ktory rekord chcesz usunac? : ";        cin>>k;                pom1=(sizeof(struct magazyn)*(k-1));        while(1)        {              plik1.read(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                if(pom == pom1) break;                             plik2.write(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                pom = pom + sizeof(struct magazyn);        }        plik1.close();        plik2.close();                fstream plik3("dane.dat",ios::binary | ios::in | ios::out);         ofstream plik4("pomoc.tmp",ios::binary | ios::out | ios::app );                   plik3.seekp(sizeof(struct magazyn)*(k));              while(1)        {         plik3.read(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));          if(plik3.eof()) break;        plik4.write(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                 }       	plik3.close();        plik4.close();                fstream plik5("pomoc.tmp",ios::binary | ios::in | ios::out);          fstream plik6("dane.dat",ios::binary | ios::in | ios::out | ios::trunc );                  while(1)         {                  plik5.read(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                                     if(plik5.eof()) break;                                 plik6.write(reinterpret_cast<char*>(&magazynu),sizeof(magazynu));                  }             plik6.close();              plik5.close();      }int menu(){int o;     cout<<"Aby dodac towary do magazynu wybierz 1"<<endl;     cout<<" "<<endl;     cout<<"Aby odczytac zawartosc magazynu wybierz 2"<<endl;     cout<<" "<<endl;     cout<<"Aby poprawic dane w magazynie wybierz 3"<<endl;     cout<<" "<<endl;     cout<<"Aby usunac dane wybierz 4"<<endl;     cout<<" "<<endl;      cout<<"Aby wyeksportowac dane do pliku txt wybierz 5"<<endl;     cout<<" "<<endl;     cout<<"Aby zamknac wcisnij 0"<<endl;     cout<<" "<<endl;     cin>>o;     return o;}int main(int argc, char *argv[]){         cout<<"********************************************************"<<endl;     cout<<"             Witam w programie MAGAZYN    "<<endl;     cout<<"********************************************************"<<endl;     cout<<" "<<endl;     int o= menu();while (o!=0){        switch(o)        {                        case 1:                        {                        zapis();                        break;                        }                        case 2:                        {                        odczyt();                        break;                        }                        case 3:                        {                        popraw();                        break;                        }                        case 4:                        {                        usun();                        break;                        }                        case 5:                        {                        za();                        break;                        }                }                o=menu();                }    system("PAUSE");    return EXIT_SUCCESS;}
Do zapisu postanowiłem użyć pliku binarnego. Brakuje wyszukiwania ale nie wiem jak się za nie zabrać i narazie nie jest mi potrzebne.

Może komuś się przyda kod. Choć zalecam aby przed jego wykorzystaniem dać chociaż mi o tym znać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...