Skip to content
This repository has been archived by the owner on Nov 20, 2023. It is now read-only.
/ AgendASM Public archive

This project is an implementation of an electronic agend in assembly language

License

Notifications You must be signed in to change notification settings

ivangalbans/AgendASM

Repository files navigation

AgendASM

El proyecto consiste en la implementación de una agenda electrónica en lenguaje ensamblador.

A continuación se describen generalidades del proyecto y más adelante, el conjunto de funcionalidades.

Ejecutar en Windows

RUN.cmd

Funcionalidades

A continuación se describen las funcionalidades que ofrece el programa.

Básicas

El programa permitir:

  • Agregar un contacto

    ADD NOMBRE_DE_CONTACTO: TELÉFONO;
    

    Si el contacto ya existe, debe mostrarse un mensaje de error.

  • Eliminar un contacto

    REMOVE NOMBRE_DE_CONTACTO;
    

    Elimina el contacto identificado por NOMBRE_DE_CONTACTO.

  • Modificar un contacto

    UPDATE NOMBRE_DE_CONTACTO: TELÉFONO;
    

    Sustituye el teléfono almacenado para dicho contacto.

  • Mostrar un contacto

    SHOW NOMBRE_DE_CONTACTO;
    

    Muestra la información almacenada para el contacto dado.

    En cualquiera de los 3 casos anteriores, si el contacto no existe, debe mostrarse un mensaje de error.

  • Listar todos los contactos

    LIST;
    

    Debe listar todos los contactos con su(s) campo(s).

Aclaraciones de Sintaxis

Los nombres son una secuencia alfanumérica de uno o más caracteres que puede incluir espacios.

Los nombres de las instrucciones (ADD, LIST, etc.) son palabras reservadas: no pueden ser usadas como nombres de contactos ni grupos.

Los teléfonos son una secuencia de uno o más números: [0-9]+.

La entrada del programa es una secuencia de instrucciones terminadas en punto y coma. Nótese que puede haber más de una instrucción por línea. El usuario en cada momento introduce una línea de texto que será procesada. Si la línea es vacía el programa termina.

Los espacios adicionales deben ignorarse siempre excepto los que están incluidos en el Nombre del contacto.

Si una instrucción no puede ser procesada se debe mostrar un mensaje de ERROR y el programa pasa a esperar la próxima instrucción. Dicho mensaje debe ser lo más descriptivo posible.

Si se intenta eliminar o mostrar un contacto que no ha sido creado se debe visualizar un cartel de error.

Persistencia

El programa es guardar la configuración de una agenda en una ruta especificada por el usuario y cargar configuraciones guardadas por el usuario anteriormente usando su programa.

En este caso, aparecen dos nuevas instrucciones:

SAVE PATH; 

y

LOAD PATH; 

... donde PATH es una ruta en el disco duro donde almacenar la información.

Multisesión

El programa es capaz de registrar usuarios con contraseñas y mantener una agenda de contactos distinta para cada uno de ellos.

  • Al iniciarse el programa debe permitirse registrar un nuevo usuario o iniciar sesión con un usuario existente.

  • La contraseña no debe mostrarse en pantalla mientras se introduce.

  • Si el usuario existe, su programa debe verificar la contraseña almacenada para dicho usuario y otorgar acceso si coincide. En caso contrario, debe denegar el acceso.

  • Si el usuario no existe, su programa debe crear un usuario con dicho nombre y contraseña, con una nueva agenda vacía.

  • En cualquiera de los casos anteriores, siempre deberá mostrar mensajes descriptivos acerca de lo que ocurre.

  • En cualquier momento de la ejecución del programa debe permitirse al usuario cerrar su sesión mediante la instrucción LOGOUT;, limpiar la pantalla y regresar a la pantalla de inicio de sesión.

  • Al usuario iniciar sesión nuevamente (sin haber cerrado la aplicación) los contactos guardados en la sesión anterior deben estar presentes. Si usted decide implementar persistencia también, los contactos almacenados de todos los usuarios deben permanecer luego de cerrar el programa.

Grupos de Contactos (+1 pto)

El programa es capaz de asociar un contacto a un grupo. Notar que un contacto puede estar asociado a más de un grupo.

Se añaden cuatro nuevas instrucciones:

  • Añadir un nuevo grupo

    `ADDGROUP NOMBRE_DE_GRUPO;` 
    
  • Eliminar un grupo

    `REMOVEGROUP NOMBRE_DE_GRUPO;`
    

    Nótese que eliminar un grupo no borra los contactos asociados al grupo.

  • Añadir contacto a un grupo

    `ADDTOGROUP NOMBRE_DE_CONTACTO: NOMBRE_DE_GRUPO;`
    
  • Listar un grupo

    `LISTGROUP NOMBRE_DE_GRUPO;`
    

    Muestra todos los contactos asociados a un grupo.

Al mostrar un contacto también deben aparecer los nombres de los grupos a los que este está asociado (si está asociado a alguno).

Operaciones con Grupos de Contactos (+1.5 puntos)

Estas operaciones pueden ser utilizadas en los siguientes contextos:

  • Rellenar un grupo

    FILL NOMBRE_DE_GRUPO: OPERACIÓN_DE_CONJUNTO

    Ejecuta la operación de conjunto y se añaden al grupo los contactos contenidos en el resultado de esta.

  • Listar un grupo

    LISTGROUP OPERACIÓN_DE_CONJUNTO;

    Ejecuta la operación de conjunto y se listan los contactos contenidos en el resultado de esta. Las operaciones de conjunto que deben ser implementadas son las siguientes.

  • Intersección de grupos

INTERSECT GRUPO_1,…, GRUPO_N;

        (N >= 2)
  • Unión de grupos
UNION GRUPO_1,…, GRUPO_N;

        (N >= 2)
  • Diferencia de grupos
DIFFERENCE GRUPO_1,…, GRUPO_N;
        
        (N = 2)

Búsqueda de Contactos (+0.5-1.5 ptos)

El programa es capaz de realizar búsquedas sobre los contactos.

Se añaden dos nuevas instrucciones:

  • Buscar por nombre

    SEARCHNAME CADENA;
    
  • Buscar por teléfono

    SEARCHPHONE CADENA;
    
  • Deben mostrarse todos los resultados que contengan a CADENA como subcadena. Los resultados deben aparecer ordenados lexicográficamente.

  • En caso de las operaciones sobre grupos, las búsquedas deben poder recibir como parámetro una operación.

Author

Iván Galbán Smith [email protected]

Raydel E. Alonso Baryolo [email protected]

2nd year Computer Science students, University of Havana

About

This project is an implementation of an electronic agend in assembly language

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published