Universidad Nacional de Trujillo Facultad de Ciencias Físicas y Matemáticas Escuela Académico profesional de Informática
PROCESOS U OPERACIONES FUNDAMENTALES DE LOS ARCHIVOS Autor(es) José Antonio Mercado Lizárraga Félix Eduardo Minchon Benítez Castañeda Rodríguez Erick Percy Solano Medina Alex Yordy Velásquez Benítez Alberto Guillermo Núñez Saldarriaga
Trujillo - 2018
i
ANÁLISIS, DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DE INVENTARIOS UTILIZANDO LAS OPERACIONES FUNDAMENTALES DE LOS ARCHIVOS PARA LOS MINIMARKET
ii
TABLA DE CONTENIDO INTRODUCCION ..................................................................................................................................iv RESUMEN ............................................................................................................................................v 1.
PLANTEAMIENTO DEL PROBLEMA ............................................................................................. vi
2.
FORMULACION PROBLEMA....................................................................................................... vii
3.
JUSTIFICACIÓN DEL PROBLEMA ................................................................................................ vii
4.
OBJETIVOS ................................................................................................................................ viii 4.1. OBJETIVO GENERAL ............................................................................................................... viii 4.2. OBJETIVOS ESPECIFICOS ........................................................................................................ viii
5.
ANTECEDENTES .......................................................................................................................... ix 5.1. PRIMER ANTECEDENTE ........................................................................................................... ix 5.2. SEGUNDO ANTECEDENTE........................................................................................................ ix 5.3. TERCER ANTECEDENTE ............................................................................................................ ix 5.4. CUARTO ANTECEDENTE .......................................................................................................... ix
6.
FUNDAMENTO TEÓRICO .............................................................................................................x 6.1. MATERIAL Y METODOS ............................................................................................................x ¿En qué consiste la Metodología SCRUM? .................................................................................x ¿Cuándo se utiliza SCRUM?........................................................................................................ xi Proceso de la Metodología SCRUM............................................................................................ xi Herramientas de SCRUM.......................................................................................................... xiii Beneficios de Usar SCRUM ....................................................................................................... xiv Principales Razones por las que se Eligió SCRUM para el Presente Proyecto ......................... xiv 6.2. MARCO CONCEPTUAL ............................................................................................................ xv 6.2.1. CONCEPTOS ..................................................................................................................... xv
7.
RESULTADOS ............................................................................................................................. xx
8.
DISCUCIONES........................................................................................................................... xxv
9.
CONCLUSIONES ...................................................................................................................... xxvi
10.
REFERENCIAS BIBLIOGRÁFICAS ......................................................................................... xxvii
Bibliografía .................................................................................................................................... xxvii 11.
ANEXOS ............................................................................................................................ xxviii
iii
INTRODUCCION En el siguiente informe se presenta el análisis, diseño e implementación de un sistema de control de inventarios utilizando las operaciones fundamentales de los archivos para un minimarket. El problema actualmente hoy en día es que cualquier negocio (en el caso de este proyecto nos centraremos en los minimarket) compite por ser el mejor, ofrecer un servicio rápido, de calidad, fiable y con el menor coste posible. Dentro de esta ecuación, la correcta gestión del inventario juega un papel fundamental para lograrlo. Una rotura de stocks o cualquier otra incidencia pueden significar la pérdida de una venta. En el desarrollo de nuestro proyecto tendremos como asesor o, mejor dicho, guía, al profesor del curso mencionado anteriormente, el cual a través de revisiones periódicas nos dará pautas, observaciones de cómo vamos avanzando en el proyecto. Con la problemática establecida, la realización de nuestro proyecto pretende mejorar, organizar, planificar y controlar el conjunto de mercancías que hay en un almacén. El objetivo es, por tanto, garantizar que siempre que un cliente solicite un producto podamos proporcionárselo en el tiempo y la forma esperados. Este proyecto proporcionará muy aparte de ser una gran ayuda para los consumidores, propietarios e trabajadores de un minimarket tendrá un respaldo teórico que servirá para futuras investigaciones relacionados con el manejo de las operaciones fundamentales con archivos. Con el actual proyecto la gestión en un minimarket será mucho más eficiente, se reducirá errores y se tendrá mayor control de la tienda. Se garantiza el ahorro económico, reducción de costos de almacén, mejorar el servicio al cliente y lo más importante minimizar las tareas administrativas ya que los inventarios de almacén en su forma primitiva, y muchas otras tareas asociadas, requieren de mucho tiempo. Sin embargo, una gestión de almacén correcta implementando un software manejando las operaciones fundamentales con archivos de seguro que reduce la carga de trabajo. Este informe ha sido dividido en 6 (seis) partes más un conjunto de anexos. En la primera parte se plantea el objetivo general de la asesoría y los objetivos secundarios derivados del anterior. La segunda parte describe los materiales y métodos para el proyecto en desarrollo. En la tercera parte se muestra el trabajo desarrollado, describiendo los resultados del estudio de la situación actual, el planteamiento del modelo de control que impuso. En la cuarta parte se destaca los aspectos más novedosos e importantes, así como la interpretación y análisis de las implicancias de los resultados. En la quinta parte presenta las conclusiones de la asesoría realizada. Finalmente, la sexta parte se referenciará la relación de documentos bibliográficos, impresos o electrónicos, citados en el trabajo.
iv
RESUMEN Dado el problema Actual, de que cualquier negocio (en el caso de este proyecto nos centraremos en los minimarket) compite por ser el mejor, ofrecer un servicio ráp ido, de calidad, fiable y con el menor coste posible. Dentro de esta ecuación, la correcta gestión del inventario juega un papel fundamental para lograrlo. Una rotura de stocks o cualquier otra incidencia pueden significar la pérdida de una venta. En el proceso, se realizó un repaso sobre la teoría estudiada en el trascurso del presente ciclo, la cual fue de gran ayuda en la elaboración de nuestro proyecto que utilizo muchas estructuras y funciones propias del lenguaje de programación utilizado, lo cual fue visto en clase. Cada avance fue realizado correctamente y verificado por el profesor, el cual también nos ayudó en la elaboración del proyecto, dándonos las pautas necesarias y corrigiendo algunos detalles. Una vez construido el sistema fue verificado y comprobado por los dueños de 3 Minimarkets, los cuales quedaron satisfechos con la Aplicación. Por tanto, concluimos que el Sistema de Control de Inventarios, baca brindara información satisfactoriamente para los reportes utilizados de acuerdo a los datos de la presente investigación busca obtener una considerable mejora en el control de sus procesos de ventas analizando la problemática actual e identificando las causales y estableciendo objetivos que permitan superar las debilidades del proceso. Esperemos que esté presente proyecto sea de agrado y fácil manejo para los usuarios.
v
1. PLANTEAMIENTO DEL PROBLEMA A diario las personas se acercan a las Minimarkets o establecimientos comerciales pequeños a adquirir sus productos de primera necesidad de manera directa por el propietario de esta, en el cual se aspira a que la atención sea la más ágil y efectiva posible, ya que al ir a almacenes de grandes superficies implica tener un buen tiempo tanto para escoger los bienes a comprar como para hacer las filas para pagar los artículos. Estos establecimientos pequeños, que venden al menudeo y que son una solución inmediata para muchas familias, no poseen un control adecuado de los inventarios, ya que sin notarlo al instante, ofrecen productos que ya no tienen o que no es la marca que el cliente está buscando, o que por su desorden o falta de conocimiento para clasificar los artículos en las góndolas , no los tienen en adecuadas condiciones y los exhiben con otros que son para usos diferentes, como combinar elementos de aseo con víveres, y en muchas ocasiones venden productos que están vencidos lo cual puede causar pérdida de clientes y que el negocio con el tiempo no se vuelva sostenible ni rentable. La base de todo Minimarket es la compra y venta de víveres y artículos; actualmente los vendedores presentan inconvenientes con el manejo de sus ítems de mercado, ven como al final sus ventas no concuerdan con lo estipulado y generan pérdidas que son básicamente por falta de orden y tiempo, otras veces se presentan con el dilema de tener que llevar todo apuntado con papel y lápiz sin saber qué orden llevar al momento de registrar sus artículos, de aquí nace la importancia del manejo del inventario por medio de la tecnología. Estos factores se podrían prevenir gracias a una herramienta que permita el control eficaz de la mercancía y su venta.
vi
2. FORMULACION DEL PROBLEMA ¿Cómo el análisis, diseño e implementación de un sistema de control de inventarios, mejorara el rendimiento, calidad y productividad de los distintos Minimarkets del medio?
3. JUSTIFICACIÓN DEL PROBLEMA Con el fin de mejorar la productividad y el rendimiento en los Minimarkets, es fundamental implementar un sistema informático de ventas que brinden eficiencia, eficacia y control de la gestión de ventas. La implementación de este sistema de información planteada en los diversos Minimarkets, brindará la posibilidad de obtener grandes ventajas, incrementar la capacidad de organización de las empresas, y tomar de esta manera los procesos a una verdadera competitividad, mejorando los reportes de ventas diarias, el control de sus productos, generar una lista de productos por categoría para poder realizar una mejor compra, el sistema proporcionará información clave para la toma de decisiones; esta información será sencilla, clara, expedita, veraz, precisa, consistente y fácil de analizar e interpretar. Cabe destacar, que el sistema propuesto ofrecerá una gran cantidad de ventajas subyacentes, más allá del rédito que significa para la toma de decisiones y los procesos productivos. El sistema de implementado ofrece una importante y notable satisfacción en los usuarios que lo operan, debido a su facilidad de uso y su acceso constante y empleados logren alcanzar los objetivos planteados por la tienda.
vii
4. OBJETIVOS 4.1. OBJETIVO GENERAL
Analizar y diseñar una herramienta que sea fácil, rápida y de bajo costo que le permita a los propietarios llevar un eficaz control en sus bienes.
4.2. OBJETIVOS ESPECIFICOS
- Analizar el sistema actual de inventarios que utilizan los Minimarkets - Identificar los errores que se presentan en el sistema actual de inventarios que se utilizan en los Minimarkets, para determinar las necesidades a subsanar por la herramienta propuesta.
- Clasificar los subsistemas que se realizan dentro de los inventarios. - Organizar la información recolectada para el diseño de una herramienta que mejore la administración de los inventarios.
viii
5. ANTECEDENTES 5.1. PRIMER ANTECEDENTE
TITULO: Estudio e implementación de un sistema de gestión de almacén y logística en una PYME Española AÑO: septiembre de 2012 AUTOR: Víctor Manuel de Haro Martínez RESUMEN: Este proyecto tiene un fin de carrera, el cual es llevar a cabo el análisis de la gestión del área de Almacén y Logística de una Pyme a través de herramientas informáticas basadas en el concepto de Sistemas de Control de Gestión. 5.2. SEGUNDO ANTECEDENTE
TITULO: SISTEMA DE CONTROL DE INVENTARIOS Y FACTURACIÓN PARA LA COMERCIALIZADORA DE REPUESTOS SILVA S.A “ARTEMISA”
AÑO: enero de 2014 AUTOR: MÓNICA ALEXANDRA CAMACHO CARRERO, BRIAN ANDRES SILVA ESPINOSA RESUMEN: La comercializadora de repuestos Silva S.A. desea automatizar su proceso interno de facturación y control de inventarios, este proyecto se centra en brindar una alternativa a las necesidades presentadas por el establecimiento comercial. 5.3. TERCER ANTECEDENTE
TITULO: DISEÑO DE UN SISTEMA DE CONTROL DE INVENTARIO PARA LA FARMACIA SANTA CRUZ DE SAN BARTOLOME PERULAPIA. AÑO: setiembre de 2013 AUTOR: Juan Carlos Ascencio Flores RESUMEN: El presente trabajo de investigación pretende analizar y diseñar un sistema para controlar el inventario de fármacos, que tiene aproximadamente 3 años de brindar productos y servicios, con grandes posibilidades de expandir el negocio a otras zonas. 5.4. CUARTO ANTECEDENTE
TITULO: PROPUESTA DE GESTIÓN DE INVENTARIOS DE MATERIAS PRIMAS PARA UNA EMPRESA EDITORA AÑO: noviembre de 2017 AUTOR: Muñoz Valenzuela, Henry Ricardo. RESUMEN: El presente proyecto de investigación aplicada desarrolla el tema de gestión de inventarios de materias primas para una empresa editora. En cuanto a la gestión de inventarios, se propone implementar un sistema de control de inventarios de revisión continua para evitar la ruptura de stock por las constantes variaciones en la demanda de periódicos. ix
6. FUNDAMENTO TEÓRICO 6.1. MATERIAL Y METODOS
La metodología elegida para el desarrollo del sistema para el control de inventarios en un minimarket es la metodología ágil SCRUM. Antes de dar a conocer las principales razones por las que se ha elegido esta metodología es necesario saber en qué consiste, en qué casos debe ser utilizada, así como otros aspectos importantes que se deben tener en cuenta antes de utilizarla. (AMADOR, 2008) ¿En qué consiste la Metodología SCRUM? Scrum es una metodología ágil y flexible para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa (ROI). Se basa en construir primero la funcionalidad de mayor valor para el cliente y en los principios de inspección continua, adaptación, auto-gestión e innovación. Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos. En esta metodología requiere de los siguientes perfiles de trabajo: Product Owner representa la voz del cliente y del resto de interesados no implicados directamente en el proyecto. Este perfil es el encargado de definir los objetivos del proyecto y de garantizar que el equipo trabaja del modo adecuado para alcanzar dichos objetivos. (Martínez, 2013) Scrum Master es el encargado de asegurar que el resto del equipo no tiene problemas para abordar sus funciones y tareas. Guía y ayuda al Scrum Team para garantizar el cumplimiento de objetivos. En otras palabras, este perfil ayuda al equipo a mantenerse activo y productivo. Scrum Team es el equipo encargado de desarrollar y entregar el producto. Su trabajo es imprescindible: estamos hablando de una estructura horizontal auto-organizada capaz de auto-gestionarse a sí misma. Stakeholders. Este grupo comprende aquellos perfiles interesados en el producto: directores, dueños, comerciales. Se trata de perfiles que si bien no forman parte del Scrum Team deben ser tenidos en cuenta. En Scrum un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones que normalmente son de 2 semanas, aunque en algunos equipos son de 3 y hasta 4 semanas, límite máximo de feedback y reflexión). Cada iteración tiene que proporcionar un resultado
x
completo, un incremento de producto final que sea susceptible de ser entregado con el mínimo esfuerzo al cliente cuando lo solicite. Entre las ventajas se encuentran la productividad, calidad y que se realiza un seguimiento diario de los avances del proyecto, logrando que los integrantes estén unidos, comunicados y que el cliente vaya viendo los avances.
¿Cuándo se utiliza SCRUM? Con la metodología Scrum el cliente se entusiasma y se compromete con el proyecto dado que lo ve crecer iteración a iteración. Asimismo le permite en cualquier momento realinear el software con los objetivos de negocio de su empresa, ya que puede introducir cambios funcionales o de prioridad en el inicio de cada nueva iteración sin ningún problema. Esta metódica de trabajo promueve la innovación, motivación y compromiso del equipo que forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para desarrollar sus capacidades. No es necesario, ni siquiera conveniente, utilizar la metodología SCRUM en todo tipo de proyectos. Por eso debes saber qué requerimientos debe tener tu proyecto si quieres utilizarla con eficacia:
Equipos pequeños: cuando en tus proyectos los equipos de trabajo no superan las 8 personas. Aunque existen casos de empresas que la han utilizado con éxito en equipos más grandes, no es recomendable. Poca necesidad de documentación: si el cliente te exige que todo el proyecto esté muy bien documentado desde el principio (fases de consultoría y de tomas de requerimientos largas) SCRUM no es tu metodología. Sin embargo, si sus expectativas son las entregas rápidas y tener mucho control sobre el proyecto, el SCRUM te resultará muy útil porque se enfoca precisamente en este aspecto. Proyectos con riesgos de cambios durante el proceso: como la metodología SCRUM ejecuta el proyecto en fases cortas de dos a cuatro semanas, permite mucha flexibilidad a la hora de acometer cambios a mitad del proyecto, ya que tras cada fase se replantean las tareas y los objetivos. Confianza en la metodología: serás el encargado de velar que se cumpla, por lo tanto, antes de trabajar en un proyecto con SCRUM debes aprender bien cuáles son sus principios y maneras de operar y sentirte cómodo con ellos, para poder traspasar esa confianza al resto de los actores de tu proyecto.
Proceso de la Metodología SCRUM Las actividades que se llevan a cabo en Scrum son las siguientes: Planificación de la iteración (Sprint Planning)
El primer día de la iteración se realiza la reunión de planificación de la iteración. Tiene dos partes:
xi
Selección de requisitos (4 horas máximo). El cliente presenta al equipo la lista de requisitos
priorizada del producto o proyecto. El equipo pregunta al cliente las dudas que surgen y selecciona los requisitos más prioritarios que se compromete a completar en la iteración, de manera que puedan ser entregados si el cliente lo solicita. (Albaladejo, 2016) Planificación de la iteración (4 horas máximo). El equipo elabora la lista de tareas de la
iteración necesarias para desarrollar los requisitos a que se ha comprometido. La estimación de esfuerzo se hace de manera conjunta y los miembros del equipo se autoasignan las tareas. Ejecución de la iteración ( Sprint)
Cada día el equipo realiza una reunión de sincronización o SCRUM Daily Meeting (15 minutos máximo), normalmente delante de un tablero físico o pizarra (Scrum Taskboard). Cada miembro del equipo inspecciona el trabajo que el resto está realizando (dependencias entre tareas, progreso hacia el objetivo de la iteración, obstáculos que pueden impedir este objetivo) para poder hacer las adaptaciones necesarias que permitan cumplir con el compromiso adquirido. En la reunión cada miembro del equipo responde a tres preguntas: ¿Qué he hecho desde la última reunión de sincronización? ¿Qué voy a hacer a partir de este momento? ¿Qué impedimentos tengo o voy a tener? Durante la iteración el Facilitador (Scrum Master) se encarga de que el equipo pueda cumplir con su compromiso y de que no se merme su productividad. Elimina los obstáculos que el equipo no puede resolver por sí mismo. Protege al equipo de interrupciones externas que puedan afectar su compromiso o su productividad. Durante la iteración, el cliente junto con el equipo refinan la lista de requisitos (para prepararlos para las siguientes iteraciones) y, si es necesario, cambian o replanifican los objetivos del proyecto para maximizar la utilidad de lo que se desarrolla y el retorno de inversión. Inspección y adaptación
El último día de la iteración se realiza la reunión de revisión de la iteración. Tiene dos partes: Demostración o Sprint Review (4 horas máximo). El equipo presenta al cliente los requisitos completados en la iteración, en forma de incremento de producto preparado para ser entregado con el mínimo esfuerzo. En función de los resultados mostrados y de los cambios que haya habido en el contexto del proyecto, el cliente realiza las adaptaciones necesarias de manera objetiva, ya desde la primera iteración, replanificando el proyecto. Retrospectiva o Sprint Retrospective (4 horas máximo). El equipo analiza cómo ha sido su manera de trabajar y cuáles son los problemas que podrían impedirle progresar
xii
adecuadamente, mejorando de manera continua su productividad. El Facilitador se encargará de ir eliminando los obstáculos identificados. Herramientas de SCRUM Lista de requisitos priorizada (Product Backlog)
Contiene los objetivos/requisitos de alto nivel del producto o proyecto, que se suelen expresar en forma de historias de usuario. Para cada objetivo/requisito se indica el valor que aporta al cliente y el coste estimado de completarlo. La lista está priorizada balanceando el valor que cada requisito aporta al negocio frente al coste estimado que tiene su desarrollo, es decir, basándose en el Retorno de la Inversión (ROI).
Lista de tareas de la iteración (Sprint Backlog) Lista de tareas que el equipo elabora en la reunión de planificación de la iteración (Sprint planning) como plan para completar los objetivos/requisitos seleccionados para la iteración y que se compromete a demostrar al cliente al finalizar la iteración, en forma de incremento de producto preparado para ser entregado. Esta lista permite ver las tareas donde el equipo está teniendo problemas y no avanza, con lo que le permite tomar decisiones al respecto. Para cada uno de los objetivos/requisitos se muestran sus tareas, el esfuerzo pendiente para finalizarlas y la autoasignación que han hecho los miembros del equipo.
Gráficos de trabajo pendiente (Burndown Chart) Un gráfico de trabajo pendiente a lo largo del tiempo muestra la velocidad a la que se está completando los objetivos/requisitos. Permite extrapolar si el Equipo podrá completar el trabajo en el tiempo estimado. Se pueden utilizan los siguientes gráficos de esfuerzo pendiente: Días pendientes para completar los requisitos del producto o proyecto (product burndown chart), realizado a partir de la lista de requisitos priorizada (Product Backlog). Horas pendientes para completar las tareas de la iteración (sprint burndown chart), realizado a partir de la lista de tareas de la iteración (Iteration Backlog). Este tipo de gráfico permite realizar diversas simulaciones: ver cómo se aplazan las fechas de entrega si se le añaden requisitos, ver cómo se avanzan si se le quitan requisitos o se añade otro equipo, etc.
xiii
Beneficios de Usar SCRUM Cumplimento de expectativas: El cliente establece sus expectativas indicando el valor que le aporta cada requisito / historia del proyecto, el equipo los estima y con esta información el Product Owner establece su prioridad. De manera regular, en las demos de Sprint el Product Owner comprueba que efectivamente los requisitos se han cumplido y transmite se feedback al equipo. Flexibilidad a cambios: Alta capacidad de reacción ante los cambios de requerimientos generados por necesidades del cliente o evoluciones del mercado. La metodología está diseñada para adaptarse a los cambios de requerimientos que conllevan los proyectos complejos. Reducción del Time to Market: El cliente puede empezar a utilizar las funcionalidades más importantes del proyecto antes de que esté finalizado por completo. Mayor calidad del software: La metódica de trabajo y la necesidad de obtener una versión funcional después de cada iteración, ayuda a la obtención de un software de calidad superior. Mayor productividad: Se consigue entre otras razones, gracias a la eliminación de la burocracia y a la motivación del equipo que proporciona el hecho de que sean autónomos para organizarse. Maximiza el retorno de la inversión (ROI): Producción de software únicamente con las prestaciones que aportan mayor valor de negocio gracias a la priorización por retorno de inversión. Predicciones de tiempos: Mediante esta metodología se conoce la velocidad media del equipo por sprint (los llamados puntos historia), con lo que consecuentemente, es posible estimar fácilmente para cuando se dispondrá de una determinada funcionalidad que todavía está en el Backlog. Reducción de riesgos: El hecho de llevar a cabo las funcionalidades de más valor en primer lugar y de conocer la velocidad con que el equipo avanza en el proyecto, permite despejar riesgos eficazmente de manera anticipada.
Principales Razones por las que se Eligió SCRUM para el Presente Proyecto 1. El equipo de desarrollo del proyecto es pequeño (6 integrantes). 2. Existe poca necesidad de documentación en el presente proyecto. 3. Existe un elevado riesgo de cambios en el desarrollo de la tienda virtual (cambios de diseño, almacenamiento y funcionales). 4. Facilita un mayor grado de cumplimiento de expectativas dado el tiempo dado para la entrega de la aplicación. 5. Se consigue un mayor grado de productividad gracias a la motivación sincronizada del equipo. 6. Plantea una política de reducción de riesgos ya que se llevan a cabo las funcionalidades de más valor en primer lugar. 7. Permite conocer la velocidad con que el equipo avanza en el proyecto.
xiv
6.2. MARCO CONCEPTUAL 6.2.1. CONCEPTOS
Igual que la consola se asocia a unos streams llamados cin y cout, se pueden asociar funciones de lectura y escritura a un : para ficheros. El fichero o archivo es un espacio de disco donde se almacena información de forma secuencial bajo un nombre. Para trabajar con ficheros es necesario el archivo de cabecera
el cual incluye a . Debe destacarse que en el disco duro aparecerá el nombre del fichero, pero el programa utiliza el archivo a través del stream que le hayamos asociado. Esto se observa claramente donde el fichero se llama myfle.txt, mientras que el stream se maneja bajo la variable WriteFile. (Paszniuk, 2013) Las operaciones que se pueden hacer sobre un fichero son: creación, apertura, lectura, escritura y desplazamiento a lo largo de la información que contiene. El uso de ficheros es muy importante para facilitar tanto la lectura de datos como la escritura de resultados. Sin embargo, el acceso a los datos de grandes ficheros puede producir una notable disminución en la velocidad de ejecución del programa, por ello se recomienda usar los ficheros con inteligencia. Las operaciones básicas sobre un fichero son: (Veredas, 2015) Abrir archivo:
Se abre un fichero de nombre mnfile.txt. El fichero se abre con un tipo ofstream (output file stream); por lo tanto, la intención es escribir datos en él. Por el contrario, más adelante se define un tipo ifstream (input file stream); por lo tanto, sólo se desea leer datos de él; en este último caso, el archivo se abre en esa línea bajo el nombre de myfile.txt que es el fichero que ya se había creado antes. Cerrar un archivo:
Si un fichero no se usa, es importante cerrarlo porque son recursos que ocupan al sistema y puede producir errores en tiempo de ejecución, si el programa pretende volver a abrirlo. Para cerrar un fichero basta con ejecutar un close. Escritura y Lectura de un Fichero:
Para leer y escribir basta con utilizar los operadores» y « que ya se presentaron en el apartado de la consola. Ahora veamos cómo se realiza lo mismo en el ANSI C ó C estándar.
xv
Desplazamiento de Archivos:
Secuencial: cada vez que se realiza una operación de lectura o escritura de un elemento del fichero, la ventana avanza una posición para colocarse sobre el elemento siguiente de la estructura. De esta forma, todos los elementos del fichero se van leyendo o escribiendo automáticamente uno detrás de otro, en secuencia. Un caso particular de los ficheros secuenciales son los ficheros de texto, cuyos elementos son caracteres imprimibles y para los que la mayoría de compiladores ofrecen funciones de tratamiento especiales como, por ejemplo, la de detección de final de línea, que vale verdadero cuando el último carácter leído es el último de una línea de texto, es decir, cuando la ventana se encuentra sobre un carácter de “retorno de carro” ().
De Acceso Aleatorio: Son aquéllos en los que el programador realiza manualmente el desplazamiento de la ventana sobre los elementos del fichero, es decir, controlado directamente por el algoritmo. Este modo de acceso permite emplear los ficheros como los vectores, leyendo o escribiendo datos en sus elementos en cualquier orden, aleatoriamente. Cuando declaramos un fichero, en realidad estamos declarando una variable estructurada, en la que se almacenan todos los datos necesarios para acceder al fichero (nombre de éste, situación de la ventana, operaciones permitidas, etc.). Entre éstos se encuentra un campo del tipo de los elementos del fichero, que el sistema de gestión de ficheros del ordenador asociará a la ventana de comunicación entre nuestro programa y el fichero. Esta asociación se realiza mediante una instrucción de apertura del fichero, tras la cual podremos operar con los elementos de éste, a través de la ventana, hasta que realicemos la operación complementaria de cierre del fichero, que disocia la variable y el fichero. Funcionamiento:
ABRIR: Asocia una variable del algoritmo a un fichero del ordenador. Además de estos dos parámetros, con esta operación debemos indicar el tipo de acciones que vamos a realizar sobre los elementos del fichero: Lectura: Abrir (< IdFichero >, l , ‘ < NombreFichero > ” ), < IdFichero >, identificador lógico del fichero, es el nombre de la variable que lo representa en el algoritmo, a través de la cual accedemos al buffer (ventana) del fichero. l, indica que el fichero se abre para leer su contenido. En algunos casos, si el fichero no existe nos dará un error. < NombreFichero >, es el nombre completo del fichero que queremos abrir, incluyendo el nombre del dispositivo (disco) en el que se encuentra, y el camino de acceso al subdirectorio en el que se encuentre, de no coincidir con los valores por defecto en el momento de ejecutarse el programa. xvi
Escritura: Abrir ( < IdFichero >, e, ” < NombreFichero >” ), e, indica que el fichero se abre para escribir en él. Si existe un fichero , destruye su contenido, para empezar a escribirlo desde el primer elemento. Añadido: Abrir ( < IdFichero >, a, “< NombreFichero>” > a, indica que el fichero se abre para escribir en él, pero a partir del último dato que contenga, con lo cual, si ya existía, no se borra su contenido. En C la traducción es directa: < IdFichero > = fopen (“< NombreFichero >”, ) donde indica el modo de acceso: rb = lectura. r = lectura de texto. wb = escritura. w = escritura de texto. r+b = lectura/escritura. r+ = lectura/escritura texto sin borrar el contenido previo. w+ = lectura/escritura texto borrando el contenido previo. a+b = añadido. a = añadido de texto. FILE *archi; //define el archivo float var;
//lo uso tanto para leer o escribir
int pos;
//lo utilizo para ir a un registro determinado
CERRAR:
Disocia el del fichero . Después de esta operación ya no se podrán realizar operaciones de lectura o escritura sobre . Esta operación tiene la forma: Cerrar ( ) La traducción de esta acción a C es inmediata: close ( ) Close(archi); LEER:
Copia el contenido del registro del fichero sobre el que se encuentra la ventana (buffer) a la variable que le pasemos como parámetro.
xvii
leer ( , ) La traducción a C es un poco más compleja, pues como en la declaración de la variable de tipo fichero no se ha indicado el tipo de sus elementos, hay que indicar su tamaño al acceder a ellos (sizeof ()). Además, el procedimiento permite leer más de un elemento (< NúmeroElementos > ) de una vez: fread (&< var >, sizeof ( ), , )
fread(&var,sizeof(float),1,archi); ESCRIBIR:
copia el contenido de la variable que le pasemos como parámetro al registro del fichero sobre el que se encuentra la ventana, a través del buffer.
escribir (< IdFichero > , < variable > )
Su traducción a C es dual a la de lectura: fwrite ( &< var > , sizeof ( < var >) , < NúmeroElementos > , < IdFichero > ) fwrite(var,sizeof(float),1,archi) BORRAR:
borra del directorio del dispositivo de memoria secundaria (disco) toda referencia al fichero < NombreFichero >. Después de esta operación no se puede volver a abrir el fichero borrado ni, por tanto, acceder a su contenido. Para poder borrar un fichero, debe estar cerrado. Borrar ( < NombreFichero > ): Su traducción a C es: remove ( < NombreFichero > ): remove(archi) FinalDeFichero ( FDF ): Es una función que devuelve el valor cierto si la ventana del fichero se encuentra sobre el registro siguiente al último lleno (escrito), y falso en caso contrario. En un fichero secuencial, después de que esta función se hace cierta, no podemos seguir leyendo del fichero. En C tiene la forma: int feof ( < IdFichero > ). Devuelve cero ( FALSO ) si no detecta fin de fichero y otro valor (CIERTO) si lo detecta. feof(archi); Los ficheros de acceso directo siempre deben abrirse para lectura/escritura, pues se supone que la aleatoriedad del acceso tiene por finalidad ir leyendo y modificando los datos leídos. Para acceder a una posición concreta, desde el punto de vista algorítmico, utilizaremos una sola acción para aproximar al máximo la sintaxis a la de manejo de vectores (una sola acción para acceder a un elemento del fichero), pero en C hay que invocar dos sentencias complementarias para hacerlo: mover la ventana a la posición , y leer o escribir con las sentencias normales:
xviii
LEERPOS (< IdFichero > , < pos > , < var > ):
En C tiene la forma: fseek (< IdFichero > , sizeof (< var >) * (< pos > – 1 ) , SEEK _SET) ; fseek(archi,sizeof(float)*(pos-1)); fread (&< var > , sizeof ( < var >) , < NúmeroElementos > , < IdFlchero > ) ESCRIBIRPOS (< IdFichero > , < pos > , < var > ) En C tiene la forma: fseek ( < IdFichero > , sizeof ( < var > ) * (< pos > – 1) , SEEK _SET) ; fwrite ( &< var > , sizeof (< var >) , < NúmeroEiementos > , < IdFichero > )
CÓDIGO: #include "stdio.h" main() { FILE *fp; char stuff[25]; int index; fp = fopen("TENLINES.TXT","w"); /* abre para escritura */ strcpy(stuff,"Una línea de ejemplo."); for (index = 1;index <= 10;index++) fprintf(fp,"%s Línea número %d\n",stuff,index); fclose(fp); /* cierra el fichero antes de acabar el programa */ }
xix
7. RESULTADOS
Figura N° 1 – Interfaz del Minimarket
Figura N° 2 – Menú
xx
Figura N° 3 – Registro de Producto
Figura N° 4 – Registro de Producto
xxi
Figura N° 5 – Reporte de Productos Registrados
Figura N° 6 – Registro de Clientes
xxii
Figura N° 7 – Reporte de Clientes
Figura N° 8 – Registro de Vendedor
xxiii
Figura N° 9 – Reporte de Vendedor
Figura N° 10 – Tablas de Clientes, Vendedores y Productos
xxiv
8. DISCUCIONES
Se observó la situación actual de los conocimientos en algunos de nuestros habitantes sobre manejo de software y su predisposición de implementar una estrategia de manejo de inventarios para las distintas tiendas.
Encontramos que los propietarios de tiendas no hacen uso adecuado del manejo de sus inventarios puesto que lo único que utilizan algunos de ellos son un papel, lápiz y una calculadora de mesa.
Los casos de uso muestran que el actor principal en cuanto al manejo de la herramienta viene siendo el propietario de la tienda en su totalidad y que los clientes y proveedores no intervienen en su uso.
Mejor Clasificación y Organización para con los productos del minimarket a través de un almacén organizador.
Acceso sencillo y rápido a los diferentes productos dentro del almacén y que pertenecen a dicho minimarket.
Mejora Absoluta en el control de entrada y salida de productos a través de un almacén.
Mejora de la abstracción de datos de cada uno de los integrantes de éste grupo para saber hacerle frente al presente problema.
Uso de menos recursos tal cual sean: Tiempo, velocidad y espacio de memoria.
Como investigadores de este proyecto, profundizamos nuestros conocimientos en el área de los sistemas y su aplicabilidad.
xxv
9. CONCLUSIONES 1. Actualmente los minimarket compiten y están en busca de mejorías para su negocio, ofrecer un servicio rápido, de calidad, fiable y con el menor coste posible. Dentro de esta ecuación, la correcta gestión del inventario juega un papel fundamental para lograrlo. Una rotura de stocks o cualquier otra incidencia pueden significar la pérdida de una venta. En el actual proyecto de análisis, diseño e implementación de un sistema de inventario para un minimarket desarrollamos un software para reducir error y obtener un mayor control sobre los procesos que estén involucrados en el día a día de un minimarket. 2. El objetivo de este proyecto fue, garantizar que siempre que un cliente solicite un producto en un minimarket este pueda proporcionárselo en el tiempo y la forma esperados. 3. El uso de funciones y estructuras propias del lenguaje utilizado en la construcción de la aplicación, nos sirvieron para reducir las líneas de código. 4. El tiempo, lo cual es muy importante en la vida diaria, es la gran ventaja de nuestro sistema, ya que la ejecución, uso, comprobación es rápida. 5. Se redujo la complejidad de nuestra aplicación, tratando de hacerla un poco más escalable. 6. Es necesario que estas micro empresas mejoren su proceso de control de productos, si desean ser competitivas con otras micro empresas: las empresas del mercado exterior exigen altos estándares de calidad que la mayoría de las pequeñas empresas no puede satisfacer en la actualidad y en esto radica su nivel de rentabilidad. 7. Podemos concluir que el presente trabajo cumplió con las metas y objetivos trazados y será una herramienta de mucha ayuda para automatizar los procesos del control de un inventario para los minimarket.
xxvi
10.
REFERENCIAS BIBLIOGRÁFICAS
Bibliografía Albaladejo, X. (2016). Planificación de la iteración (Sprint Planning). Madrid: Proyectos Agiles. AMADOR, M. G. (2008). Guia Metodologica Para Diseños De Investigacion. Chile: BlogSpot. Obtenido de http://manuelgalan.blogspot.pe/2008_05_25_archive.html Martínez, E. (2013). Cómo utilizar la metodología Scrum para acometer proyectos complejos. España: iebschool. Obtenido de http://www.iebschool.com/blog/metodologia-scrumagile-scrum/ Paszniuk, R. (2013). E/S DE FICHEROS en C++. Paraguay. Obtenido de https://www.programacion.com.py/escritorio/c/es-de-ficheros Veredas, A. (2015). Ficheros en los Lenguajes de Programación. España. Obtenido de https://html.rincondelvago.com/ficheros-en-los-lenguajes-de-programacion.html
xxvii
11.
ANEXOS
ENCUESTA AL USUARIO 1. ¿Qué opina sobre nuestra aplicación? Es un sistema atractivo, pues optimizara la empresa en varios aspectos. 2. ¿La aplicación, cumple las todas sus expectativas? Justificar su respuesta. Si, cumple lo que se dice y trae opciones extras que facilitan su uso. 3. ¿Qué sugerencias tiene usted en cuanto a la funcionabilidad de la aplicación? Todo está perfecto, solo pasaría a un diseño más moderno. 4. ¿Considera necesaria el uso de nuestra aplicación? Justifique su respuesta. Si, ya que, manejo inventarios de cartuchos de impresora, stock de memorias RAM, Motherboards, Diademas para llamadas, etc. Y con ello podré organizarme y comprar lo requerido sin excederme. 5. ¿Considera que el uso de la aplicación es accesible a cualquier persona? No, debería ser solo para empresas y negocios grandes para obtener más ganancias. 6.
Del 1 al 10. Describa la calificación del aplicativo y justifique la respuesta. 9 7. ¿Considera que el Manual, es didáctico para un usuario común? Justificar su respuesta. Si, es detallado y simple de comprender. 8. ¿Está de acuerdo con el costo total del aplicativo? Justifique su respuesta. Es un precio justo. 9.
¿Recomendaría el aplicativo? Mencionar 3 razones. Interfaz Agradable. Fácil manejo. Comandos y rutas sencillas de memorizar.
xxviii