Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a. Crear un archivo general de todos los pacientes del hospital en el momento actual o a
la fecha menos los nuevos que requiern hospitalización
b. Recorrer el Archivo, contabilizar y mostrar el Archivo general de pacientes
c. Buscar los pacientes de estado de salud grave, contabilizarlos y mostrarlos
d. Buscar pacientes de estado de salud leve, contabilizarlos y mostrarlos
e. Dar de alta o eliminar del archivo a los pacientes de estado de salud sanó, contabilizar
y mostrarlos
f. Insertar o hospitalizar a nuevos pacientes en estado de salud grave, contabilizar y
mostrarlos.
Precondición:
- Se tiene acceso a un archivo con la información de los pacientes.
- La información de cada paciente incluye: Código de paciente, nombre, fecha del día y
estado de salud.
- Los posibles estados de salud son: sanó, leve, grave y nuevo (para hospitalización).
Postcondición:
- Se ha creado un archivo general de pacientes excluyendo los pacientes nuevos que
requieren hospitalización.
- Se han contabilizado y mostrado todos los pacientes del archivo general.
- Se han contabilizado y mostrado los pacientes en estado de salud grave.
- Se han contabilizado y mostrado los pacientes en estado de salud leve
- Se han dado de alta o eliminado del archivo los pacientes en estado de salud sanó y se
ha contabilizado y mostrado esta información.
- Se han insertado u hospitalizado a nuevos pacientes en estado de salud grave y se ha
contabilizado y mostrado esta información.
Pseudocódigo:
Funcion principal()
// Crear archivo general de pacientes
archivo_general = crearArchivo("pacientes.txt")
Funcion crearArchivo(nombre_archivo)
Abrir(nombre_archivo, "w")
Cerrar(nombre_archivo)
FinFuncion
Subproceso cargarPacientes(archivo)
// Cargar pacientes desde archivo o ingreso manual
Abrir(archivo, "a")
Escribir("Ingrese el codigo del paciente: ")
Leer(codigo)
Escribir("Ingrese el nombre del paciente: ")
Leer(nombre)
Escribir("Ingrese el estado del paciente (sanado, leve, grave): ")
Leer(estado)
Escribir("Ingrese la fecha del dia: ")
Leer(fecha)
Escribir(nombre_archivo, codigo, nombre, fecha, estado)
Cerrar(archivo)
FinSubproceso
Subproceso mostrarArchivo(archivo)
// Mostrar archivo general de pacientes
Abrir(archivo, "r")
Mientras no fin de archivo
Leer(linea)
Mostrar(linea)
FinMientras
Cerrar(archivo)
FinSubproceso
Subproceso mostrarPacientes(lista_pacientes)
// Mostrar lista de pacientes por pantalla
Para cada paciente en lista_pacientes
Mostrar(paciente)
FinPara
FinSubproceso
Código en c++:
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
void menu();
struct Paciente {
int codigo;
string nombre;
string estado;
string fecha;
};
class FILA{
FILE *F;
FILE *G;
Paciente P;
public:
void crear();
void recorrer();
void buscar();
void modificar();
void contarPorEstado(string estado);
void eliminar();
void insertar();
};
void FILA::crear(){
char opcion;
F = fopen("PACIENTES.txt", "w");
if (F == NULL){
cout<<"No se puede abrir el archivo"<<endl;
exit(1);
}
do {
// Leer datos del paciente
cout << "Ingrese el codigo del paciente: ";
cin >> P.codigo;
cin.ignore(); // Ignorar el salto de línea pendiente
cout << "Ingrese el nombre del paciente: ";
getline(cin, P.nombre);
cout << "Ingrese el estado del paciente (sanado, leve, grave): ";
getline(cin, P.estado);
cout << "Ingrese la fecha del dia: ";
getline(cin, P.fecha);
void FILA::recorrer() {
F = fopen("PACIENTES.txt", "r");
if (F == NULL) {
cout << "\nNo se puede abrir el archivo";
exit(1);
}
void FILA::buscar(){
F = fopen ("PACIENTES.txt","r");
if(F == NULL){
cout<<"No se puede abrir el archivo";
exit(1);
}
fread (&P,sizeof(P),1,F);
int bol = 0;
cout << setfill('-') << setw(100) << "" << endl; // línea divisoria superior
cout << left << setw(10) << "No." << "|";
cout << left << setw(20) << "Código" << "|";
cout << left << setw(30) << "Nombre" << "|";
cout << left << setw(20) << "Estado" << "|";
cout << left << setw(20) << "Fecha" << "|";
cout << endl;
cout << setfill('-') << setw(100) << "" << endl; // línea divisoria inferior
while(!feof(F)) {
if(P.estado == "sano"){
bol++;
cout << left << setw(10) << bol << "|";
cout << left << setw(20) << P.codigo << "|";
cout << left << setw(30) << P.nombre << "|";
cout << left << setw(20) << P.estado << "|";
cout << left << setw(20) << P.fecha << "|";
cout << endl;
}
fread (&P,sizeof(P),1,F);
}
cout << setfill('-') << setw(100) << "" << endl; // línea divisoria inferior
cout << "\nPresione una tecla para continuar...";
fclose(F);
getch();
system("cls");
}
void FILA::eliminar(){
int hallado=0;
F = fopen ("PACIENTES.txt","rb");
if(F == NULL){
cout<<"No se puede abrir el archivo";
exit(1);
}
G = fopen("ACopia.text","wb");
fread(&P,sizeof(P),1,F);
while(!feof(F)){
if(P.estado == "sano"){
cout << P.codigo << "\t" << P.nombre << "\t" << P.estado << "\t" << P.fecha << endl;
hallado = 1;
}
else {
fwrite(&P,sizeof(P),1,G);
}
fread(&P,sizeof(P),1,F);
}
fclose(F);
fclose(G);
remove("PACIENTES.txt");
rename("ACopia.text","PACIENTES.txt");
if(hallado==0){
cout<<"No existen pacientes sanos";
}
else cout<<endl<<"Se eliminaron los pacientes sanos";
cout<<endl<<"\nPresione una tecla para continuar";
getch();
system("cls");
}
void FILA::insertar(){
char opcion;
F = fopen ("PACIENTES.txt","a+");
if(F == NULL){
cout<<"No se puede abrir el archivo";
exit(1);
}
do {
// Leer datos del paciente
cout << "Ingrese el codigo del paciente: ";
cin >> P.codigo;
cin.ignore(); // Ignorar el salto de línea pendiente
cout << "Ingrese el nombre del paciente: ";
getline(cin, P.nombre);
cout << "Ingrese el estado del paciente (sanado, leve, grave): ";
getline(cin, P.estado);
cout << "Ingrese la fecha del dia: ";
getline(cin, P.fecha);
void FILA::modificar(){
int codigo;
string nuevo_estado;
int main(){
char opc;
FILA FIL;
do {
menu();
cin>>opc;
switch(opc){
case '1': {
system("cls");
FIL.crear();
break;
}
case '2': {
system("cls");
FIL.recorrer();
break;
}
case '3': {
system("cls");
string estado = "grave";
FIL.contarPorEstado(estado);
break;
}
case '4': {
system("cls");
system("cls");
string estado = "leve";
FIL.contarPorEstado(estado);
break;
}
case '5': {
system("cls");
FIL.eliminar();
break;
}
case '6': {
system("cls");
FIL.insertar();
break;
}
case '7': {
system("cls");
FIL.modificar();
break;
}
case '8': {
cout<<"\n\n\t\tAdios";
break;
}
default:{
cout << "\t\tOpcion invalida." << endl;
break;
}
}while(opc != '8');
getch();
return 0;
}
void menu(){
system("cls");
cout<<"\t\t-----------------------------" << endl;
cout<<"\t\t MENU PRINCIPAL " << endl;
cout<<"\t\t-----------------------------" << endl<<endl;
cout<<"\t\t1. Cargar pacientes" << endl;
cout<<"\t\t2. Mostrar archivo general de pacientes" << endl;
cout<<"\t\t3. Contabilizar pacientes en estado grave" << endl;
cout<<"\t\t4. Contabilizar pacientes en estado leve" << endl;
cout<<"\t\t5. Eliminar pacientes en estado sanado" << endl;
cout<<"\t\t6. Ingresar nuevos pacientes en estado grave" << endl;
cout<<"\t\t7. Modificar estado de salud" << endl;
cout<<"\t\t8. Salir" << endl;
cout<<"\t\tIngrese opcion --->";
}