
14/12/2009, 18:12
|
| | Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 15 años, 5 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();
}
|