Fecha y hora actual: Domingo 25 Ago 2019 04:19
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Lección 52: Base de Productos - Ampliación masiva

Responder al Tema

Índice del Foro > Programación en general > Lección 52: Base de Productos - Ampliación masiva

Autor Mensaje
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1043

Mensaje Publicado: Viernes 30 Mar 2012 18:10

Título del mensaje: Lección 52: Base de Productos - Ampliación masiva

Responder citando

En este capítulo les plantearé el problema que haremos juntos en el manual, es decir, veremos el sistema que iré desarrollando paso a paso aquí como guía para ustedes, como ejemplo de aplicaciones y como ayuda para mí cuando me toque explicar ciertos aspectos.

Tengo bien claro que muchos de ustedes habrán implementado el programa Base de Productos que les propuse en Pascal, y otros no. Quienes lo hicieron saben que se enfrentaron a un problema bastante complejo pero también tienen la satisfacción de haberlo superado por sus propios medios. Aquí veremos cómo transformar aquel pequeño sistema en un sistema de porte mediano multiplicando su complejidad. Quienes no hicieron dicho programa, los invito a que lo hagan ahora. No es requisito imprescindible ya que podrían tomar el sistema que plantearé aquí como algo totalmente nuevo ya que lo haré desde cero, pero es mejor si han implementado aquella pequeña versión en Pascal.

¿Qué nos permitía hacer aquel pequeño sistema? Pues la idea era tener un listado de productos disponibles donde cada producto podía pertenecer a una de las cuatro categorías disponibles:

  • Comestibles
  • Frutas y Verduras
  • Higiene personal
  • Higiene del hogar


En la primera versión pedida de aquel pequeño sistema teníamos estas opciones:

Código:
1) Ingresar datos de productos.
2) Ver lista de productos.
   0) Ver todos
   1) Comestibles
   2) Frutas y verduras
   3) Higiene del hogar
   4) Higiene personal
3) Modificar productos.
   1) Todos
   2) Según ID
   3) Según Nombre
   4) Comestibles
   5) Frutas y verduras
   6) Higiene del hogar
   7) Higiene personal
4) Vender.
5) Buscar.
   1) Según ID
   2) Según Nombre
6) Salir.


En la segunda versión del sistema se agregaban dos opciones más al menú principal:

Código:
Ver cantidad de productos ingresados
   Eliminar producto


La opción de Eliminar producto tenía estas opciones:

Código:
1) Eliminar según ID
   2) Eliminar Comestibles
   3) Eliminar Frutas y Verduras
   4) Eliminar Higiene del Hogar
   5) Eliminar Higiene Personal


Esto respondía a que el programa inicial podía cargar una cantidad fija de productos mientras que la segunda versión podía cargar una cantidad variable que podía aumentar y disminuir.

Luego existía una última versión que implementaba listas encadenadas.
Entonces, básicamente lo que podíamos hacer era cargar productos que podían pertenecer a una de las cuatro categorías disponibles, luego podíamos modificar los datos ingresados, realizar alguna búsqueda y alguna venta ficticia, y por último podíamos eliminar algún producto. En sí, no había mucho por hacer, mas allá de la complejidad que tenía programar eso. Ahora imaginaremos que dicho sistema era para una empresa que quiere ampliar sus posibilidades al máximo teniendo un sistema complejo que permita hacer muchísimas cosas más. Entonces, lo primero que haré es redactar un texto como si fuera la empresa pidiendo la ampliación del nuevo sistema, para comenzar a analizarlo y así empezar a ver cómo implementar lo pedido en un sistema modularizado.

Esto lo tomaremos como una continuación de aquel sistema, solo que me fui al extremo y pues, será muchísimo mayor y con muchísimos agregados. Veamos el pedido de nuestro cliente:

Cita:
Empresa Productos S.A.

Nuestra empresa está en constante crecimiento por lo cual el sistema Base de Productos desarrollado anteriormente ya no puede satisfacer nuestras necesidades y no es posible realizar las tareas cotidianas con él. Se hace entonces necesario el realizar un desarrollo de software que amplíe masivamente las posibilidades de aquel sistema de manera que podamos trabajar de forma digital cada día, automatizando tareas que al día de hoy se realizan a mano.
A continuación describimos todas nuestras necesidades:

  • 1. Nuestra empresa se dedica a la compra y venta de productos ya que somos distribuidores y vendedores al por mayor y menor. Tenemos un número creciente de clientes que realizan pedidos. Necesitamos tener un registro de nuestros clientes, es decir, poder dar de alta a un nuevo cliente así como de baja.
    Los clientes se identifican con un número de identificación único para cada uno. Además tenemos su nombre y su apellido.

  • 2. Así como con clientes, nuestra Productos S.A. comercializa con proveedores, quienes justamente nos venden productos a nosotros. Los proveedores también se identifican con un número de identificación único. Además guardamos un nombre que los representa. De este modo necesitamos poder altar proveedores a nuestro sistema así como darles de baja.

  • 3. En nuestro sistema se manejan pedidos, tanto desde clientes hacia nosotros como desde nosotros hacia los proveedores. Cada pedido consta de una cantidad de productos. Además necesitamos registrar la fecha en la que el pedido se realizó y la fecha límite de entrega de dicho pedido. De este modo siempre necesitamos tener presentes los pedidos que están pendientes, tanto para nosotros como para nuestros clientes.

  • 4. Nuestro stock de productos está en constante movimiento por lo mencionando más arriba y por el movimiento comercial existente. De este modo se hace necesario poder registrar nuevos productos al sistema, nuevas categorías de productos así como darles de baja a productos existentes y/o a categorías que ya no se utilizan o han cambiado.

  • 5. Nuestra empresa maneja una caja única en la que está todo el dinero efectivo que se maneja. En esa caja está tanto el dinero de nuestra empresa como el dinero de los depósitos que pueden hacer nuestros clientes.

  • 6. Nuestra empresa también realiza sorteos como forma de promoción e incentivo a clientes potenciales a que se unan a nosotros y pues, a clientes ya registrados a que se mantengan activos. Tenemos dos tipos de sorteos: Sorteo común y Sorteo Grande.

    El sorteo común tiene un costo de inscripción, un monto a sortear, una cantidad de clientes a ser sorteados y una fecha de realización.

    El sorteo grande tiene una cantidad de clientes a ser sorteados, y una fecha de realización.

  • 7. El sistema debe permitir obtener información de clientes registrados, proveedores, pedidos, productos, sorteos y montos.

  • 8. Necesitamos poder guardar los datos del sistema a fin de que puedan obtenerse luego de que este sea cerrado.

  • 9. El sistema debe proveer de ayuda para que nuestros operarios puedan consultar cualquier duda de manejo en cualquier momento.

    Con eso queda detallada nuestra necesidad de un nuevo sistema informático. Se hace sumamente necesario el tener dicho sistema en funcionamiento en 60 días máximo.



Como pueden ver, la cosa se ha complicado bastante. Nuestro sistema Base de Productos quedó obsoleto al lado de lo que se pide ahora.
En esta letra hay cosas que no están del todo claras, y pues lo he hecho a propósito para que vean lo que es enfrentarse a un planteo de un problema que debe ser resuelto informáticamente. Quien escribe la letra anterior puede tener conocimientos de programación o bien puede no tenerlo en absoluto, simplemente es una persona que describe ciertas necesidades que deben ser satisfechas con software; es problema de los programadores cómo traducen eso a un sistema informático. Iremos haciendo eso juntos.

Yo he hecho un diseño previo de este sistema a fin de ordenar los temas que iremos viendo en este manual, sin embargo, cómo no lo he implementado del todo surgirán cambios sobre la marcha, lo cual es justamente lo que quiero, que vean cómo al ir programando surgen problemas que uno creía resueltos y negociados, y sin embargo no es así.
Otro aspecto son los plazos. En esa letra se menciona que se quiere tener el sistema funcionando en un plazo máximo de 60 días. Dependiendo del equipo designado para su desarrollo eso puede ser fiable o no y debe ser negociado.

Luego de tener una letra como la que les acabo de describir, esta debe ser tomada por un analista, quién justamente se encargará de traducir eso a un lenguaje más informático y pues de negociar las cosas que no quedan claras a fin de que luego todo sea pasado a un diseñador para que se comience a desarrollar el software.

Nosotros no haremos todas las etapas del desarrollo, pero sí veremos aspectos de todas ellas. Aquí vimos el primero, que ya habíamos visto en el pequeño sistema NominaPersonas, una letra dada por un cliente. Luego veremos algunos aspectos que surgen a partir de ella cuando es analizada y algunas negociaciones que se irán haciendo a fin de ir armando el sistema poco a poco.

Entonces, antes de seguir con el desarrollo del sistema debemos ver otras cosas. Luego analizaremos un poco más este problema y a su vez les daré dos proyectos para que ustedes elijan uno y lo implementen.
El sistema que yo he planteado aquí será bastante más grande que los proyectos que tendrán que hacer, sin embargo esos proyectos tendrán complejidades algorítmicas bastante difíciles y estarán enfocados en la aplicación de los aspectos teóricos dados en el curso. Ya tendrán el diseño dado por lo cual solo deberán implementar. Es importante que sepan que ambos proyectos no fueron diseñados por mí sino que fueron propuestos como proyectos de aprobación de cursos de programación modular en la universidad en la que estudio, de modo que el crédito es para los profesores. Yo he diseñado el problema que les acabo de describir y es el que haremos juntos, lo demás es trabajo para ustedes, aunque siempre tendrán mi ayuda.

Uno de esos proyectos será de gestión de un aeropuerto (AeroProg) y el otro será un pequeño cajero automático (BancoProg). Ambos son de igual dificultad ya que fueron propuestos para el mismo curso pero en distintos años.

De este modo tendremos tres proyectos en este manual:

  • BaseDeProductos
  • AeroProg
  • BancoProg


El primero lo haremos juntos y luego ustedes elegirán uno de los otros dos para implementar como tarea y ejercicio de aplicación. Pero todo a su tiempo, la letra la veremos más adelante.

Por ahora esta lección queda como una simple presentación. En la siguiente les daré dos librerías interesantes para que tengan y puedan usar en cosas propias y vayan viendo algunos aspectos de la lectura de Strings.

Espero que esto les sirva como insentivo para trabajar en este curso.

Saludos.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

AYUDA CON LOGEO Y BASE DE DATOS

gonzaloramirez PHP 1 Domingo 28 Oct 2018 03:29 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda en algoritmo de productos medios

Antony Python 1 Viernes 26 Oct 2018 06:27 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Base Datos Access Problemas Conexion/Reporte

ce_1187@hotmail.com Visual Basic .NET 0 Jueves 27 Sep 2018 22:31 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Cursos de programacion y base de datos

Alexweb ASP, ASP.NET 1 Jueves 31 May 2018 16:59 Ver último mensaje
El tema está bloqueado: no pueden editarse ni agregar mensajes.

Busco Programador C++ para Base de Datos y/o di...

RmBeer Bolsa de trabajo 0 Martes 13 Jun 2017 00:24 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,