elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para hacer filtro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para hacer filtro  (Leído 742 veces)
Pieshna

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda para hacer filtro
« en: 1 Junio 2018, 00:34 am »

Necesito ayuda para aplicar filtro por departamentos, no se me ocurre la manera para hacerlo, ya que no logro ordenarlos :-( espero puedan ayudarme...
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
  1.  
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <string.h>
  5. #include <fstream>
  6. #include <stdlib.h>
  7. #include <stdio.h>
  8.  
  9. using namespace std;
  10.  
  11. struct datos{
  12. long long cui; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
  13. char nombre[254];
  14. char apellido[254];
  15. struct fecha{
  16. int dia;
  17. int mes;
  18. int año;
  19. }fecha;
  20. char tipos[254];
  21. int cel;
  22. char nfamiliar[254];
  23. struct direccion{
  24. char departamento[254];
  25. char municipio[254];
  26. char zona[254];
  27. }direccion;
  28. }datos;
  29.  
  30. struct rp{ //rp = Registro de paciente
  31. long long cui;
  32. struct fecha{ //fecha de ingreso
  33. int dia;
  34. int mes;
  35. int año;
  36. }fecha;
  37. int nufam;
  38. char ti[254];
  39. char descripcion[1000]; //descripcion del por que ingresa
  40. char medico[254]; //medico tratante
  41. int hingreso; //hora ingreso
  42. int mingreso;//minutos ingreso
  43. char diagnostico[1000]; //diagnostico medico
  44. char rmedica[600];//receta medica
  45. char titulo[254];
  46. struct fechas{ //fecha salida
  47. int dia;
  48. int mes;
  49. int año;
  50. }fechas;
  51. int hsalida; //hora salida
  52. int msalida;//minutos salida
  53. }rp;
  54.  
  55. void principio();//contiene el primer menu en el que pregunta si se ha usado el programa anteriormente
  56. void menu();//Contiene el menu de inicio
  57. void crear();//void para crear el archivo de texto
  58. void ingresar();//Ingresar pacientes
  59. void mini(); //mini busqueda
  60. void registro();
  61. void breporte();
  62. void mini2();//mini busqueda en el void ingresar
  63. void rgpaciente(); //Registro general de paciente
  64. /*void rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
  65. void rpsangre(); //Registro de paciente por tipo de sangre
  66. void diagnostico(); //Reporte de paciente por diagnostico*/
  67. void pdepartamento(); //Reporte de pacientes por departamento
  68. /*void ddepartamento(); //Reporte de diagnostico por departamento
  69. void historial(); //Historial clinico del paciente
  70. void rdt(); //Reporte de descendente de total de ingreso de pacientes por día
  71. void pmedico(); //Reporte de pachiente por medico
  72. */
  73. long long auxccui=0;
  74. void ingresar(){
  75. char c[254],ddia[254],mes[254],cel[254],corr[254],año[254];
  76. int m=0,dia=0,ce=0,x=0,dc=0,aanio=0,xx=0;
  77. 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.
  78. long long a; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
  79. cout<<"\t\t\tINGRESE LA SIGUIENTE INFORMACION "<<endl;
  80. cout<<"________________________________________________________________________________________"<<endl;
  81. cout<<" CUI del paciente: ";
  82. cin>>c;
  83. a= atof(c);// la funcion atoi(variable) sirve para convertir a variable tipo "int" caracteres ingresados en una variable tipo "char"
  84. if (a<1000000000000){//si la variable a es menor a 13 digitos que muestre un error
  85. cout<<" El cui es invalido, ingreselo nuevamente";
  86. getch();
  87. system ("cls"); //limpiar pantalla
  88. ingresar();//empezar de nuevo el programa
  89.  
  90. }else{
  91. if (a>9999999999999){//Si la variable a es mayor a 13 digitos que muestre error
  92. cout<<" El cui es invalido, ingreselo nuevamente";
  93. getch();
  94. system ("cls"); //limpiar pantalla
  95. ingresar();//empezar de nuevo el programa
  96. }
  97. }
  98. auxccui=a;
  99. if(datos.cui==auxccui){
  100. mini2();
  101. }
  102.  
  103. datos.cui=a;//Si la variable a contiene 13 digitos que se guarde en la estructura datos en cui
  104. cin.ignore();//Para evitar que omita el ingresar nombre
  105. do{
  106. cout<<" Nombre del paciente: ";
  107. // cin.ignore();
  108. cin.getline(datos.nombre,254,'\n');
  109. strupr(datos.nombre);
  110. vn=0;//inpedimos que el while sea infinito
  111. if((*datos.nombre==NULL) || (*datos.nombre==' ') ){
  112. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  113. vn=1;//activamos el while
  114. }
  115. }while(vn==1);
  116.  
  117. // cin.ignore();//Para evitar que omita el ingresar apellido, eliminar "//" para activar la funcion
  118. do{
  119. cout<<" Apellido del paciente: ";
  120. cin.getline(datos.apellido,254,'\n');
  121. strupr(datos.apellido);
  122. va=0;//inpedimos que el while sea infinito
  123. if((*datos.apellido==NULL) || (*datos.apellido==' ')){
  124. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  125. va=1;//activamos el while
  126. }
  127. }while(va==1);
  128.  
  129.  
  130. cout<<"\t\t\tFECHA DE NACIMIENTO:\t\t\t\t\t\t EJEMPLO: 01/01/2000"<<endl;
  131. do{
  132. cout<<" Ingrese la fecha:\n";
  133. xx=0;
  134. cin.getline(ddia,254,'/');
  135. cin.getline(mes,254,'/');
  136. cin.getline(año,254,'\n');
  137. dia=atoi(ddia);
  138. m=atoi(mes);
  139. aanio=atoi(año);
  140. if((dia==0) || (dia>31)){
  141. cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
  142. xx=1;
  143. }else{
  144. if((m==0) || (m>12)){
  145. cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
  146. xx=1;
  147. }else{
  148. if((aanio<1950) || (aanio>2018)){
  149. cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
  150. xx=1;
  151. }else{
  152. if((dia>29) && (m=2)){
  153. cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
  154. xx=1;
  155. }
  156. }
  157. }
  158. }
  159.  
  160. }while(xx==1);
  161. datos.fecha.dia=dia;
  162. datos.fecha.mes=m;
  163. datos.fecha.año=aanio;
  164.  
  165.  
  166. // cin.ignore();
  167. do{
  168.  
  169. cout<<" Ingrese el tipo de sangre: ";
  170. vs=0;//inpedimos que el while sea infinito
  171. cin.getline(datos.tipos,254,'\n');
  172. strupr(datos.tipos);
  173. if((*datos.tipos=='A') || (*datos.tipos=='AB') || (*datos.tipos=='B') || (*datos.tipos=='O')){
  174.  
  175. }else{
  176. cout<<" TIPO DE SANGRE NO VALIDO, VUELVA A INTENTARLO.\n\n";
  177. cout<<" Recuerde que solo hay tipos de sangre a+,a-,b+,b-,ab+,ab-,o+,o-.\n";
  178. vs=1;
  179. }
  180. }while(vs==1);
  181.  
  182. do{
  183. do{
  184. do{
  185. cout<<" Ingrese el Numero celular de un familiar del paciente: ";
  186. cin.getline(cel,254,'\n');
  187. ce=atoi(cel);
  188. if (ce==0){
  189. cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
  190. ce=0;
  191. }else{
  192.  
  193. if (ce<29999999){
  194. cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
  195. ce=0;
  196. }else{
  197. if (ce>60000000){
  198. cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
  199. ce=0;
  200. }
  201. }
  202. }
  203. }while(ce>60000000);
  204. }while(ce==0);
  205. }while(ce<29999999);
  206. datos.cel=ce;
  207.  
  208. // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
  209. do{
  210. cout<<" Ingrese el Nombre de un familiar del cliente: ";
  211. cin.getline(datos.nfamiliar,40,'\n');
  212. strupr(datos.nfamiliar);
  213. vnf=0;//inpedimos que el while sea infinito
  214. if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
  215. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  216. vnf=1;//activamos el while
  217. }
  218. }while(vnf==1);
  219.  
  220. // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
  221. do{
  222. cout<<" Departamento: ";
  223. cin.getline(datos.direccion.departamento,30,'\n');
  224. strupr(datos.direccion.departamento);
  225. vd=0;//inpedimos que el while sea infinito
  226. if((*datos.direccion.departamento==NULL) || (*datos.direccion.departamento==' ') /*|| (*datos.nfamiliar=='\n')*/){
  227. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  228. vd=1;//activamos el while
  229. }
  230. }while(vd==1);
  231.  
  232. // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
  233. do{
  234. cout<<" Municipio: ";
  235. cin.getline(datos.direccion.municipio,30,'\n');
  236. strupr(datos.direccion.municipio);
  237. vm=0;//inpedimos que el while sea infinito
  238. if((*datos.direccion.municipio==NULL) || (*datos.direccion.municipio==' ') /*|| (*datos.nfamiliar=='\n')*/){
  239. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  240. vm=1;//activamos el while
  241. }
  242. }while(vm==1);
  243.  
  244. // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
  245. do{
  246. cout<<" Zona: ";
  247. cin.getline(datos.direccion.zona,30,'\n');
  248. vz=0;//inpedimos que el while sea infinito
  249. if((*datos.direccion.zona==NULL) || (*datos.direccion.zona==' ') /*|| (*datos.nfamiliar=='\n')*/){
  250. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  251. vz=1;//activamos el while
  252. }
  253. }while(vz==1);
  254. system("cls");
  255. cout<<"\t\t\t DATOS INGRESADOS:\n";
  256. cout<<"_______________________________________________________________________________________________"<<endl;
  257. cout<<" CUI del paciente: "<<datos.cui<<endl;
  258. cout<<" Nombre del paciente: "<<datos.nombre<<endl;
  259. cout<<" Apellido del paciente: "<<datos.apellido<<endl;
  260. cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
  261. cout<<" Tipo de sangre: "<<datos.tipos<<endl;
  262. cout<<" Numero celular del familiar: "<<datos.cel<<endl;
  263. cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
  264. cout<<" Departamento: "<<datos.direccion.departamento<<endl;
  265. cout<<" Municipio: "<<datos.direccion.municipio<<endl;
  266. cout<<" Zona: "<<datos.direccion.zona<<endl;
  267. cout<<"_______________________________________________________________________________________________"<<endl;
  268.  
  269. cout<<" LOS DATOS SON CORRECTOS?\n";
  270. cout<<" 1. SI.\t\t 2. NO.\n OPCION[ ]\b\b";
  271. cin.getline(corr,254,'\n');
  272. strupr(corr);
  273. dc=atoi(corr);
  274. if((dc==2)||(corr=="NO")||(corr=="NO.")){
  275. system("cls");
  276. ingresar();
  277. }
  278.  
  279. FILE*archivo;
  280. archivo=fopen("hospital.txt","at+"); //abrimos el archivo
  281. fwrite(&datos,sizeof(datos),1,archivo); //escribimos los datos ingresados en el archivo
  282. fclose(archivo);//cerramos el archivo
  283. cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
  284. getch();
  285. menu();
  286.  
  287. }
  288.  
  289. void breporte(){
  290. FILE*archivo;
  291. archivo=fopen("registro.txt", "r+");
  292. while(fread(&rp,sizeof(rp),1,archivo)==1)
  293. {
  294. if((datos.cui==rp.cui) /*&& (rp.fecha.dia!=0)*/ && (datos.cel==rp.nufam)){
  295. cout<<"_______________________________________________________________________________________________"<<endl;
  296. cout<<"\t\t\tREPORTE\n";
  297. cout<<"_______________________________________________________________________________________________"<<endl;
  298. cout<<" Fecha de ingreso: "<<rp.fecha.dia<<"/"<<rp.fecha.mes<<"/"<<rp.fecha.año<<".\n";
  299. cout<<" Descripcion de ingreso: "<<rp.ti<<endl;
  300. cout<<" Hora de ingreso: "<<rp.hingreso<<":"<<rp.mingreso<<".\n";
  301. cout<<" Medico tratante:"<<rp.medico<<endl;
  302. cout<<" Diagnostico medico: \n\t\t\t"<<rp.titulo<<endl<<rp.diagnostico<<endl;
  303. cout<<" Receta medica: "<<rp.rmedica<<endl;
  304. cout<<" Fecha de salida: "<<rp.fechas.dia<<"/"<<rp.fechas.mes<<"/"<<rp.fechas.año<<".\n";
  305. cout<<" Hora de salida: "<<rp.hsalida<<":"<<rp.msalida;
  306. cout<<"\n_______________________________________________________________________________________________"<<endl;
  307. cout<<"\n Presione cualquier tecla para continuar.";
  308. getch();
  309.  
  310.  
  311. }
  312. }
  313. fclose(archivo);
  314.  
  315.  
  316. }
  317.  
  318. void rgpaciente(){
  319. FILE*archivo;
  320. FILE*archivo2;
  321. archivo2=fopen("registro.txt", "r+");
  322. archivo=fopen("hospital.txt", "r+");
  323.  
  324. int opc=0,opco=0,x=0;
  325. char opci[254];
  326.  
  327. cout<<"\t\t\tREPORTE GENERAL DE PACIENTES:"<<endl;
  328. cout<<"_______________________________________________________________________________________________"<<endl;
  329.  
  330.  
  331. while(fread(&datos,sizeof(datos),1,archivo)==1)
  332. {
  333.  
  334. fread(&rp,sizeof(rp),1,archivo2);
  335.  
  336.  
  337. cout<<" CUI del paciente: "<<datos.cui<<endl;
  338. cout<<" Nombre del paciente: "<<datos.nombre<<endl;
  339. cout<<" Apellido del paciente: "<<datos.apellido<<endl;
  340. cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
  341. cout<<" Tipo de sangre: "<<datos.tipos<<endl;
  342. cout<<" Numero celular del familiar: "<<datos.cel<<endl;
  343. cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
  344. cout<<" Departamento: "<<datos.direccion.departamento<<endl;
  345. cout<<" Municipio: "<<datos.direccion.municipio<<endl;
  346. cout<<" Zona: "<<datos.direccion.zona<<endl;
  347. cout<<"_______________________________________________________________________________________________"<<endl;
  348. // getch();
  349.  
  350.  
  351. do{
  352. x=0;
  353. if((datos.cui==rp.cui ) && (datos.cel==rp.nufam) ){
  354. cout<<" Desea ver el reporte?\n";
  355. cout<<" 1. SI\t\t2. NO\n";
  356. cout<<" OPCION [ ]\b\b";
  357. cin>>opci;
  358. x=0;
  359. opco=atoi(opci);
  360. if ((opco==0) || (opco>2)){
  361. cout<<" OPCION NO VALIDA VUELVA A INTENTARLO.\n";
  362.  
  363. x=1;
  364. }else{
  365. opc=opco;
  366. }
  367.  
  368. }else{
  369. cout<<" NO TIENE REPORTE CLINICO.\n";
  370. cout<<"_______________________________________________________________________________________________"<<endl;
  371. getch();
  372. }
  373. }while(x==1);
  374.  
  375. if((opc==1)){
  376. breporte();
  377.  
  378.  
  379.  
  380. }
  381.  
  382. // getch();
  383.  
  384. //}  
  385.  
  386. }
  387. fclose(archivo);
  388. fclose(archivo2);
  389.  
  390.  
  391. getch();
  392. }
  393.  
  394. void pdepartamento(){ //falta aplicar el filtro
  395. FILE*archivo;
  396. archivo=fopen("hospital.txt", "r+");
  397. string auxdep;
  398. cout<< "\t\t\tFILTRAR POR DEPARTAMENTO: "<<endl;
  399. cout<<"_______________________________________________________________________________________________"<<endl<<endl;
  400.  
  401. system("cls");
  402. while(fread(&datos,sizeof(datos),1,archivo)==1)
  403. {
  404. auxdep=datos.direccion.departamento;
  405. if(datos.direccion.departamento==auxdep)
  406. {
  407. cout<< "\t\t\tDEPARTAMENTO: "<<datos.direccion.departamento<<endl;
  408. cout<<"_______________________________________________________________________________________________"<<endl<<endl;
  409. cout<<" CUI del paciente: "<<datos.cui<<endl;
  410. cout<<" Nombre del paciente: "<<datos.nombre<<endl;
  411. cout<<" Apellido del paciente: "<<datos.apellido<<endl;
  412. cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
  413. cout<<" Tipo de sangre: "<<datos.tipos<<endl;
  414. cout<<" Numero celular del familiar: "<<datos.cel<<endl;
  415. cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
  416. cout<<" Municipio: "<<datos.direccion.municipio<<endl;
  417. cout<<" Zona: "<<datos.direccion.zona<<endl;
  418. cout<<"_______________________________________________________________________________________________"<<endl;
  419. auxdep=datos.direccion.departamento;
  420. }else{
  421. cout<<" Se ha producido un error a la hora de buscar por ese departamento, intentelo nuevamente."<<endl;
  422. getch();
  423.  
  424. }
  425.  
  426. }
  427. fclose(archivo);
  428. getch();
  429.  
  430.  
  431. }
  432.  
  433. void menu(){
  434. crear();
  435. char opci[254];
  436. int opc=0,opco=0;
  437. while (opc!= 12){
  438. system("cls");
  439. cout<<"________________________________________________________________________________________"<<endl;
  440. cout<<"\n\t\t\t\t\tMENU "<<endl;
  441. cout<<"________________________________________________________________________________________"<<endl;
  442. cout<<"\n\t\t\tENUMERE LA OPCION QUE DESEA UTILIZAR: "<<endl<<endl;
  443. cout<<"\t1. Ingresar paciente."<<endl;
  444. cout<<"\t2. Registrar paciente."<<endl;
  445. cout<<"\t3. Reporte general de pacientes."<<endl;
  446. cout<<"\t4. Reporte general de pacientes filtrado por fecha."<<endl;
  447. cout<<"\t5. Reporte general de pacientes por tipo de sangre."<<endl;
  448. cout<<"\t6. Reporte general de pacientes por diagnostico."<<endl;
  449. cout<<"\t7. Reporte general de pacientes por departamento."<<endl;
  450. cout<<"\t8. Reporte de diagnostico por departamento."<<endl;
  451. cout<<"\t9. Reporte de historial clinico por paciente."<<endl;
  452. cout<<"\t10. Reporte decendente de total de ingreso de pacientes por dia."<<endl;
  453. cout<<"\t11. Reporte de pacientes por medico."<<endl;
  454. cout<<"\t12. Salir."<<endl;
  455. cout<<"________________________________________________________________________________________"<<endl;
  456. cout<<"\n\t OPCION:[  ]\b\b\b";
  457. cin>>opci;
  458. opco=atoi(opci);
  459. if((opco==0) || (opco>12)){
  460. cout<<" OPCION NO VALIDA, INTENTELO DE NUEVO.";
  461. getch();
  462. menu();
  463. }else{
  464. opc=opco;
  465. }
  466.  
  467. switch(opc){
  468. case 1:
  469. system("cls");
  470. ingresar();
  471. break;
  472.  
  473. case 2:
  474. registro();
  475. break;
  476.  
  477. case 3:
  478. system("cls");
  479. rgpaciente(); //Registro general de paciente
  480. break;
  481.  
  482. /* case 4:
  483. rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
  484. break;
  485.  
  486. case 5:
  487. rpsangre(); //Registro de paciente por tipo de sangre
  488. break;
  489.  
  490. case 6:
  491. diagnostico(); //Reporte de paciente por diagnostico
  492. break;
  493. */
  494. case 7:
  495. pdepartamento(); //Reporte de paciente por departamento
  496. break;
  497. /*
  498. case 8:
  499. ddepartamento(); //Reporte de diagnostico por departamento
  500. break;
  501.  
  502. case 9:
  503. historial(); //Historial clinico del paciente
  504. break;
  505.  
  506. case 10:
  507. rdt(); //Reporte de descendente de total de ingreso de pacientes por día
  508. break;
  509.  
  510. case 11:
  511. pmedico(); //Reporte de pachiente por medico
  512. break;
  513. */
  514. case 12:
  515. cout<<"\tQUE TENGA UN LINDO DIA!"<<endl;
  516. break;
  517.  
  518. default:
  519. cout<<"\tOPCION NO VALIDA, INTENTELO DE NUEVO. ";
  520. getch();
  521. menu();
  522. break;
  523.  
  524.  
  525. }
  526.  
  527.  
  528. }
  529.  
  530. }
  531.  
  532. void crear(){
  533. FILE*archivo;
  534. FILE*archivo2;
  535. archivo=fopen("hospital.txt","a+");
  536. archivo2=fopen("registro.txt","a+");
  537. fclose(archivo);
  538. fclose(archivo2);
  539. }
  540.  
  541. void principio(){
  542. int a=1;
  543. int b=0;
  544. system("cls");
  545. cout<<" Es primera vez que utiliza este programa? \n 1. Si. \t\t\t\t 2. No."<<endl;
  546. cin>>b;
  547. if(b>2){
  548. cout<<" OPCION NO VALIDA, INTENTELO NUEVAMENTE.";
  549. getch();
  550. principio();
  551. }
  552. if(a=b){
  553. crear();
  554. menu();
  555. }else{
  556.  
  557. menu();
  558. }
  559.  
  560. }
  561.  
  562. int main(){
  563. menu();
  564. }
  565.  
  566. void mini(){
  567. FILE*archivo;
  568. FILE*archivo2;
  569. archivo=fopen("hospital.txt", "r+");
  570. system("cls");
  571. long long auxcui;
  572. int xn=0,vw=0;
  573. cout<<"_______________________________________________________________________________________________"<<endl<<endl;
  574. cout<<"\tIngrese el CUI del paciente: ";
  575. cin>>auxcui;
  576. cout<<"\n_______________________________________________________________________________________________"<<endl<<endl;
  577.  
  578.  
  579. while((fread(&datos,sizeof(datos),1,archivo)==1)&&(vw!=1))
  580. {
  581.  
  582. if (datos.cui==auxcui){
  583. system("cls");
  584. cout<<"_______________________________________________________________________________________________"<<endl<<endl;
  585. cout<<" CUI del paciente: "<<datos.cui<<endl;
  586. cout<<" Nombre del paciente: "<<datos.nombre<<" "<<datos.apellido <<". "<<endl;
  587. cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
  588. cout<<" Tipo de sangre: "<<datos.tipos<<endl;
  589. cout<<" Numero celular del familiar: "<<datos.cel<<endl;
  590. cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
  591. cout<<"_______________________________________________________________________________________________"<<endl;
  592. }
  593. do{
  594. int res;
  595. char respuesta[254];
  596. cout<<" Es el paciente correcto? "<<endl;
  597. cout<<"1. SI. \t\t 2. NO."<<endl;
  598. cin>>respuesta;
  599. res=atoi(respuesta);
  600. if (res==1){
  601. rp.cui=datos.cui;
  602. vw=1;
  603. rp.nufam=datos.cel;
  604. // cout<<rp.nufam;
  605. // getch();
  606. }else{
  607. if(res==2){
  608. xn=0;
  609. }else{
  610. cout<<" OPCION NO VALIDA, VUELVA A INTENTARLO.";
  611. getch();
  612. xn=1;
  613. }
  614. }
  615. }while(xn==1);
  616. }
  617.  
  618. archivo2=fopen("registro.txt","at+");
  619. fwrite(&rp,sizeof(rp),1,archivo2);
  620. fclose(archivo);
  621.  
  622. fclose(archivo2);
  623. // cout<<" Guardado";
  624.  
  625. }
  626.  
  627. void registro(){
  628. 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;
  629. char ddia[254],mes[254],año[254],ho[5],mi[5];
  630. char ddia2[254],mes2[254],anio2[254],ho2[5],mi2[5];
  631. int vme,vt,vd,vi,vm,vit;
  632.  
  633. mini();
  634. system("cls");
  635. cout<<"\t\t\t INGRESE LA SIGUIENTE INFORMACION: "<<endl;
  636. do{
  637. cout<<" Fecha de ingreso:\n";
  638. xx=0;
  639. cin.getline(ddia,254,'/');
  640. cin.getline(mes,254,'/');
  641. cin.getline(año,254,'\n');
  642. dia=atoi(ddia);
  643. m=atoi(mes);
  644. aanio=atoi(año);
  645. if((dia==0) || (dia>31)){
  646. cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
  647. xx=1;
  648. }else{
  649. if((m==0) || (m>12)){
  650. cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
  651. xx=1;
  652. }else{
  653. if((aanio<1950) || (aanio>2018)){
  654. cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
  655. xx=1;
  656. }else{
  657. if((dia>29) && (m==2)){
  658. cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
  659. xx=1;
  660. }else{
  661. rp.fecha.dia=dia;
  662. rp.fecha.mes=m;
  663. rp.fecha.año=aanio;
  664. }
  665. }
  666. }
  667. }
  668.  
  669. }while(xx==1);
  670.  
  671. cout<<"\t\t\tDESCRIPCION DE INGRESO: "<<endl;
  672. do{
  673.  
  674. cout<<" Encabezado/titulo:\t\t";
  675. cin.getline(rp.ti,254,'\n');
  676. strupr(rp.ti);
  677. vit=0;//inpedimos que el while sea infinito
  678. if((*rp.ti==NULL) || (*rp.ti==' ') /*|| (*datos.nombre=='\n')*/){
  679. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  680. vit=1;//activamos el while
  681. }
  682. }while(vit==1);
  683.  
  684. do{
  685. cout<<" Descripcion:\n";
  686. cin.getline(rp.descripcion,1000,'\n');
  687. strupr(rp.descripcion);
  688. vi=0;//inpedimos que el while sea infinito
  689. if((*rp.descripcion==NULL) || (*rp.descripcion==' ') /*|| (*datos.nombre=='\n')*/){
  690. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  691. vi=1;//activamos el while
  692. }
  693. }while(vi==1);
  694.  
  695. do{
  696. cout<<" Hora de ingreso: "<<endl;
  697. cin.getline(ho,5,':');
  698. cin.getline(mi,5,'\n');
  699. min=atoi(mi);
  700. h=atoi(ho);
  701. if (h>23){
  702. cout<<" Hora invalida, vuelva a intentarla."<<endl;
  703. h=0;min=0;
  704. hir=1;
  705. }else{
  706.  
  707. if(min>59){
  708. cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
  709. h=0;min=0;
  710. hir=1;
  711. }else{
  712. rp.hingreso=h;
  713. rp.mingreso=min;
  714. }
  715.  
  716.  
  717. }
  718. }while(hir==1);
  719.  
  720. do{
  721. vme=0;
  722. cout<<" Medico tratante: ";
  723. cin.getline(rp.medico,254,'\n');
  724. strupr(rp.medico);
  725. vme=0;//inpedimos que el while sea infinito
  726. if((*rp.medico==NULL) || (*rp.medico==' ') /*|| (*datos.nombre=='\n')*/){
  727. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  728. vme=1;//activamos el while
  729. }
  730. }while(vme==1);
  731.  
  732. cout<<"\t\t\tDIAGNOSTICO MEDICO: "<<endl;
  733.  
  734. do{
  735. cout<<" Encabezado/Titulo:\t\t";
  736. cin.getline(rp.titulo,254,'\n');
  737. strupr(rp.titulo);
  738. vt=0;//inpedimos que el while sea infinito
  739. if((*rp.titulo==NULL) || (*rp.titulo==' ') /*|| (*datos.nombre=='\n')*/){
  740. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  741. vt=1;//activamos el while
  742. }
  743. }while(vt==1);
  744.  
  745. do{
  746. cout<<" Diagnostico:\n";
  747. cin.getline(rp.diagnostico,1000,'\n');
  748. strupr(rp.diagnostico);
  749. vd=0;//inpedimos que el while sea infinito
  750. if((*rp.diagnostico==NULL) || (*rp.diagnostico==' ') /*|| (*datos.nombre=='\n')*/){
  751. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  752. vd=1;//activamos el while
  753. }
  754. }while(vd==1);
  755.  
  756. do{
  757. cout<<" RECETA MEDICA:\n";
  758. cin.getline(rp.rmedica,600,'\n');
  759. strupr(rp.rmedica);
  760. vm=0;//inpedimos que el while sea infinito
  761. if((*rp.rmedica==NULL) || (*rp.rmedica==' ') /*|| (*datos.nombre=='\n')*/){
  762. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  763. vm=1;//activamos el while
  764. }
  765. }while(vm==1);
  766.  
  767.  
  768.  
  769. cout<<"\t\t\tFECHA DE SALIDA\n";
  770. do{
  771. cout<<" FECHA: ";
  772. xx2=0;
  773. cin.getline(ddia2,254,'/');
  774. cin.getline(mes2,254,'/');
  775. cin.getline(anio2,254,'\n');
  776. dia2=atoi(ddia2);
  777. m2=atoi(mes2);
  778. aanio2=atoi(anio2);
  779. if((dia2==0) || (dia2>31)){
  780. cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
  781. xx2=1;
  782. }else{
  783. if((m2==0) || (m2>12)){
  784. cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
  785. xx2=1;
  786. }else{
  787. if((aanio2<1950) || (aanio2>2018)){
  788. cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
  789. xx2=1;
  790. }else{
  791. if((dia2>29) && (m2==2)){
  792. cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
  793. xx=1;
  794. }else{
  795. rp.fechas.dia=dia2;
  796. rp.fechas.mes=m2;
  797. rp.fechas.año=aanio2;
  798. }
  799. }
  800. }
  801. }
  802.  
  803. }while(xx2==1);
  804.  
  805. do{
  806. cout<<" Hora de salida: "<<endl;
  807. cin.getline(ho2,5,':');
  808. cin.getline(mi2,5,'\n');
  809. min2=atoi(mi2);
  810. h2=atoi(ho2);
  811. if (h2>23){
  812. cout<<" Hora invalida, vuelva a intentarla."<<endl;
  813. h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
  814. cin.getline(ho2,5,':');
  815. cin.getline(mi2,5,'\n');
  816. min2=atoi(mi2);
  817. h2=atoi(ho2);
  818. hir2=1;
  819. }else{
  820.  
  821. if(min2>59){
  822. cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
  823. h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
  824. cin.getline(ho2,5,':');
  825. cin.getline(mi2,5,'\n');
  826. min2=atoi(mi2);
  827. h2=atoi(ho2);
  828. hir2=1;
  829. }else{
  830. rp.hsalida=h2;
  831. rp.msalida=min2;
  832. }
  833.  
  834.  
  835. }
  836. }while(hir2==1);
  837.  
  838.  
  839.  
  840.  
  841. FILE*archivo2;
  842. archivo2=fopen("registro.txt","at+"); //abrimos el archivo
  843. fwrite(&rp,sizeof(rp),1,archivo2); //escribimos los datos ingresados en el archivo
  844. fclose(archivo2);//cerramos el archivo
  845. cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
  846. getch();
  847. menu();
  848.  
  849. }
  850.  
  851. void mini2(){
  852. FILE*archivo;
  853. FILE*archivo2;
  854. archivo=fopen("hospital.txt", "r+");
  855. int ce,vnf=0;
  856. char cel[254];
  857. long long auxcui;
  858. cout<<"_______________________________________________________________________________________________"<<endl<<endl;
  859. auxcui=auxccui;
  860.  
  861.  
  862. while(fread(&datos,sizeof(datos),1,archivo)==1)
  863. {
  864.  
  865. if (datos.cui==auxcui){
  866. system("cls");
  867. cout<<"\t\t\t DATOS INGRESADOS:\n";
  868. cout<<"_______________________________________________________________________________________________"<<endl;
  869. cout<<" CUI del paciente: "<<datos.cui<<endl;
  870. cout<<" Nombre del paciente: "<<datos.nombre<<endl;
  871. cout<<" Apellido del paciente: "<<datos.apellido<<endl;
  872. cout<<" Fecha de ingreso:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<"."<<endl;
  873. cout<<" Tipo de sangre: "<<datos.tipos<<endl;
  874. cout<<" Departamento: "<<datos.direccion.departamento<<endl;
  875. cout<<" Municipio: "<<datos.direccion.municipio<<endl;
  876. cout<<" Zona: "<<datos.direccion.zona<<endl;
  877. cout<<"_______________________________________________________________________________________________"<<endl;
  878. }
  879.  
  880. }
  881. int respuesta;
  882. cout<<" Es el paciente correcto? "<<endl;
  883. cout<<"1. SI. \n 2. NO."<<endl;
  884. cin>>respuesta;
  885. if (respuesta==1){
  886. rp.cui=datos.cui;
  887. }else{
  888. mini2();
  889. }
  890.  
  891. cin.ignore();
  892. do{
  893. do{
  894. do{
  895. cout<<" Ingrese el Numero celular de un familiar del paciente: ";
  896. cin.getline(cel,254,'\n');
  897. ce=atoi(cel);
  898. if (ce==0){
  899. cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
  900. ce=0;
  901. }else{
  902.  
  903. if (ce<29999999){
  904. cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
  905. ce=0;
  906. }else{
  907. if (ce>60000000){
  908. cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
  909. ce=0;
  910. }
  911. }
  912. }
  913. }while(ce>60000000);
  914. }while(ce==0);
  915. }while(ce<29999999);
  916. datos.cel=ce;
  917.  
  918. // cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
  919. do{
  920. cout<<" Ingrese el Nombre de un familiar del cliente: ";
  921. cin.getline(datos.nfamiliar,40,'\n');
  922. strupr(datos.nfamiliar);
  923. vnf=0;//inpedimos que el while sea infinito
  924. if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
  925. cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
  926. vnf=1;//activamos el while
  927. }
  928. }while(vnf==1);
  929.  
  930. archivo2=fopen("hospital.txt","at+");
  931. fwrite(&datos,sizeof(datos),1,archivo2);
  932. fclose(archivo);
  933.  
  934. fclose(archivo2);
  935. cout<<" DATOS ACTUALIZADOS.";
  936. getch();
  937. menu();
  938. }
  939.  


« Última modificación: 5 Junio 2018, 08:44 am por Pieshna » En línea

Serapis


Desconectado Desconectado

Mensajes: 2.379


Ver Perfil
Re: Ayuda para hacer filtro
« Respuesta #1 en: 1 Junio 2018, 15:13 pm »

Da pereza responder, porque para hacerlo exige leer y empaparse todo el código.... y esto no resulta conveniente.

Tu dices que quieres "filtrar por departamentos", pero como nosotros no estamos en tu cabeza y no vemos la necesidad ni urgencia de tragarnos 900 líneas de código, no nos vamos a molestar en ver qué es un departamento, etc, etc...

Haz una somera explicación en uno o dos párrafos de tu proyecto, de qué trata, que es un departamento y a que llamas fitrar en ese proyecto... 2 párrafos puede leer y entender (si no está muy enrevesado) todo el mundo, y con eso se puede ir más certero al código y ver el punto concreto donde algo deba ser cambiado, remplazado, eliminado, añadido... pero ser exigible leer antes que nada 900 línea de código, para poder responder, es algo que solo hará quien de repente esté aburrido y le apetezca... acaso ninguno.


En línea

SrMcLister

Desconectado Desconectado

Mensajes: 35



Ver Perfil
Re: Ayuda para hacer filtro
« Respuesta #2 en: 2 Junio 2018, 00:29 am »

Da pereza responder, porque para hacerlo exige leer y empaparse todo el código.... y esto no resulta conveniente.

Tu dices que quieres "filtrar por departamentos", pero como nosotros no estamos en tu cabeza y no vemos la necesidad ni urgencia de tragarnos 900 líneas de código, no nos vamos a molestar en ver qué es un departamento, etc, etc...

Haz una somera explicación en uno o dos párrafos de tu proyecto, de qué trata, que es un departamento y a que llamas fitrar en ese proyecto... 2 párrafos puede leer y entender (si no está muy enrevesado) todo el mundo, y con eso se puede ir más certero al código y ver el punto concreto donde algo deba ser cambiado, remplazado, eliminado, añadido... pero ser exigible leer antes que nada 900 línea de código, para poder responder, es algo que solo hará quien de repente esté aburrido y le apetezca... acaso ninguno.

Completamente de acuerdo, a veces se piensan que somos máquinas... Ilustranos un poco más
En línea

Código
  1. return((u.areHappy() && u.knowIt()) ? u.clapYourHands() : u.goFuckYourself());
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MOD] Ayuda con filtro subtitler
Multimedia
Florcita2005 1 973 Último mensaje 18 Agosto 2005, 06:54 am
por jose2c
Ayuda con Filtro en VB
Programación Visual Basic
Shaxia 0 1,017 Último mensaje 21 Enero 2006, 04:16 am
por Shaxia
como hacer filtro de tres combobox con tres tablas en visual basic.net 2005
.NET (C#, VB.NET, ASP)
javierch.esiis 1 8,760 Último mensaje 30 Julio 2008, 05:14 am
por Hadess_inf
Saber hacer filtro.
Bases de Datos
Meta 2 1,641 Último mensaje 9 Diciembre 2011, 22:42 pm
por Meta
Filtro en treeview C# [Ayuda]
Programación General
samirllorente 0 822 Último mensaje 16 Octubre 2015, 22:19 pm
por samirllorente
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines