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

un poco de ayuda con este codigo

(1 post)
  • Started 1 year 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 1 year ago #



Reply

You must log in to post.

934 posts in 393 topics over 36 months by 348 of 784 members. Latest: kardelen133, hugoivand, danymota19

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