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

ayuda urgente porfavor programa de inventarios

Estas en el tema de ayuda urgente porfavor programa de inventarios en el foro de C/C++ en Foros del Web. Hola a todos les pido de la manera mas atenta le hechen un vistazo a mi programa y me digan que modifcar hace todo a ...
  #1 (permalink)  
Antiguo 14/12/2009, 18:12
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
ayuda urgente porfavor programa de inventarios

Hola a todos les pido de la manera mas atenta le hechen un vistazo a mi programa y me digan que modifcar hace todo a medias es muy importante porfavor
Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
FILE *fp;
FILE *fp1;
struct inven{
  char codigo[10];
  char descrip[30];
  char exist[15];
  char preuni[5];
}inventario;

//  ===  funciones ===
void crear();
void anexar();
void modificar();
void eliminar();
void reporte();




// ----------------PROGRAMA PRINCIPAL ----------------------------
void main()
{

  char resp;

  do
  {
    clrscr();
    printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *");
    printf("\n\t\t---------------------------------------------------");
    printf("\n\t\t\t      ALTA Y CONTROL DE PRODUCTOS   ");
    printf("\n\t\t-------------------------------------------------\n\n\n\n");
    printf("\t\t\t\t (1) CREAR ARCHIVO  \n");
    printf("\t\t\t\t (2) ANEXAR PRODUCTOS     \n");
    printf("\t\t\t\t (3) MODIFICAR DATOS DEL PRODUCTO     \n");
    printf("\t\t\t\t (4) ELIMINAR             \n");
    printf("\t\t\t\t (5) REPORTE              \n");
    printf("\t\t\t\t (6) SALIR  ........        ");
    printf("\n\n\t\t\t\tSelecciona: ");
    resp=getchar();
    switch(resp)
	 {
	  case '1': crear();
			 break;
	  case '2': anexar();
			break;
	  case '3': modificar();
			 break;
	  case '4': eliminar();
			break;
	  case '5': reporte();
			break;
	  case '6' : exit(1);
    }
  }
  while(resp!='6');
  getch();
}
// === Funcion de crear un archivo ====
void crear()
{
   clrscr();
   char opcion = 's';
   int i=0;
   if ((fp=fopen("inventario.dat","ab"))==NULL)
      printf("\n\n\n\n\t\t< < < Error de apertura de archivo inventario.dat   > > >");
   else
   {
     while(opcion == 's'){
        printf("\n\n ESCRIBE LA CLAVE DEL PRODUCTO (NO EXEDER DE 16 DIGITOS):\t ");
        scanf("%s",&inventario.codigo);
        printf("\n\n ESCRIBE EL NOMBRE DEL PRODUCTO\t ");
        scanf("%s", &inventario.descrip);
        printf("\n\n ESCRIBE LA EXISTENCIA DEL PRODUCTO:\t ");
        scanf("%s", &inventario.exist);
        printf("\n\n ESCRIBE LE PRECIO UNITARIO DEL PRODUCTO:\t ");
        scanf("%s",&inventario.preuni);
        fwrite(&inventario, sizeof(inventario), 1, fp);
        printf("\n\n\n\t\t DESEAS CAPTURAR OTRO PRODUCTO [s/n] : ");
	     opcion = getchar();
        getch();
         }
         }
         fclose(fp);
}
//////////////////anexar/////////////////////////////
void anexar(){
clrscr();
      FILE *add; //Apuntador de tipo archivo
      int opcion = 's';
      int i=0;
      while (((fwrite(&inventario, sizeof(inventario), 1, add))!=0)&&i!=1);  //Se condiciona la escritura en el directorio
          if ((add=fopen("inventario.dat","r+b"))==NULL)//Se verifica la apertura del 'directorio.dat' en modo de lectura y escritura
             printf("\n Error de apertura del archivo inventario.dat\n"); //Alerta a usuario
          else
             printf("\n\n\t\t\t****SE AGREGARA UN NUEVO PRODUCTO****\n\n\a "); //Información al usuario
          if(!add)
             add=fopen("inventario.dat","r+b"); //Se abre el archivo y se pide la información del nuevo elemento (registro)
          else
             while(opcion == 's'){
               fwrite(&inventario, sizeof(inventario), 1, add);
               printf("\n\n Escribe el codigo del producto:\t ");
               scanf("%s",&inventario.codigo);
               printf("\n\n Escribe el nombre del producto:\t ");
               scanf("%s",&inventario.descrip);
               printf("\n\n Escribe la existencia del prodcuto :\t ");
               scanf("%s", &inventario.exist);
               printf("\n\n Escribe el precio unitario:\t ");
               scanf("%s",&inventario.preuni);

               fwrite(&inventario, sizeof(inventario), 1, add);

          printf("\n\n\n\t\t Desea ingresar otro producto [s/n]: ");
          if (opcion='n');
              }
          opcion = getchar();
          getch();

   fclose(add);  //Se guarda y cierra el registro
}
//=================MODIFICAR
// === Funcion modificar ==== elaborada por : Hugo Abarca B.
void modificar(){
		clrscr();
      int opc,i=0;
      char elim[6];
      printf("\nINGRESE EL CODIGO DEL PRODUCTO A MODIFICAR: ");
      scanf("%s",&elim);
      fp=fopen("inventario.dat","r+b");    //Se verifica la apertura del 'directorio.dat' en modo de lectura y escritura

		if(!fp)
         printf("\n Error de apertura del archivo inventario.dat\n");  //alerta al usuario
      else{
         while (((fread(&inventario, sizeof(inventario), 1, fp))!=0)&&i!=1){ //busca la estructura directorio en el puntero
            if(!strcmp(inventario.codigo,elim)){        //Ccompara dos cadenas de caracteres
               // if(inventario.codigo==elim){
                printf("DESCRIPCION        : %s\n",inventario.descrip);
                printf("EXISTENCIA     : %s\n",inventario.exist);
                printf("PRECIO UNITARIO     :$ %s\n",inventario.preuni);

               printf ("\nQUE DESEA MODIFICAR: ");
               printf ("\n\t\t\t1.-DESCRIPCION\n");
               printf("\t\t\t2.-EXISTENCIA\n");
               printf ("\t\t\t3.-PRECIO UNITARIO\n");
               printf("\t\t\t4.-SALIR\n");
               printf("\t\t\tDIGITA TU OPCION :");
               scanf("%d",&opc);
               switch (opc!=4){
                case 1:
                  printf ("\nINGRESA LA NUEVA DESCRIPCION: ");
                  scanf("%s",&inventario.descrip);
                  break;
                case 2:
                  printf ("\nINGRESA LA NUEVA EXISTENCIA ");
                  scanf("%s",&inventario.exist);
                  break;
                case 3:
                  printf ("\nINGRESA EL NUEVO PRECIO UNITARIO ");
                  scanf("%s",&inventario.preuni);
                  break;
               }
             fseek(fp,-sizeof(inventario),SEEK_CUR);
             fwrite(&inventario,sizeof(inventario), 1, fp);
             i=1;
             fclose(fp); // cierre del directorio
            }
         }

      }
}
///=======================================eliminar producto
void eliminar()
               {
               char elim[10];
               clrscr();
   	   		   	printf("\nINGRESE EL CODIGO DEL PRODUCTO PARA ELIMINAR: ");
		      	   	scanf("%s",&elim);
                     fp=fopen("inventario.dat","r+b");
                     fp1=fopen("inventario1.dat","wb");
		         	   if(!fp)
						   	printf("\n Error de apuertura del archivo inventario.dat\n");
						   else{
						         while (((fread(&inventario, sizeof(inventario), 1, fp))!=0)&&(inventario.codigo!=0)){
                              if(!strcmp(inventario.codigo,elim)){
                                 fseek(fp1,sizeof(inventario),SEEK_END);
                                 fseek(fp1,-sizeof(inventario),SEEK_CUR);
                                 fwrite(&inventario,sizeof(inventario), 1, fp1);
			                        fclose(fp1);
                                 fp1=fopen("inventario1.dat","r+b");
                                 clrscr();
                             		printf ("\n\n\n\n\n\n\n\n\n\n\n                   EL PRODUCTO SE HA ELIMINADO CORRECTAMENTE \n");
                                 printf ("\n                          OPRIMA CUALQUIER TECLA PARA CONTINUAR");
                                 getch();
                                 }

                           	}
                        fclose(fp);
                     	fclose(fp1);
                        system("del inventario.dat");
                        system("ren inventario1.dat inventario.dat");

                       }
      			   }
//// ====================================reporte de productos//////////
void reporte (){

int i;
clrscr();     // limpia la pantalla
FILE *invent;   //Asigna un apuntador de tipo archivo
invent = fopen("inventario.dat", "r");   //verifica la apertura en modo lectura del archivo en donde se almacena la informacion
if(invent == NULL) // si el valor del apuntador es iguala NULO
	 {
		printf("\nNo existe archivo");  // manda un mensaje de que no existe el archivo
	 }
       fread(&inventario, sizeof(struct inven), 1, invent);
 						     printf("------------------------------------------------------------------\n");
					        printf("CODIGO   DESCRIPCION\t\tEXISTENCIA\tPRECIO UNITARIO  \n");
                       printf("------------------------------------------------------------------\n");
while(!feof(invent)) //mientras no sea fin de archivo
	{
      gotoxy(2,i);
	  printf("  %s      %s\t\t   %s\t\t      %s \n",inventario.codigo,inventario.descrip,inventario.exist,inventario.preuni);
      gotoxy(9,i);
       fread(&inventario, sizeof(struct inven), 1, invent);
	   }
     fclose(invent); // cierra el archivo
	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 01:35.