Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROYECTO DE INVESTIGACIN
ASESOR:
Ing. Guillermo Hernndez Garca
Noviembre de 2015
Introduccin
Actualmente el uso de herramientas informticas en distintos mbitos provee
muchos beneficios, una empresa sin importar el giro al que pertenezca puede
explotar estas herramientas teniendo una ventaja competitiva, porque al adaptarlo
a sus funciones diarias se logra una importante mejora en la calidad de servicio y
una reduccin en los tiempos de espera de los clientes.
Una empresa comercial basa sus acciones en la compra y venta de bienes,
productos o servicios, es necesario contar con un software que permita agilizar
estos procesos.
Una farmacia, dada las caractersticas de los servicios que ofrece, puede
aprovechar los beneficios relacionados con ventas, compras y control de
inventarios que proporcionan los sistemas puntos de venta.
Antecedentes
Software punto de venta
Los sistemas punto de venta son la evolucin del siglo XXI de la clsica caja
registradora, compuesto por un sistema de hardware y software.
Actualmente existe mucho software punto de venta, entre los ms conocidos y
usados estn:
MyBusiness POS
Creado por MyBusiness POS Desarrollos, S. A. de C. V., es una empresa
dedicada a la fabricacin de software de punto de venta, control administrativo y
facturacin electrnica.
Versiones:
MyBusinessPOS 2002
MyBusinessPOS 2004
MyBusinessPOS 2010
MyBusinessPOS 2011
SICAR 1.8
SICAR 1.9
SICAR 2.0
Requerimientos:
OsX.
Java SE 6 Para descargarlo siga el siguiente enlace.
Requisitos adicionales para usar ciertas funciones:
Acceso a Internet (Puede tener costes adicionales).
Navegador Web Internet Explorer - Chrome Firefox.
(C.V., 2008)
Justificacin
Objetivos
Objetivo general
Realizar el prototipo del software punto de venta siguiendo la metodologa
incremental para la farmacia Torres.
Objetivos especfi cos
1. Obtener informacin del proceso general de control que utiliza la farmacia
Torres.
2. Realizar el anlisis y diseo de la base de datos para el sistema punto de
venta.
3. Determinar el SGBD que se usar, asi como la compatibiladad con los
lenguajes de programacin y consulta.
4. Realizar el anlisis y diseo de la interfaz de usuario.
5. Determinar el lenguaje y software en el que se desarrollar la interfaz de
usuario.
6. Implementar requerimientos y optimizaciones necesarios para la conexion
entre la base de datos e interfaz de usuario.
7. Documentar el anlisis y diseo de la base de datos e interfaz de usuario
mediante diagramas o algoritmos.
6
8. Desarrollar prototipo.
pruebas con datos de muestra para determinar con precisin cules son los
problemas y posteriormente se realiza otra con datos reales del sistema actual.
El mantenimiento del sistema de informacin y la documentacin empiezan en
esta fase, llevndose a cabo de manera rutinaria durante toda su vida til. Gran
parte del trabajo habitual del programador consiste en el mantenimiento, como por
ejemplo las actualizaciones de programas.
Implementacin y evaluacin del sistema
En la ltima fase se capacita a los usuarios en el manejo del sistema. Se tiene que
planear una conversin gradual del sistema anterior al actual. El proceso incluye la
conversin de archivos de formatos anteriores a los nuevos, o la construccin de
una base de datos, la instalacin de equipo y la puesta en produccin del nuevo
sistema.
La evaluacin se lleva a cabo durante cada una de las fases, tambin se debe
evaluar es si el sistema cumple las expectativas de los usuarios a quienes va
dirigido y si lo estn utilizando realmente.
El trabajo de sistemas es cclico, cuando se termina una fase del desarrollo de
sistemas se pasa a la siguiente, pero el surgimiento de un problema podra obligar
a regresar a la fase previa y modificar el trabajo realizado (Kenneth E. Kendall,
2005).
puesto que las fases establecidas tienen que seguir un orden, el software se utiliza
hasta estar completo. Las etapas previas a la de prueba deben estar bien
desarrolladas ya que cualquier error de diseo detectado en las pruebas conducen
necesariamente al rediseo y nueva programacin del cdigo afectado,
aumentando los costos del desarrollo (Pressman, 2006).
1.3.2 Modelo incremental
El modelo incremental combina elementos del modelo en cascada aplicado en
forma iterativa. Como se muestra en la figura 3, el modelo aplica secuencias
lineales de manera escalonada conforme avanza el tiempo en el calendario. Es
incremental entrega una serie de lanzamientos llamado incrementos que
proporcionan de forma progresiva ms funcionalidad; cada secuencia lineal
produce incrementos de software (Pressman, 2006).
12
como se
14
1.4 Prototipos
Un prototipo es una versin inicial de un sistema software que se utiliza para
demostrar conceptos, probar opciones de diseo, en general, informarse ms del
problema y sus posibles soluciones. Tambin se puede usar a fin de reducir el
tiempo requerido para desarrollar la documentacin del usuario.
16
Prototipo corregido
La primera clase de elaboracin de prototipos tiene que ver con la construccin de
un sistema que funciona pero se corrige simultneamente, como se muestra en la
figura 6. En la ingeniera a este enfoque se le llama elaboracin de una tabla
experimental.
Prototipo no funcional
El segundo tipo de prototipo es un modelo no funcional a escala configurado para
probar ciertos aspectos del diseo. Un modelo no funcional a escala de un sistema
de informacin podra producirse cuando la codificacin requerida por las
aplicaciones es demasiado extensa para incluirse en el prototipo pero cuando se
puede conseguir una idea til del sistema a travs de la elaboracin de un
prototipo de la entrada y la salida. En este caso, el procesamiento debido al
excesivo costo y el tiempo requerido no podra incluirse en el prototipo. Sin
embargo, an se podran tomar algunas decisiones sobre la utilidad del sistema
con base en la entrada y la salida incluidas en el prototipo.
Primer prototipo de una serie
Este prototipo involucra la creacin de un primer modelo a escala completa de un
sistema, con frecuencia llamado piloto. El prototipo es completamente funcional y
es una materializacin de lo que el diseador espera ser una serie con
caractersticas idnticas. Es til cuando se planean muchas instalaciones del
mismo sistema de informacin. El modelo funcional a escala completa permite a
17
los usuarios experimentar la interaccin real con el nuevo sistema, pero minimiza
el costo de superar cualquier problema que se presente.
Prototipo de caractersticas seleccionadas
Involucra la creacin de un modelo funcional que incluya algunas, pero no todas
las caractersticas que tendr el sistema final. Al elaborar prototipos de sistemas
de informacin de esta manera, se incluyen algunas de las caractersticas
principales. Por ejemplo, en la pantalla podra aparecer un men del sistema que
muestre seis caractersticas: agregar un registro, actualizar un registro, eliminar un
registro, buscar una palabra clave en un registro, listar un registro o examinar un
registro. Sin embargo, en el prototipo del sistema tal vez slo estn disponibles
tres de las seis caractersticas, de manera que el usuario podra agregar un
registro, eliminar un registro y listar un registro.
Cuando se recurre a este tipo de elaboracin de prototipos, el sistema se completa
por mdulos de forma que si las caractersticas que se incluyen en los prototipos
se evalan exitosamente, se puedan incorporar en el sistema final ms grande sin
necesidad de realizar demasiado esfuerzo en la interaccin. Los prototipos hechos
de esta forma son parte del sistema real, no son solo un modelo (Kenneth E.
Kendall, 2005).
desde los
datos, esta las procesa y enva los resultados de vuelta al usuario (Afergan, 1997).
21
Capitulo II Anlisis de
requerimientos de informacin y
diseo de la base de datos
2.1 Determinacin de los requerimientos de informacin
2.1.1 Procesos generales de la empresa
Ventas
Los empleados de mostrador surten los medicamentos y otros productos
farmacuticos a los clientes, tambin hacen un registro diario de las ventas de
forma manual en una libreta. La dispensacin de medicamentos controlados 7 se
realiza slo con receta mdica. En el caso de recetas cuyo tratamiento descrito
por el mdico se complete con la venta de la Farmacia, la receta original se retiene
y se le asigna un folio consecutivo, se sella la receta original y la copia del
paciente indicando la cantidad surtida, la fecha y la firma del vendedor.
Compras
El propietario es el encargado de la adquisicin de medicamentos en empresas
proveedoras legalmente establecidas, actualmente slo se adquieren los
medicamentos en FarmaAmigo y FarmaSana de Pachuca. Ocasionalmente se
comprarn insumos para la salud de venta libre como sueros, algodones, alcohol y
suplementos alimenticios, en tiendas de conveniencia. Toda compra es respaldada
con facturas, las cuales se guardarn por al menos 365 das.
Los medicamentos se envasan en materiales adecuados como cartones en el
lugar del proveedor y se transportan en automvil al domicilio de la farmacia. Una
vez que llegan los medicamentos a la Farmacia, stos se colocan en el rea de
Recepcin, los antibiticos se registran en la Bitcora de control de Antibiticos.
Se verifica que el producto fsico coincida con la factura revisando el principio
activo, nombre comercial, presentacin, cantidad de piezas y fecha de caducidad.
7 Grupo IV, antibiticos, venta con receta mdica.
22
considerar el tiempo del ciclo de vida del punto de venta, incluyendo el equipo de
trabajo involucrado, hardware y software necesario. Tras la aprobacin del
prototipo se dar seguimiento al proyecto, contrastando ingresos y gastos,
representndolos en un flujo de caja para determinar el crecimiento financiero con
el uso del punto de venta.
2.1.3 Procesos generales y particulares a automatizar
mediante el sistema de informacin.
Diagrama conceptual
En la Figura 9, se representan representa la funcionalidad completa de los
procesos generales de la empresa, mostrando su interaccin y las relaciones entre
los procesos particulares de ventas, compras y finanzas. Se definen los conjuntos
de funcionalidades afines que el sistema debe cumplir para satisfacer todos los
requerimientos. Este diagrama nos permite visualizar como las funciones ms
importantes que se deben realizar, usndolas como las opciones ms importantes
del men para el punto de venta.
24
25
Diagramas de secuencia
27
28
Diagrama de clases
Las diferentes clases que componen el sistema FarManager y como se relacionan
unas con otras se representan en la Figura 16, definiendo los atributos y mtodos
de los objetos usados. Las clases estn representadas por rectngulos, con el
nombre de la clase y sus comportamientos.
29
Lneas que unen los atributos con los conjuntos de entidades y los
conjuntos de entidades con las relaciones.
31
8 Ver Anexo 1
9 Ver Anexo 2
32
33
34
La interfaz para agregar un nuevo producto contendr los campos necesarios para
su captura, optando por un diseo sencillo pero intuitivo, como se puede apreciar
en la Figura 23.
35
Finalmente para los reportes se tiene una pantalla sencilla, donde se podr
consultar las ventas e inventario de productos basndonos en un tiempo, en la
ventana contendr una funcin para guardar el reporte en una ruta especfica,
Figura 25.
36
37
38
Conclusiones
Una empresa comercial que basa sus acciones en la compra y venta de
productos, puede aprovechar el uso de tecnologas para obtener una ventaja
competitiva, principalmente agilizando procesos de venta y un control adecuado
del inventario.
El desarrollo de este prototipo permiti definir los requerimientos para la Farmacia
Torres, demostrando que para el caso particular de esta empresa es conveniente
adquirir un software a medida, que se adapte a sus necesidades y procesos,
tomando en cuenta la factibilidad operativa y financiera de la empresa.
Es fundamental el desarrollo del prototipo siguiendo una metodologa viable y
realizar un buen anlisis, ya que esta fase del ciclo de vida del desarrollo es la
base para las fases posteriores. Una eleccin adecuada de las herramientas con
las que se va a trabajar puede definir el xito de un proyecto y su adecuado uso
puede optimizar y reducir el tiempo de desarrollo.
Tambin es muy importante tener una buena comunicacin con las personas
involucradas en los procesos que se pretenden automatizar mediante el punto de
venta. La aprobacin del prototipo conllevara al desarrollo final del punto de venta
aadiendo nuevas funcionalidades que apoyen a tomas de decisin en un futuro.
39
Bibliografa
Abraham Silberschatz, H. F. (2002). Fundamentos de bases de datos. Madrid :
McGrawHill.
Afergan, M. (1997). Java soluciones instantaneas. Mxico: Prentice Hall.
C.V., A. R. (01 de 01 de 2008). SICAR, Toda una experiencia. Recuperado el 08
de 09 de 2015, de SICAR, Toda una experiencia: http://www.sicar.mx/
Community, N. (2000). NetBeans. Recuperado el 12 de Octubre de 2015, de
NetBeans: https://netbeans.org/
Conesa, M. J. (2013). Repositorio Bibliogrfico UPCT. Recuperado el 09 de
septiembre de 2015, de Repositorio Bibliogrfico UPCT:
http://repositorio.bib.upct.es/dspace/
Desarrollos, M. P. (01 de enero de 2002). MyBusiness POS Desarrollos, S.A. de
C.V. Recuperado el 9 de septiembre de 2015, de MyBusiness POS
Desarrollos, S.A. de C.V.: https://www.mybusinesspos.com/
Educacin, P. (2001). Introduccin a los sistemas de bases de datos. Mexico:
Pearson Educacin.
Kenneth E. Kendall, J. E. (2005). Anlisis t diseo de sistemas. Mexico: Pearson
Educacin.
Muoz, F. F. (2010). dcc.uchile. Recuperado el septiembre de 2015, de
dcc.uchile: http://users.dcc.uchile.cl/~lmateu/CC60H/Trabajos/jfernand/
Pressman, R. S. (2006). Ingeniera del software. Mxico: McGrawHill.
Sommerville, I. (2005). Ingeniera del software. Madrid: Pearson.
40
Anexos
Anexo 1.- Script de la base de datos para el punto de venta
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- ------------------------------------------------------ Schema Puntodeventa
-- ----------------------------------------------------CREATE SCHEMA IF NOT EXISTS `Puntodeventa` DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci ;
USE `Puntodeventa` ;
-- ------------------------------------------------------ Table `Puntodeventa`.`Cuenta`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Cuenta` (
`id_cuenta` INT NOT NULL COMMENT '',
`contrasea` VARCHAR(45) NULL COMMENT '',
`tipo` VARCHAR(45) NULL COMMENT '',
PRIMARY KEY (`id_cuenta`) COMMENT '')
ENGINE = InnoDB;
-- -----------------------------------------------------
41
-- Table `Puntodeventa`.`Empleado`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Empleado` (
`id_empleado` INT NOT NULL AUTO_INCREMENT COMMENT '',
`nombre` VARCHAR(45) NULL COMMENT '',
`email` VARCHAR(45) NULL COMMENT '',
`direccion` VARCHAR(45) NULL COMMENT '',
`edad` INT NULL COMMENT '',
`telefono` INT(10) NULL COMMENT '',
`Cuenta_id_cuenta` INT NOT NULL COMMENT '',
PRIMARY KEY (`id_empleado`) COMMENT '',
INDEX `fk_Empleado_Cuenta_idx` (`Cuenta_id_cuenta` ASC) COMMENT '',
CONSTRAINT `fk_Empleado_Cuenta`
FOREIGN KEY (`Cuenta_id_cuenta`)
REFERENCES `Puntodeventa`.`Cuenta` (`id_cuenta`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Puntodeventa`.`Cliente`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Cliente` (
`id_cliente` INT NOT NULL AUTO_INCREMENT COMMENT '',
`nombre` VARCHAR(45) NOT NULL COMMENT '',
`rfc` VARCHAR(45) NULL COMMENT '',
`telefono` INT(10) NULL COMMENT '',
42
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Puntodeventa`.`Categoria`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Categoria` (
`id_Categoria` INT NOT NULL AUTO_INCREMENT COMMENT '',
`nombre` VARCHAR(45) NULL COMMENT '',
PRIMARY KEY (`id_Categoria`) COMMENT '')
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Puntodeventa`.`Producto`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Producto` (
`id_producto` INT NOT NULL AUTO_INCREMENT COMMENT '',
`nombre` VARCHAR(45) NULL COMMENT '',
`precio_unitario` DOUBLE NULL COMMENT '',
`existencia` INT NULL COMMENT '',
`laboratorio` VARCHAR(45) NULL COMMENT '',
`caducidad` DATE NULL COMMENT '',
`imagen` LONGBLOB NULL COMMENT '',
`lote` VARCHAR(45) NULL COMMENT '',
`descripcion` VARCHAR(100) NULL COMMENT '',
`Categoria_id_Categoria` INT NOT NULL COMMENT '',
PRIMARY KEY (`id_producto`) COMMENT '',
44
45
CONSTRAINT `fk_Producto_has_Proveedor_Proveedor1`
FOREIGN KEY (`Proveedor_id_Proveedor`)
REFERENCES `Puntodeventa`.`Proveedor` (`id_Proveedor`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Table `Puntodeventa`.`Detalle_compra`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Puntodeventa`.`Detalle_compra` (
`id_detalle_compras` INT NOT NULL AUTO_INCREMENT COMMENT '',
`costo` DOUBLE NULL COMMENT '',
`cantidad` INT NULL COMMENT '',
`importe` DOUBLE NULL COMMENT '',
`Producto_id_producto` INT NOT NULL COMMENT '',
`Compras_id_compras` INT NOT NULL COMMENT '',
PRIMARY KEY (`id_detalle_compras`) COMMENT '',
INDEX `fk_Detalle_compra_Producto1_idx` (`Producto_id_producto` ASC)
COMMENT '',
INDEX `fk_Detalle_compra_Compras1_idx` (`Compras_id_compras` ASC)
COMMENT '',
CONSTRAINT `fk_Detalle_compra_Producto1`
FOREIGN KEY (`Producto_id_producto`)
REFERENCES `Puntodeventa`.`Producto` (`id_producto`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Detalle_compra_Compras1`
47
Nombre
Sustancia activa
Descripcin
Laboratorio
Existencia
Costo compra
medicamento.
Guarda
Precio Unitario
el
precio
en
que
se
compr
el
Fecha de caducidad
la
fecha
de
caducidad
Alta_medicamento()
medicamento.
Permite dar de alta un medicamento.
Baja_medicamento()
Modificar_medicamento( Permite
)
modificar
los
atributos
de
del
un
medicamento en el inventario.
Guarda las modificaciones que se hacen en
Actualizar_medicamento Modificar_medicamento()
48
()
Generar
Consultas_medicament
caducidad.
o()
Categora
Id categora
Nombre
inventario.
Almacena el nombre de la categora a la que
Alta_categoria()
Baja_categoria()
Modificar_categoria
()
Actualizar_categoria
Modificar_categoria()
()
Consultas_categoria
()
Ventas
Id ventas
Medicamento
Cantidad
Fecha de venta
Subtotal
IVA
Guarda el
Descuento
double)
Contiene
valor
del
descuento
de
un
49
Forma de pago
medicamento, si lo tiene
Total
Actualizar_inventario()
por el cliente
Modifica el stock dependiendo el medicamento y
cantidad vendido
Generar
Consultas_ventas()
50
Compra
Id compra
Fecha de compra
compra.
Medicamento
Proveedor
Cantidad
Total
compra.
Importe
Subtotal
compraron.
Total
de
IVA
realizada.
En un valor doubl almacena el total por la compra
Forma de pago
de medicamentos
Contiene el valor del descuento de un medicamento,
si lo tiene
Guarda el impuesto de valor agregado (valor double)
Alta_compra()
Modificar_compra()
Actualizar_compra()
Generar
Consultas_compra()
Fecha
de
compra,
Medicamento,
Proveedor,
Conexin
con
resultado
sentencia
user
password
Connection conectar()
int
agregar(String
Object ...obj)
int
respectivas de la tabla
agregarimagen(String Mtodo para agregar imagen a una base de
52
53