Dudas de Programacion » Lenguajes de Proposito General » C++

un poco de ayuda con este codigo

(1 post)
  • Started 3 months ago by jeremias10

Tags:

  1. hola a todos la verdad es q no c como implementar bien mi codigo, este codigo trata sobre ficheros en c++, el problema q tengo es q ala hora de modificar y eliminar me eliminan todo lo q tengo escrito, y cuando modifico si m modifica pero no me deja guardados todos y me los borra,

    otro cosa es q cuando voy a mi pc -> disco c -> borlan -> BIN--> Y BUSCO el archivo q crie, y lo abro, me abre pero me da un monton e signos q nada q ver, necesito q me digas xq me aparecen esos signos, espero q me respondan y me digan cual es mi error,xq no encuentro nada

    este es mi cogio:

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include <iostream.h>
    #include <string.h>

    struct producto {
    int codigo;
    char nombre[50];
    float precio;

    };

    void menuPrincipal();
    void menuproductos();

    void nuevoproducto();
    void editarproducto();
    void eliminarproducto();
    void verproducto();

    //funcion principal
    int main() {
    int opcion;
    int salir = 0;
    while (salir != 1)
    { // while mientras salir sea 0

    menuPrincipal();

    scanf("%d", &opcion);

    switch(opcion) {
    case 0:
    salir = 1; // opcion salir del menu
    break;

    case 1:
    clrscr();
    menuproductos();

    break;

    } // fin del switch de opcion de menu principal

    }// fin del while para salir

    printf("\n\n");

    return 0;
    }

    void menuPrincipal() {

    printf("\n JEREMIAS IVAN CHIRICOC MARTINEZ 2890-09-4362\n\n");

    printf(" Selecciona la opciona realizar:\n\n");
    printf(" 1- PRODUCTOS.\n");
    printf(" 0- Salir.\n\n");
    printf(" Opcion: ");
    }

    void menuproductos(){

    int exit = 0;
    int opc;

    while (exit != 1) {

    printf("\nMenu Productos.\n\n");
    printf("Selecciona la opciona realizar:\n");
    printf("1- Nuevo Producto.\n");
    printf("2- Editar producto.\n");
    printf("3- Eliminar Producto\n");
    printf("4- Ver producto.\n");
    printf("0- Salir.\n\n");
    printf("Opcion: ");

    scanf("%d", &opc);

    switch(opc) {
    case 0:
    clrscr();
    exit = 1;
    break;

    case 1:
    clrscr();
    nuevoproducto();
    break;

    case 2:
    clrscr();
    editarproducto();
    break;

    case 3:
    clrscr();
    eliminarproducto();
    break;

    case 4:
    clrscr();
    verproducto();
    break;
    }
    }
    }

    //agregar nuevo producto

    void nuevoproducto() {

    struct producto prod;
    FILE *fichero;

    printf("Datos del Nuevo producto.\n\n");

    printf("Ingrese el codigo del producto: ");
    scanf("%d", &prod.codigo);

    fflush(stdin);
    printf("\nIngrese el nombre del producto: ");
    gets(prod.nombre);

    fflush(stdin);
    printf("\n ingrse el precio");
    scanf("%f",&prod.precio);

    if ((fichero = fopen("productos.txt", "a")) == NULL) {
    printf ("Error en apertura del fichero para escritura\n");
    }
    else {
    //guardamos los datos en el fichero
    fwrite(&prod, sizeof(prod), 1, fichero);
    printf("\nproducto agreado.");
    fclose (fichero);
    }

    printf("\n\n");

    }

    //ver todos productos
    void verproducto() {

    struct producto prod;
    FILE *fichero;

    if ((fichero = fopen("productos.txt", "r")) == NULL) {
    printf ( "No existen productos.\n " );

    }
    else {
    fread (&prod, sizeof(prod), 1, fichero);
    while (!feof(fichero)) {
    printf("\nCodigo del producto: %d", prod.codigo);
    printf("\nNombre del producto: %s", prod.nombre);
    printf("\nprecio del producto: %f", prod.precio);

    fread (&prod, sizeof(prod), 1, fichero);

    }
    fclose (fichero);
    }
    }

    //editar un producto
    void editarproducto(){

    int codigoBuscado;
    int encontrado = 0;
    struct producto prod;
    struct producto newpro;
    FILE *fichero;
    FILE *ficherox;

    printf("Modificacion de Datos del Producto.\n\n");

    printf("Ingrese el codigo del producto a modificar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("productos.txt", "r")) == NULL) {
    printf ( "No existen productos.\n " );

    }
    else {
    fread (&prod, sizeof(prod), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == prod.codigo)
    encontrado = 1;
    fread (&prod, sizeof(prod), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    newpro.codigo = codigoBuscado;

    fflush(stdin);
    printf("\nIngrese el nombre del producto: ");
    gets(newpro.nombre);

    fflush(stdin);
    printf("\nIngrese precio del producto: ");
    scanf("%f",&newpro.precio);

    if ((fichero = fopen ("productos.txt", "r")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("productosx.txt", "w")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&prod, sizeof(prod), 1, fichero);
    while (!feof(fichero)) {
    if (newpro.codigo == prod.codigo)
    fwrite(&newpro, sizeof(prod), 1, ficherox);
    else
    fwrite(&prod, sizeof(prod), 1, ficherox);
    fread (&prod, sizeof(prod), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("productos.txt");
    rename("productosx.txt", "productos.txt");
    }
    } // fin de if encontrado
    else {
    printf("Producto no Encontrado");
    }
    printf("\n\n");

    }

    //eliminar un producto
    void eliminarproducto(){

    int codigoBuscado;
    int encontrado = 0;
    struct producto prod;
    FILE *fichero;
    FILE *ficherox;

    printf("Eliminacion de Datos del producto.\n\n");

    printf("Ingrese el codigo del producto a eliminar: ");
    scanf("%d", &codigoBuscado);

    if ((fichero = fopen("productos.txt", "r")) == NULL) {
    printf ( "No existen producto.\n " );

    }
    else {
    fread (&prod, sizeof(prod), 1, fichero);
    while (!feof(fichero) && (encontrado != 1)) {
    if (codigoBuscado == prod.codigo)
    encontrado = 1;
    fread (&prod, sizeof(prod), 1, fichero);
    }
    }

    fclose (fichero);

    if (encontrado == 1) {

    if ((fichero = fopen ("productos.txt", "r")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de entrada.\n");
    else
    if ((ficherox = fopen ("productosx.txt", "w")) == NULL)
    printf ("\nERROR: No es posible abrir el fichero de salida.\n");
    else
    {
    fread (&prod, sizeof(prod), 1, fichero);
    while (!feof(fichero)) {
    if (!(codigoBuscado == prod.codigo))
    fwrite(&prod, sizeof(prod), 1, ficherox);
    fread (&prod, sizeof(prod), 1, fichero);
    }
    fclose (fichero);
    fclose (ficherox);
    remove("productos.txt");
    rename("productosx.txt", "productos.txt");
    printf("producto eliminado");
    }
    }
    else {
    printf("producto no Encontrado");
    }
    printf("\n\n");

    }

    Posted 3 months ago #



Reply

You must log in to post.

603 posts in 270 topics over 19 months by 235 of 395 members. Latest: angell, Arturo montelongo, esmeralda

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs