-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpractica_47_2.py
141 lines (114 loc) · 4.73 KB
/
practica_47_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import pickle
# ... (código anterior) ...
class Estudiante:
numero_legajo = 1
def __init__(self, nombre, email, clave):
self.legajo = Estudiante.numero_legajo
Estudiante.numero_legajo += 1
self.email = email
self.clave = clave
self.nombre = nombre
self.meritos = 1000
class Beneficio:
def __init__(self, nombre, costo):
self.nombre = nombre
self.costo = costo
def agregar_beneficio(beneficios, nombre, costo):
beneficios.append(Beneficio(nombre, costo))
print("Beneficio agregado exitosamente.")
def listar_beneficios(beneficios):
print("Beneficios disponibles:")
for beneficio in beneficios:
print(f"{beneficio.nombre} - Costo: {beneficio.costo} créditos")
def acreditar_logros(estudiante, puntos):
estudiante.meritos += puntos
print(f"Se acreditaron {puntos} puntos. Méritos disponibles: {estudiante.meritos}")
def iniciar_sesion(estudiantes, beneficios):
email = input("Ingrese su email: ")
clave = input("Ingrese su clave: ")
for estudiante in estudiantes:
if estudiante.email == email and estudiante.clave == clave:
print("Inicio de sesión exitoso.")
mostrar_menu_beneficios(estudiante, beneficios)
return
print("Credenciales incorrectas.")
def mostrar_menu_beneficios(estudiante, beneficios):
while True:
print("\n--- Menú de Beneficios ---")
print("1. Mostrar créditos disponibles")
print("2. Mostrar beneficios disponibles")
print("3. Acreditar logros")
print("4. Cerrar sesión")
opcion = input("Elija una opción: ")
if opcion == '1':
print(f"Créditos disponibles: {estudiante.meritos}")
elif opcion == '2':
listar_beneficios(beneficios)
elif opcion == '3':
puntos = int(input("Ingrese la cantidad de puntos a acreditar: "))
acreditar_logros(estudiante, puntos)
elif opcion == '4':
return
else:
print("Opción no válida. Intente nuevamente.")
class Administrador:
def __init__(self, username, password):
self.username = username
self.password = password
def autenticar_administrador(administradores, username, password):
for admin in administradores:
if admin.username == username and admin.password == password:
return True
return False
def menu_administracion(estudiantes, beneficios):
while True:
print("\n--- Menú de Administración ---")
print("1. Agregar beneficio")
print("2. Salir")
opcion = input("Elija una opción: ")
if opcion == '1':
nombre = input("Ingrese el nombre del beneficio: ")
costo = int(input("Ingrese el costo del beneficio en créditos: "))
agregar_beneficio(beneficios, nombre, costo)
elif opcion == '2':
return
else:
print("Opción no válida. Intente nuevamente.")
def guardar_registros(estudiantes, beneficios):
with open("registros.dat", "wb") as registros_file:
pickle.dump((estudiantes, beneficios), registros_file)
def guardar_logros_y_beneficios(beneficios):
with open("logrosYbeneficios.txt", "w") as logros_file:
logros_file.write("Beneficios disponibles:\n")
for beneficio in beneficios:
logros_file.write(f"{beneficio.nombre} - Costo: {beneficio.costo} créditos\n")
if __name__ == "__main__":
beneficios = []
administradores = []
estudiantes = []
administradores.append(Administrador("admin1", "contraseña1"))
administradores.append(Administrador("admin2", "contraseña2"))
while True:
print("\n--- Menú Principal ---")
print("1. Iniciar sesión como estudiante")
print("2. Iniciar sesión como administrador")
print("3. Salir")
opcion = input("Elija una opción: ")
if opcion == '1':
iniciar_sesion(estudiantes, beneficios)
elif opcion == '2':
while True:
username = input("Ingrese el nombre de usuario del administrador: ")
password = input("Ingrese la contraseña del administrador: ")
if autenticar_administrador(administradores, username, password):
print("Inicio de sesión de administrador exitoso.")
menu_administracion(estudiantes, beneficios)
break
else:
print("Credenciales de administrador incorrectas. Intente nuevamente.")
elif opcion == '3':
guardar_registros(estudiantes, beneficios)
guardar_logros_y_beneficios(beneficios)
break
else:
print("Opción no válida. Intente nuevamente.")