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

Herramientas a usar para el desarrollo del Cajero ALTERNABAN

0 comentarios

Base de datos orientada a objetos


MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB desde enero de 2008 una  subsidiaria de Sun Microsystems y esta a su vez de Oracle Corporation desde abril de 2009 desarrolla MySQL como software libre en un esquema de licenciamiento dual.
Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.

Herramienta a usar:
Oficialmente se decidió que para el desarrollo del cajero se utilizara el Manejador de Base de Datos MySQL  el cual es un software gratuito.


Entorno de Desarrollo Grafico
Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse). Sin embargo, también se puede usar para otros tipos de aplicaciones cliente, como BitTorrent Azures.

Herramienta a usar:
En cuanto a la interfaz grafica la empresa usara Eclipse, se empezara a interactuar con el mediante pequeñas pruebas aunque por recomendación se debe usar cuando el código y la base de datos del programa este lista.


Como Realizar impresiones en libretas Bancarias
            Se encontró que la única forma es con una impresora especial para eso, sin embargo se buscaran los comandos de interacción o ejecución entre C++ y una impresora común para imprimir los resultados de los procesos que se realicen en el programa.

Inicio del proyecto

0 comentarios

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.

Por cada cuenta se debe tener los siguientes datos:

Número de Cuenta (21 dígitos alfanuméricos)

Clave (de 4 a 6 dígitos alfanuméricos)

Nombre del Titular de la Cuenta

Se desarrollara un programa que muestre y ejecute todas las funciones que a continuación se describen mostrando los resultados de las operaciones realizadas por medio de la pantalla

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

· Pago de servicios públicos.

· Pago de resumen de Cuenta tarjetas de Crédito.

· 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.

· Agregarle las Entradas/Salidas extras que se consideren necesarias para definir óptimamente las funciones del cajero.