Baza danych z zastosowaniem operacji na plikach

2014-12-07 18:24
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

edytowany 2x, ostatnio: furious programming, 2014-12-07 20:03
Kod wstawiaj do treści posta, a nie w załączniki; - furious programming 2014-12-07 20:03

Pozostało 580 znaków

2014-12-11 12:18
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

edytowany 2x, ostatnio: furious programming, 2014-12-11 18:21
Umieść kod w znacznikach &lt;code=cpp&gt;&lt;/code&gt;. - somekind 2014-12-11 14:21

Pozostało 580 znaków

2014-12-11 12:31
0

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

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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