Es mi proyecto de final de semestre
Posdata: es de un hospital y aun esta en proceso, llevo mas o menos 1 semana y no logro hacer el filtro
aqui abajo dejo el codigo, estoy usando dev-c++
Código
#include <iostream> #include <conio.h> #include <string.h> #include <fstream> #include <stdlib.h> #include <stdio.h> using namespace std; struct datos{ long long cui; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros char nombre[254]; char apellido[254]; struct fecha{ int dia; int mes; int año; }fecha; char tipos[254]; int cel; char nfamiliar[254]; struct direccion{ char departamento[254]; char municipio[254]; char zona[254]; }direccion; }datos; struct rp{ //rp = Registro de paciente long long cui; struct fecha{ //fecha de ingreso int dia; int mes; int año; }fecha; int nufam; char ti[254]; char descripcion[1000]; //descripcion del por que ingresa char medico[254]; //medico tratante int hingreso; //hora ingreso int mingreso;//minutos ingreso char diagnostico[1000]; //diagnostico medico char rmedica[600];//receta medica char titulo[254]; struct fechas{ //fecha salida int dia; int mes; int año; }fechas; int hsalida; //hora salida int msalida;//minutos salida }rp; void principio();//contiene el primer menu en el que pregunta si se ha usado el programa anteriormente void menu();//Contiene el menu de inicio void crear();//void para crear el archivo de texto void ingresar();//Ingresar pacientes void mini(); //mini busqueda void registro(); void breporte(); void mini2();//mini busqueda en el void ingresar void rgpaciente(); //Registro general de paciente /*void rgpfecha(); //Registro general de pacientes filtrado por rango y fecha void rpsangre(); //Registro de paciente por tipo de sangre void diagnostico(); //Reporte de paciente por diagnostico*/ void pdepartamento(); //Reporte de pacientes por departamento /*void ddepartamento(); //Reporte de diagnostico por departamento void historial(); //Historial clinico del paciente void rdt(); //Reporte de descendente de total de ingreso de pacientes por día void pmedico(); //Reporte de pachiente por medico */ long long auxccui=0; void ingresar(){ char c[254],ddia[254],mes[254],cel[254],corr[254],año[254]; int m=0,dia=0,ce=0,x=0,dc=0,aanio=0,xx=0; int vn=0,va=0,vs=0,vnf=0,vd=0,vm=0,vz=0;//validaciones para los bucles while en la variable nombre,apellido. long long a; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros cout<<"\t\t\tINGRESE LA SIGUIENTE INFORMACION "<<endl; cout<<"________________________________________________________________________________________"<<endl; cout<<" CUI del paciente: "; cin>>c; a= atof(c);// la funcion atoi(variable) sirve para convertir a variable tipo "int" caracteres ingresados en una variable tipo "char" if (a<1000000000000){//si la variable a es menor a 13 digitos que muestre un error cout<<" El cui es invalido, ingreselo nuevamente"; getch(); system ("cls"); //limpiar pantalla ingresar();//empezar de nuevo el programa }else{ if (a>9999999999999){//Si la variable a es mayor a 13 digitos que muestre error cout<<" El cui es invalido, ingreselo nuevamente"; getch(); system ("cls"); //limpiar pantalla ingresar();//empezar de nuevo el programa } } auxccui=a; if(datos.cui==auxccui){ mini2(); } datos.cui=a;//Si la variable a contiene 13 digitos que se guarde en la estructura datos en cui cin.ignore();//Para evitar que omita el ingresar nombre do{ cout<<" Nombre del paciente: "; // cin.ignore(); cin.getline(datos.nombre,254,'\n'); strupr(datos.nombre); vn=0;//inpedimos que el while sea infinito if((*datos.nombre==NULL) || (*datos.nombre==' ') ){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vn=1;//activamos el while } }while(vn==1); // cin.ignore();//Para evitar que omita el ingresar apellido, eliminar "//" para activar la funcion do{ cout<<" Apellido del paciente: "; cin.getline(datos.apellido,254,'\n'); strupr(datos.apellido); va=0;//inpedimos que el while sea infinito if((*datos.apellido==NULL) || (*datos.apellido==' ')){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; va=1;//activamos el while } }while(va==1); cout<<"\t\t\tFECHA DE NACIMIENTO:\t\t\t\t\t\t EJEMPLO: 01/01/2000"<<endl; do{ cout<<" Ingrese la fecha:\n"; xx=0; cin.getline(ddia,254,'/'); cin.getline(mes,254,'/'); cin.getline(año,254,'\n'); dia=atoi(ddia); m=atoi(mes); aanio=atoi(año); if((dia==0) || (dia>31)){ cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((m==0) || (m>12)){ cout<<" MES INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((aanio<1950) || (aanio>2018)){ cout<<" año INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((dia>29) && (m=2)){ cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n"; xx=1; } } } } }while(xx==1); datos.fecha.dia=dia; datos.fecha.mes=m; datos.fecha.año=aanio; // cin.ignore(); do{ cout<<" Ingrese el tipo de sangre: "; vs=0;//inpedimos que el while sea infinito cin.getline(datos.tipos,254,'\n'); strupr(datos.tipos); if((*datos.tipos=='A') || (*datos.tipos=='AB') || (*datos.tipos=='B') || (*datos.tipos=='O')){ }else{ cout<<" TIPO DE SANGRE NO VALIDO, VUELVA A INTENTARLO.\n\n"; cout<<" Recuerde que solo hay tipos de sangre a+,a-,b+,b-,ab+,ab-,o+,o-.\n"; vs=1; } }while(vs==1); do{ do{ do{ cout<<" Ingrese el Numero celular de un familiar del paciente: "; cin.getline(cel,254,'\n'); ce=atoi(cel); if (ce==0){ cout<<" El numero ingresado es invalido, intente nuevamente."<<endl; ce=0; }else{ if (ce<29999999){ cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl; ce=0; }else{ if (ce>60000000){ cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl; ce=0; } } } }while(ce>60000000); }while(ce==0); }while(ce<29999999); datos.cel=ce; // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio do{ cout<<" Ingrese el Nombre de un familiar del cliente: "; cin.getline(datos.nfamiliar,40,'\n'); strupr(datos.nfamiliar); vnf=0;//inpedimos que el while sea infinito if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vnf=1;//activamos el while } }while(vnf==1); // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio do{ cout<<" Departamento: "; cin.getline(datos.direccion.departamento,30,'\n'); strupr(datos.direccion.departamento); vd=0;//inpedimos que el while sea infinito if((*datos.direccion.departamento==NULL) || (*datos.direccion.departamento==' ') /*|| (*datos.nfamiliar=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vd=1;//activamos el while } }while(vd==1); // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio do{ cout<<" Municipio: "; cin.getline(datos.direccion.municipio,30,'\n'); strupr(datos.direccion.municipio); vm=0;//inpedimos que el while sea infinito if((*datos.direccion.municipio==NULL) || (*datos.direccion.municipio==' ') /*|| (*datos.nfamiliar=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vm=1;//activamos el while } }while(vm==1); // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio do{ cout<<" Zona: "; cin.getline(datos.direccion.zona,30,'\n'); vz=0;//inpedimos que el while sea infinito if((*datos.direccion.zona==NULL) || (*datos.direccion.zona==' ') /*|| (*datos.nfamiliar=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vz=1;//activamos el while } }while(vz==1); system("cls"); cout<<"\t\t\t DATOS INGRESADOS:\n"; cout<<"_______________________________________________________________________________________________"<<endl; cout<<" CUI del paciente: "<<datos.cui<<endl; cout<<" Nombre del paciente: "<<datos.nombre<<endl; cout<<" Apellido del paciente: "<<datos.apellido<<endl; cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl; cout<<" Tipo de sangre: "<<datos.tipos<<endl; cout<<" Numero celular del familiar: "<<datos.cel<<endl; cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl; cout<<" Departamento: "<<datos.direccion.departamento<<endl; cout<<" Municipio: "<<datos.direccion.municipio<<endl; cout<<" Zona: "<<datos.direccion.zona<<endl; cout<<"_______________________________________________________________________________________________"<<endl; cout<<" LOS DATOS SON CORRECTOS?\n"; cout<<" 1. SI.\t\t 2. NO.\n OPCION[ ]\b\b"; cin.getline(corr,254,'\n'); strupr(corr); dc=atoi(corr); if((dc==2)||(corr=="NO")||(corr=="NO.")){ system("cls"); ingresar(); } FILE*archivo; archivo=fopen("hospital.txt","at+"); //abrimos el archivo fwrite(&datos,sizeof(datos),1,archivo); //escribimos los datos ingresados en el archivo fclose(archivo);//cerramos el archivo cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos getch(); menu(); } void breporte(){ FILE*archivo; archivo=fopen("registro.txt", "r+"); while(fread(&rp,sizeof(rp),1,archivo)==1) { if((datos.cui==rp.cui) /*&& (rp.fecha.dia!=0)*/ && (datos.cel==rp.nufam)){ cout<<"_______________________________________________________________________________________________"<<endl; cout<<"\t\t\tREPORTE\n"; cout<<"_______________________________________________________________________________________________"<<endl; cout<<" Fecha de ingreso: "<<rp.fecha.dia<<"/"<<rp.fecha.mes<<"/"<<rp.fecha.año<<".\n"; cout<<" Descripcion de ingreso: "<<rp.ti<<endl; cout<<" Hora de ingreso: "<<rp.hingreso<<":"<<rp.mingreso<<".\n"; cout<<" Medico tratante:"<<rp.medico<<endl; cout<<" Diagnostico medico: \n\t\t\t"<<rp.titulo<<endl<<rp.diagnostico<<endl; cout<<" Receta medica: "<<rp.rmedica<<endl; cout<<" Fecha de salida: "<<rp.fechas.dia<<"/"<<rp.fechas.mes<<"/"<<rp.fechas.año<<".\n"; cout<<" Hora de salida: "<<rp.hsalida<<":"<<rp.msalida; cout<<"\n_______________________________________________________________________________________________"<<endl; cout<<"\n Presione cualquier tecla para continuar."; getch(); } } fclose(archivo); } void rgpaciente(){ FILE*archivo; FILE*archivo2; archivo2=fopen("registro.txt", "r+"); archivo=fopen("hospital.txt", "r+"); int opc=0,opco=0,x=0; char opci[254]; cout<<"\t\t\tREPORTE GENERAL DE PACIENTES:"<<endl; cout<<"_______________________________________________________________________________________________"<<endl; while(fread(&datos,sizeof(datos),1,archivo)==1) { fread(&rp,sizeof(rp),1,archivo2); cout<<" CUI del paciente: "<<datos.cui<<endl; cout<<" Nombre del paciente: "<<datos.nombre<<endl; cout<<" Apellido del paciente: "<<datos.apellido<<endl; cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl; cout<<" Tipo de sangre: "<<datos.tipos<<endl; cout<<" Numero celular del familiar: "<<datos.cel<<endl; cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl; cout<<" Departamento: "<<datos.direccion.departamento<<endl; cout<<" Municipio: "<<datos.direccion.municipio<<endl; cout<<" Zona: "<<datos.direccion.zona<<endl; cout<<"_______________________________________________________________________________________________"<<endl; // getch(); do{ x=0; if((datos.cui==rp.cui ) && (datos.cel==rp.nufam) ){ cout<<" Desea ver el reporte?\n"; cout<<" 1. SI\t\t2. NO\n"; cout<<" OPCION [ ]\b\b"; cin>>opci; x=0; opco=atoi(opci); if ((opco==0) || (opco>2)){ cout<<" OPCION NO VALIDA VUELVA A INTENTARLO.\n"; x=1; }else{ opc=opco; } }else{ cout<<" NO TIENE REPORTE CLINICO.\n"; cout<<"_______________________________________________________________________________________________"<<endl; getch(); } }while(x==1); if((opc==1)){ breporte(); } // getch(); //} } fclose(archivo); fclose(archivo2); getch(); } void pdepartamento(){ //falta aplicar el filtro FILE*archivo; archivo=fopen("hospital.txt", "r+"); string auxdep; cout<< "\t\t\tFILTRAR POR DEPARTAMENTO: "<<endl; cout<<"_______________________________________________________________________________________________"<<endl<<endl; system("cls"); while(fread(&datos,sizeof(datos),1,archivo)==1) { auxdep=datos.direccion.departamento; if(datos.direccion.departamento==auxdep) { cout<< "\t\t\tDEPARTAMENTO: "<<datos.direccion.departamento<<endl; cout<<"_______________________________________________________________________________________________"<<endl<<endl; cout<<" CUI del paciente: "<<datos.cui<<endl; cout<<" Nombre del paciente: "<<datos.nombre<<endl; cout<<" Apellido del paciente: "<<datos.apellido<<endl; cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl; cout<<" Tipo de sangre: "<<datos.tipos<<endl; cout<<" Numero celular del familiar: "<<datos.cel<<endl; cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl; cout<<" Municipio: "<<datos.direccion.municipio<<endl; cout<<" Zona: "<<datos.direccion.zona<<endl; cout<<"_______________________________________________________________________________________________"<<endl; auxdep=datos.direccion.departamento; }else{ cout<<" Se ha producido un error a la hora de buscar por ese departamento, intentelo nuevamente."<<endl; getch(); } } fclose(archivo); getch(); } void menu(){ crear(); char opci[254]; int opc=0,opco=0; while (opc!= 12){ system("cls"); cout<<"________________________________________________________________________________________"<<endl; cout<<"\n\t\t\t\t\tMENU "<<endl; cout<<"________________________________________________________________________________________"<<endl; cout<<"\n\t\t\tENUMERE LA OPCION QUE DESEA UTILIZAR: "<<endl<<endl; cout<<"\t1. Ingresar paciente."<<endl; cout<<"\t2. Registrar paciente."<<endl; cout<<"\t3. Reporte general de pacientes."<<endl; cout<<"\t4. Reporte general de pacientes filtrado por fecha."<<endl; cout<<"\t5. Reporte general de pacientes por tipo de sangre."<<endl; cout<<"\t6. Reporte general de pacientes por diagnostico."<<endl; cout<<"\t7. Reporte general de pacientes por departamento."<<endl; cout<<"\t8. Reporte de diagnostico por departamento."<<endl; cout<<"\t9. Reporte de historial clinico por paciente."<<endl; cout<<"\t10. Reporte decendente de total de ingreso de pacientes por dia."<<endl; cout<<"\t11. Reporte de pacientes por medico."<<endl; cout<<"\t12. Salir."<<endl; cout<<"________________________________________________________________________________________"<<endl; cout<<"\n\t OPCION:[ ]\b\b\b"; cin>>opci; opco=atoi(opci); if((opco==0) || (opco>12)){ cout<<" OPCION NO VALIDA, INTENTELO DE NUEVO."; getch(); menu(); }else{ opc=opco; } switch(opc){ case 1: system("cls"); ingresar(); break; case 2: registro(); break; case 3: system("cls"); rgpaciente(); //Registro general de paciente break; /* case 4: rgpfecha(); //Registro general de pacientes filtrado por rango y fecha break; case 5: rpsangre(); //Registro de paciente por tipo de sangre break; case 6: diagnostico(); //Reporte de paciente por diagnostico break; */ case 7: pdepartamento(); //Reporte de paciente por departamento break; /* case 8: ddepartamento(); //Reporte de diagnostico por departamento break; case 9: historial(); //Historial clinico del paciente break; case 10: rdt(); //Reporte de descendente de total de ingreso de pacientes por día break; case 11: pmedico(); //Reporte de pachiente por medico break; */ case 12: cout<<"\tQUE TENGA UN LINDO DIA!"<<endl; break; default: cout<<"\tOPCION NO VALIDA, INTENTELO DE NUEVO. "; getch(); menu(); break; } } } void crear(){ FILE*archivo; FILE*archivo2; archivo=fopen("hospital.txt","a+"); archivo2=fopen("registro.txt","a+"); fclose(archivo); fclose(archivo2); } void principio(){ int a=1; int b=0; system("cls"); cout<<" Es primera vez que utiliza este programa? \n 1. Si. \t\t\t\t 2. No."<<endl; cin>>b; if(b>2){ cout<<" OPCION NO VALIDA, INTENTELO NUEVAMENTE."; getch(); principio(); } if(a=b){ crear(); menu(); }else{ menu(); } } int main(){ menu(); } void mini(){ FILE*archivo; FILE*archivo2; archivo=fopen("hospital.txt", "r+"); system("cls"); long long auxcui; int xn=0,vw=0; cout<<"_______________________________________________________________________________________________"<<endl<<endl; cout<<"\tIngrese el CUI del paciente: "; cin>>auxcui; cout<<"\n_______________________________________________________________________________________________"<<endl<<endl; while((fread(&datos,sizeof(datos),1,archivo)==1)&&(vw!=1)) { if (datos.cui==auxcui){ system("cls"); cout<<"_______________________________________________________________________________________________"<<endl<<endl; cout<<" CUI del paciente: "<<datos.cui<<endl; cout<<" Nombre del paciente: "<<datos.nombre<<" "<<datos.apellido <<". "<<endl; cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl; cout<<" Tipo de sangre: "<<datos.tipos<<endl; cout<<" Numero celular del familiar: "<<datos.cel<<endl; cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl; cout<<"_______________________________________________________________________________________________"<<endl; } do{ int res; char respuesta[254]; cout<<" Es el paciente correcto? "<<endl; cout<<"1. SI. \t\t 2. NO."<<endl; cin>>respuesta; res=atoi(respuesta); if (res==1){ rp.cui=datos.cui; vw=1; rp.nufam=datos.cel; // cout<<rp.nufam; // getch(); }else{ if(res==2){ xn=0; }else{ cout<<" OPCION NO VALIDA, VUELVA A INTENTARLO."; getch(); xn=1; } } }while(xn==1); } archivo2=fopen("registro.txt","at+"); fwrite(&rp,sizeof(rp),1,archivo2); fclose(archivo); fclose(archivo2); // cout<<" Guardado"; } void registro(){ int dia=0,m=0,aanio=0,xx=0,h=0,min=0,hir=0,min2=0,h2=0,hir2=0,dia2=0,m2=0,aanio2=0,xx2=0; char ddia[254],mes[254],año[254],ho[5],mi[5]; char ddia2[254],mes2[254],anio2[254],ho2[5],mi2[5]; int vme,vt,vd,vi,vm,vit; mini(); system("cls"); cout<<"\t\t\t INGRESE LA SIGUIENTE INFORMACION: "<<endl; do{ cout<<" Fecha de ingreso:\n"; xx=0; cin.getline(ddia,254,'/'); cin.getline(mes,254,'/'); cin.getline(año,254,'\n'); dia=atoi(ddia); m=atoi(mes); aanio=atoi(año); if((dia==0) || (dia>31)){ cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((m==0) || (m>12)){ cout<<" MES INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((aanio<1950) || (aanio>2018)){ cout<<" año INVALIDO, VUELVA A INTENTARLO\n"; xx=1; }else{ if((dia>29) && (m==2)){ cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n"; xx=1; }else{ rp.fecha.dia=dia; rp.fecha.mes=m; rp.fecha.año=aanio; } } } } }while(xx==1); cout<<"\t\t\tDESCRIPCION DE INGRESO: "<<endl; do{ cout<<" Encabezado/titulo:\t\t"; cin.getline(rp.ti,254,'\n'); strupr(rp.ti); vit=0;//inpedimos que el while sea infinito if((*rp.ti==NULL) || (*rp.ti==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vit=1;//activamos el while } }while(vit==1); do{ cout<<" Descripcion:\n"; cin.getline(rp.descripcion,1000,'\n'); strupr(rp.descripcion); vi=0;//inpedimos que el while sea infinito if((*rp.descripcion==NULL) || (*rp.descripcion==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vi=1;//activamos el while } }while(vi==1); do{ cout<<" Hora de ingreso: "<<endl; cin.getline(ho,5,':'); cin.getline(mi,5,'\n'); min=atoi(mi); h=atoi(ho); if (h>23){ cout<<" Hora invalida, vuelva a intentarla."<<endl; h=0;min=0; hir=1; }else{ if(min>59){ cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl; h=0;min=0; hir=1; }else{ rp.hingreso=h; rp.mingreso=min; } } }while(hir==1); do{ vme=0; cout<<" Medico tratante: "; cin.getline(rp.medico,254,'\n'); strupr(rp.medico); vme=0;//inpedimos que el while sea infinito if((*rp.medico==NULL) || (*rp.medico==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vme=1;//activamos el while } }while(vme==1); cout<<"\t\t\tDIAGNOSTICO MEDICO: "<<endl; do{ cout<<" Encabezado/Titulo:\t\t"; cin.getline(rp.titulo,254,'\n'); strupr(rp.titulo); vt=0;//inpedimos que el while sea infinito if((*rp.titulo==NULL) || (*rp.titulo==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vt=1;//activamos el while } }while(vt==1); do{ cout<<" Diagnostico:\n"; cin.getline(rp.diagnostico,1000,'\n'); strupr(rp.diagnostico); vd=0;//inpedimos que el while sea infinito if((*rp.diagnostico==NULL) || (*rp.diagnostico==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vd=1;//activamos el while } }while(vd==1); do{ cout<<" RECETA MEDICA:\n"; cin.getline(rp.rmedica,600,'\n'); strupr(rp.rmedica); vm=0;//inpedimos que el while sea infinito if((*rp.rmedica==NULL) || (*rp.rmedica==' ') /*|| (*datos.nombre=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vm=1;//activamos el while } }while(vm==1); cout<<"\t\t\tFECHA DE SALIDA\n"; do{ cout<<" FECHA: "; xx2=0; cin.getline(ddia2,254,'/'); cin.getline(mes2,254,'/'); cin.getline(anio2,254,'\n'); dia2=atoi(ddia2); m2=atoi(mes2); aanio2=atoi(anio2); if((dia2==0) || (dia2>31)){ cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n"; xx2=1; }else{ if((m2==0) || (m2>12)){ cout<<" MES INVALIDO, VUELVA A INTENTARLO\n"; xx2=1; }else{ if((aanio2<1950) || (aanio2>2018)){ cout<<" año INVALIDO, VUELVA A INTENTARLO\n"; xx2=1; }else{ if((dia2>29) && (m2==2)){ cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n"; xx=1; }else{ rp.fechas.dia=dia2; rp.fechas.mes=m2; rp.fechas.año=aanio2; } } } } }while(xx2==1); do{ cout<<" Hora de salida: "<<endl; cin.getline(ho2,5,':'); cin.getline(mi2,5,'\n'); min2=atoi(mi2); h2=atoi(ho2); if (h2>23){ cout<<" Hora invalida, vuelva a intentarla."<<endl; h2=0;min2=0; cout<<" Hora de ingreso: "<<endl; cin.getline(ho2,5,':'); cin.getline(mi2,5,'\n'); min2=atoi(mi2); h2=atoi(ho2); hir2=1; }else{ if(min2>59){ cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl; h2=0;min2=0; cout<<" Hora de ingreso: "<<endl; cin.getline(ho2,5,':'); cin.getline(mi2,5,'\n'); min2=atoi(mi2); h2=atoi(ho2); hir2=1; }else{ rp.hsalida=h2; rp.msalida=min2; } } }while(hir2==1); FILE*archivo2; archivo2=fopen("registro.txt","at+"); //abrimos el archivo fwrite(&rp,sizeof(rp),1,archivo2); //escribimos los datos ingresados en el archivo fclose(archivo2);//cerramos el archivo cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos getch(); menu(); } void mini2(){ FILE*archivo; FILE*archivo2; archivo=fopen("hospital.txt", "r+"); int ce,vnf=0; char cel[254]; long long auxcui; cout<<"_______________________________________________________________________________________________"<<endl<<endl; auxcui=auxccui; while(fread(&datos,sizeof(datos),1,archivo)==1) { if (datos.cui==auxcui){ system("cls"); cout<<"\t\t\t DATOS INGRESADOS:\n"; cout<<"_______________________________________________________________________________________________"<<endl; cout<<" CUI del paciente: "<<datos.cui<<endl; cout<<" Nombre del paciente: "<<datos.nombre<<endl; cout<<" Apellido del paciente: "<<datos.apellido<<endl; cout<<" Fecha de ingreso:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<"."<<endl; cout<<" Tipo de sangre: "<<datos.tipos<<endl; cout<<" Departamento: "<<datos.direccion.departamento<<endl; cout<<" Municipio: "<<datos.direccion.municipio<<endl; cout<<" Zona: "<<datos.direccion.zona<<endl; cout<<"_______________________________________________________________________________________________"<<endl; } } int respuesta; cout<<" Es el paciente correcto? "<<endl; cout<<"1. SI. \n 2. NO."<<endl; cin>>respuesta; if (respuesta==1){ rp.cui=datos.cui; }else{ mini2(); } cin.ignore(); do{ do{ do{ cout<<" Ingrese el Numero celular de un familiar del paciente: "; cin.getline(cel,254,'\n'); ce=atoi(cel); if (ce==0){ cout<<" El numero ingresado es invalido, intente nuevamente."<<endl; ce=0; }else{ if (ce<29999999){ cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl; ce=0; }else{ if (ce>60000000){ cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl; ce=0; } } } }while(ce>60000000); }while(ce==0); }while(ce<29999999); datos.cel=ce; // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio do{ cout<<" Ingrese el Nombre de un familiar del cliente: "; cin.getline(datos.nfamiliar,40,'\n'); strupr(datos.nfamiliar); vnf=0;//inpedimos que el while sea infinito if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){ cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl; vnf=1;//activamos el while } }while(vnf==1); archivo2=fopen("hospital.txt","at+"); fwrite(&datos,sizeof(datos),1,archivo2); fclose(archivo); fclose(archivo2); cout<<" DATOS ACTUALIZADOS."; getch(); menu(); }