Baza danych z zastosowaniem operacji na plikach

0

Witam!
Mam pewien problem, gdyż potrzebuję pomocy z poniższym zadaniem, mam je do oddania do szkoły, jednak w związku z tym że mam spore zaległości w programowaniu nie jestem w stanie sobie z tym poradzić.
Obserwuje to forum już od jakiegoś czasu i uczę się z niego, ale jednak jestem na etapie rzeczy trochę prostszych.
Czy mógłby ktoś mi z tym pomóc ?

Treść zadania :

Stwórz program symulujący dzienniczek ucznia, w którym dane będą zapisywane i odczytywane z pliku txt. W zadaniu wykorzystaj stworzoną w poprzednim zadaniu strukturę

Program ma mieć następujące funkcje:

Dopisanie nowego ucznia
Spis wszystkich uczniow
Dane wybranego uczniow
Aktualizacja danych ucznia
Usuniecie wybranego ucznia
Wyjscie z programu 

W załączniku wklejam kod który pochodzi z I części tego zadania i jest potrzebny do wykonania tego.

Z góry dzięki ;)

#include<iostream>
#include<string>
#include<conio.h>

using namespace std;

struct osoba{
    int numer;
    string imie;
    string nazwisko;
    int ocena_mat;
    int ocena_prog;
    int ocena_ang;
};

int main()
{
    int ile;

    cout<<"Ilu ma byc uczniow?";
    cin>>ile;

    osoba uczniowie[5];

    for (int i=0; i<ile; i++)
    {
        cout<<"Podaj numer z dziennika "<<i+1<<endl;
        cin>>uczniowie[i].numer;
        cout<<"Podaj imie ucznia "<<i+1<<endl;
        cin>>uczniowie[i].imie;
        cout<<"Podaj nazwisko ucznia "<<i+1<<endl;
        cin>>uczniowie[i].nazwisko;
        cout<<"Podaj ocene z matematyki "<<i+1<<endl;
        cin>>uczniowie[i].ocena_mat;
        cout<<"Podaj ocene z programowania "<<i+1<<endl;
        cin>>uczniowie[i].ocena_prog;
        cout<<"Podaj ocene z angielskiego "<<i+1<<endl;
        cin>>uczniowie[i].ocena_ang;

        cout<<endl;
    }

    cout<<"Ktorego ucznia wyswietlic?\n";

    for(int a=0;a<ile;a++)
    {
        cout<<"Uczen "<<a+1<<". Numer "<<uczniowie[a].numer<<endl;}

    int wybor;
    cin >> wybor;

    for(int i=0; i<=ile;i++)
    {
        if(uczniowie[i].numer==wybor)
        {
            cout<<"Numer : ";
            cout<<uczniowie[i].numer<<endl;
            cout<<"Imie : ";
            cout<<uczniowie[i].imie<<endl;
            cout<<"Nazwisko : ";
            cout<<uczniowie[i].nazwisko<<endl;
            cout<<"Podaj z czego ocene chcesz wyswietlic\n1.Matematyka\n2.Programowanie\n3.Angielski \n";

            int n;
            cin>>n;

            switch(n){
                case 1:
                    cout<<"Ocena z matematyki to : \n";
                    cout<<uczniowie[i].ocena_mat<<endl;
                    break;
                case 2:
                    cout<<"Ocena z programowania to : \n";
                    cout<<uczniowie[i].ocena_prog<<endl;
                    break;
                case 3:
                    cout<<"Ocena z angielskiego to : \n";
                    cout<<uczniowie[i].ocena_ang<<endl;
                    break;
                default:
                    cout<<"Wybierz 1 albo 2\n";
            }
        }
    }

    system("pause");
    return 0;
}

wstawienie kodu do treści posta - @furious programming

0

Ogarnąłem to w taki sposób, na tyle potrafie, jednak nadal są błędy i brakuje dwóch case'ów.. Czy znalazłby się ktoś kto by je odnalazł ? :)

#include<iostream>
#include<string>
#include<conio.h>
#include<fstream>

using namespace std;

void zapis(int n);
void odczyt(int n);
void dod_ucznia;

struct osoba{
int numer;
string imie;
string nazwisko;
int ocena_mat;
int ocena_prog;
int ocena_ang;
};


osoba tab[30];
int odczyt()
{
	ifstream plik;
 	 plik.open("glowny.txt",ios::in);
    int i = 0;
    while(!plik.eof())
	{    
		plik >> tab[i].numer;
		plik >> tab[i].imie;
		plik >> tab[i].nazwisko;
		plik >> tab[i].ocena_mat;
		plik >> tab[i].ocena_prog;
		plik >> tab[i].ocena_ang;		
		i++;
    }
	plik.close();
    return i-1;
}


void zapis(int n)
{
	ofstream plik;
	plik.open("glowny.txt");
	for (int i = 0; i<=n; i++)
	{
		plik << tab[i].numer << endl;
		plik << tab[i].imie << endl;
		plik << tab[i].nazwisko;
		plik << tab[i].ocena_mat;
		plik << tab[i].ocena_prog;
		plik << tab[i].ocena_ang;
		plik << endl;
	}
	plik.close();
}


void aktualizacja(int n)
{
ofstream plik;
plik.open("daneuczniow.txt");
plik << tab[n].numer << endl;
plik << tab[n].imie << endl;
plik << tab[n].nazwisko << endl;
plik << tab[n].ocena_mat << endl;
plik << tab[n].ocena_prog << endl;
plik << tab[n].ocena_ang << endl;
plik << endl;
}


void dod_ucznia (){
string imie;
string nazwisko;
int numer;
int ocena_mat;
int ocena_ang;
int ocena_prog;
cout<<"Podaj Imie:";
cin>>imie;
cout<<"Podaj Nazwisko:";
cin>>nazwisko;
cout<<"Podaj Numer w dzienniku:";
cin>>numer;
cout<<"Podaj Ocene z Matematyki:";
cin>>ocena_mat;
cout<<"Podaj Ocene z Programowania:";
cin>>ocena_prog;
cout<<"Podaj Ocene z Angielskiego:";
cin>>ocena_ang;
ofstream plik;
plik.open("C:\\glowny.txt");
plik<<"Imie:"<<imie<<"\nNazwisko:"<<nazwisko<<"Numer w dzienniku"<<numer<<endl;
plik<<"Ocena z Matematyki:"<<ocena_mat<<"Ocena z Programowania:"<<ocena_prog<<"Ocena z Angielskiego:"<<ocena_ang;
plik.close();
}


int main()
{
int ile;

osoba uczniowie[100];
cout<<"Wybierz co chcesz zrobic:\n;1.Dopisanie nowego ucznia.\n;2.Spis wszystkich uczniow.\n;3.Dane wybranego uczniow.\n;4. Aktualizacja danych ucznia.\n;5.Usuniecie wybranego ucznia.\n;6. Wyjscie z programu";

cin>>ile;
ofstream plik;
plik.open("dzienniczek.txt");
do{
switch(ile){
case 1:
	for(int i=1;i!=0;)
	{
	ofstream plik;
	plik.open("glowny.txt");
	cout<<"Podaj numer z dziennika "<<i<<"\n";
	cin>>uczniowie[i].numer;
	plik<<uczniowie[i].numer<<"\n";
	cout<<"Podaj imie ucznia "<<i<<"\n";
	cin>>uczniowie[i].imie;
	plik<<uczniowie[i].imie<<"\n";
	cout<<"Podaj nazwisko ucznia "<<i<<"\n";
	cin>>uczniowie[i].nazwisko;
	plik<<uczniowie[i].nazwisko<<"\n";
	cout<<"Podaj ocene z informatyki ucznia "<<i<<"\n";
	cin>>uczniowie[i].ocena_mat;
	plik<<uczniowie[i].ocena_mat<<"\n";
	cout<<"Podaj ocene z matematyki ucznia"<<i<<"\n";
	cin>>uczniowie[i].ocena_prog;
	plik<<uczniowie[i].ocena_prog<<"\n";
	cout<<"Podaj ocene z polskiego ucznia "<<i<<"\n";
	cin>>uczniowie[i].ocena_ang;
	plik<<uczniowie[i].ocena_ang<<"\n\n";
	cout<<"Jeżeli już nie chcesz wpisywać uczniów wybierz 0.\n";
	cin>>i;
	}
	break;

	case 2:
{
    int liczba_uczniow=odczyt();
	cout << "W bazie jest uczniow: " << liczba_uczniow << endl;
    
	cout << "Spis uczniow w bazie: "<< endl;
        for (int i = 0; i<liczba_uczniow; i++)
    	{
        cout << "\t " << tab[i].numer << ". " << tab[i].imie << endl;
        }
}
	break;
case 3:

	break;
case 4:
	int i=odczyt();
	cout << "Aktualizacja ucznia" << endl;
	cout << "Numer ucznia: ";
	cin >> i;
	cout << "Podaj imie: ";
	cin >> tab[i-1].imie;
	cout << "Podaj nazwisko: ";
	cin >> tab[i-1].nazwisko;
	cout << "Podaj ocene z matematyki: ";
	cin >> tab[i-1].ocena_mat;
	cout << "Podaj ocene z programowania: ";
	cin >> tab[i-1].ocena_prog;
	cout << "Podaj ocene z angielskiego: ";
	cin >> tab[i-1].ocena_ang;

	break;

case 5:
	{
	ifstream plik;
 	 plik.open("dzienniczek.txt",ios::in);
    int i = 0;
    while(!plik.eof())
	{    
		plik >> tab[i].numer;
		plik >> tab[i].imie;
		plik >> tab[i].nazwisko;
		plik >> tab[i].ocena_mat;
		plik >> tab[i].ocena_prog;
		plik >> tab[i].ocena_ang;		
		i++;
	}
	cout<<"Wybierz, ktorego ucznia chcesz usunac";
	cin>>i;
	tab[i].numer=0;
	tab[i].imie="0";
	tab[i].nazwisko="0";
	tab[i].ocena_mat=0;
	tab[i].ocena_prog=0;
	tab[i].ocena_ang=0;
}
	break;

return 0;
}

dodanie znacznika <code class="cpp"> - @furious programming

0

tego sie nie da czytac. Poformatuj to normalnie. Nastepnie podziel na funkcje. Wtedy ktos Ci pomoze

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