/
menu.py
127 lines (104 loc) · 4.17 KB
/
menu.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
import json
from utilities import search, get_full_name, location, clear
school_data = []
students_data = []
teachers_data = []
def load_data():
global school_data
global students_data
global teachers_data
with open(location('data/school.json')) as f:
school_data = json.load(f)
with open(location('data/Students.json')) as f:
students_data = json.load(f)
with open (location('data/Teachers.json')) as f:
teachers_data = json.load(f)
def menu_do(menu, **kwargs):
while True:
clear()
print("*" * 24)
print("* Welcome to %s %s *" % (school_data['number'], school_data['type']))
print("*" * 24)
print("MENU > ", kwargs.get("sub_menu", ''))
for number, el in enumerate(menu, start=1):
print("%s. %s" % (number, el["text"]))
choice = int(input(": "))
if menu[choice-1].get("do"):
menu[choice-1]["do"]()
break
elif menu[choice-1].get("sub_menu"):
menu_do(menu[choice-1]["sub_menu"], sub_menu=menu[choice-1]['text'])
# return True
else:
raise KeyError ('Вы ввели не существующий ключ')
def about_students():
for class_room in school_data["classes"]:
print("Ученики '%s' класса: " % class_room)
for student in search(students_data, class_room=class_room):
if student['school'] == "67 школа": #FIXME: в файле school.json тип школы на английском
print(" ", enumerate(get_full_name(student), start=1)) # TODO: Добавить нумерацию учеников для каждого класса
print("-" * 24)
input("Нажмите Enter для возврата в предыдущее меню")
def about_classes():
print("Все классы нашей школы")
print("||", " || ".join(school_data['classes']), "||")
print()
class_room = input("Введите класс, для подробной информации по нему \n"
" или Enter для возврата в предыдущее меню:")
if class_room in school_data["classes"]:
print("\nИнформация по %s классу:" % class_room)
print(" Учителя: ", [get_full_name(el) for el in search(teachers_data)])
print(" Ученики: ", [get_full_name(el) for el in search(students_data)])
input("Нажмите Enter для возврата в предыдущее меню")
elif (class_room != '') and not (class_room in teachers_data['classes']):
print('Введенного класса не существует')
about_classes()
# def info_students():
# for class_room in school_data["classes"]:
# print("Ученики '%s' класса: " % class_room)
# for student in search(students_data, class_room=class_room):
# # FIXME: учесть(во всей программе), в файле могут быть ученики из других школ
# print(" ", get_full_name(student)) # TODO: Добавить нумерацию учеников для каждого класса
# print("-" * 24)
# input("Нажмите Enter для возврата в предыдущее меню")
def edit():
print("Menu > Edit")
input("Нажмите Enter для возврата в предыдущее меню")
pass
def end():
global run
print("Goodbye")
run = False
return True
load_data()
menu = [
{
"text": "Информация",
# "do": info,
"sub_menu": [
{
"text": "О классах",
"do": about_classes
},
{
"text": "Об учениках",
"do": about_students
},
{
"text": "назад",
"do": lambda: True
}
]
},
{
"text": "Редактировать",
"do": edit
},
{
"text": "Выход",
"do": end
}
]
run = True
while run:
menu_do(menu)