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

Bardzo proszę o pomoc w przerobieniu programu

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();
}
0

Napisz na [email protected]

0

Napisz na [email protected] :)

0

Witam,

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

Pozdrawiam,
Krzysztof

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