Motor de Bases de datos (o similar) en C++

      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    #1 Motor de Bases de datos (o similar) en C++

    Muchachos , estoy desarollando un software que gestiona control de stock.- (ventas , ingresos , etc)

    Lo estoy haciendo con C++
    (porque es lo mas similar a lo que es el shell scripting en Unix)

    Ahora , tengo un problema con lo que vendria a hacer el "motorcito" de la base de datos en la cual , van a figurar los productos / codigos / cantidad / precio unitario / etc.-

    Estoy haciendo una base de datos interactiva con entorno Curses dentro del C++
    (pero me estoy volviendo "puto" con esto , y a mi novia no le gusta nada )

    [glow=white]Alguien tendra algun source "prehecho" perdido por ahi que sea similar para que yo lo pueda modificar ??? [/glow]
    (es decir , que sirva para realizar control de stock , etc)

    De ser asi , please , posteenlo (lo mas completo posible)

    Por favor , que sea en C o C++

    Les muestro parte del source de la base de Datos que tengo, pero se me complica si sigo con esto :
    (se las paso como para que se den una idea , pero carece de utilidad)


    /* Bases de Datos Interactiva */

    #include <string.h> /*funciones de procesos de cadenas*/
    #include <stdlib.h>
    #include <utiles.h> /* incluye curses.h y stdio.h /*

    /* Constantes */

    #define LINES 100000
    #define long1 34 /* Campos de registro */
    #define long2 136 /*Campos de ventana*/

    /* Estructura */
    typedef struct
    { char *codigo ; char *detalle ; char *precio ; char *cantidad ;
    } dir ;

    etc etc

    Please, si alguien tiene algo semi prehecho para cumplir la funcion , se agradece y mucho./

    (no importa si hay que modificarlo)

    Chas gracias anticipate./

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    32 comentarios / 5660 Visitas

      • 346
      • mensajes
      • miembro desde
      • 08/06/02
    29/04/2003
    #2

    Querés re-inventar la rueda, usá MySQL y olvidate de todo lo que sea BD.

      • 1,149
      • mensajes
      • miembro desde
      • 11/02/02
    29/04/2003
    #3

    estaba pensando la misma expresion... reinventar la rueda...

    kaos: a) usa un motor ya existente
    b) usa un archivo de datos, cargalo en memoria, y labura con un vector [dinamico] de estructuras o clases (esto lo haces en 2 patadas)... eso si, anda codeandote algunos algoritmos de busqueda y sorting y demas para q no sea tan lerdo...

    K

      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    29/04/2003
    #4
    Publicado por jalandro
    Querés re-inventar la rueda, usá MySQL y olvidate de todo lo que sea BD.
    No.

    La maquina con la que cuento para ejecutar dicho programa es local , de muy bajas prestaciones y solamente con MS-DOS.

    Por lo que no quiero reinventar la rueda y MySQL esta fuera de las posibilidades.-

    Me recomendaron Clipper o FoxPro, pero no tengo idea de ninguno de los 2.-
    (ahora me voy a poner a leer un par de manuales de ambos...pero me gustaria en C)

    Tiene que ser un lenguaje similar por los elementos con los que cuento.-

    Me olvide de detallar esto??? UPS! (mi error, mil disculpas!!)


    Publicado por Kremar
    kaos: a) usa un motor ya existente
    b) usa un archivo de datos, cargalo en memoria, y labura con un vector [dinamico] de estructuras o clases (esto lo haces en 2 patadas)... eso si, anda codeandote algunos algoritmos de busqueda y sorting y demas para q no sea tan lerdo...

    K
    a) Eso es justamente lo que estoy pidiendo!! si alguien tiene algo prehecho para modificar u acoplar...

    b) Justamente , tengo mil millones de quilombos (a pesar de que el archivo seria en "texto")

    El problema mas grande en los algoritmos en C que tengo es el de "Busqueda y Modificacion" de un campo o detalle en el archivo en donde estaria guardada la base.-

    Lamento no haber tirado mas datos antes....

    Enfatiso , si alguien hizo (en la facultad, por hobby , por laburo) algun source similar o que se pueda acoplar.. agradeceria si me tiran el dato (o al menos , parte del source)

    En caso contrario , explicar como poder hacer el motor de busqueda dentro de un archivo con texto plano y el formato del archivo.-

    Los datos que contiene el archivo serian los siguientes :

    a) Codigo
    b) Descripcion
    c) Cantidad Disponible
    d) Precio

    Si pueden modificarse en forma Interactiva y en tiempo real mejor..

    Sino con solo sirva para llevar el ingreso / egreso de mercaderias tambien sirve...

    En fin , chas gracias a ambos !

    PD : Alguna URL de donde pueda sacar sources que me puedan llegar a servir para modificarlos , tampoco vendria nada mal.-
      • 346
      • mensajes
      • miembro desde
      • 08/06/02
    29/04/2003
    #5

    En realidad si es uan aplicacion DOS en una maquina chica, creo que lo ideal es Clipper o FoxPro 2.6... creo que se deberian conseguir fácil, y si vos pensabas en programarlo en C, y tenes la capacidad de hacerlo, no te va a costar nada el Clipper y vas a terminar antes, porque te olvidas de los problemas de bajo nivel del C.
    Quizá en C la performance sea un poco mayor, pero en mi opinión no se justifica ya que la performance de Clipper o FoxPro es mas que adecuada para este tipo de aplicaciones.

      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    29/04/2003
    #6
    Publicado por jalandro
    En realidad si es uan aplicacion DOS en una maquina chica, creo que lo ideal es Clipper o FoxPro 2.6... creo que se deberian conseguir fácil, y si vos pensabas en programarlo en C, y tenes la capacidad de hacerlo, no te va a costar nada el Clipper y vas a terminar antes, porque te olvidas de los problemas de bajo nivel del C.
    Quizá en C la performance sea un poco mayor, pero en mi opinión no se justifica ya que la performance de Clipper o FoxPro es mas que adecuada para este tipo de aplicaciones.
    Sep , me recomendaron varios lo mismo.-

    Bue, cambio el pedido , alguna URL de donde pueda bajar algun buen PDF sobre FoxPro?

    Si pueden agregar alguna URL de donde bajar el software (Clipper o Fox Pro) mejor
      • 1,149
      • mensajes
      • miembro desde
      • 11/02/02
    29/04/2003
    #7

    che... en c no es tan jodido...
    imaginate un file que en cada linea tiene:
    "COD|DESC|CANT|P/U"

    tonces vos haces:

    Código:
    #include <stdio.h>
    #include <string.h>
    #include <alloc.h> // para el realloc/free...puede q sea stdlib.h...depende...
    
    typedef struct {
        char deleted; // esto es IMPORTANTE ya que como es un vector, si borramos una entrada simplemente
                      // la MARCAMOS como borrada... y cuando grabemos el file, la omitiremos.
        int cod; // o long, whatever u need
        char desc[100]; // again, aca pone la longitud maxima... poner * es mas laburo al pedo
        int cant; // o long
        float price; // o double
    } item;
    
    item *items;
    int cant_items=0;
    
    int LoadItems(const char *dbpath)
    {
        FILE *db;
        char line[200]; // modificar longitud si se modifican los tamaños de la entrada, OJO
        char *pos;
    
        db = fopen(dbpath,"rt");
        if (db==NULL)
            return 0;
        while (!feof(db))
        {
            items=(item *)realloc(items,sizeof(item)*++cant_items);
            items[cant_items-1].deleted=0;
            fgets(line, sizeof(line), db);
            sscanf(line,"%d|",&items[cant_items-1].cod);
            pos=strchr(line,'|');
            strncpy(items[cant_items].desc,line,pos-line);
            sscanf(pos,"|%d|%f",&items[cant_items-1].cant,&items[cant_items-1].price);
        }
        fclose(db);
        return 1;
    }
    
    void UnloadItems()
    {
        free(items);
        cant_items=0;
    }
    ahora el resto de las funciones son faciles...
    para borrar buscas secuencialmente (ignorando los items[n].deleted==1) y seteas DELETED en 1

    para agregar copias la linea realloc de arriba, y despues asignas los valores correspondientes

    para buscar, usa busqueda secuencia, ya q no tenes otra a menos que ordenes los elems... si ordenas por codigo, podes usar busqueda binaria...

    si queres INSERTAR elementos, estas en problemas porque tenes que reallocar y mover todos los elemenos para abajo... es medio hincha y tardas "n"...
    pero si queres tener todo ordenado podes hacer un qsort despues de cargar y por cada elemento q agreges recorres secuencialmente y buscar donde iria, y lo insertas... 2n... es mejor q reordenar cada vez (n log n)...
    qsort tenes la de la stdlib.h , tenes q hacerte una funcion de comparacion, y eso es una pavada ya q solo compararias los codigos... eso si... estarias ordenando los elementos deleteados, pero we...

    otra funcion q podrias tener es la de compactar, es decir, rearmar el vector quitando los elementos eliminados.. para esto podrias swapear cada elemento eliminado con el elemento no eliminado que este lo mas abajo posible... cuando termines, te quedaron todos los elementos eliminados abajo y podes reallocar quitandolos...

    y por ultimo la funcion para grabar, q consiste en recorrer secuencialmente y todos los no deleteados los grabas al file, acordandote de insertar los "|"...

    we eso es todo, y ya tenes tu "motor de base de datos" en c, andando sin problemas... suerte

    nota: quiza te convega cambiar la estructura a lista enlazada o doblemente enlazada... en especial si queres insertar mucho... pero tendrias q modificar el codigo de carga, armarte las clases necesarias, y codearte vos mismo una implementacion de qsort o algun otro sort q quieras para listas...

    K
      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    29/04/2003
    #8

    UUUUUUUUH MANNNNNNNNNNNNNN

    Justo lo que estaba buscando !!!!!!!!!!!!

    La verdad que el tema de los punteros en los file´s se me estaban complicando un poco ....

    [GLOW=WHITE] IMPECABLE LO SUYO Sr. Kremar. [/GLOW]

      • 1,149
      • mensajes
      • miembro desde
      • 11/02/02
    29/04/2003
    #9

    fiate si el codigo te funca, ya q lo hise a ojo y no lo probe...

    suerte

      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    29/04/2003
    #10
    Publicado por Kremar
    fiate si el codigo te funca, ya q lo hise a ojo y no lo probe...

    suerte
    Ok. directamente lo copio y lo pego.-

    Igualmente , si hay algun error , me fijo que puedo hacer antes de molestarte.-

    Si me aguantás 5 minutos te contesto ahora
123 ... Último
IR ARRIBA