Wątek przeniesiony 2017-06-27 10:28 z Newbie przez Patryk27.

Bardzo proszę o pomoc w przerobieniu programu

Odpowiedz Nowy wątek
2017-06-27 12:04
Początkujący C++
0

Witam, bardzo proszę o pomoc w przerobieniu kodu pod tekst zadania. Niestety jestem laikiem w programowaniu a potrzebuję jednorazowej pomocy w napisaniu programu na studia. Więcej nie będę miała do czynienia z programowaniem. Byłam chora i niestety opuściłam jedne zajęcia i teraz mam braki.

Tekst zadania:

  1. Prosta baza danych reprezentowana strukturę zawiera imię i nazwisko pacjenta, numer badania i
    kwotę usługi medycznej. Przeczytać dane do struktury z pliku tekstowego o nazwie podanej z
    klawiatury i zapisać do pliku binarnego o nazwie podanej z klawiatury. Struktura powinna zawierać
    funkcję pozwalającą na odczyt danych z pliku. Zapis binarny wykonać za pomocą funkcji pobierającej
    jako argument obiekt zaprojektowanej struktury.

Kod do przerobienia

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;

const char znak_podzialu = ';';

struct struktura_klienta{
    string imie;
    string nazwisko;
    float srodki;
    string waluta;

    void wczytaj_klienta(string a, string b, float c, string d);
    void wyswietl();
    void zapis_binarny(string sciezka, struktura_klienta struktura);

};

int wielkosc_pliku(string plik);

int main(int argc, char** argv) {
    string plik_odczyt;

    cout << "Wpisz sciezke do pliku z danymi" << endl;
    cin >> plik_odczyt;
    int plik_rozmiar = wielkosc_pliku(plik_odczyt);
    if(wielkosc_pliku>=0)
    {
        struktura_klienta *klient = new struktura_klienta[plik_rozmiar];
        FILE *odczyt;
        char znak;
        int i = 0;
        int j = 0;
        int b;
        float n;
        int pom = 0;
        string a[4] ="";
        odczyt=fopen(plik_odczyt.c_str(),"r");
        if(odczyt==NULL){  
            cout << "Brak pliku" << endl;
            return -1;
            }

        do
        {
            znak=fgetc(odczyt);
                switch(znak)
                {
                    case znak_podzialu:
                        i++;
                        pom = 0;
                        break;
                    case '\n':
                        if(pom==0)
                        {
                            pom = 1;
                            n = atof(a[2].c_str());
                            klient[j].wczytaj_klienta(a[0],a[1],n,a[3]);
                            j++;
                            i=0;
                            a[0] = "";
                            a[1] = "";
                            a[2] = "";
                            a[3] = "";
                        }
                        break;
                    case EOF:
                        if(a[0]!="")
                        {
                            n = atof(a[2].c_str());
                            klient[j].wczytaj_klienta(a[0],a[1],n,a[3]);
                            j++;
                        }
                        break;
                    default:
                        a[i]=a[i]+znak;
                        break;

                }
        }while(znak != EOF);

        fclose(odczyt);

        char znak_decyzji;
        int t1 = 0;

        do
        {
            cout << "Wyswietlic struktura_klienta z wczytanych struktur?" << endl << "<T/t>  Tak" << endl << "<N/n>  Nie" << endl;
            znak_decyzji = getchar();
            system("cls");

            if((znak_decyzji == 't') || (znak_decyzji == 'T')){
                for(int i =0;i<j;i++){
                cout << "..................." << i+1 << "...................." << endl;
                klient[i].wyswietl();
                }
            cout << "......................................" << endl;
            t1 = 1;
            }

            if((znak_decyzji == 'n') || (znak_decyzji == 'N')){
                t1 = 1;
            }

        }while(t1!=1);

        cout << "Wpisz sciezke pliku do zapisu binarnego" << endl;
        string plik_sciezka_zapis;
        cin >> plik_sciezka_zapis;
        for(int i = 0; i<j;i++){
            klient[i].zapis_binarny(plik_sciezka_zapis,klient[i]);
        }

        delete[] klient;
    }

}

int wielkosc_pliku(string plik)
{
    fstream odczyt;
    odczyt.open(plik.c_str()); 
    if(!odczyt){  
        cout << "Nie ma takiego pliku" << endl;
        return -1;
        }
    int numer_lini=0;
        string wiersz;
            while ( !odczyt.eof() )
            {
                getline(odczyt,wiersz);
                numer_lini++;
            }

    odczyt.close();
    return numer_lini;
}

void struktura_klienta::wczytaj_klienta(string a, string b, float c, string d)
{
    imie = a;
    nazwisko = b;
    srodki = c;
    waluta = d;
}

void struktura_klienta::wyswietl()
{
    cout << "Imie:       " << imie << endl;
    cout << "Nazwisko:   " << nazwisko << endl;
    cout << "Srodki:     " << srodki << endl;
    cout << "Waluta:     " << waluta << endl;
}

void struktura_klienta::zapis_binarny(string sciezka, struktura_klienta struktura)
{
    ofstream zapisanie;
    zapisanie.open(sciezka.c_str(),ios::binary|ios::app);
    if(zapisanie.fail())
    {
        cout << "Zapis zakonczony bledem" << endl;
    }

    zapisanie.write((char*) &struktura,sizeof(struktura));
    zapisanie.close();
}
edytowany 1x, ostatnio: Patryk27, 2017-06-27 12:27

Pozostało 580 znaków

2017-06-27 12:46
Nadziany Jeleń
0

Napisz na [email protected]

Pozostało 580 znaków

2017-06-27 22:13
0

Napisz na [email protected] :)

Pozostało 580 znaków

2017-06-27 22:20
0

Witam,

Jeżeli oferta wciąż aktualna, to proszę o kontakt na [email protected]

Pozdrawiam,
Krzysztof

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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