Se ho questa traccia
Una struttura sanitaria ha l’esigenza di espandere le funzionalità di un software sviluppato in C++ per la gestione dell’archivio delle cartelle cliniche dei pazienti ricoverati presso i reparti della struttura stessa.
In particolare, si vogliono gestire per ogni paziente le seguenti informazioni: Nome, Cognome, Reparto, Pressione Massima, Pressione Minima, Temperatura Corporea (ultimi valori rilevati), Numero dei farmaci somministrati ed Elenco dei nomi dei farmaci.
Inoltre, il software già possiede le seguenti funzionalità:
? caricamento da un file di testo dell’archivio in memoria;
? salvataggio su file di testo dell’archivio;
? stampa a video dell’intero archivio;
Modificare il programma C++ in questione (per cui sono disponibili i sorgenti) aggiungendo le seguenti funzionalità:
1. Stampa a video (dal main) il numero di pazienti di un dato reparto che non hanno assunto alcun farmaco.
? int P1(const Archivio a, int n, Stringa reparto, Stringa farmaco)
2. Stampa a video (dalla funzione) le pressioni massima e minima medie dei pazienti di un dato reparto che non preso alcun farmaco.
? void P2(const Archivio a, int n, Stringa reparto)
Effettuare nel main un test delle funzionalità introdotte.
Questo programma come va completato?
using namespace std;
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstring>
#define DIM_MAX 100
#define STR_MAX 100
typedef char Stringa [STR_MAX];
typedef Stringa Elenco[DIM_MAX];
typedef struct Cartella {
Stringa Nome;
Stringa Cognome;
Stringa Reparto;
int pmin;
int pmax;
float temp;
int num_farmaci;
Elenco Farmaci;
};
typedef Cartella Archivio [DIM_MAX];
void visualizza_cartelle(const Archivio, int);
int carica_archivio_cartelle (Archivio, const Stringa, int&);
int salva_archivio_cartelle (const Archivio, const Stringa, int);
// inserire i prototipi delle funzioni da sviluppare
void visualizza_cartelle(const Archivio a, int n) {
int i,j;
for (i=0;i<n;i++) {
cout<<"Nome: "<<a.Nome<<endl;
cout<<"Cognome: "<<a.Cognome<<endl;
cout<<"Reparto: "<<a.Reparto<<endl;
cout<<"Pressione Minima: "<<a.pmin<<endl;
cout<<"Pressione Massima: "<<a.pmax<<endl;
cout<<"Temperatura: "<<a.temp<<endl;
cout<<"Farmaci somministrati: ";
for (j=0;j<a.num_farmaci;j++) cout<<a.Farmaci[j]<<" ";
cout<<endl;
}
}
int carica_archivio_cartelle (Archivio a, const Stringa file, int& n) {
fstream f;
int i, exit;
n=0;
f.open(file,ios::in);
if(!f) exit=0;
else {
while (!f.eof()) {
f>>a[n].Nome>>a[n].Cognome>>a[n].Reparto>>a[n].pmin>>a[n].pmax>>a[n].temp>>a[n].num_farmaci;
for (i=0;i<a[n].num_farmaci;i++) f>>a[n].Farmaci;
n++;
}
exit=1;
}
return exit;
}
int salva_archivio_cartelle (const Archivio a, const Stringa file, int n) {
fstream f;
int i, j, exit;
f.open(file,ios::out);
if(!f) exit=0;
else {
exit=1;
for (i=0;i<n;i++) {
if (i==0) {
f<<a.Nome<<" "<<a[i].Cognome<<" "<<a[i].Reparto<<" "<<a[i].pmin<<" "<<a[i].pmax<<" "<<a[i].temp<<" "<<a[i].num_farmaci<<" ";
for (j=0;j<a[i].num_farmaci;j++) {if (j<a[i].num_farmaci-1) f<<a[i].Farmaci[j]<< " "; else f<<a[i].Farmaci[j];}
f<<endl;
}
else if (i<n-1) {
f<<endl;
f<<a[i].Nome<<" "<<a[i].Cognome<<" "<<a[i].Reparto<<" "<<a[i].pmin<<" "<<a[i].pmax<<" "<<a[i].temp<<" "<<a[i].num_farmaci<<" ";
for (j=0;j<a[i].num_farmaci;j++) {if (j<a[i].num_farmaci-1) f<<a[i].Farmaci[j]<< " "; else f<<a[i].Farmaci[j];}
f<<endl;
}
else {
f<<endl;
f<<a[i].Nome<<" "<<a[i].Cognome<<" "<<a[i].Reparto<<" "<<a[i].pmin<<" "<<a[i].pmax<<" "<<a[i].temp<<" "<<a[i].num_farmaci<<" ";
for (j=0;j<a[i].num_farmaci;j++) {if (j<a[i].num_farmaci-1) f<<a[i].Farmaci[j]<< " "; else f<<a[i].Farmaci[j];}
}
}
}
return exit;
}
int main() {
Archivio a;
int n=0;
int esito;
Stringa file;
cout<<endl<<"Inserisci il nome del file dove e' presente l'archivio: ";
cin>>file;
esito=carica_archivio_cartelle(a,file,n);
if (esito) {
cout<<endl<<"Archivio correttamente caricato..."<<endl;
system("PAUSE");
}
else {
cout<<endl<<"Archivio non caricato..."<<endl;
return -1;
};
cout<<endl<<" -- Pazienti presenti in archivio -- "<<endl;
visualizza_cartelle(a,n);
system("PAUSE");
// inserire qui l'attivazione delle funzioni sviluppate per effettuare dei casi di test
system("PAUSE");
return 0;
}