Osvaldo Miguel Carreon
Fundamentos de Programación
Proyecto 3: Bibliotheka-0 (Archivos
con Python)
Precedentes
Considérese el siguiente ejemplo, denominado Bibliotheka-0 (ver Figura A0).
Se utilizará el Método del Proyecto de Ingeniería.
Entrevista a los Informe
usuarios del POO y IDLE Python Técnico y
sistema UML Manual de
Usuario
Operación y Retiro
Diseño Construcción Mantenimiento (Desgaste u
Sistema
(Proyecto (Proyecto (Proyecto de obsoleto)
Objetivo
Arquitectural) Ejecutivo y Operación y
(Problema)
Construcción) Mantenimiento)
Mejora continua
Figura A0. Método del Proyecto de Ingeniería: Ciclo de
Vida del Sistema.
A. Sistema Objetivo (Problema)
El sistema objetivo (dominio de la aplicación) se especifica como resultado
de las entrevistas realizadas con los usuarios del sistema de información
(programa).
A1. Requerimiento funcional del sistema
A.1.1. Nombre sistema:
Bibliotheka-0
A.1.2. Función del sistema:
Proyectar un sistema de información computarizado (programa de cómputo),
el cual tendrá como función permitir el almacenamiento (entrada de datos
~1~
Osvaldo Miguel Carreon
Fundamentos de Programación
por teclado) y la recuperación (salida de datos por pantalla) de los datos de:
a) libros, b) diccionarios, c) revistas, d) CDs, e) alumnos, y f) profesores. Los
atributos (datos) de los libros serán: a) identificador (LbrId, número natural),
b) título (LbrTtl, cadena de caracteres), c) tema (LbrTma, cadena de
caracteres), y d) precio (LbrPrc, número real). Los datos de los diccionarios
serán: a) identificador (DccId, número natural), b) título (DccTtl, cadena de
caracteres), c) Idioma (DccIdm, cadena de caracteres), y d) precio (DccPrc,
número real). Los datos de las revistas serán: a) identificador (RvsId, número
natural), b) título (RvsTtl, cadena de caracteres), c) periodicidad (RvsPrd,
cadena de caracteres), d) precio (RvsPrc, número real). Los datos de los CDs
serán: a) identificador (CdId, número natural), b) título (CdTtl, cadena de
caracteres), c) contenido (CdCnt, cadena de caracteres), y d) precio (CdPrc,
número real). Los datos de los alumnos serán: a) identificador (AlmId,
número natural), b) nombre (AlmNmb, cadena de caracteres), c) carrera
(AlmCrr, cadena de caracteres), y d) beca (AlmBca, número real). Los datos
de los profesores serán: a) identificador (PrfId, número natural), b) nombre
(PrfNmb, cadena de caracteres), c) departamento (PfrDpr, cadena de
caracteres), y d) salario (PrfSlr, número real). El formato de los datos de
entrada y salida serán un listado simple. Por simplicidad, los datos serán
solamente de 3 libros; posteriormente podrá extenderse a más libros. Los
métodos (operaciones) en todos los casos serán: a) entrada (escritura de
datos) por teclado, y b) salida (lectura de datos) por pantalla.
A.2. Requerimientos no-funcionales:
Se utilizará el Método del Proyecto de Ingeniería, así como el paradigma de
Programación Orientada a Objetos (POO), utilizando archivos para almacenar
y recuperar los datos; asimismo, se utilizará el lenguaje de Modelado
Unificado (UML) para modelar el sistema; además, se utilizará el Lenguaje de
Programación Python.
A.3. Recursos:
Se utilizarán los recursos del Laboratorio de Computación.
A.4. Entregables:
Los entregables serán el programa de cómputo (aplicación), así como el
informe técnico y el manual del usuario.
A.5. Fecha de entrega:
La fecha de entrega será el último día del mes en curso.
A.6. Información (Análisis)
Analizando el problema y para tener una mejor idea del sistema a proyectar,
se elabora la tabla siguiente, con algunos datos, que posteriormente podrán
servir como banco de pruebas del sistema.
~2~
Osvaldo Miguel Carreon
Fundamentos de Programación
Figura A1. Colección de
libros
A.7. Casos de Uso
A.7.1. Diagrama UML
Los casos de uso especifican principalmente la funcionalidad o casos para los
que se usará el sistema (programa). Los casos para los cuales se utilizará el
sistema (programa) se muestran en el diagrama UML de Casos de Uso,
Figura A-2. Sólo se muestran los casos de uso Alta, Lista y Busca de Libros,
los demás quedan en construcción. El caso de uso Circulación se refiere al
préstamo y devolución de documentos a los usuarios.
~3~
Osvaldo Miguel Carreon
Fundamentos de Programación
Sistema
Nombre del Sistema
Bibliotheka-3 Escribir
Libros
Leer
Actor Diccionarios Buscar
Operador Principal Revistas
CDs
Caso de
uso
Alumnos
Profesores
Circulación
Figura A-2. Diagrama de casos de
uso.
A.7.2. Detalle
La descripción detallada de los casos de uso se realiza desde el punto de
vista del usuario del sistema (programa); es decir, para cada caso de uso se
describen las actividades que realizará el usuario al operar el sistema.
A.7.2.1. Principal
El caso de uso principal describe la funcionalidad o control general del
sistema, desde que se inicia la ejecución del programa y hasta que termina,
describiendo en general la interacción del usuario (operador) con el sistema
(programa). Figura A-2a.
Figura A-2a. Caso de uso principal
~4~
Osvaldo Miguel Carreon
Fundamentos de Programación
Nombre: Principal
ID: CU1
Actores: Operador
Precondición: El Operador (O) ha iniciado una sesión de la Aplicación (A), desde el S.O.
Actividad:
1. La A. despliega (en pantalla):
“Bienvenido a Bibliotheka-0”
“Pulse una tecla para continuar.”
2. El O. pulsa una tecla.
3. La A. despliega:
“Menú Principal”
“1. Libros.
“2. Diccionarios.
“3. Revistas.
“4. CDs
“5. Alumnos.
“6. Profesores.
“7. Salir.”
“Elija una opción del menú: “
4. El O. elije una opción tecleando 1, 2, 3, 4, 5 o 6.
4.1. Si el O. elige 1, la A. ejecuta el caso Libros, al final de lo cual retorna a 3.
4.2. Si el O. elige 2, la A. ejecuta el caso Diccionarios, al final de lo cual retorna a 3.
4.2. Si el O. elige 3, la A ejecuta el caso Revistas, al final de lo cual retorna a 3.
4.3. Si el O. elije 4, la A ejecuta el caso CDs, al final de lo cual retorna a 3.
4.4. Si el O. elige 5, la A ejecuta el caso Alumnos, al final de lo cual retorna a 3.
4.5. Si el O. elige 6, la A ejecuta el caso Profesores, al final de lo cual retorna a 3.
4.6. Si el O. elige 7, la A. ejecuta el caso Salir, al final de lo cual la A. termina.
Postcondición: La A. retorna al Sistema Operativo (S.O.).
A.7.2.2. Caso de uso Alumnos
Figura A-2b. Caso de uso Alumnos.
Nombre: Alumnos
ID: CU2
Actores: Operador
Precondición: El Operador (O) ha elegido la opción 5 del Menú Principal.
Actividad:
1. La A. despliega:
“Menú Alumnos”
“1. Alta de Alumnos”
“2. Lista de Alumnos”
“3. Salir de Alumnos”
“4. Salir.”
“Elija una opción del menú: “
2. El O. elije una opción tecleando 1, 2, 3 o 4.
2.1. Si el O. elige 1, la A. ejecuta el caso Alta al final de lo cual retorna a 1.
2.2. Si el O. elige 2, la A ejecuta el caso Lista, al final de lo cual retorna a 1.
2.3. Si el O. elige 3, la A ejecuta el caso Buscar, al final de lo cual retorna a 1.
~5~
Osvaldo Miguel Carreon
Fundamentos de Programación
2.4. Si el O. elije 4, la A ejecuta el caso Salir, al final de lo cual retorna al Menú
Principal.
Postcondición: La A. retorna al Menú Principal.
A.7.2.2.1. Caso de uso Escribir Alumnos
Figura A-2c. Caso de uso escribir alumnos.
Nombre: Escribir Alumnos
ID: CU3
Actores: Operador
Precondición: El Operador (O) ha seleccionado la opción 1 Alta) del Menú
Libros.
Actividad:
1. La A. despliega en pantalla:
“Escribir Alumnos”
“Alumno 1:”
“Id: “
2. El O. teclea el Id y pulsa Enter
3. La A. despliega
“Nombre: “
4. El O. teclea el nombre y pulsa Enter.
5. La A. despliega
“Carrera: “
6. El O. teclea el Carrera y pulsa Enter.
7. La A. despliega
“Semestre: “
8. El O. teclea el Semestre y pulsa Enter
9. Mientras no-termina, regresa a 1,
“Pulse una tecla para continuar”
Postcondición: La A. retorna a 4.1 de Principal
A.7.2.2.2. Caso de uso lista alumnos
Figura A-2d. Caso de uso lista alumnos.
Nombre: lista alumnos
ID: CU4
Actores: Operador
Precondición: El Operdor (O) ha seleccionado la opción 2 (lista alumnos) del Menú
Alumnos
Actividad:
1. La A. despliega en pantalla:
“lista alumnos”
2. La A. despliega en pantalla:
“Id: [LbrId]
“Nombre: [LbrTtl]
“Carrera: “ LbrTma
~6~
Osvaldo Miguel Carreon
Fundamentos de Programación
“Semestre: [LbrPrc]
3. Mientras no-termina, regresa a 2.
4. La A. desliega en pantalla:
“Pulse una tecla para terminar.”
5. El O. pulsa una tecla.
Postcondición: La A.retorna a 3 de Principal.
A.7.2.2.3. Caso de uso Busca Alumnos
Figura A-2e. Caso de uso Buscar Alumnos.
Nombre: Busca Alumnos
ID: CU5
Actores: Operador
Precondición: El Operdor (O) ha seleccionado la opción 3 (Buscar) del Menú
Libros
Actividad:
1. La A. despliega en pantalla:
“buscar alumno, ingrese ID o Nombre”
2. La A. desliega en pantalla:
“Pulse una tecla para terminar.”
3. El O. pulsa una tecla.
Postcondición: La A. retorna al Menú Libros.
A.7.2.2.4. Caso de uso Salir de Alumnos.
Figura A-2f. Caso de uso Salir Alumnos.
Nombre: Salir Alumnos
ID: CU6
Actores: Operador
Precondición: El Operdor (O) ha seleccionado la opción 4 (Salir) del Menú
Alumnos
Actividad:
1. La A. despliega en pantalla:
“Salir de Alumnos.”
2. La A. despliega en pantalla:
“Pulse una tecla para terminar.”
3. El O. pulsa una tecla.
Postcondición: La A. retorna al Menú Principal.
A.7.2.3. Caso de uso Salir Principal
“Salir de Bibliotheca-0”
~7~
Osvaldo Miguel Carreon
Fundamentos de Programación
B. Diseño del sistema (Proyecto Arquitectural: estructura del
sistema)
Opciones de Resolución del Problema
B1. Opción 1
B.1.1. Modelado del sistema (programa)
Se procede a modelar groso modo el sistema (programa), mediante el uso de
la POO y los diagramas UML, considerando los requerimientos (Sección A
anterior) tanto funcionales (dominio de la aplicación, casos de uso, datos de
entrada y salida), como los no-funcionales.
B.1.1.1 Diagrama de clases (Arquitectura del Sistema)
De acuerdo con la técnica de POO, lo primero que debe hacerse para
modelar el sistema (programa) es identificar las clases y objetos (nombre,
atributos y métodos) que representarán (emularán) la realidad (biblioteca
real), lo cual se muestra en un diagrama de clases UML. En la redacción del
problema a resolver (Sección A.1 anterior), las clases se identifican por los
sustantivos y los métodos por los verbos
Así, al leer el dominio de la aplicación (problema), inciso A.1, identificamos a
la colección de libros de la biblioteca como una clase, de manera que a cada
uno de los libros de la biblioteca los identificamos como objetos. De este
modo, en la Figura B-1 se muestra el diagrama de clases, utilizando los
diagramas UML.
~8~
Osvaldo Miguel Carreon
Fundamentos de Programación
Controlador Vista Modelo
Principal() : cMenu cAlumno Nombre de la
Entero clase
- OpcionPrincipal: Entero - LbrId : Entero = 0
=0 - LbrTtl: Cadena = 0 Atributos de la
- OpcionLibro : Entero = - LbrTma : Cadena = clase
0 0
- LbrPrc : Flotante =
+ cMenu() 0
+ mMnuPrn() : Entero
Métodos de la clase
+ mMnuLbr() : Entero + cLibro()
+ mLbrEsc(Nulo) :
oMenu Nulo
+ mLbrLer(Nulo) :
Nulo
Método constructor + mLbrBsc(Nulo):
oAlumno Objetos de
Nulo cLibro
Figura B-1. Diagrama UML de clases y
objetos.
Obsérvese que se crea la clase vista llamada cMenu, la cual contiene una
operación llamada LbrMnu() cuyo método mostrará el menú principal. De
éste modo, en el método principal sólo se invoca el método LbrMnu() que
devuelve el valor de Opción el cual se asigna a Selección mediante la
operación de asignación Selección = cMenu.LbrMnu(), como se muestra en la
Figura B-8.
Usaremos los símbolos de visibilidad de atributos y operaciones:
- Privada (Private)
+ Pública (Public)
# Protegido (Protected)
B.1.1.2. Métodos (Diagramas de Actividad)
Una vez elaborado el diagrama de clases, se procede a elaborar el Diagrama
de Actividad (programas) de todos los métodos, de todas las clases, en este
caso las clases cMenu y cLibro, como se muestra en las Figuras B-2, B-3, B-4,
B5, B6 y B7 para los métodos cMenu(), mMnuPrn(), mMnuLbr, cLbrClc(),
mLbrEsc() y mLbrLer(), respectivamente.
B.1.1.2.1. Menú
~9~
Osvaldo Miguel Carreon
Fundamentos de Programación
Entra
OpcionPrincipal = 0
OpcionAlumno= 0
Figura B-2. Método constructor de
cMenu().
Sale
“Menú Principal “
“1. Libros
“2. Diccionarios.
“3. Revistas
“4. CDs
“5. Alumnos
“6. Profesores
“7. Salir“
“Elija una opción: “
Entra
OpcionPrincipal
Retorna OpciónPrincipal
Figura B-3. Método mMnuPrn() de cMenu.
~ 10 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Sale
“Menú Alumnos“
“1. Alta
“2. Lista
“3. Buscar
“4. Salir“
“ Elija una opción: “
Entra
OpcionAlumnos
Retorna
OpcionAlumnos
Figura B-4. Método mMnuLbr() de cMenu.
B.1.1.2.2. Libros.
Entra
aAluId= 0
aAluNom= 0
aAluCar= 0
aAluSem<= 0
Figura B-5. Método constructor de cAlumno
~ 11 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Opera
f = open("Alumnos.txt", “w”)
Sale
"Alta de alumnos: "
Declara
I=0
Para i=0; i<Max_alumnos
Sale
"Alumno "(i+1)
Sale
“aAluId: “
Entra
ID
Sale
“aAluNom: “
Entra
Nombre
Sale
“aAluCar: ”
Entra
Carrera
Sale
“aAluSem: “
Entra
Semestre
Extrae (escribe) a Alumno.txt
aAluId
aAluNom
aAluCar
aAluSem
I=i+1
Invoca
close(“Alumno.txt”)
Retorna
Retorna
Figura B-6. Método mAlmLer () de cLbrClc
~ 12 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Invoca
Open(“Alumnos.txt”, “w”)
Sale
“Lista de alumnos:”
Declara
I=0
Para(I < Max_alumnos)
Sale
“Alumnos: ” (i+1)
Inserta de LbrArch.txt
ID
Nombre
Carrera
Semestre
“Fin de lista”
Invoca
Close(”Alumnos.txt)
Retorna
Figura B-7. Método mAlmBsc () de cLbrClc
1.1.3. Principal
El método (programa) principal se muestra en la Figura B-8. El programa
empieza a modelarse declarando todas las clases. Dado que en este caso
hay dos clases, como se ve en la Figura B-1, entonces aparecen dos clases o
tipos en la Figura B-8.
~ 13 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Inicio Principal
Declara
SelecciónPrincipal, SeleccionAlumnos: Entero
cMenu oMenu
cLibro oLibro
Sale:
“Bienvenido a Bibliotheka-0”
Pausa
Inicia While
Calcula (Opera):
SelecciónPrincipal = oMenu.MnuPrn()
Inicio Match
SeleccionPrinci
pal
Caso 1: Inicio While
Caso 2:
Sale
“En construcción” Calcula (Opera):
continue SelecciónLibro = oMenu.MnuLbr()
- Inicio Match
-
- SeleccionLibro
Caso1:
Caso 7: Salir Limpia pantalla
break
Invoca
LbrEsc() de oLibro
Pausa
Break
Sale
“Pulsa una tecla para terminar” Caso2:
Pausa Limpia pantalla
Invoca
LbrLer() de oLibro
Fin Principal Pausa
Break
Caso 4: Salir (Break)
Sale
“Pulsa una tecla para continuar”
Figura B-8. Pausa
~ 14 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Una vez declaradas las clases, se especifican todos los métodos
correspondientes a las operaciones de todas y cada una de las clases. Dado
que en éste caso hay dos clases con las operaciones cMenu, mMnuPrn(),
mMnuLbr(), cLibro(), LbrEsc() y LbrLer(), como se ve en la Figura B-1,
entonces en el programa siguen los seis métodos correspondientes
mostrados en la Figura B-8.
El modelado del programa continúa especificando las declaraciones del
método principal, mostradas en la Figura B-8 y para lo cual se consideran los
casos de uso mostrados en la Figura A-2.
B.2.2. Diagrama de Actividad
Complementariamente, en la Figura B-9 se muestra el diagrama de
interacción de la Opción 1.
Controlador Vista Modelo
Princip
Operador cMenu cAlumno
al
Inicio
LbrMenu()
Sale Menú
Elige Alta
Opcion = 1
LbrEsc()
Retorna
i:=0..2
Figura B-9. Diagrama de Interacción,
Opción 1
B2. Opción 2
Por simplicidad, ahora sólo se desarrollará la Opción 1 anterior, dejando para otro
ejemplo el desarrollo de otras Opciones.
B.3. Evaluación y Selección de la Opción Mejor
~ 15 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Debido a que tenemos una sola solución, en la tabla de decisión siguiente aparece
solamente dicho caso.
Tabla.
Opción \ Criterios Técnico Técnico Técnico Económico Financiero
Factibilida Flexibilidad Reusabilidad Valor Posibilidad
d
Opción 1 100 100 75 100 100
Opción seleccionada: Opción 1.
B.4. Detalle
La opción seleccionada se detalla entonces suficientemente, para construir
un prototipo. El detalle se puede expresar, en segunda aproximación
(refinamiento), mediante pseudocódigo o detallando los diagramas UML
anteriores.
(Nota: Esta etapa se omite por el momento, por simplicidad.)
Obsérvese que, hasta aquí, la solución al problema está diseñada en forma
de diagramas UML, lo cual no presupone un lenguaje de programación y, por
lo tanto, el sistema puede ser programado en algún lenguaje de
programación que soporte la programación orientada a objetos tal como C+
+, Java o Python. Sin embargo, la codificación del sistema (programa) se
hará finalmente en lenguaje Python.
C. Construcción (codificación) en Python
Utilizando el IDLE (intérprete) de Python, se edita, compila, corre y depura el
programa.
C.1. Proyecto Ejecutivo
El proyecto ejecutivo es aquel mediante el cual se construye el sistema. El
detalle de este proyecto incluye la descarga de Python, etcétera (diagrama
de Gantt o Ruta Crítica), no incluídos en este informe.
C.2. Construcción
~ 16 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
La construcción implica, en este caso, la codificación, pruebas y depuración
del sistema (programa), como se muestra a continuación.
# --------------------------
# Simulación rápida de Libro
# --------------------------
class oLibro:
@staticmethod
def mLbrLer():
print("Leyendo libro…")
# --------------------------
# Clase Alumno
# --------------------------
class cAlumno:
def __init__(self, alu_id="", alu_nom="", alu_car="", alu_sem=""):
self.aAluId = alu_id
self.aAluNom = alu_nom
self.aAluCar = alu_car
self.aAluSem = alu_sem
# Alta de alumnos (sobrescribe el archivo)
def mAlmEsc(self, max_alumnos: int):
with open("Alumnos.txt", "w", encoding="utf-8") as f:
print("\nAlta de alumnos:")
for i in range(max_alumnos):
print(f"Alumno {i+1}")
self.aAluId = input("ID: ")
self.aAluNom = input("Nombre: ")
self.aAluCar = input("Carrera: ")
self.aAluSem = input("Semestre: ")
f.write(f"{self.aAluId}\n{self.aAluNom}\n{self.aAluCar}\
n{self.aAluSem}\n")
print("➜ Registro(s) guardado(s).")
# Listar alumnos
def mAlmLer(self, max_alumnos: int):
try:
with open("Alumnos.txt", "r", encoding="utf-8") as f:
print("\nLista de alumnos:")
for i in range(max_alumnos):
self.aAluId = f.readline().strip()
self.aAluNom = f.readline().strip()
self.aAluCar = f.readline().strip()
self.aAluSem = f.readline().strip()
if not self.aAluId: # archivo vacío / fin
~ 17 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
break
print(f" • ID: {self.aAluId} "
f"Nombre: {self.aAluNom} "
f"Carrera: {self.aAluCar} "
f"Semestre: {self.aAluSem}")
except FileNotFoundError:
print("\nNo existe Alumnos.txt aún – registra primero.")
input("Pulse una tecla para continuar…")
# Búsqueda simple por ID o Nombre
def mAlmBsc(self):
criterio = input("\nBuscar alumno – ingrese ID o parte del nombre:
").strip().lower()
try:
with open("Alumnos.txt", "r", encoding="utf-8") as f:
registros = f.read().splitlines()
encontrados = []
for i in range(0, len(registros), 4):
reg = registros[i:i+4]
if len(reg) < 4:
break
if (criterio in reg[0].lower()) or (criterio in reg[1].lower()):
encontrados.append(reg)
if encontrados:
print("\nCoincidencias:")
for r in encontrados:
print(f" • ID: {r[0]} Nombre: {r[1]} Carrera: {r[2]}
Semestre: {r[3]}")
else:
print("Sin coincidencias.")
except FileNotFoundError:
print("No existe Alumnos.txt aún – registra primero.")
input("Pulse una tecla para continuar…")
# --------------------------
# Menús auxiliares
# --------------------------
def submenu_diccionario():
while True:
print("\nSubmenú Diccionario")
print("1. Diccionario (en construcción)")
print("2. Revista (en construcción)")
print("3. CDs (en construcción)")
print("4. Alumnos (en construcción)")
print("5. Profesores (en construcción)")
print("6. Regresar")
~ 18 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
op = input("Seleccione una opción: ")
if op == "6":
break
print("Opción en construcción.")
input("Pulse una tecla para continuar…")
def submenu_alumnos(o_alumno, max_alumnos):
while True:
print("\nMenú Alumnos")
print("1. Alta de alumnos")
print("2. Lista de alumnos")
print("3. Buscar alumno")
print("4. Regresar")
op = input("Seleccione una opción: ")
match op:
case "1":
o_alumno.mAlmEsc(max_alumnos)
input("Pulse una tecla para continuar…")
case "2":
o_alumno.mAlmLer(max_alumnos)
case "3":
o_alumno.mAlmBsc()
case "4":
break
case _:
print("Opción inválida.")
input("Pulse una tecla para continuar…")
# --------------------------
# Programa principal
# --------------------------
MAX_ALUMNOS = 3
alumno_obj = cAlumno()
print("Bienvenido")
input("Pulse una tecla para continuar…")
while True:
print("\nMenú Principal")
print("1. Leer Libro")
print("2. Diccionario")
print("3. Buscar Libros (en construcción)")
print("4. Alumnos")
print("5. Salir")
opcion = input("Seleccione una opción: ")
~ 19 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
match opcion:
case "1":
oLibro.mLbrLer()
input("Pulse una tecla para continuar…")
case "2":
submenu_diccionario()
case "3":
print("En construcción.")
input("Pulse una tecla para continuar…")
case "4":
submenu_alumnos(alumno_obj, MAX_ALUMNOS)
case "5":
input("Pulse una tecla para salir…")
break
case _:
print("Opción inválida.")
input("Pulse una tecla para continuar…")
print("Programa terminado.")
Pruebas y Depuración
En pantalla:
Bienvenido
Pulse una tecla para continuar…
Menú Principal
1. Leer Libro
2. Diccionario
3. Buscar Libros (en construcción)
4. Alumnos
5. Salir
Seleccione una opción: 4
Menú Alumnos
1. Alta de alumnos
2. Lista de alumnos
3. Buscar alumno
4. Regresar
Seleccione una opción: 2
~ 20 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
Lista de alumnos:
• ID: 202530 Nombre: Osvaldo Carrera: Comunicaciones y Electronica
Semestre: 4
• ID: 1234 Nombre: Raul Carrera: Sistemas computacionales Semestre: 1
• ID: 0987 Nombre: Jose Carrera: Ciencia de datos Semestre: 5
Pulse una tecla para continuar…3
Menú Alumnos
1. Alta de alumnos
2. Lista de alumnos
3. Buscar alumno
4. Regresar
Seleccione una opción: 4
Menú Principal
1. Leer Libro
2. Diccionario
3. Buscar Libros (en construcción)
4. Alumnos
5. Salir
Seleccione una opción:
En la RAM:
Dir Localidad Nota
00
01 Programa
02 “
03 “
04 “
05 “
…
17 1 SeleccionPrincipal
18 1 SelecciónAlumno
…
20 0, 1 OpcionPrincipal
21 0, 1 OpcionAlumno
22 47 mMnuPrn
23 63 mMnuLbr
…
9F f
A0
A1 0, 1 LbrId
A2 0, Esperanza LbrTtl
A3 0, Peje LbrAtr
A4 0, 100.00 LbrPrc
A5 LbrEsc()
~ 21 ~
Osvaldo Miguel Carreon
Fundamentos de Programación
A6 LbrLer()
…
A
A
AB
…
FF
CPU/PC
198 Main()
C.3. Informes
C.3.1. Informe Técnico
El informe técnico es, básicamente, el presente documento.
C.3.2. Manual del Usuario
El manual del usuario contiene, básicamente, las instrucciones para que el
usuario del programa lo opere apropiadamente.
D. Operación y Mantenimiento
D.1. Proyecto de Operación y Mantenimiento
Mejora Contínua.
~ 22 ~