Witam.
Mam do zrobienia projekt 3 struktury : pacjent, lekarz, porada. Program am zapisywać je do pliku i z niego wczytywać a także mieć możliwość edycji danych w pliku. Napisałem już cześć kodu (bez opcji modyfikacji) lecz mój program źle czyta dane z plików i się wiesza przy odczycie. Prosiłbym o wykrycie błędów a także powiedzenie jak napisać żeby program wyświetlał cała zawartość pliku a nie tylko tyle ile wybierze użytkownik.
Oto kod:
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
struct pacjent
{
int id;
char Imie[10];
char Nazwisko[20];
int Urodzony;
};
struct lekarz
{
int id;
char Imie[10];
char Nazwisko[20];
long int Nrtel;
};
struct porada
{
int idPacjent;
int idLekarz;
char data[10];
};
void NowyPacjent()
{
int m;
cout<<"Podaj liczbe pacjentow, ktorych chcesz dodac do bazy: ";
cin>>m;
pacjent *tablica = new pacjent[m];
for(int i = 0 ; i < m; i++)
{
ofstream file;
file.open("baza_pacjentow.dat",ios::out | ios::app | ios::binary);
cout<<"----------Wprowadzenie danych pacjentow.----------\n";
cout<<"ID: \n";
cin>>tablica[i].id;
cout<<"Imie: \n";
cin>>tablica[i].Imie;
cout<<"Nazwisko: \n";
cin>>tablica[i].Nazwisko;
cout<<"Data urodzenia: \n";
cin>>tablica[i].Urodzony;
file.write ((char*) &tablica[i], sizeof(pacjent));
file.close();
}
}
void NowyLekarz()
{
int m;
cout<<"Podaj liczbe lekarzy, ktorych chcesz dodac do bazy: ";
cin >>m;
lekarz *tablica = new lekarz[m];
for(int i = 0; i < m; i++)
{
ofstream file;
file.open("baza_lekarzy.dat", ios::out | ios::app | ios::binary);
cout<<"----------Wprowadzenie danych lekarzy.----------\n";
cout<<"ID: \n";
cin>>tablica[i].id;
cout<<"Imie: \n";
cin>>tablica[i].Imie;
cout<<"Nazwisko: \n";
cin>>tablica[i].Nazwisko;
cout<<"Numer telefonu: \n";
cin>>tablica[i].Nrtel;
file.write((char*) &tablica[i], sizeof(lekarz));
file.close();
}
}
void NowyPorada()
{
int m;
cout<<"Podaj liczbe porad, ktorych chcesz dodac do bazy: ";
cin >>m;
porada *tablica = new porada[m];
for(int i = 0; i < m; i++)
{
ofstream file;
file.open("baza_porad.dat", ios::out | ios::app | ios::binary);
cout<<"----------Wprowadzenie danych porady.----------\n";
cout<<"ID Pacjenta: \n";
cin>>tablica[i].idPacjent;
cout<<"ID Lekarza: \n";
cin>>tablica[i].idLekarz;
cout<<"Data konsultacji: \n";
cin>>tablica[i].data;
file.write((char*) &tablica[i], sizeof(porada));
file.close();
}
}
void OdczytPacjent()
{
int m;
cin>>m;
pacjent *tablica = new pacjent[m];
cout << "Wyswietlanie bazy pacjentow." << endl << endl ;
for(int i=1;i<=m;i++)
{
ifstream file("baza_pacjentow.dat",ios::in | ios::binary);
file.read((char*) &tablica[i], sizeof(pacjent)); // wczytuje z pliku do tablicy struktur
cout << "Id pacjenta: " << tablica[i].id << endl;
cout << "Imie: " << tablica[i].Imie << endl;
cout << "Nazwisko: " << tablica[i].Nazwisko << endl;
cout << "Data urodzenia: " << tablica[i].Urodzony << endl;
file.close();
}
}
void OdczytLekarz()
{
int m;
cin>>m;
lekarz *tablica = new lekarz[m];
cout << "Wyswietlanie bazy lekarzy." << endl << endl ;
for(int i=1;i<=m;i++)
{
ifstream file("baza_lekarzy.dat",ios::in | ios::binary);
file.read((char*) &tablica[i], sizeof(lekarz)); // wczytuje z pliku do tablicy struktur
cout << "Id pacjenta: " << tablica[i].id << endl;
cout << "Imie: " << tablica[i].Imie << endl;
cout << "Nazwisko: " << tablica[i].Nazwisko << endl;
cout << "Numer telefonu: " << tablica[i].Nrtel << endl;
file.close();
}
}
void OdczytPorada()
{
int m;
cin>>m;
porada *tablica = new porada[m];
cout << "Wyswietlanie bazy porad." << endl << endl ;
for(int i=1;i<=m;i++)
{
ifstream file("baza_lekarzy.dat",ios::in | ios::binary);
file.read((char*) &tablica[i], sizeof(porada)); // wczytuje z pliku do tablicy struktur
cout << "Id pacjenta: " << tablica[i].idPacjent << endl;
cout << "Id lekarza: " << tablica[i].data << endl;
cout << "Data: " << tablica[i].data << endl;
file.close();
}
}
void ModPacjent()
{
}
void ModLekarz()
{
}
void ModPorada()
{
}
int main ()
{
int n;
printf("***********Przetwarzanie danych pogrupowanych w struktury***********\n");
printf("Co chcesz zrobic:\n1.Zapisac dane do bazy.\n2.Odczytac dane z bazy.\n3.Zmodyfikowac baze.\n4.Zabaczyc liste pacjentow podanego lekarza.\n");
again:
scanf("%i", &n);
switch(n)
{
case 1:
{
int n;
cout<<"Co chcesz dodac?\n1.Pacjenta\n2.Lekarza\n3.Porade.\n";
again1:
cin>>n;
switch(n)
{
case 1:
NowyPacjent();
break;
case 2:
NowyLekarz();
break;
case 3:
NowyPorada();
break;
default:
cout<<"Wybrano nieistniejaca opcje wybierz ponownie";
goto again1;
}
break;
}
case 2:
{
int n;
cout<<"Ktora baze danych chcesz odczytac?\n1.Pacjentow\n2.Lekarzy\n3.Porad.\n";
again2:
cin>>n;
switch(n)
{
case 1:
OdczytPacjent();
break;
case 2:
OdczytLekarz();
break;
case 3:
OdczytPorada();
break;
default:
cout<<"Wybrano nieistniejaca opcje wybierz ponownie";
goto again2;
}
break;
}
case 3:
{
int n;
cout<<"Ktora baze danych chcesz zmodyfikowac?\n1.Pacjentow\n2.Lekarzy\n3.Porad.\n";
again3:
cin>>n;
switch(n)
{
case 1:
ModPacjent();
break;
case 2:
ModLekarz();
break;
case 3:
ModPorada();
break;
default:
cout<<"Wybrano nieistniejaca opcje wybierz ponownie";
goto again3;
}
break;
}
case 4:
break;
default:
printf("Wybrano nieistniejaca opcje wybierz ponownie:");
goto again;
}
system("pause");
return 0;
}