Reestructuracion de la Empresa

0 comentarios
Por motivos ajenos a mi persona la compañia ALTERNABAN pasa a llamarse Prototipos Incorporated.
De esta manera sera presentado en la ponencia del día 24/11/2010 en el Núcleo Universitario Rafael Rangel, igualmente le cajero se sigue llamando ALTERNABAN
                                  Filial de la Compañia

Terminando el Programa

0 comentarios
El programa esta casi culminado lo único que faltaba es realizar la comparación de datos que introduzca el usuario con c++, lamentablemente esto no se pudo lograr así que solo se presentara lo que funcione ya que esto era muy necesario, igualmente no se le pudo realizar la interfaz gráfica ya que se necesitaba tener el código listo.
Se espera mostrar algo bueno que le guste al jurado pero que sobretodo funcione para de esta forma demostrar lo que se aprendió en un semestre de clases con la Profesora Yaneth Moreno.

Suerte y Exitos a todos mis Colegas.

Cambio de versión del SO

0 comentarios
Por motivos de accesibilidad y manejo inmediato de código, se cambio la versión del SO de Ubuntu 8.04 LTS 
a Ubuntu 10.04.
 Se aclara que nos e generaron problemas por este cambio, al contrario se optimizo el uso de base de datos que no se podia realizar en la anterior versión.

Codigo Para la conexion de C++ con MySQL

0 comentarios
La empresa Agustin Company facilito por medio de su blog un codigo para esta conexion:

#include cstring> // lo colocan entre < > 
#include "/usr/include/mysql/mysql.h"

   MYSQL *mysql;

   system("ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock");

   mysql = new MYSQL;

   if (!mysql_init(mysql)){
       cerr<<"Init : "<< mysql_error(mysql);
    }
   mysql = mysql_real_connect(mysql,"localhost",user,pass,"conocimiento",0,NULL,0);  //Enlazando base de datos

//REALIZANDO UNA CONSULTA
    MYSQL_RES *res;
    MYSQL_ROW row;
   string SQL;

    SQL = "SELECT * FROM pregunta";

    mysql_real_query(mysql,SQL.c_str(),SQL.length());
    res = mysql_store_result(mysql);

    while ((row = mysql_fetch_row(res)))
    {
        cout << row[0] << " " << row[1] <<  endl;
    }

//PARA COMPILAR
g++ -o nombre_ejecutable   nombre_archivo.cpp   -I/usr/include/mysql/     -L/var/lib/mysl -lmysqlclient

Este código en mi particular no funciono.
Así que busque otro para probar si funcionaba la conexión, y el resultado exitoso es el siguiente:

#include
#include
#include
using namespace std;

int main() {
   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;


   conn = mysql_init(NULL);

   /* Connect to database */
   if (!mysql_real_connect(conn,"host","usuario","clave","nombre de la base de datos", 0,NULL,0)) {
      cout<<(stderr, "%s\n", mysql_error(conn));
      return(1);
   }

   /* send SQL query */

   if (mysql_query(conn, "show tables")) { //donde dice show tables se sustituye por lo que se quiera ver de la base de datos
      cout<<(stderr, "%s\n", mysql_error(conn));
      return(1);
   }


res = mysql_use_result(conn);

   /* output table name */
   cout<<("MySQL Tables in database:\n")<
   while ((row = mysql_fetch_row(res)) != NULL)
      cout<<("%s \n", row[0])<

   /* close connection */
   mysql_free_result(res);
   mysql_close(conn);
return 0;
}


Interacciones con Eclipse

0 comentarios
             Se intento interactuar con Eclipse de una forma básica, ya que solo contaba con la introducción al tutorial de Eclipse y solo se trabajo con el Entorno de Proyectos de Eclipse centrado específicamente en Java:

No solo se trabajo con Eclipse, también con el manejador de bases de datos MySQL bajando manuales en los que explicaba como usar el programa logrando ver que versión se había instalado y se crearon bases de datos sencillas, agregaron tablas y quedo pendiente la forma en que se insertan los datos, todo esto a modelo de prueba del programa:





Aparte de haber interactuado con las herramientas a usar en el desarrollo del programa, se realizo en modo diagrama de flujo de que manera estará estructurado el Cajero. Se espera que todo se logre.




Plan de Trabajo Grafico

0 comentarios
Este es el plan de trabajo que se pensaba cumplir lamentablemente por múltiples razones so le logro completamente ni en las fechas propuestas, pero sirvió como orientación de los pasos que debía seguir.

Plan de Trabajo

0 comentarios
Introducción y Antecedentes
Modelar el funcionamiento de un cajero automático ya sea retiros, consultas de saldo, entre otros. El objetivo principal es el de definirlas funciones básicas de un cajero automático, así como también las operaciones de mantenimiento de cuentas bancarias.
El programa debe ser capaz de
• Realizar retiros con diferentes opciones de cantidades a retirar de la cuenta bancaria o tarjeta de crédito.
• Realizar depósitos, ya sea en efectivo o por medio de cheques.
• Mostrar en pantalla el saldo de la cuenta después de realizar depósitos, retiros o consultas de saldo.
• Actualización de la libreta de ahorros ya sea mostrado por pantalla o si es posible impreso.
• Cambio u obtención de contraseñas olvidadas
• Reflejar todos los cambios ocurridos antes de finalizar el programa, archivo que se deberá guardar ordenado ascendentemente por saldo de la cuenta.


• Metas y objetivos (resultados)

Se tiene como meta generar el modelado de las funciones de un cajero automático, sin embargo derivándose de esta meta se presenta o se persigue el objetivo de recrear solo las funciones básicas de un cajero así como intentar producir la impresión del ticket como en un cajero común, todo esto dependerá de si se encentra el comando adecuado para hacer esto y la impresora.


• Recursos e impedimentos (aportaciones)
Se presentan distintos recursos como el tener ya el Sistema Operativo en el que se va a desarrollar el programa instalado en la computadora central de la empresa (Ubuntu), diferentes herramientas de programación tanto de su parte interna como el editor de textos “vim”, el compilador g++, el programa para la creación y diseño de las bases de datos, y su parte externa en cuanto a lo que se vera en la pantalla usando la herramienta de programación Java.
Pero a pesar de tener la mayoría de las herramientas a usarse se presenta el problema de que algunos manuales de estos programas son algo complejos, la empresa no posee Internet fijo solo de algunos lugares en los que se puede conectar la computadora central de la empresa, los cuales no siempre están disponibles.
De igual forma a pesar de los distintos impedimentos en cuanto a la realización del proyecto se están buscando mejoras para solventar los problemas que la empresa presenta como la búsqueda de mejores manuales y realizar ejercicios para optimizar el aprendizaje en las distintas herramientas a usarse.



• Estrategia y acciones (de las aportaciones a los resultados)

Una buena estrategia seria usar e implementar los manuales encontrados en lo posible, identificar en que parte del programa se van a usar las herramientas aportadas u obtenidas, para que al final teniendo en cuenta todo esto tomar acción en cuanto a ir diseñando el programa para de esta forma cumplir un cronograma de actividades óptimo y tener el desarrollo del software en el periodo previsto de tiempo.



• Apéndices (presupuesto, calendario y otros)
En cuanto al presupuesto del proyecto se dice que es poco pero de igual forma el desarrollo de este software no requiere el uso de grandes cantidades de dinero ya que las herramientas ya se poseen y los costos adicionales se aspiran sean mínimos, de igual forma se debe desarrollar un plan de trabajo o cronograma de actividades que en este caso seria semanal a partir de la semana del 19/07/2010:

Comando en C++ para mandar a imprimir directo a una impresora

0 comentarios
En cuanto a un comando específico encontré que hasta ahora no se conoce,, sin embargo, encontré varios ejemplos de cómo hacerlo, los ejecute pero no me funcionaron, estos son:
• cprintf("Hello world");
• fprintf(stdprn,"hola mundo\n\r");
• lpr archivos
• Envía peticiones de impresión a una impresora (BSD, Linux)
• -P impresora
• Selecciona una impresora para imprimir.
• -m
• Envía correo al usuario al término de la impresión
• lpq
• Muestra información de estado de la cola de impresión (BSD, Linux)
• -P
• Selecciona una impresora en particular

También apareció una opción para impresoras por puerto LPT1, pero no lo pude probar porque tengo es impresora por USB, de igual forma se anexa el ejemplo:
Código
#include

ofstream impresora;
impresora.open ("LPT1");

sentencias;

impresora.close();



Otro Ejemplo:
## Printer and parallel port settings
# Print commands to use for LPT1, LPT2 and LPT3.
# Default: "lpr -l", "lpr -l -P lpt2", and "" (disabled)
# Which means: use the default print queue for LPT1, "lpt2" queue for LPT2.
# "-l" means raw printing mode (no preprocessing).
$_lpt1 = "lp -c -d oki"
# $_lpt2 = "lpr -l -P lpt2"
# $_lpt3 = ""
# idle time in seconds before spooling out. Default: (20)
$_printer_timeout = (5)

Otros Comandos
• Función popen() para llamar a la función lpr del sistema operativo. Esta llamada permite ir pasando desde código el texto que queremos imprimir.
• Función system() para llamar a la función lpr del sistema operativo. Esta llamada permite únicamente imprimir un fichero existente.
La primera forma de imprimir consiste en usar la función popen() para abrir el comando de imprmir lpr (linux) o lp (solaris) como de escritura. Una vez abierto, todo lo que escribamos en el descriptor de fichero devuelto por popen(), saldrá por la impresora.
Básicamente la secuencia de funciones de C sería
File *impresora = popen ("lpr", "w");
...
fprintf (impresora, "Linea a imprimir número %d\n", contadorLineas);
...
pclose (impresora);

La segunda forma, que es la que utilizaba hasta ahora, es escribir el texto en un fichero cualquiera y luego, con la función de C system(), ejecutar un comando lpr (de linux) o lp (de solaris).

La secuencia de funciones en C sería más o menos
File *ficheroTemporal = fopen ("/tmp/ParaImprimir", "w");
...
fprintf (ficheroTemporal, "Linea a imprimir número %d\n", contadorLineas);
...
fclose (ficheroTemporal);
...
system ("lpr /tmp/ParaImprimir");


Se publican para uso de cualquier otro usuario, o para uso de cualquier otro proyecto propio