Zapisywanie danych do pliku i czytanie danych z pliku

0

Witam, borykam się z problemem. Wykonuję na zaliczenie ćwiczenie (zdjęcie 1). Mam problem z dodawaniem szkoleń i trenerów. Ktoś jest w stanie pomóc lub nakierować? Od razu zaznaczam, że wybitnym programistą nie jestem, co za pewne widać, ale próbuję.

Kod pliku:

> #include <iostream>
> #include <stdio.h>
> #include <cstdlib>
> #include <conio.h>
> 
> using namespace std;
> 
> char wybor;
> 
> string Szkolenie;
> string Trener;
> string Przydzial;
> 
> int main()
> {
> 	cout << "MENU" << endl;
> 	cout << "1. Szkolenia z danego okresu czasu." << endl;
> 	cout << "2. Szkolenia przydzielone do trenera." << endl;
> 	cout << "3. Dodaj szkolenie." << endl;
> 	cout << "4. Dodaj trenera." << endl;
> 	
> 	cout << "Wybierz jedna z powyzszych opcji." << endl;
> 	cout << "Wybor: ";
> 	wybor=getch();
> 	
> 	switch(wybor)
> 	{
> 		case '1':
> 			{
> 				cout << "Podaj okres szkolen, ktory Cie interesuje: " << endl;
> 			}
> 			break;
> 		
> 		case '2':
> 			{
> 				cout << "Podaj nazwisko trenera: " << endl;
> 			}
> 		case '3':
> 			{
> 				void szkolenie::dodaj;
> 			}
> 		case '4':
> 			{
> 				void trener::dodaj;
> 			}
> 	}
> 	getchar();getchar();
>     system("cls");
> 
> 	return 0;
> }

Kod klas:

> #include <iostream>
> 
> using namespace std;
> 
> class Szkolenie
> 
> {
> 	private:
> 
> 	int id_szkolenia;
> 	string nazwa_szkolenia;
> 	string data_rozpoczecia;
> 	string dlugosc_szkolenia;
> 
> 	public:
> 
> 	void szkolenie::dodaj()
> 	{
> 		cout << "Nazwa szkolenia: " << endl; cin >> nazwa_szkolenia;
> 		cout << "Data rozpoczecia szkolenia: " << endl; cin >> data_rozpoczecia;
> 		cout << "Dlugosc szkolenia: " << endl; cin >> dlugosc_szkolenia;
> 	}
> 
> 	void save()
> 	{
> 		ofstream plik("szkolenia.txt");
> 		for
> 		plik.close();
> };
> 
> class Trener
> 
> {
> 	private:
> 	
> 	int id_trenera;
> 	string nazwisko_trenera;
> 
> 	public:
> 
> 	void trener::dodaj()
> 	{
> 		cout << "Podaj nazwisko trenera: " << endl; cin >> nazwisko_trenera;
> 
> 	}
> 
> 	void save()
> 	{
> 		ofstream plik("trenerzy.txt");
> 		for
> 		plik.close();
> };
> }
0

Napisz polecenie to coś pomogę -> poprawię kod ale muszę znać polecenie ;)

0

Polecenie jest w zdjęciu

0

Nie masz w poleceniu w czym przechowywać dane podczas działania programu - raczej nie mają być cały czas zapisywane do pliku.
Ale to co napisałem to dam Ci, rozdzielaj deklarację klas od implementacji funkcji klas łatwiej się połapać kod jest czytelniejszy

main.cpp

#include <iostream>

int main()
{
	char wybor;
	while (true)
	{
		std::clog << "MENU\n1. Szkolenia z danego okresu czasu.\n2. Szkolenia przydzielone do trenera.\n3. Dodaj szkolenie.\n4. Dodaj trenera.\n";
		std::cin >> wybor;
		switch (wybor)
		{
		case '1':
			break;
		case '2':
			break;
		case '3':
			break;
		case '4':
			break;

		}
	}
	return EXIT_SUCCESS;
}

szkolenie.h

#pragma once
#include <string>
#include <ctime>
class szkolenie
{
private:
	std::string identyfikator_szkolenia;
	std::string nazwa_szkolenia;
	tm data;
	double dlugosc_szkolenia;

public:
	szkolenie(std::string identyfikator_szkolenia, std::string nazwa_szkolenia, tm data, double dlugosc_szkolenia);

	std::string pobierz_identyfikator();

	void ustaw_identyfikator(std::string nowy_identyfikator);

	//dopisz resztę funkcji do ustawiania/pobierania
};

szkolenie.cpp

#include "szkolenie.h"

szkolenie::szkolenie(std::string identyfikator_szkolenia, std::string nazwa_szkolenia, tm data, double dlugosc_szkolenia)
{
	this->identyfikator_szkolenia = identyfikator_szkolenia;
	this->nazwa_szkolenia = nazwa_szkolenia;
	this->data = data;
	this->dlugosc_szkolenia = dlugosc_szkolenia;
}

void szkolenie::ustaw_identyfikator(std::string nowy_identyfikator)
{
	identyfikator_szkolenia = nowy_identyfikator;
}

std::string szkolenie::pobierz_identyfikator()
{
	return  identyfikator_szkolenia;
}

trener.h

#pragma once
#include <string>

class trener
{
private:
	std::string identyfikator_trenera;
	std::string nazwisko_trenera;

public:
	trener(std::string identyfikator_trenera, std::string nazwisko_trenera);
	//dopisz pozostałe funkcje 

};

trener.cpp

#include "trener.h"

trener::trener(std::string identyfikator_trenera, std::string nazwisko_trenera)
{
	this->identyfikator_trenera = identyfikator_trenera;
	this->nazwisko_trenera = nazwisko_trenera;
}

przydział.h

#pragma once
#include <string>

class przydział
{
private:
	std::string identyfikator_trenera;
	std::string identyfikator_szkolenia;
public:
	przydział(std::string identyfikator_trenera, std::string identyfikator_szkolenia);
};

przydział.cpp

#include "przydział.h"

przydział::przydział(std::string identyfikator_trenera, std::string identyfikator_szkolenia)
{
	this->identyfikator_szkolenia = identyfikator_szkolenia;
	this->identyfikator_trenera = identyfikator_trenera;
}
0

Pomogłem coś? Ruszyłeś to?

0

Hej, teraz zajrzałem na forum. Mam kilka pytań bądź sugestii.

  1. Musi być jeden program, nie kilka.
  2. this->identyfikator_szkolenia = identyfikator_szkolenia - można usunąć this?
0

Jak w konstruktorze by były zmienne różniące się nazwą do zmiennych w klasie to tak czyli np. w klasie mamy zmienną std::string imie a konstruktor wyglądał tak: ```
jakaś_klasa(std::string a){
imie = a;
}

0

A i te pliki są w jednym programie nie w kilku, po prostu jest to podzielone aby wyglądało czytelnie i szybko można się połapać. Robisz to na studia tak? -> u mnie na uczelni podział na pliki, jest punktowany.

0

Okej czyli mam przydzial.cpp i jego kod to ten kod wklejam w jakiś case w mainie? A jak rozwiązać zapis do pliku?

0

Nie masz nic w tych plikach dodatkowych w czym przechowywać dane podczas działania programu? W sensie wątpię żeby każdą zmianę od razu zapisywać do pliku i tylko na nim operować. Moim zdaniem dane najpierw przechowujesz w jakiejś tablicy (np. std::vector ) pracujesz na tej tablicy a dopiero po zmianach zapisujesz do pliku, a na początku programu możesz do tej tablicy wczytać dane z pliku.

0

W przydział.h wyskakuje:

19	0	C:\Users\dnowocien\Desktop\Program\main2.cpp	In file included from C:\Users\dnowocien\Desktop\Program\main2.cpp
4	1	C:\Users\dnowocien\Desktop\Program\przydział.h	[Error] stray '\263' in program
10	5	C:\Users\dnowocien\Desktop\Program\przydział.h	[Error] stray '\263' in program
21	1	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] stray '\263' in program
21	1	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] stray '\263' in program
C:\Users\dnowocien\Desktop\Program\main2.cpp	In function 'int main()':
21	34	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected primary-expression before 'identyfikator_trenera'
21	69	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected primary-expression before 'identyfikator_szkolenia'
21	92	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] cannot call constructor 'main()::przydzia::przydzia' directly [-fpermissive]
21	92	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Note] for a function-style cast, remove the redundant '::przydzia'
42	0	C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ctime	In file included from C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/ctime
3		C:\Users\dnowocien\Desktop\Program\szkolenie.h	                 from C:\Users\dnowocien\Desktop\Program\szkolenie.h
31		C:\Users\dnowocien\Desktop\Program\main2.cpp	                 from C:\Users\dnowocien\Desktop\Program\main2.cpp
18	8	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected unqualified-id before string constant
42	0	C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ctime	In file included from C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/ctime
3		C:\Users\dnowocien\Desktop\Program\szkolenie.h	                 from C:\Users\dnowocien\Desktop\Program\szkolenie.h
31		C:\Users\dnowocien\Desktop\Program\main2.cpp	                 from C:\Users\dnowocien\Desktop\Program\main2.cpp
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	At global scope:
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected declaration before end of line

W szkolenie.h:

42	0	C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ctime	In file included from C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/ctime
3		C:\Users\dnowocien\Desktop\Program\szkolenie.h	                 from C:\Users\dnowocien\Desktop\Program\szkolenie.h
31		C:\Users\dnowocien\Desktop\Program\main2.cpp	                 from C:\Users\dnowocien\Desktop\Program\main2.cpp
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	In function 'int main()':
18	8	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected unqualified-id before string constant
42	0	C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ctime	In file included from C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/ctime
3		C:\Users\dnowocien\Desktop\Program\szkolenie.h	                 from C:\Users\dnowocien\Desktop\Program\szkolenie.h
31		C:\Users\dnowocien\Desktop\Program\main2.cpp	                 from C:\Users\dnowocien\Desktop\Program\main2.cpp
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected '}' before end of line
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	At global scope:
272	18	C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\time.h	[Error] expected declaration before end of line

w trener.h:

C:\Users\dnowocien\Desktop\Program\main2.cpp	In function 'int main()':
58	28	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected primary-expression before 'identyfikator_trenera'
58	63	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected primary-expression before 'nazwisko_trenera'
58	79	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] cannot call constructor 'main()::trener::trener' directly [-fpermissive]
58	79	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Note] for a function-style cast, remove the redundant '::trener'
69	12	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] 'EXIT_SUCCESS' was not declared in this scope
70	1	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected '}' at end of input
70	1	C:\Users\dnowocien\Desktop\Program\main2.cpp	[Error] expected '}' at end of input

Masz rozwiązanie na to? :(

0

Zabrzmi śmiesznie, ale u mnie działa, napisz priv

0

C++ pozwala na nie łacińskie znaki: http://en.cppreference.com/w/cpp/language/identifiers z pewnymi ograniczeniami.

Jeśli kompilator wspiera znaki nie łacińskie, to zapewne twój plik jest kodowany za pomocą CP-1250 (ISO 8859-2), a kompilator, chce zapewne UTF-8.
A jako, że w UTF-8 bajt 0xB3 (ósemkowo: 0263, w CP-1250 to znak ł) nie ma sensu w UTF-8 to kompilator się poddaje.
Zrób konwersję kodowania za pomocą notepad++ lub swojego IDE.

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