Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda para realizar un programa!

Estas en el tema de Ayuda para realizar un programa! en el foro de C/C++ en Foros del Web. hola compañeros; tengo una practica que realizar de C y me gustaria saber si alguien podria hecharme una mano para poder seguir o saber si ...
  #1 (permalink)  
Antiguo 07/05/2009, 15:18
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Ayuda para realizar un programa!

hola compañeros;

tengo una practica que realizar de C y me gustaria saber si alguien podria hecharme una mano para poder seguir o saber si alguien la tuviera realizada.

Os voi a resumir un poco en que consiste la practica y a continuacion colocare lo que tengo realizado de la practica.
La practica consiste en informatizar la gestion de un complejo turistico que consta de 5 hoteles.Ademas cada hotel cuenta con 15 habitaciones dobles.Se debe realizar un programa en C que permita almacanar y saber la ocupacion instantanea de todos lña hoteles en cualquier momento.Tambien se podra introducir, almacenar y saber los datos personales de los clientes actuales y los anteriores.
El codigo fuente esta realizado con estrusturas de datos y funciones.

este es el programa que tengo realizado;

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>


//CONSTANTES
#define HOT 1 //número máximo de hoteles
#define HAB 3 //número máximo de habitaciones
#define N 2 //maximo de personas en una habitación

//TIPOS
typedef struct
{
int dia;
int mes;
int ano;
} fecha;

typedef struct
{
char nombre[20];
char apellido1[20];
char apellido2[20];
char dni[9];
fecha f_entrada;
fecha f_salida;
int nhabita;
} datosper;

typedef struct
{
char dni1[9]; //DNI de la primera persona
char dni2[9]; //DNI de la segunda persona
int nhabita;
int precio;
int ocupado;
} habitacion;

typedef datosper persona[HOT][HAB][N];
typedef habitacion habita[HOT][HAB];

//Cabeceras

void iniciar_lista(persona cliente, habita habi);
void cargar (persona cliente);
void guardar(persona cliente);
void introducir(persona cliente, habita habi);
menu (void);
void baja(persona cliente,habita habi);
//void buscar(persona cliente);
//void ordenar (persona cliente);

main(void)
{
char opcion, nombre,apellido1;
persona cliente;
habita habi;
iniciar_lista(cliente, habi);

for(;;)
{
opcion=menu();
switch(opcion)
{
case 'i' : introducir(cliente,habi);
break;
case 'd' : baja(cliente, habi);
break;
/* case 'b' : buscar(cliente);
break; */
case 'g' : guardar(cliente);
break;
case 'c' : cargar(cliente);
break;
case 's' : return 0;

} //fin switch
} //fin for
printf("FIN MAIN\n");
getch();
return 0;
}//fin main



menu (void)
{
char car;
do{
clrscr();
printf("\n (I) Introducir clientes");
printf("\n (D) Dar de baja a un cliente");
printf("\n (B) Buscar por apellido");
printf("\n (G) Guardar en archivo");
printf("\n (C) Cargar archivo");
printf("\n (S) Salir\t\n");
fflush(stdin);
car=getche();

}while (!strchr("idblgcs",tolower(car)));
return tolower(car);

}//fin menu











///////////////// INICIAR LISTA //////////////////
void iniciar_lista(persona cliente, habita habi)
{
int i,j,k;

for(i=0;i<HOT;i++){
for(j=0;j<HAB;j++){
habi[i][j].ocupado=0;


for(k=0;k<N;k++){

*cliente[i][j][k].apellido1='\0';
cliente[i][j][k].f_salida.dia='00';
cliente[i][j][k].f_salida.mes='00';
cliente[i][j][k].f_salida.ano='00';
}
}
}
}//fin iniciar lista












///////////////////// INTRODUCIR //////////////////
void introducir(persona cliente, habita habi)
{
int i,j,k,num,nhot,nhab,personas=0;

printf("\n Introduce el numero del hotel\n");
scanf("%d",&nhot);
getch();
printf("En el hotel %d estas las siguientes habitaciones disponibles\n",nhot);
for(j=0;j<HAB;j++)
{
if(!(habi[nhot][j].ocupado)) printf("habitacion %d disponible\n",j);
}//finforj

printf("\nCual quiere reservar\n");
scanf("%d",&nhab);
//fflush(stdin);
getch();

do{printf("CUANTAS PERSONAS SE VAN A HOSPEDAR EN LA HABITACION\n");
scanf("%d",&k);
getch();
}while((k<1) && (k>2));
k--;
do{


printf("\n Nombre:");
fflush(stdin);
//fscanf(stdin,"%s",cliente[nhot][nhab][k].nombre);
scanf("%s",cliente[nhot][nhab][k].nombre);

printf("\n Primer apellido:");
fflush(stdin);
fscanf(stdin,"%s",cliente[nhot][nhab][k].apellido1);

printf("\n Segundo apellido:");
fflush(stdin);
fscanf(stdin,"%s",cliente[nhot][nhab][k].apellido2);

printf("\n DNI:");
fflush(stdin);
fscanf(stdin,"%s",cliente[nhot][nhab][k].dni);

if(k==0)
strcpy(habi[nhot][nhab].dni1,cliente[nhot][nhab][k].dni);

if(k==1)
strcpy(habi[nhot][nhab].dni2,cliente[nhot][nhab][k].dni);

cliente[nhot][nhab][k].nhabita=nhab;
habi[nhot][nhab].nhabita=nhab;
habi[nhot][nhab].ocupado=1;

if(k==0){
printf("\n Introduzca el precio de la habitacion:");
fflush(stdin);
fscanf(stdin,"d",&habi[nhot][nhab].precio);
}
printf("Fecha de entrada\n");
printf("\n\t DIA: ");
fflush(stdin);
fscanf(stdin,"%d",&cliente[nhot][nhab][k].f_entrada.dia);
printf("\n\t MES: ");
fflush(stdin);
fscanf(stdin,"%d",&cliente[nhot][nhab][k].f_entrada.mes);
printf("\n\t ANO: ");
fflush(stdin);
fscanf(stdin,"%d",&cliente[nhot][nhab][k].f_entrada.ano);
k--;
}while(k> -1);//finfork*/

}












////////////// DAR DE BAJA ////////////
void baja(persona cliente,habita habi)
{

int hot,hab,cam,i,j,k;

FILE *ft;

printf ("introduce el numero del hotel\n");
scanf ("%i", &hot);
printf ("introduce el numero de la habitacion\n");
scanf ("%i", &hab);
printf ("introduce el numero de la cama\n");
scanf ("%i", &cam);

cam--;

printf ("fecha de salida");
printf ("\n\t DIA:");
fflush(stdin);
fscanf(stdin,"%d", &cliente[hot][hab][cam].f_salida.dia);
printf ("\n\t MES:");
fflush(stdin);
fscanf(stdin,"%d", &cliente[hot][hab][cam].f_salida.mes);
printf ("\n\t AÑO:");
fflush(stdin);
fscanf(stdin,"%d", &cliente[hot][hab][cam].f_salida.ano);
habi[hot][hab].ocupado=0;

if((ft=fopen("registro.dat","a"))==NULL)
{
printf ("\n nose puede abrir el arxivo");
getch();
return;
}

fprintf (ft, "\n %s", cliente[hot][hab][cam].nombre);
fprintf (ft, "\n %s", cliente[hot][hab][cam].apellido1);
fprintf (ft, "\n %s", cliente[hot][hab][cam].apellido2);
fprintf (ft, "\n %s", cliente[hot][hab][cam].dni);
fprintf (ft, "\n %s", cliente[hot][hab][cam].nhabita);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_entrada.dia);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_entrada.mes);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_entrada.ano);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_salida.dia);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_salida.mes);
fprintf (ft, "\n %s", cliente[hot][hab][cam].f_salida.ano);

fclose(ft);

}








////////////// BUSCAR /////////////////
void buscar(persona cliente)
{
char dni;
printf("introduce el DNI de la persona\n");
scanf("%c",&dni);

}




falta la funcion de buscar por dni la persona k se desee y la funcion de ordenar, aunke esta ultima es menos importante.


por favor, si podeis exarme una mano os lo agradeceria muxo.


gracias y saludos










////////////// GUARDAR //////////////////
void guardar(persona cliente)
{

FILE *fp;
int i,j,k;
if((fp=fopen("hotel.dat","wt"))==NULL)
{
printf("\n No se puede abrir el archivo");
getch();
return;
}//fin if
for(i=0;i<HOT;i++){
for(j=0;j<HAB;j++){
for(k=0;k<N;k++)
{
fprintf (fp,"\n %s",cliente[i][j][k].nombre);
fprintf (fp,"\n %s",cliente[i][j][k].apellido1);
fprintf (fp,"\n %s",cliente[i][j][k].apellido2);
fprintf (fp,"\n %s",cliente[i][j][k].dni);
fprintf (fp,"\n %d",cliente[i][j][k].nhabita);
fprintf (fp,"\n %d/",cliente[i][j][k].f_entrada.dia);
fprintf (fp,"\n %d/",cliente[i][j][k].f_entrada.mes);
fprintf (fp,"\n %d",cliente[i][j][k].f_entrada.ano);
fprintf (fp,"\n %d/",cliente[i][j][k].f_salida.dia);
fprintf (fp,"\n %d/",cliente[i][j][k].f_salida.mes);
fprintf (fp,"\n %d",cliente[i][j][k].f_salida.ano);
}}}
fclose(fp);
printf("\n\n Archivo guardado");
getch();
}//fin guardar


/////////// CARGAR ////////////////
void cargar (persona cliente)
{
FILE *fp;
int i,j,k;
if((fp=fopen("hoteles.txt","r"))==NULL)
{
printf("\n No se puede abrir el archivo");
getch();
return;
}//fin if
for(i=0;i<HOT;i++){
for(j=0;j<HAB;j++){
for(k=0;k<N;k++)
{
fscanf (fp," %s %s %s %s",cliente[i][j][k].nombre,
cliente[i][j][k].apellido1,
cliente[i][j][k].apellido2,
cliente[i][j][k].dni);
fscanf (fp," %d %d %d %d %d %d %d",&cliente[i][j][k].nhabita,
&cliente[i][j][k].f_entrada.dia,
&cliente[i][j][k].f_entrada.mes,
&cliente[i][j][k].f_entrada.ano,
&cliente[i][j][k].f_salida.dia,
&cliente[i][j][k].f_salida.mes,
&cliente[i][j][k].f_salida.ano);
}}}
fclose(fp);
printf("\n\n Archivo cargado");

getch();
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:57.