Cześć, potrzebuję pomocy. Muszę napisać program obiektowo w C++, w którym stworzę bazę danych studentów. Muszą w nim być dwie klasy: menu odpowiedzialna za wyświetlanie menu a druga klasa student w której znajdują się: Private ( imię, numer legitymacji i nazwisko studenta, oceny 5 rożnych przedmiotów). W programie dodatkowo ma znaleźć się funkcja "Dodaj studenta","Usuwanie studenta","Modyfikowanie danych studenta", "Wyświetlenie listy studentów" i "Informacja o danym studencie po nr legitymacji albo nazwisku".
Wszystkie te dane mają być zapisane w pliku txt.
Większość funkcji już mam, ale niestety nie umiem poradzić sobie z modyfikowaniem danych w pliku txt i usunięciem studenta, żeby reszta studentów na liście w pliku txt spadła o jedno miejsce.
W funkcjach od modyfikacji danych coś tam zacząłem grzebać ale nic mi nie wychodzi. Pozdrawiam i dzięki z góry za pomoc
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
class student {
private:
int nrlegitymacji; //klasa studenta
string imie;
string nazwisko;
int ocena_fizyka;
int ocena_analiza;
int ocena_informatyka;
int ocena_algebra;
int ocena_angielski;
void zapiszDane();
public:
student(int anrlegitymacji, string aimie, string anazwisko, int aocena_fizyka, int aocena_analiza, int aocena_informatyka, int aocena_algebra, int aocena_angielski) : nrlegitymacji(anrlegitymacji), imie(aimie), nazwisko(anazwisko), ocena_fizyka(aocena_fizyka), ocena_analiza(aocena_analiza), ocena_informatyka(aocena_informatyka), ocena_algebra(aocena_algebra), ocena_angielski(aocena_angielski) {}
string getImie() const { return imie; }
string getNazwisko() const { return nazwisko; }
int getNrLegitymacji() const { return nrlegitymacji; }
int getOcena_fizyka() const { return ocena_fizyka; }
int getOcena_analiza() const { return ocena_analiza; }
int getOcena_informatyka() const { return ocena_informatyka; }
int getOcena_algebra() const { return ocena_algebra; }
int getOcena_angielski() const { return ocena_angielski; }
};
vector < student > studeent;
class menu {
private:
fstream plik;
public:
menu()
{
plik.open("bazastudentow.txt", fstream::in | fstream::out | fstream::app);
}
~menu()
{
plik.close();
}
void mmenu() {
auto liczba = 0;
do {
cout << "1. Dodaj studenta i jego oceny *" << endl;
cout << "2. Modyfikowanie danych studenta *" << endl; //menu
cout << "3. Lista studentow" << endl;
cout << "4. Informacja o studencie" << endl;
cout << "5. Zakonczenie programu" << endl;
cin >> liczba;
switch (liczba) {
case 1:
dodajstudenta();
break;
case 2:
modstudenta();
break;
case 3:
listastudentow();
break;
case 4:
infostudent();
break;
case 5:
system("pause");
break;
}
} while (liczba != 5);
};
void dodajstudenta() {
string imie, nazwisko;
int legitka = 0, ocena_fizyka = 0, ocena_analiza, ocena_informatyka = 0, ocena_algebra = 0, ocena_angielski = 0;
auto id = studeent.size();
cout << "Wprowadz imie studenta" << endl;
cin >> imie;
cout << "Wprowadz nazwisko studenta" << endl;
cin >> nazwisko;
cout << "Wprowadz nr legitymacji studenta" << endl;
cin >> legitka;
cout << "Wprowadz ocene z fizyki: " << endl;
cin >> ocena_fizyka;
cout << "Wprowadz ocene z analizy: " << endl;
cin >> ocena_analiza;
cout << "Wprowadz ocene z informatyki: " << endl;
cin >> ocena_informatyka;
cout << "Wprowadz ocene z algebry: " << endl;
cin >> ocena_algebra;
cout << "Wprowadz ocene z angielskiego: " << endl;
cin >> ocena_angielski;
studeent.push_back(student(legitka, imie, nazwisko, ocena_fizyka, ocena_analiza, ocena_informatyka, ocena_algebra, ocena_angielski));
zapiszDane();
cout << endl;
};
void zapiszDane()
{
// zapisz wektor do pliku
if (plik.is_open())
{
for (auto s : studeent)
{
plik << "Nazwisko: " << s.getNazwisko() << ", Nr legitymacji: " << s.getNrLegitymacji() << "\n";
plik << "Imie: " << s.getImie() << "\n";
plik << "Ocena z fizyki: " << s.getOcena_fizyka() << "\n";
plik << "Ocena z analizy: " << s.getOcena_analiza() << "\n";
plik << "Ocena z informatyki: " << s.getOcena_informatyka() << "\n";
plik << "Ocena z algebry: " << s.getOcena_algebra() << "\n";
plik << "Ocena z j. angielskiego: " << s.getOcena_angielski() << "\n\n";
}
}
else cout << "nieotwarty plik";
};
/* void modstudenta()
{
auto numer = 0;
string nrlegitka;
do
{
cout << "1. Modyfikacja danych studenta." << endl;
cout << "2. Dodawanie i modyfikacja ocen studenta." << endl;
cout << "3. Wroc do menu." << endl;
cin >> numer;
switch (numer) {
case 1:
cout << "Wpisz numer legitymacji studenta, ktorego dane chcesz zmodyfikowac: " << endl;
cin >> nrlegitka;
system("cls");
void modyfikacjadanych(string nrlegitka);
cout << endl;
break;
case 2:
//cout << "Wpisz numer legitymacji studenta, dla którego chcesz zmodyfikowac oceny: " << endl;
//cin >> numer_legitki;
system("cls");
//wyszukiwanie(numer_legitki);
cout << "Wprowadz ocene z fizyki: ";
break;
case 3:
void mmenu();
break;
}
} while (numer != 3);
};
void modyfikacjadanych(string nrlegitka) {
std::fstream plik;
std::string someString;
plik.open("bazastudentow.txt", ios::in | ios::app); //The path to your file goes here
if (plik.is_open()) { //You don't have to ask if the file is open but it's more secure
while (getline(plik, nrlegitka)) {
if (nrlegitka.find(someString) != string::npos) { //the find() documentation might be helpful if you don't understand
if (someString == "nrlegitka") {
cout << "Podaj nowy numer: ";
cin >> someString;
someString ==
}
else {
plik << "newString_2" << endl;
}
} //end if
} //end while
} //end if
else cerr << "Your file couldn't be opened";
plik.close();
return;
}
/*ifstream plik;
plik.open("bazastudentow.txt", ios::in);
string tekst;
int numer;
do {
getline(plik, tekst);
cout << "Podaj numer legitymacji: ";
cin >> nrlegitka;
if (tekst.find(nrlegitka) != std::string::npos)
{
for (int i = 0; i < 1; i++)
{
cout << "Podaj nowy numer: ";
cin >> numer;
nrlegitka == numer;
cout << numer << endl;
getline(plik, tekst);
}
return;
zapiszDane();
cout << "Pomyslnie zmieniles numer legitymacji!" << endl;
cout << endl;
}
} while (!plik.eof());
plik.close(); */
void listastudentow() {
string linia;
fstream plik;
plik.open("bazastudentow.txt", ios::in);
if (plik.good() == false)
{
cout << "Plik nie istnieje!";
exit(0);
}
while (!plik.eof())
{
getline(plik, linia);
cout << linia << endl;
}
plik.close();
}
void infostudent() {
auto numer = 0;
string nazwisko;
string numer_legitki;
do
{
cout << "1. Wyszukiwanie studenta po nazwisku." << endl;
cout << "2. Wyszukiwanie studenta po numerze legitymacji." << endl;
cout << "3. Wroc do menu." << endl;
cin >> numer;
switch (numer) {
case 1:
cout << "Wpisz nazwisko studenta, ktorego chcesz wyszukac: " << endl;
cin >> nazwisko;
system("cls");
wyszukiwanie(nazwisko);
cout << endl;
break;
case 2:
cout << "Wpisz numer legitymacji studenta, ktorego chcesz wyszukac: " << endl;
cin >> numer_legitki;
system("cls");
wyszukiwanie(numer_legitki);
cout << endl;
break;
case 3:
void mmenu();
break;
}
} while (numer != 3);
};
void wyszukiwanie(string nazwisko) {
ifstream plik;
plik.open("bazastudentow.txt", ios::in);
string tekst;
do {
getline(plik, tekst);
if (tekst.find(nazwisko) != std::string::npos)
{
for (int i = 0; i < 7; i++)
{
cout << tekst << endl;
getline(plik, tekst);
}
return;
}
} while (!plik.eof());
plik.close();
};
void wyszukiwanie(int numer_legitki) {
ifstream plik;
plik.open("bazastudentow.txt", ios::in);
string nrlegitymacji;
do {
getline(plik, nrlegitymacji);
if (nrlegitymacji.find(numer_legitki) != std::string::npos)
{
for (int i = 0; i < 7; i++)
{
cout << nrlegitymacji << endl;
getline(plik, nrlegitymacji);
}
return;
}
} while (!plik.eof());
plik.close();
}
};
int main() {
menu studentmenu;
studentmenu.mmenu();
}