Crear programa para llevar el
![;D](https://foro.elhacker.net/Smileys/chef/grin.gif)
Nombre del campos Tipo de campo
Carnet Entero
Nombre Cadena (50)
Telefono Cadena (10)
Edad Entero
Fecha inscrito Cadena (10)
Tambien debe llevar control de las clases que tiene , en un registro llamado fecha que contiene la siguiente informacion
Nombre del campos Tipo de campo
Carnet Entero
Nombre_Deporte Cadena (20)
Año Entero
Nivel Entero
Nota_Final Entero
import pickle
class Alumno:
def __init__(self, carnet, nombre, telefono, edad, fecha_inscrito):
self.carnet = carnet
self.nombre = nombre
self.telefono = telefono
self.edad = edad
self.fecha_inscrito = fecha_inscrito
class Ficha:
def __init__(self, carnet, nombre_deporte, año, nivel, nota_final):
self.carnet = carnet
self.nombre_deporte = nombre_deporte
self.año = año
self.nivel = nivel
self.nota_final = nota_final
class AcademiaDeportes:
def __init__(self):
self.alumnos = []
self.fichas = []
def agregar_alumno(self, alumno):
self.alumnos.append(alumno)
def modificar_alumno(self, carnet, nombre=None, telefono=None, edad=None):
for alumno in self.alumnos:
if alumno.carnet == carnet:
if nombre:
alumno.nombre = nombre
if telefono:
alumno.telefono = telefono
if edad:
alumno.edad = edad
return True
return False
def buscar_alumno(self, nombre):
for alumno in self.alumnos:
if alumno.nombre.lower() == nombre.lower():
return alumno
return None
def agregar_inscripcion(self, ficha):
self.fichas.append(ficha)
def reporte_general_alumnos(self):
print("Reporte General de Alumnos:")
for alumno in self.alumnos:
print(f"Carnet: {alumno.carnet}, Nombre: {alumno.nombre}, Teléfono: {alumno.telefono}, Edad: {alumno.edad}, Fecha inscrito: {alumno.fecha_inscrito}")
def reporte_general_fichas(self):
print("Reporte General de Fichas:")
for ficha in self.fichas:
print(f"Carnet: {ficha.carnet}, Nombre Deporte: {ficha.nombre_deporte}, Año: {ficha.año}, Nivel: {ficha.nivel}, Nota final: {ficha.nota_final}")
def reporte_alumnos_por_deporte(self, deporte):
print(f"Reporte de Alumnos por Deporte: {deporte}")
for ficha in self.fichas:
if ficha.nombre_deporte.lower() == deporte.lower():
print(f"Carnet: {ficha.carnet}, Año: {ficha.año}, Nivel: {ficha.nivel}, Nota final: {ficha.nota_final}")
def guardar_a_archivo_binario(self, filename):
with open(filename, 'wb') as file:
pickle.dump(self.alumnos, file)
pickle.dump(self.fichas, file)
def abrir_archivo(self, filename):
with open(filename, 'rb') as file:
self.alumnos = pickle.load(file)
self.fichas = pickle.load(file)
# Función para mostrar el menú
def mostrar_menu():
print("\nMenú:")
print("1. Agregar Alumno")
print("2. Modificar Alumno")
print("3. Buscar Alumno")
print("4. Agregar Inscripción")
print("5. Reportes")
print("6. Guardar a Archivo Binario")
print("7. Abrir Archivo")
print("8. Salir")
# Función principal del programa
def main():
academia = AcademiaDeportes()
while True:
mostrar_menu()
opcion = input("Ingrese el número de opción: ")
if opcion == '1':
carnet = int(input("Ingrese el carnet del alumno: "))
nombre = input("Ingrese el nombre del alumno: ")
telefono = input("Ingrese el teléfono del alumno: ")
edad = int(input("Ingrese la edad del alumno: "))
fecha_inscrito = input("Ingrese la fecha de inscripción (DD/MM/AAAA): ")
alumno = Alumno(carnet, nombre, telefono, edad, fecha_inscrito)
academia.agregar_alumno(alumno)
elif opcion == '2':
carnet = int(input("Ingrese el carnet del alumno a modificar: "))
nombre = input("Ingrese el nuevo nombre (deje vacío si no desea modificar): ")
telefono = input("Ingrese el nuevo teléfono (deje vacío si no desea modificar): ")
edad = input("Ingrese la nueva edad (deje vacío si no desea modificar): ")
if academia.modificar_alumno(carnet, nombre, telefono, edad):
print("Alumno modificado con éxito.")
else:
print("Alumno no encontrado.")
elif opcion == '3':
nombre = input("Ingrese el nombre del alumno a buscar: ")
alumno = academia.buscar_alumno(nombre)
if alumno:
print(f"Alumno encontrado - Carnet: {alumno.carnet}, Nombre: {alumno.nombre}, Teléfono: {alumno.telefono}, Edad: {alumno.edad}, Fecha inscrito: {alumno.fecha_inscrito}")
else:
print("Alumno no encontrado.")
elif opcion == '4':
carnet = int(input("Ingrese el carnet del alumno: "))
nombre_deporte = input("Ingrese el nombre del deporte: ")
año = int(input("Ingrese el año: "))
nivel = int(input("Ingrese el nivel: "))
nota_final = int(input("Ingrese la nota final: "))
ficha = Ficha(carnet, nombre_deporte, año, nivel, nota_final)
academia.agregar_inscripcion(ficha)
elif opcion == '5':
subopcion = input("Seleccione el reporte a mostrar (1. Reporte General de alumnos, 2. Reporte General de fichas, 3. Reporte de Alumnos por deporte): ")
if subopcion == '1':
academia.reporte_general_alumnos()
elif subopcion == '2':
academia.reporte_general_fichas()
elif subopcion == '3':
deporte = input("Ingrese el nombre del deporte: ")
academia.reporte_alumnos_por_deporte(deporte)
else:
print("Opción inválida.")
elif opcion == '6':
filename = input("Ingrese el nombre del archivo para guardar: ")
academia.guardar_a_archivo_binario(filename)
print("Datos guardados correctamente en archivo binario.")
elif opcion == '7':
filename = input("Ingrese el nombre del archivo para abrir: ")
academia.abrir_archivo(filename)
print("Datos cargados correctamente desde archivo binario.")
elif opcion == '8':
print("¡Hasta luego!")
break
else:
print("Opción inválida.")
if __name__ == "__main__":
main()