#include <ctype.h>
#include <string.h>
#include <iostream>
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
using namespace std;
void intro();
void modif();
void borra();
void consu();
void error();
void espacios(int);
void menu();
struct hospital
{
int codmedico;
int numpaciente;
int edadpaciente;
int pesopaciente;
int telmedico;
int telpaciente;
int fechainicio;
int fechaprox;
char nombremedico[50];
char apellidomedico[50];
char especialidad[50];
char nombrepaciente[50];
char apellidopaciente[50];
char diagnostico[50];
}datos;
FILE *fichero;
char nom[30];
int tama;
void espacios(int final){
for(int i=1; i<final; i++)
cout<<" ";
}
/* grabar registros */
void intro()
{
int s;
int w=1, opc;
datos.nombremedico[0]='\0';
datos.apellidomedico[0]='\0';
datos.especialidad[0]='\0';
datos.nombrepaciente[0]='\0';
datos.apellidopaciente[0]='\0';
datos.diagnostico[0]='\0';
if((fichero=fopen("c:\\Hospital.dat","ab"))==NULL)error();
do{
espacios(50);
cout <<"Registrar Medico: "<<endl;
cout <<endl;
cout <<"Nombre del medico:"<<endl;
cin >>datos.nombremedico;
cout <<endl;
cout<<"Apellido del medico:"<<endl;
cin>>datos.apellidomedico;
cout<<endl;
cout<<"Especialidad:"<<endl;
cin>>datos.especialidad;
cout<<endl;
cout<<"Codigo medico:"<<endl;
cin>>datos.codmedico;
cout<<endl;
cout<<"Telefono del medico:"<<endl;
cin>>datos.telmedico;
cout<<endl;
cout<<endl;
cout <<"Registrar Paciente: "<<endl;
cout <<endl;
cout <<"Nombre del paciente:"<<endl;
cin >>datos.nombrepaciente;
cout <<endl;
cout<<"Apellido del paciente:"<<endl;
cin>>datos.apellidopaciente;
cout<<endl;
cout<<"Diagnostico:"<<endl;
cin>>datos.diagnostico;
cout<<endl;
cout<<"Numero paciente:"<<endl;
cin>>datos.numpaciente;
cout<<endl;
cout<<"Edad del paciente:"<<endl;
cin>>datos.edadpaciente;
cout<<"Peso del paciente"<<endl;
cin>>datos.pesopaciente;
cout<<"Telefono del paciente"<<endl;
cin>>datos.telpaciente;
cout<<"Fecha de inicio"<<endl;
cin>>datos.fechainicio;
cout<<"Fecha de proxima cita"<<endl;
cin>>datos.fechaprox;
cout<<endl;
cout<<endl;
cout<<"Datos correctos (1=Si/0=No):"<<endl;
cin >>opc;
if(opc==1){
fwrite(&datos,sizeof(datos),1,fichero);
}
cout<<endl;
cout<<"Desea agregar otro puesto (1=Si/0=No):"<<endl;
cin >> w;
}while (w==1);
fclose(fichero);
}
/* modificar registros*/
void modif()
{
int opc=0;
nom[0]='\0';
tama=sizeof(datos);
if((fichero=fopen("c:\\Hospital.dat","r+b"))==NULL)error();
espacios(15);cout<<"Introduce nombre a modificar:"<<endl;
cin>>nom;
while(!feof(fichero))
{
fread(&datos,sizeof(datos),1,fichero);
if(strcmp(datos.nombremedico,nom)==0)
{
espacios(15);cout<<"1.- Nombre : "<<datos.nombremedico<<endl;
espacios(15);cout<<"2.- Apellido: "<<datos.apellidomedico<<endl;
espacios(15);cout<<"3.- Especialidad: "<<datos.especialidad<<endl;
espacios(15);cout<<"4.- Codigo del medico: "<<datos.codmedico<<endl;
espacios(15);cout<<"5.- Telefono: "<<datos.telmedico<<endl;
espacios(15);cout<<"6.- Nombre del paciente: "<<datos.nombrepaciente<<endl;
espacios(15);cout<<"7.- Apellido del paciente: "<<datos.apellidopaciente<<endl;
espacios(15);cout<<"8.- Diagnostico: "<<datos.diagnostico<<endl;
espacios(15);cout<<"9.- Numero: "<<datos.numpaciente<<endl;
espacios(15);cout<<"10.- Edad: "<<datos.edadpaciente<<endl;
espacios(15);cout<<"11.- Peso: "<<datos.pesopaciente<<endl;
espacios(15);cout<<"12.- Telefono: "<<datos.telpaciente<<endl;
espacios(15);cout<<"13.- Primera cita: "<<datos.fechainicio<<endl;
espacios(15);cout<<"14.- Proxima cita: "<<datos.fechaprox<<endl;
espacios(15);cout<<"15.- Salir de las modificaciones:"<<endl<<endl;
while(opc!=15)
{
espacios(18);cout<<"Campo a modificar"<<endl;
cin >>opc;
switch(opc)
{
case 1 :cout<<"Ingrese el nuevo dato: "<<endl;
strcpy(datos.nombremedico,"");
cin >>datos.nombremedico;
break;
case 2 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.apellidomedico;break;
case 3 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.especialidad;break;
case 4 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.codmedico;break;
case 5 :cout<<"Ingrese el nuevo dato: "<<endl;
cin >> datos.telmedico;break;
case 6 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.nombrepaciente;break;
case 7 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.apellidopaciente;break;
case 8 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.diagnostico;break;
case 9 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.numpaciente;break;
case 10 :cout<<"Ingrese el nuevo dato: "<<endl;
cin >> datos.edadpaciente;break;
case 11 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.pesopaciente;break;
case 12 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.telpaciente;break;
case 13 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.fechainicio;break;
case 14 :cout<<"Ingrese el nuevo dato: "<<endl;
cin>>datos.fechaprox;break;
case 15 :fseek(fichero,-tama,SEEK_CUR);
fwrite(&datos,sizeof(datos),1,fichero);break;
default:break;
}
}
break;
}
}
fclose(fichero);
}
/* borrar registros */
void borra()
{
int opc2;
nom[0]='\0';
tama=sizeof(datos);
if((fichero=fopen("c:\\Hospital.dat","r+b"))==NULL)error();
espacios(15);cout<<"Introduce nombre a borrar:"<<endl;
cin >>nom;
while(!feof(fichero))
{
fread(&datos,sizeof(datos),1,fichero);
if(strcmp(datos.nombremedico,nom)==0)
{
espacios(15);cout<<"1.- Nombre : "<<datos.nombremedico<<endl;
espacios(15);cout<<"2.- Apellido: "<<datos.apellidomedico<<endl;
espacios(15);cout<<"3.- Especialidad: "<<datos.especialidad<<endl;
espacios(15);cout<<"4.- Codigo del medico: "<<datos.codmedico<<endl;
espacios(15);cout<<"5.- Telefono: "<<datos.telmedico<<endl;
espacios(15);cout<<"6.- Nombre del paciente: "<<datos.nombrepaciente<<endl;
espacios(15);cout<<"7.- Apellido del paciente: "<<datos.apellidopaciente<<endl;
espacios(15);cout<<"8.- Diagnostico: "<<datos.diagnostico<<endl;
espacios(15);cout<<"9.- Numero: "<<datos.numpaciente<<endl;
espacios(15);cout<<"10.- Edad: "<<datos.edadpaciente<<endl;
espacios(15);cout<<"11.- Peso: "<<datos.pesopaciente<<endl;
espacios(15);cout<<"12.- Telefono: "<<datos.telpaciente<<endl;
espacios(15);cout<<"13.- Primera cita: "<<datos.fechainicio<<endl;
espacios(15);cout<<"14.- Proxima cita: "<<datos.fechaprox<<endl;
espacios(15);cout<<"Estas seguro de querer borrarlo (1=Si/0=No)"<<endl;
cin >> opc2;
if(opc2==1)
{
strcpy(datos.nombremedico,"*");
fseek(fichero,-tama,SEEK_CUR);
fwrite(&datos,sizeof(datos),1,fichero);
break;
}
}
}
fclose(fichero);
}
/*consultar un registro*/
void consu()
{
strcpy(nom,"");
if((fichero=fopen("c:\\Hospital.dat","rb"))==NULL)error();
espacios(15);cout<<"Introduce nombre a consultar:"<<endl;
cin>>nom;
while(!feof(fichero))
{
fread(&datos,sizeof(datos),1,fichero);
if(strcmp(datos.nombremedico,nom)==0)
{
espacios(15);cout<<"1.- Nombre : "<<datos.nombremedico<<endl;
espacios(15);cout<<"2.- Apellido: "<<datos.apellidomedico<<endl;
espacios(15);cout<<"3.- Especialidad: "<<datos.especialidad<<endl;
espacios(15);cout<<"4.- Codigo del medico: "<<datos.codmedico<<endl;
espacios(15);cout<<"5.- Telefono: "<<datos.telmedico<<endl;
espacios(15);cout<<"6.- Nombre del paciente: "<<datos.nombrepaciente<<endl;
espacios(15);cout<<"7.- Apellido del paciente: "<<datos.apellidopaciente<<endl;
espacios(15);cout<<"8.- Diagnostico: "<<datos.diagnostico<<endl;
espacios(15);cout<<"9.- Numero: "<<datos.numpaciente<<endl;
espacios(15);cout<<"10.- Edad: "<<datos.edadpaciente<<endl;
espacios(15);cout<<"11.- Peso: "<<datos.pesopaciente<<endl;
espacios(15);cout<<"12.- Telefono: "<<datos.telpaciente<<endl;
espacios(15);cout<<"13.- Primera cita: "<<datos.fechainicio<<endl;
espacios(15);cout<<"14.- Proxima cita: "<<datos.fechaprox<<endl;
cout<<"Presione una tecla para salir ......"<<endl;
getch();
break;
}
}
fclose(fichero);
}
/* error en apertura */
void error()
{
cout<<"Error no puedo abrir el fichero"<<endl;
getch();
exit(0);
}
void menu(){
int opc=0;
do{
espacios(35);cout<<"Menu principal"<<endl;
espacios(29);cout<<"1.- Ingresar Puestos"<<endl;
espacios(29);cout<<"2.- Modificar Puestos"<<endl;
espacios(29);cout<<"3.- Borrar Puestos"<<endl;
espacios(29);cout<<"4.- Consultar"<<endl;
espacios(29);cout<<"5.- Finalizar"<<endl;
espacios(29);cout<<"Escoge una opcion..."<<endl;
cin >> opc;
switch(opc)
{
case 1:intro();break;
case 2:modif();break;
case 3:borra();break;
case 4:consu();break;
case 5:exit(0);
default: break;
}
}while (opc != 5);
}
int main()
{
menu();
return 0;
}