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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Ayuda urgente !!! en: 24 Junio 2018, 21:03 pm
Sinceramente dudo que alguien se ponga a hacer el programa mientras tu haces nada ya que este no es un grupo para hacer tareas de los demas, te recomiendo que pongas atencion y que intentes hacerlo tu mismo y si no te funciona puedes venir y pedir ayuda mostrando tu codigo para que encontremos el error y puedas hacer que funcione.
Saludos ;D
2  Programación / Programación C/C++ / Re: AYUDA! fallo en la impresion en: 21 Junio 2018, 06:50 am
Hola amigo, te recomendaria que usaras la cabecera iostream en vez de stdio ya que es mucho mas facil pero para gustos colores jejeje

Mira el problema esta aqui
Código
  1. if(max<arr.promedio)
  2. max=arr.promedio;
  3. pos=i;// se guarda la posición del alumno con el mejor promedio
  4.  
Se te olvido abrir llaves des pues del parentesis y ejecutar
Código
  1. if(max<arr.promedio){
  2. max=arr.promedio;
  3. pos=i;// se guarda la posición del alumno con el mejor promedio
  4. }
  5.  
Pero si gustas aqui esta el ejercicio
Código
  1. #include <iostream>//entrada y salida estandar
  2. #include <conio.h>//para el getch(); que es pausar pantalla
  3.  
  4. using namespace std;//evitamos escribir std::cout y std::cin cada vez... Ojo si te marca error aqui puedes eliminar esta linea
  5.  
  6. struct alumnos
  7. {
  8.    char nombre[20];
  9.    int edad;
  10.    int promedio;
  11. }alumnos[100];//creamos 100 estructuras ya que no se sabe cuantas va a ingresar el usuario
  12.  
  13. void promedio();
  14. int cantidad;//la hacemos variante universal para que todos los void puedan usar el dato ingresado
  15.  
  16. int main()
  17. {
  18.    cout<<" Cuantos alumnos desea agregar? ";
  19.    cin>>cantidad;//ingresamos a la variante universal
  20.    for(int i=0; i<cantidad; i++){
  21.     cout<<" Nombre alumno: ";
  22.     cin>>alumnos[i].nombre;
  23.     cout<<" Edad: ";
  24.     cin>>alumnos[i].edad;
  25.     cout<<" Promedio: ";
  26.     cin>>alumnos[i].promedio;
  27. }
  28. promedio();//mandamos a llamar el void
  29. cout<<" Presione cualquier tecla para salir...";
  30. getch();
  31. }
  32.  
  33. void promedio()
  34. {
  35.     int i, pos,max=0;
  36.  
  37.    for(i=0;i<cantidad;i++)
  38.    {
  39.        if(max<alumnos[i].promedio){
  40.         max=alumnos[i].promedio;
  41.            pos=i;// se guarda la posición del alumno con el mejor promedio
  42. }
  43. }
  44.      cout<<"\n El alumno con mejor nota es:\n";
  45.      cout<<" Nombre: "<<alumnos[pos].nombre<<endl;
  46.      cout<<" Edad: "<<alumnos[pos].edad<<endl;
  47.      cout<<" Promedio: "<<alumnos[pos].promedio<<endl;
  48.  
  49. }
  50.  
3  Programación / Programación C/C++ / Re: Duda acerca de imprimir (en impresora) en: 21 Junio 2018, 06:02 am
C++ no tiene soporte nativo para la impresion de documentos (al menos que yo sepa), la impresión está condicionada por el sistema operativo que uses, en este caso windows tiene sus drivers y un sistema de spooling, etc. Aqui tienes alguna informacion

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162861(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ff819270(v=vs.85).aspx

De cualquier forma necesitas usar las APIs que te brinda tu sistema operativo y hacer las llamadas desde tu codigo c++. He encontrado este codigo por ahi pero no se si funcionara del todo, igual te podria servir

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <string.h>
  4.  
  5. void printer(char text[])
  6. {
  7.  
  8. // Bring up a dialog to choose the printer
  9. PRINTDLG pd = {0};
  10. pd.lStructSize = sizeof( pd );
  11. pd.Flags = PD_RETURNDEFAULT | PD_RETURNDC;
  12. pd.nCopies=1;
  13.  
  14. // Show the printer Dialog
  15. PrintDlg( &pd );
  16.  
  17.  
  18. // Zero and then initialize the members of a DOCINFO structure.
  19. DOCINFO di = {0};
  20. di.cbSize = sizeof(DOCINFO);
  21. di.lpszDocName = "Scribble Printout";
  22. di.lpszOutput = (LPTSTR) NULL;
  23. di.lpszDatatype = (LPTSTR) NULL;
  24. di.fwType = 0;
  25.  
  26. // Begin a print job by calling the StartDoc function.
  27. StartDoc(pd.hDC, &di);
  28.  
  29. // Inform the driver that the application is about to begin sending data.
  30. StartPage(pd.hDC);
  31.  
  32. //here we put images\text or other DC things;)
  33.  
  34. //send some text
  35. TextOut(pd.hDC,800,800,text, strlen(text));
  36.  
  37.  
  38. //Lets close  the printer
  39. // Inform the driver that the page is finished.
  40. EndPage(pd.hDC);
  41.  
  42. // Inform the driver that document has ended.
  43. EndDoc(pd.hDC);
  44. }
  45.  
  46. int main ()
  47. {
  48. printer("Hello world");
  49. return 0;
  50. }

Igual puedes buscarte la vida con alguna libreria, estas por ejemplo:

https://www.gtkmm.org/es/index.html
https://developer.gnome.org/gtkmm-tutorial/unstable/sec-printing-example.html.en#sec-printing-example-simple
https://www.codeproject.com/Articles/89/Printing-Class-Library

Saludos y buena suerte

Muchas gracias lo probare y gracias también por los links con la información ;) ;-)
4  Programación / Programación C/C++ / Re: Duda acerca de imprimir (en impresora) en: 8 Junio 2018, 01:39 am
Buenas Pieshna.
¿Podrías dar mas detalles? SO por ejemplo, marca de impresora, puerto al que está conectada...
Un Saludo.

Hola, saludos SrMcLister
Estoy usando Windows 10 y estoy programando con dev-c++, la impresora es canon (MP 280), puertos LPT1-3, USB002
5  Programación / Programación C/C++ / Duda acerca de imprimir (en impresora) en: 6 Junio 2018, 19:58 pm
Hola buenos dias, tardes o noches...

Queria saber si alguien me puede ayudar con un codigo para imprimir (con impresora) ya que he estado buscando pero no encuentro uno funcional para c++ :-(
Es para un proyecto final de programacion y solo me falta el que se pueda imprimir los datos, ayuda! ;)
6  Programación / Programación C/C++ / 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.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines