Vous êtes sur la page 1sur 25

INSTITUTO POLITECNICO

NACIONAL
Unidad Profesional Interdisciplinaria en Ingeniera y
Tecnologas Avanzadas.

PROYECTO:
Dise
no e Implementaci
on de una M
aquina
Expendedora Virtual.

EQUIPO 11:
Arteaga Gaona Guillermo.
Devars Caballero Enrique.
Rangel Acosta Jessica Esmeralda.

Programacion Estructurada.
Profra. Maricela Serrano Fragoso.

Mexico D.F. a 3 de Diciembre del 2015.

Indice
1. Objetivos.
1.1. Objetivo General. . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Objetivo Especfico. . . . . . . . . . . . . . . . . . . . . . . .

2
2
2

2. Introducci
on.

3. Situaci
on actual.

4. Justificaci
on.

5. Investigaci
on y Desarrollo.
5.1. M
aquinas Expendedoras. . . . . . . . . . . . .
5.1.1. Tipos de Maquinas Expendedoras. . .
5.1.2. Ventajas y Desventajas. . . . . . . . .
5.2. Bases de Datos. . . . . . . . . . . . . . . . . .
5.2.1. Caractersticas de una Base de Datos.
5.2.2. Ventajas en el uso de Bases de Datos.
5.2.3. Microsoft SQL Server. . . . . . . . . .
5.3. Lenguaje de programacion C Sharp. . . . . .
5.3.1. Clases y Objetos en C Sharp. . . . . .
5.3.2. Metodos en C Sharp. . . . . . . . . . .
5.3.3. Microsoft Visual Studio. . . . . . . . .
5.4. C
odigo Fuente en C Sharp. . . . . . . . . . .
5.4.1. pantalla-logeo.cs . . . . . . . . . . . .
5.4.2. pantalla-menu.cs . . . . . . . . . . . .
5.4.3. Pantalla-comprar.cs . . . . . . . . . .
5.5. Procesos. . . . . . . . . . . . . . . . . . . . .
5.5.1. consultar-papas.sql . . . . . . . . . . .
5.5.2. INGRESAR.sql . . . . . . . . . . . . .
5.5.3. ACTUALIZAR-PAPAS.sql . . . . . .
5.6. Capturas de Pantalla. . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

4
4
4
4
5
5
5
7
8
8
9
10
12
12
14
15
18
18
18
19
20

6. Conclusiones.
22
6.1. Conclusiones Personales. . . . . . . . . . . . . . . . . . . . . . 22
7. Trabajos Futuros.

23

8. Bibliografa.

24

1.
1.1.

Objetivos.
Objetivo General.

Al termino de este proyecto se habra implementado un programa en


lenguaje C# que servir
a para operar un circuito electronico funcional.

1.2.

Objetivo Especfico.

Dise
no e implementaci
on de una maquina expendedora virtual a base de
creditos electr
onicos programada en C# .

2.

Introducci
on.

Actualmente, el efectivo se ha visto reemplazado por el uso de las tarjetas


de credito. Su pragmatismo y facilidad de uso son algunas de las razones
por las cuales este metodo de pago es tan popular, ademas de disminuir
la inseguridad que sufren los usuarios diariamente al portar efectivo. Los
bancos le asignan al cliente un lmite de credito el cual puede ser usado a su
conveniencia, el usuario decide la forma en la que puede pagar el dinero que el
banco le ha prestado. En caso de que el usuario no tenga el dinero suficiente
para pagar, el banco ir
a generando cierta cantidad de intereses. Navegando
en la Internet podemos encontrar un sinfn de paginas en donde podemos
comprar productos y servicios de todo tipo utilizando dinero virtual. Algunas
ventajas de esta nueva modalidad de compra es que se encuentra disponible
las 24 horas del da, lo pueden entregar directamente en la puerta de nuestra
casa y as evitamos las largas filas y distancias que tenemos que recorrer para
realizar la transacci
on.

3.

Situaci
on actual.

A pesar de la desconfianza que senta la poblacion hacia las compras online, es evidente que su uso se ha ido incrementando debido a lo sencillo que
es comprar y que en algunos sitios las transacciones que se realizan entre el
cliente y vendedor pueden facilitarse mediante monedas virtuales, tales como BitCoin (el medio principal de intercambio online), LEOcoin, litecoins y
peercoin, las cuales, por estar realizadas en un medio electronico, le brindan
al usuario mayor privacidad y flexibilidad entre movimientos monetarios.
Nuestro prop
osito en este proyecto sera adecuar una maquina expendedora
al mundo virtual, ofreciendo varios tipos de productos, los cuales podran
ser comprados y posteriormente descontados de los creditos monetarios del
cliente. En caso de que este no cuente con la cantidad suficiente, se descontar
an en cuanto se le deposite dinero en movimientos posteriores.

4.

Justificaci
on.

Tal y como todos hemos sido testigos, durante los u


ltimos a
nos, el uso
del software y sistemas de informacion en general han tenido un crecimiento vertiginoso, esto debido a la eficiencia con la que se pueden aplicar a
casi todas las
areas en las que los humanos nos involucramos, permitiendo
realizar todo tipo de tareas de una manera mas sencilla, rapida, comoda y
principalmente, barata. Por esa razon, hemos tomado la decision de desarrollar un software que cumpla los objetivos que anteriormente hemos citado.
El lenguaje de programaci
on C#, que es orientado a objetos, nos permitira
desarrollar de una manera mas eficaz los elementos necesarios para nuestro programa. Adem
as, de que su estructura versatil nos permite unirlo con
una base de datos para garantizar que toda la informacion que maneje el
software pueda ser administrada correctamente. Todo esto sera explicado
detalladamente en la siguiente seccion.

5.

Investigaci
on y Desarrollo.

5.1.

M
aquinas Expendedoras.

La m
aquina expendedora es una maquina que proporciona aperitivos,
bebidas, golosinas y otros productos a los consumidores. Se trata de vender
sin la presencia de un dependiente para cobrar los artculos. Periodicamente
un empleado repone el producto y recoge el dinero en forma de monedas o,
menos habitualmente, billetes; a veces tambien se puede pagar con tarjeta
monedero, tarjeta de credito o telefono m
ovil.
Las posibilidades de las maquinas expendedoras son amplias. Normalmente suelen vender refrescos, cafe, comida, chucheras, etc. Pero tambien
existen modelos dise
nados para vender prensa, libros, sellos de correos, billetes del transporte p
ublico, bebidas alcoholicas, cigarrillos de tabaco, tambien
son frecuentes, en las oficinas que atienden al p
ublico, las maquinas expendedoras de un impreso peque
no con el n
umero de turno del solicitante.
5.1.1.

Tipos de M
aquinas Expendedoras.

Mec
anicas. Aquellas en que todo su funcionamiento es mecanico, sin
intervenci
on de ning
un mecanismo electrico o electronico. Son maquinas sencillas, pr
acticamente en desuso por las limitaciones que presentan.
Electr
onicas. Cuentan con componentes electronicos para su funcionamiento y necesitan de energa electrica.
5.1.2.

Ventajas y Desventajas.

Entre las muchas ventajas de las maquinas expendedoras, destacan el


que trabajan las 24 h los 365 das del a
no, no necesitan personal cualificado
ni atenci
on personalizada, no se requiere contratacion de personal para su
explotaci
on, no requiere largas horas de trabajo, solo unas pocas horas de
limpieza, recarga y recaudacion, por lo que este negocio es perfectamente
compatible con cualquier otro trabajo. No se necesita una gran inversion para iniciar un negocio, no se pagan canones ni royalties para su explotacion,
son f
acilmente amortizables y generan beneficios rapidamente dependiendo
de la capacidad inversora que se tenga, a mas maquinas mas beneficios.

Otra de las ventajas de las maquinas expendoras es la movilidad. En


funci
on de los resultados que se obtenga, la maquina se puede cambiarse de
sitio ya que el emplazamiento lo es todo, no hay vendedor y es el consumidor
el que decide si en ese momento quiere adquirir un producto.

5.2.

Bases de Datos.

Se define una base de datos como una serie de datos organizados y relacionados entre s, los cuales son recolectados y explotados por los sistemas
de informaci
on de una empresa o negocio en particular.

5.2.1.

Caractersticas de una Base de Datos.

Entre las principales caractersticas de los sistemas de base de datos


podemos mencionar:
Independencia l
ogica y fsica de los datos.
Redundancia mnima.
Acceso concurrente por parte de m
ultiples usuarios.
Integridad de los datos.
Consultar complejas optimizadas.
Seguridad de acceso y auditora.
Respaldo y recuperacion.
Acceso a traves de lenguajes de programaci
on est
andar.
5.2.2.

Ventajas en el uso de Bases de Datos.

Control sobre la redundancia de datos: Los sistemas de ficheros


almacenan varias copias de los mismos datos en ficheros distintos. Esto
hace que se desperdicie espacio de almacenamiento, ademas de provocar la falta de consistencia de datos. En los sistemas de bases de datos
todos estos ficheros estan integrados, por lo que no se almacenan varias
copias de los mismos datos. Sin embargo, en una base de datos no se
puede eliminar la redundancia completamente, ya que en ocasiones es
necesaria para modelar las relaciones entre los datos.
5

Consistencia de datos: Eliminando o controlando las redundancias


de datos se reduce en gran medida el riesgo de que haya inconsistencias.
Si un dato est
a almacenado una sola vez, cualquier actualizacion se
debe realizar s
olo una vez, y esta disponible para todos los usuarios
inmediatamente. Si un dato esta duplicado y el sistema conoce esta
redundancia, el propio sistema puede encargarse de garantizar que
todas las copias se mantienen consistentes.
Compartir datos: En los sistemas de ficheros, los ficheros pertenecen
a las personas o a los departamentos que los utilizan. Pero en los
sistemas de bases de datos, la base de datos pertenece a la empresa y
puede ser compartida por todos los usuarios que esten autorizados.
Mantenimiento de est
andares: Gracias a la integracion es mas
f
acil respetar los est
andares necesarios, tanto los establecidos a nivel
de la empresa como los nacionales e internacionales. Estos estandares
pueden establecerse sobre el formato de los datos para facilitar su
intercambio, pueden ser estandares de documentacion, procedimientos
de actualizaci
on y tambien reglas de acceso.
Mejora en la integridad de datos: La integridad de la base de
datos se refiere a la validez y la consistencia de los datos almacenados.
Normalmente, la integridad se expresa mediante restricciones o reglas
que no se pueden violar. Estas restricciones se pueden aplicar tanto a
los datos, como a sus relaciones, y es el SGBD quien se debe encargar
de mantenerlas.
Mejora en la seguridad: La seguridad de la base de datos es la
protecci
on de la base de datos frente a usuarios no autorizados. Sin
unas buenas medidas de seguridad, la integracion de datos en los sistemas de bases de datos hace que estos sean mas vulnerables que en
los sistemas de ficheros.
Mejora en la accesibilidad de los datos: Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten
al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea
necesario que un programador escriba una aplicacion que realice tal
tarea.
Mejora en la productividad: El SGBD proporciona muchas de las
funciones est
andar que el programador necesita escribir en un sistema
de ficheros. A nivel b
asico, el SGBD proporciona todas las rutinas de
6

manejo de ficheros tpicas de los programas de aplicacion. El hecho


de disponer de estas funciones permite al programador centrarse mejor en la funci
on especfica requerida por los usuarios, sin tener que
preocuparse de los detalles de implementacion de bajo nivel.
Mejora en el mantenimiento: En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de
aplicaci
on que los manejan. Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un
cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados. Sin embargo,
los SGBD separan las descripciones de los datos de las aplicaciones.
Esto es lo que se conoce como independencia de datos, gracias a la
cual se simplifica el mantenimiento de las aplicaciones que acceden a
la base de datos.
Aumento de la concurrencia: En algunos sistemas de ficheros, si
hay varios usuarios que pueden acceder simultaneamente a un mismo
fichero, es posible que el acceso interfiera entre ellos de modo que se
pierda informaci
on o se pierda la integridad. La mayora de los SGBD
gestionan el acceso concurrente a la base de datos y garantizan que no
ocurran problemas de este tipo.
Mejora en los servicios de copias de seguridad: Muchos sistemas
de ficheros dejan que sea el usuario quien proporcione las medidas
necesarias para proteger los datos ante fallos en el sistema o en las
aplicaciones. Los usuarios tienen que hacer copias de seguridad cada
da, y si se produce alg
un fallo, utilizar estas copias para restaurarlos.
En este caso, todo el trabajo realizado sobre los datos desde que se
hizo la u
ltima copia de seguridad se pierde y se tiene que volver a
realizar. Sin embargo, los SGBD actuales funcionan de modo que se
minimiza la cantidad de trabajo perdido cuando se produce un fallo.
5.2.3.

Microsoft SQL Server.

SQL Server es un sistema de gestion de bases de datos relacionales


(RDBMS) de Microsoft que esta dise
nado para el entorno empresarial. SQL
Server se ejecuta en T-SQL (Transact -SQL), un conjunto de extensiones
de programaci
on de Sybase y Microsoft que a
naden varias caractersticas a
SQL est
andar, incluyendo control de transacciones, excepcion y manejo de

errores, procesamiento fila, as como variables declaradas. Se utilizara este


gestor para dise
nar e implementar la base de datos del software a desarrollar.

Figura 1: SQL Server en ejecucion.

5.3.

Lenguaje de programaci
on C Sharp.

C# es un lenguaje de programacion orientado a objetos desarrollado y


estandarizado por Microsoft como parte de su plataforma .NET, que despues
fue aprobado como un est
andar por la ECMA (ECMA-334) e ISO (ISO/IEC
23270). C# es uno de los lenguajes de programacion dise
nados para la infraestructura de lenguaje com
un. Su sintaxis basica deriva de C/C++ y utiliza
el modelo de objetos de la plataforma .NET, similar al de Java, aunque
incluye mejoras derivadas de otros lenguajes.
5.3.1.

Clases y Objetos en C Sharp.

A continuaci
on se presentan algunas especificaciones de C# con respecto
a la programaci
on orientada a objetos:

Una variable de objeto de cierta clase no almacena los valores del


objeto sino su referencia (al igual que Java).
El operador de asignacion no copia los valores de un objeto, sino la
referencia al mismo (al igual que Java).
Un constructor tiene el mismo nombre que su clase y es sintacticamente
similar a un metodo.
Un constructor no devuelve ning
un valor (ni siquiera void).
Al igual que los metodos, los constructores tambien pueden ser sobrecargados.
Si no se especifica un constructor en una clase, se usa uno por defecto
que consiste en asignar a todas las variables el valor 0, null o false
seg
un corresponda.
Cuando un objeto no es referenciado por ninguna variable, el recolector
de basura ejecuta el destructor de dicha clase y libera la memoria
utilizada.
El destructor de una clase no se llama cuando un objeto sale del ambito.
Todos los destructores se llamaran antes de que finalice un programa.
La palabra clave this es una referencia al mismo objeto en el cual se
usa.
La palabra clave base es una referencia a la clase padre del objeto en
la que se usa (por defecto, Object).
La palabra clave static hace que un miembro pertenezca a una clase
en vez de pertenecer a objetos de dicha clase. Se puede tener acceso a
dicho miembro antes de que se cree cualquier objeto de su clase y sin
referencias a un objeto.
5.3.2.

M
etodos en C Sharp.

Todo metodo debe ser parte de una clase, no existen metodos globales
(funciones).

Por defecto, los par


ametros se pasan por valor. (Notese que las listas
y otras colecciones son variables por referencia (referencias al espacio
reservado para esa lista en la pila) y que se pasa por valor al metodo
la referencia, pero el espacio reservado para la lista es com
un, por lo
que si elimina un elemento lo hace tambien de la original).
El modificador ref fuerza a pasar los parametros por referencia en vez
de pasarlos por valor y obliga a inicializar la variable antes de pasar el
par
ametro.
El modificador out es similar al modificador ref, con la diferencia de
que no se obliga a inicializar la variable antes de pasar el parametro.
Cuando ref y out modifican un parametro de referencia, la propia
referencia se pasa por referencia.
El modificador params sirve para definir un n
umero variable de argumentos los cuales se implementan como una matriz.
Un metodo debe tener como maximo un u
nico parametro params y
este debe ser el u
ltimo.Un metodo debe tener como maximo un u
nico
par
ametro params y este debe ser el u
ltimo.
Un metodo puede devolver cualquier tipo de dato, incluyendo tipos de
clase.
Ya que en C# las matrices se implementan como objetos, un metodo
tambien puede devolver una matriz (algo que se diferencia de C++ en
que las matrices no son validas como tipos de valores devueltos).
C# implementa sobrecarga de metodos, dos o mas metodos pueden tener el mismo nombre siempre y cuando se diferencien por sus parametros.
El metodo Main es un metodo especial al cual se refiere el punto de
partida del programa.
5.3.3.

Microsoft Visual Studio.

Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por


sus siglas en ingles) para sistemas operativos Windows. Soporta m
ultiples
lenguajes de programaci
on tales como C++, C#, Visual Basic .NET, F#,
Java, Python, Ruby, PHP; al igual que entornos de desarrollo web como
10

ASP.NET MVC, Django, etc., a lo cual sumarle las nuevas capacidades online bajo Windows Azure en forma del editor Monaco.
Visual Studio permite a los desarrolladores crear sitios y aplicaciones
web, as como servicios web en cualquier entorno que soporte la plataforma
.NET (a partir de la versi
on .NET 2002). As se pueden crear aplicaciones
que se comuniquen entre estaciones de trabajo, paginas web, dispositivos
m
oviles, dispositivos embebidos, consolas, etc. Se utilizara esta IDE para
desarrollar el software.

Figura 2: Visual C# en ejecucion.

11

5.4.

C
odigo Fuente en C Sharp.

A continuaci
on se muestran los codigos fuente en C# de cada una de las
clases realizadas para implementar la maquina expendedora virtual.
5.4.1.
using
using
using
using
using
using
using
using
using
using

pantalla-logeo.cs
System ;
System . C o l l e c t i o n s . G e n e r i c ;
System . ComponentModel ;
System . Data ;
System . Drawing ;
System . Linq ;
System . Text ;
System . Threading . Tasks ;
System . Windows . Forms ;
System . Data . S q l C l i e n t ;

namespace M a q u i n a e x p e n d e d o r a a c r e d i t o
{
public p a r t i a l c l a s s f r m I n i c i o : Form
{
public f r m I n i c i o ( )
{
InitializeComponent () ;
}
S q l C o n n e c t i o n Conexion = n u l l ;
SqlCommand Comando ;
SqlDataReader Dr ;
s t r i n g Str ;
int F i l a s ;

private void b t n I n g r e s a r C l i c k ( o b j e c t s e n d e r , EventArgs


e)
{
try
{
S t r = URL. S t r ;
Conexion = new S q l C o n n e c t i o n ( ) ;
Conexion . C o n n e c t i o n S t r i n g = S t r ;
Comando = new SqlCommand ( spINGRESAR , Conexion )
;
Comando . CommandType = CommandType .
StoredProcedure ;
Comando . Parameters . C l e a r ( ) ;

12

Comando . Parameters . AddWithValue ( @ID ,


t x t U s u a r i o . Text ) ;

Comando . Parameters . AddWithValue ( @CONTRASENA


,
txtContrasen
a . Text ) ;
Comando . Parameters . AddWithValue ( @VALOR ,
cmbEstatus . Text ) ;
Conexion . Open ( ) ;
Dr = Comando . ExecuteReader ( ) ;
F i l a s = Convert . ToInt32 ( Dr . HasRows ) ;
i f ( Dr . Read ( )==true )
{
MessageBox . Show ( BIENVENIDO ! ! ! ,
I n f o r m a t i o n , MessageBoxButtons .OK,
MessageBoxIcon . Warning ) ;
frmMENU most = new frmMENU( ) ;
most . Show ( ) ;
t h i s . Hide ( ) ;
}
else
{
O
MessageBox . Show ( USUARIO,CONTRASENA
ESTATUS INCORRECTOS\nUSUARIO NO
EXISTENTE EN LA BASE DE DATOS , E r r o r ,
MessageBoxButtons .OK, MessageBoxIcon .
Warning ) ;
}
Conexion . C l o s e ( ) ;
Dr . C l o s e ( ) ;
}
catch ( System . E x c e p t i o n ex )
{
MessageBox . Show ( ex . Message , E r r o r ,
MessageBoxButtons .OK, MessageBoxIcon . E r r o r ) ;
}
}
private void f r m I n i c i o F o r m C l o s i n g ( o b j e c t s e n d e r ,
FormClosingEventArgs e )
{
Application . Exit ( ) ;
}
}
}

13

5.4.2.

using
using
using
using
using
using
using
using
using

pantalla-menu.cs

System ;
System . C o l l e c t i o n s . G e n e r i c ;
System . ComponentModel ;
System . Data ;
System . Drawing ;
System . Linq ;
System . Text ;
System . Threading . Tasks ;
System . Windows . Forms ;

namespace M a q u i n a e x p e n d e d o r a a c r e d i t o {
public p a r t i a l c l a s s frmMENU : Form {
public frmMENU( ) {
InitializeComponent () ;
}
private void frmMaquina Load ( o b j e c t s e n d e r , EventArgs e )
{
}
private void frmMaquina FormClosing ( o b j e c t s e n d e r ,
FormClosingEventArgs e ) {
Application . Exit ( ) ;
}
private void b t n C e r r a r C l i c k ( o b j e c t s e n d e r , EventArgs e )
{
f r m I n i c i o MOST = new f r m I n i c i o ( ) ;
MOST. Show ( ) ;
t h i s . Hide ( ) ;
}
private void b u t t o n 2 C l i c k ( o b j e c t s e n d e r , EventArgs e ) {
f r m R e f r e s c o s m o s t r a r = new f r m R e f r e s c o s ( ) ;
m o s t r a r . Show ( ) ;
}
private void b u t t o n 1 C l i c k ( o b j e c t s e n d e r , EventArgs e ) {
frmPapas m o s t r a r = new frmPapas ( ) ;
m o s t r a r . Show ( ) ;
}
}
}

14

5.4.3.
using
using
using
using
using
using
using
using
using
using

Pantalla-comprar.cs
System ;
System . C o l l e c t i o n s . G e n e r i c ;
System . ComponentModel ;
System . Data ;
System . Drawing ;
System . Linq ;
System . Text ;
System . Threading . Tasks ;
System . Windows . Forms ;
System . Data . S q l C l i e n t ;

namespace M a q u i n a e x p e n d e d o r a a c r e d i t o
{
public p a r t i a l c l a s s f r m S a b r i t a s : Form
{
public f r m S a b r i t a s ( )
{
InitializeComponent () ;
}
S q l C o n n e c t i o n Conexion = n u l l ;
SqlCommand Comando ;
SqlDataReader Dr ;
s t r i n g Str ;
SqlTransaction Transaccion = n u l l ;
int Valor Retornado = 0 ;
bool s u c c e s s = f a l s e ;
public void a c t u a l i z a r ( ) {
try
{
S t r = URL. S t r ;
Conexion = new S q l C o n n e c t i o n ( ) ;
Conexion . C o n n e c t i o n S t r i n g = S t r ;
Comando = new SqlCommand ( spCONSULTAR , Conexion
);
Comando . CommandType = CommandType .
StoredProcedure ;
Comando . Parameters . C l e a r ( ) ;
Comando . Parameters . AddWithValue ( @ID , 2 0 0 1 ) ;
Conexion . Open ( ) ;
Dr = Comando . ExecuteReader ( ) ;
i f ( Dr . Read ( ) == true )
{

15

lblNombre . Text = Convert . T o S t r i n g ( Dr [ 1 ] ) ;


l b l C a n t i d a d . Text = Cantidad : + Convert .
T o S t r i n g ( Dr [ 2 ] ) ;
l b l P r e c i o . Text = P r e c i o : $ + Convert .
T o S t r i n g ( Dr [ 3 ] ) + . 0 0 ;
}
Conexion . C l o s e ( ) ;
Dr . C l o s e ( ) ;
}
catch ( System . E x c e p t i o n ex )
{
MessageBox . Show ( ex . Message , E r r o r ,
MessageBoxButtons .OK, MessageBoxIcon . E r r o r ) ;
}
}
private void f r m S a b r i t a s L o a d ( o b j e c t s e n d e r , EventArgs e
)
{
actualizar () ;
}
private void btnComprar Click ( o b j e c t s e n d e r , EventArgs e
)
{
t h i s . L o c a t i o n = new P o i n t ( 0 , 0 ) ;
D i a l o g R e s u l t Pregunta = MessageBox . Show ( D e s e a s
comprar e s t e p r o d u c t o ? , C o n f i r m a c i
on ,
MessageBoxButtons . YesNo ) ;
i f ( Pregunta == D i a l o g R e s u l t . Yes )
{
try
{
S t r = URL. S t r ;
Conexion = new S q l C o n n e c t i o n ( ) ;
Conexion . C o n n e c t i o n S t r i n g = S t r ;
Conexion . Open ( ) ;
T r a n s a c c i o n = Conexion . B e g i n T r a n s a c t i o n (
System . Data . I s o l a t i o n L e v e l . S e r i a l i z a b l e ) ;
Comando = new SqlCommand ( spA PAPAS ,
Conexion , T r a n s a c c i o n ) ;
Comando . CommandType = CommandType .
StoredProcedure ;
Comando . Parameters . C l e a r ( ) ;
Comando . Parameters . AddWithValue ( @ID , 2 0 0 1 )
;

16

SqlParameter ValorRetorno = new SqlParameter


( @Comprobacion , SqlDbType . I n t ) ;
ValorRetorno . D i r e c t i o n = P a r a m e t e r D i r e c t i o n .
Output ;
Comando . Parameters . Add( ValorRetorno ) ;
Comando . ExecuteNonQuery ( ) ;
V a l o r R e t o r n a d o = Convert . ToInt32 (
ValorRetorno . Value ) ;
i f ( V a l o r R e t o r n a d o == 1 )
s u c c e s s = true ;
}
catch ( E x c e p t i o n )
{
MessageBox . Show ( E r r o r en l a o p e r a c i
on ,
E r r o r , MessageBoxButtons .OK,
MessageBoxIcon . E r r o r ) ;
}
finally
{
t h i s . L o c a t i o n = new P o i n t ( 3 0 0 , 1 5 0 ) ;
if ( success )
{
T r a n s a c c i o n . Commit ( ) ;
Conexion . C l o s e ( ) ;
MessageBox . Show ( Compra r e a l i z a d a \
n s a t i s f a c t o r i a m e n t e , Aviso ,
MessageBoxButtons .OK, MessageBoxIcon .
Information ) ;
actualizar () ;
}
else
{
Transaccion . Rollback () ;
Conexion . C l o s e ( ) ;
}
}
}
else
{
t h i s . L o c a t i o n = new P o i n t ( 3 0 0 , 1 5 0 ) ;
}
}
}
}

17

5.5.
5.5.1.

Procesos.
consultar-papas.sql

create p r o c e d u r e spCONSULTAR
(
@ID i n t
)
as
begin
b e g i n transaction

s e l e c t from Papas where i d p r o d u c t o=@ID


end

5.5.2.

INGRESAR.sql

create p r o c e d u r e spINGRESAR
(
@ID varchar ( 5 0 ) ,
int ,
@CONTRASENA
@VALOR i n t output
)
as
begin
b e g i n transaction
SELECT FROM Empleados WHERE i d u s u a r i o=@ID AND

contrasen
a=@CONTRASENA
end

18

5.5.3.

ACTUALIZAR-PAPAS.sql

CREATE PROCEDURE spA PAPAS


(
@ID int ,
@Comprobacion i n t output
)
as
begin
b e g i n transaction
d e c l a r e @cantidad i n t
set @cantidad=( s e l e c t c a n t i d a d from Papas where i d p r o d u c t o=
@ID)1
UPDATE Papas
SET c a n t i d a d=@cantidad
WHERE i d p r o d u c t o=@ID
i f @@ERROR > 0
goto e r r o r
commit transaction
set @Comprobacion =1
return
error :
RollBack transaction
set @Comprobacion = 0
end

19

5.6.

Capturas de Pantalla.

Figura 3: Ventana de Login.

Figura 4: Menu de inicio del programa.

20

Figura 5: Ejemplo de ejecucion del programa.

21

6.
6.1.

Conclusiones.
Conclusiones Personales.
Guillermo: Este proyecto ha sido una gran oportunidad para aplicar
los conceptos aprendidos durante el curso a lo largo de este semestre.
Mis compa
neros como yo tomamos la decision de crear un software funcional y pr
actico que pueda ser utilizado en la vida cotidiana.
Adem
as de ser un gran reto, nos hemos familiarizado con la filosofa
y los conceptos de la programacion en general, puesto que hemos sido
capaces de trabajar con un lenguaje de programacion distinto al que
vimos en el curso, me refiero a C#. A pesar de las claras diferencias
entre la sintaxis y el paradigma utilizado por cada lenguaje, los principios b
asicos son los mismos, y por supuesto, las tecnicas para resolver
problemas tambien lo son.
Jessica: Esta pr
actica fue particularmente difcil de realizar, tomando
en cuenta que no posea ning
un conocimiento sobre C# y Visual Basic
creo que el aprendizaje adquirido es notable. A pesar de ser inexperta
con el programa, realizar la parte de dise
no me resulto sencilla debido
a que este es bastante amigable con el usuario y no requiere ser tan
exacto como lo es utilizando el lenguaje C.
Enrique: La realizacion de este trabajo fue algo laboriosa por la cuesti
on del manejo de la base de datos y la interfaz del usuario, pero
finalmente pudimos enlazarlas a traves de procedimientos almacenados con el fin de proteger y asegurar los datos de los usuarios. La
elaboraci
on fue en C# el cual es un lenguaje basado en C y C++,
decidimos hacerlo con C# pues el manejo de la interfaz grafica es muy
sencillo de dise
nar, pero tambien contiene elementos fundamentos de
programaci
on estructurada ya que la realizacion de un enlace al procedimiento almacenado es muy similar al codigo de la lectura de un
FILE.

22

7.

Trabajos Futuros.
Guillermo: Espero que en un futuro cercano, logremos aplicar los
conocimientos y experiencias adquiridas en el ambito de la programaci
on para extender el alcance de nuestros proyectos, ser capaces
de combinar aptitudes multidisciplinarias para dise
nar e implementar
dispositivos que puedan ser utilizados en alg
un area en particular.
Jessica: Adem
as de la implementacion del codigo para lograr el proposito de la m
aquina expendedora, se debe realizar el circuito en fsico, el
cual, a pesar de presentar cierto grado de dificultad es indispensable
para que la experiencia de recibir los productos este completa. Podemos usar en conjunto Visual Basic y Arduino, la primera para generar
una interface amable con el usuario para escoger sus productos y pagarlo con sus creditos y el segundo para asegurar de que los reciba.
Enrique: Este programa al ser desarrollado en Visual Studio con las
u
ltimas actualizaciones de Frameworks, podemos asegurar que su funcionamiento se podr
a realizar exitosamente a lo largo de muchos a
nos,
pues el mismo sistema nos da la opcion de diferentes compatibilidades
de las versiones de los sistemas operativos.

23

8.

Bibliografa.

Referencias
[1] http://www.maestrosdelweb.com/que-son-las-bases-de-datos/
[2] http://www.e-mas.co.cl/categorias/informatica/dinvirt.htm
[3] http://unimooc.com/monedas-virtuales-que-es-bitcoin/
[4] https://es.wikipedia.org/wiki/Microsoft Visual Studio
[5] https://es.wikipedia.org/wiki/C Sharp

24

Vous aimerez peut-être aussi