Ayuda para que siempre encuentres lo que buscas!

Conocimientos previos:

Necesitamos :
  • Aplicación de conexión a MySql por medio de conector Connector/ODBC
  • Pagina de descarga: http://www.mysql.com/downloads/connector/
  • Tener activo la aplicación “Orígenes de datos ODBC”
  • Entorno de trabajo Win 7 (para este tutorial, funciona también con Xp)
  • Matlab 2009 o 2010a/b
Entorno de Problema

Debemos implementar una calculadora que realize sumas, restas, multiplicacion y division y que los resultados de estas operaciones se guarden en una base de datos que en este caso sera una base creada en Mysql

Propuesta de Solucion

Lo que proponemos es una calculadora simple y en modo texto, claro que con el conocimiento adquirido por este solucion sera de utilidad para la implementacion grafica que es solamente la creacion de los botones y demas opciones graficas que se conectaran a lo que se tenga en modo texto.

Antes de empezar a desgranar el codigo de matlab, hay que ver que es lo que realmente hace para que no perdais el tiempo en un codigo que no os interesara.

Pues bien

Menu principal

en la primera figura podeis visualizar el menu principal de la aplicacion en matlab, sus 4 opciones de operaciones basicas que al ser accesada por el numero que  las presede, ademas de una 5ta opcion que es el resumen el cual nos dara el listado de resultados guardados en la base de datos por cada operacion dada (ver figura 2)

podemos decir tambien que este programa o script como se le llama a los codigos de matlab es muy simple, pues solamente pide uno a uno los valores a evaluar( limite de 2 variables numericas a evaluarse) al hacer la suma o resta u otra operacion el resultado lo mostrara en pantalla y mandara este mismo valor a la base de datos de Mysql.

para la figura 2 este menu se  base en pedir de la base de datos de Mysql los datos grabados por el primer menu (figura 1) segun lo que se requiera, esto es, solo mostrara los valores que fueron grabados en digamos suma y si quiere verse los grabados en resta debera ser accesado de nuevo en el menu para ver el siguiente valor de busqueda, estas busquedas las mostrara en pantalla (modo texto)

La descarga

DESCARGA EL SCRIPT

el codigo
Os recuerdo que al pegarlo este codigo en wordpress pues se desformatio de algunos caracteres que matlab usa y que al volverlo a copiar les dara algunos errores que deberan arreglar, pero os aconsejo mejor descargar el punto m de arriba o descargar este archivo de word calculadora, por tiempo no os podre explicar paso a paso el codigo, pero os aseguro que lo entenderan, que rayos!, la primeras 2 lineas son vairables que defini porque me daban problemas los ciclos while y debian ser inicializados a 0 sus variables de retorno, los demas codigos  son el encabezado que el querybuilder crea para configurar la base de datos(si no teneis el conector obdc, ni una base de datos en mysql, dificilmente les correra).
pese a que el codigo no les correra en la etapa de peticion a la base de datos, el programa es 100% funcional si:
  1. tienen el conector obdc ver: https://vertigo2040.wordpress.com/2011/01/13/conexion-de-mysql-en-matlab/
  2. tienen una base de datos que tenga las tablas suma, resta, multiplicacion y division ver: https://vertigo2040.wordpress.com/2011/01/01/creando-una-base-de-datos-en-mysql/
  3. tener Xammp activado

de otra manera solo sera de referencia para ver como se graba hacia la base de datos y como se pide datos de esta para mostrarla en matlab

opcion = 0;
opcion2=0;
encabezado de configuraciones de query builder para trabajar con el conector obsc para mysql
% Set preferences with setdbprefs.
s.DataReturnFormat = ‘cellarray’;
s.ErrorHandling = ‘store’;
s.NullNumberRead = ‘NaN’;
s.NullNumberWrite = ‘NaN’;
s.NullStringRead = ‘null’;
s.NullStringWrite = ‘null’;
s.JDBCDataSourceFile = ”;
s.UseRegistryForSources = ‘yes’;
s.TempDirForRegistryOutput = ‘C:\Users\sonia\AppData\Local\Temp’;
s.DefaultRowPreFetch = ‘10000’;
setdbprefs(s)
% Make connection to database.  Note that the password has been omitted.
% Using ODBC driver.
%conn = database(‘127.0.0.1′,”,’password’);
prime while o ciclo, este es el menu
while opcion ~= 6
clc
fprintf(‘1. Suma \n’);
fprintf(‘2. Resta \n’);
fprintf(‘3. Multiplicacion \n’);
fprintf(‘4. Division \n’);
fprintf(‘5. Resumen \n’);
fprintf(‘6. Salir \n’);
opcion=input(‘Elija opcion  ‘);
switch opcion
case 1
x=input(‘Ingrese primer numero  ‘);
y=input(‘Ingrese segundo numero  ‘);
S1=x+y;
fprintf(‘La suma es: %f \n’,S1);
%se conecta a la base de datos por el conector obdc
conn = database(‘127.0.0.1′,”,’password’);
% Write data to database. escribe los datos a la base
insert(conn,’suma’,{‘Suma’},S1)
% Close database connection. cierra la coneccion
close(conn)
pause();
case 2
x=input(‘Ingrese primer numero  ‘);
y=input(‘Ingrese segundo numero  ‘);
S1=x-y;
fprintf(‘La diferencia es: %f \n’,S1);
conn = database(‘127.0.0.1′,”,’password’);
% Write data to database.
insert(conn,’resta’,{‘resta’},S1)
% Close database connection.
close(conn)
pause();
case 3
x=input(‘Ingrese primer factor  ‘);
y=input(‘Ingrese segundo factor  ‘);
S1=x*y;
fprintf(‘El producto es: %f \n’,S1);
conn = database(‘127.0.0.1′,”,’password’);
% Write data to database.
insert(conn,’multiplicacion’,{‘multiplicacion’},S1)
% Close database connection.
close(conn)
pause();
case 4
x=input(‘Ingrese dividendo  ‘);
y=input(‘Ingrese divisor  ‘);
S1=x/y;
fprintf(‘La suma es: %f \n’,S1);
conn = database(‘127.0.0.1′,”,’password’);
% Write data to database.
insert(conn,’division’,{‘division’},S1)
% Close database connection.
close(conn)
pause();
case 5
while opcion2 ~= 5
clc
fprintf(‘indique cual resumen ver\n’);
fprintf(‘1. Suma \n’);
fprintf(‘2. Resta \n’);
fprintf(‘3. Multiplicacion \n’);
fprintf(‘4. Division \n’);
fprintf(‘5. Salir \n’);
opcion2=input(‘Elija opcion  ‘);
switch opcion2
case 1
conn = database(‘127.0.0.1′,”,’password’);
% Read data from database.
e = exec(conn,’SELECT ALL Suma FROM suma’);
e = fetch(e);
close(e)
% Assign data to output variable.
A = e.Data
pause();
% Close database connection.
close(conn)
case 2
conn = database(‘127.0.0.1′,”,’password’);
% Read data from database.
e = exec(conn,’SELECT ALL Resta FROM resta’);
e = fetch(e);
close(e)
% Assign data to output variable.
A = e.Data
pause();
% Close database connection.
close(conn)
case 3
conn = database(‘127.0.0.1′,”,’password’);
% Read data from database.
e = exec(conn,’SELECT ALL Multiplicacion FROM multiplicacion’);
e = fetch(e);
close(e)
% Assign data to output variable.
A = e.Data
pause();
% Close database connection.
close(conn)
case 4
conn = database(‘127.0.0.1′,”,’password’);
% Read data from database.
e = exec(conn,’SELECT ALL Division FROM division’);
e = fetch(e);
close(e)
% Assign data to output variable.
A = e.Data
pause();
% Close database connection.
close(conn)
case 5
opcion2=5;
otherwise
fprintf(‘Gracias..Adios  \n’);
end
end
otherwise
fprintf(‘Gracias..Adios  \n’);
end
end
Anuncios