żeby lepiej zilustrować o co mi chodzi, ma to być program na kształt takiego programu co poniżej, wiadomo inne funkcje ale coś w ten deseń, no chyba że macie prostszą wizję, nie mam żadnych większych ram, jedynie zależy mi żeby był jak najprościej napisany:
#include <iostream>
#include <fstream>
using namespace std;
void menu();
void dodaj();
void lista();
void dane();
void zagrozeni();
struct adr
{
char miasto [20];
char ulica [20];
int numer;
};
struct uczniowie
{
char imie[20];
char nazwisko [20];
adr adres;
int telefon;
char ojciec [20];
char matka [20];
int oceny;
};
int main ()
{
menu();
}
void lista()
{
uczniowie uczen;
int i=1;
ifstream plik("uczniowie.dat", ios::binary | ios::in);
while (1)
{
plik.read(reinterpret_cast<char*>(&uczen),sizeof(uczen));
if(plik.eof()) break;
cout<<i<<" "<<uczen.imie<<" "<<uczen.nazwisko<<endl;
i++;
}
plik.close();
}
void dane()
{
uczniowie uczen;
int wybor;
cout<<"Dane ktorego ucznia chcesz wyswietlic?"<<endl;
cin>>wybor;
if (cin.good()==0)
{
while (cin.good()==0)
{
cin.clear();
cin.sync();
cout<<"Podano bledna liczbe, wprowadz ja raz jeszcze: ";
cin>>wybor;
}
}
ifstream plik("uczniowie.dat", ios::binary | ios::in);
plik.seekg(sizeof(struct uczniowie)*(wybor-1));
plik.read(reinterpret_cast<char*>(&uczen),sizeof(uczen));
cout<<"Uczen "<<uczen.imie<<" "<<uczen.nazwisko
<<endl
<<"Adres "<<uczen.adres.miasto<<" "<<uczen.adres.ulica<<" "<<uczen.adres.numer
<<endl
<<"Numer telefonu "<<uczen.telefon
<<endl
<<"Rodzice "<<uczen.ojciec<<" "<<uczen.matka
<<endl
<<uczen.oceny
<<endl<<endl;
plik.close();
}
void zagrozeni()
{
cout<<"W budowie"<<endl;
}
void dodaj()
{
int liczba;
cout<<" Ilu uczniow chcesz dodac do listy?"<<endl;
cin>>liczba;
if (cin.good()==0)
{
while (cin.good()==0)
{
cin.clear();
cin.sync();
cout<<"Podano bledna liczbe, wprowadz ja raz jeszcze: ";
cin>>liczba;
}
}
uczniowie uczen;
ofstream plik ("uczniowie.dat", ios::out | ios::app | ios::binary);
for (int i=0; i<liczba; i++)
{
cout<<" Uczen numer "<<i+1
<<endl;
cout<<" Nazwisko : ";
cin>>uczen.nazwisko;
cout<<endl;
cout<<" Imie: ";
cin>>uczen.imie;
cout<<endl;
cout<<" Miasto: ";
cin>>uczen.adres.miasto;
cout<<endl;
cout<<" Ulica: ";
cin>>uczen.adres.ulica;
cout<<endl;
cout<<" Numer domu: ";
cin>>uczen.adres.numer;
cout<<endl;
cout<<" Numer telefonu: ";
cin>>uczen.telefon;
cout<<endl;
cout<<" Imie matki: ";
cin>>uczen.matka;
cout<<endl;
cout<<" Imie ojca: ";
cin>>uczen.ojciec;
cout<<endl;
cout<<" Oceny: ";
cin>>uczen.oceny;
cout<<endl;
cout<<endl;
plik.write(reinterpret_cast<char*>(&uczen),sizeof(uczen));
}
plik.close();
}
void menu()
{
int wybor1, wybor2;
do
{
cout<<"\t\t***** DZIENNIK LEKCYJNY ***** "<<endl;
cout<<"\t[1] MENU "<<endl;
cout<<"\t[0] KONIEC PROGRAMU"<<endl;
cin>>wybor1;
if (cin.good()==0)
{
while (cin.good()==0)
{
cin.clear();
cin.sync();
cout<<"Podano bledna liczbe, wprowadz ja raz jeszcze: ";
cin>>wybor1;
}
}
if (wybor1==1)
{
cout<<"\t\t MENU"
<<endl
<<"\t Prosze o wybranie dzialania:"
<<endl
<<"\t [1] Dodanie ucznia do listy" //
<<endl
<<"\t [2] Wyswietlenie listy uczniow"
<<endl
<<"\t [3] Wyswietlanie danych ucznia" //
<<endl
<<"\t [4] Generowanie listy zagrozonych osob"
<<endl
<<"\t [0] Koniec programu"
<<endl
<<endl;
cin>>wybor2;
if (cin.good()==0)
{
while (cin.good()==0)
{
cin.clear();
cin.sync();
cout<<"Podano bledna liczbe, wprowadz ja raz jeszcze: ";
cin>>wybor2;
}
}
switch (wybor2)
{
case 1:
{
dodaj();
break;
}
case 2:
{
lista();
break;
}
case 3:
{
dane();
break;
}
case 4:
{
zagrozeni();
break;
}
case 0:
{
cout<<"KONIEC";
break;
}
default:
{
cout<<"Cos poszlo nie tak.";
break;
}
}
}
else
{
cout<<"KONIEC"
<<endl;
}
cout<<endl;
if (wybor1!=0) cout<<"Co teraz?"<<endl<<endl;
}while (wybor1!=0);
}