from datetime import datetime
#模拟的学生数据
data = [
{
'name': 'Tom',
'sex': '男',
'birthday': '20010214'
},
{
'name': 'Jerry',
'sex': '男',
'birthday': '20000214'
},
{
'name': 'Kitty',
'sex': '女',
'birthday': '20080214'
},
{
'name': 'Kitty',
'sex': '女',
'birthday': '20070214'
}
]
#学生类
class Student:
#学生初始化
def __init__(self,name, sex, birthday ):
self.name = name
self.sex = sex
self.birthday = birthday
# 获取学生年龄
def get_age(self):
this_year = datetime.now().year
age = this_year - int(self.birthday[:4])
return age
#学生管理类
class StudentSystem:
def __init__(self, name):
self.name = name
self.data = []
#美化输出打印
def beauty_print(self, data_list):
for index, student in enumerate(data_list):
print(f'序号:{index}', end='\t')
print(f'名字:{student.name:4}', end='\t')
print(f'性别:{student.sex:2}', end='\t')
print(f'年龄:{student.get_age()}')
#加载数据
def load_data(self):
for item in data:
student = Student(item['name'], item['sex'], item['birthday'])
self.data.append(student)
#启动学生管理系统
def start(self):
#系统启动加载数据
self.load_data()
while True:
self.show_menu()
op = input('选择操作: ')
if op == '1':
self.show_all_student()
elif op == '2':
self.create_student()
elif op == '3':
self.find_student()
elif op == '4':
self.modify_student()
elif op == '5':
self.remove_student()
elif op == '0':
print('退出程序')
break
else:
print('请再次输入:')
#规范姓名输入
def input_name(self):
while True:
name = input('输入名字:').strip()
if name :
return name
else:
continue
# 规范性别输入
def choose_sex(self):
sex = input('选择性别:(1.男| 2.女)').strip()
if sex == '1':
return '男'
elif sex == '2':
return '女'
else:
return '未知'
#根据名字查找学生
def find_student_by_name(self):
name = self.input_name() # t
find_list = [] # 找名字有 t
for student in self.data: # 遍历data
if name.lower() in student.name.lower():
find_list.append(student)
if find_list:
return find_list
else:
print('没有找到')
#显示菜单
def show_menu(self):
print(f'''
欢迎使用{self.name}
1.显示
2.新建
3.查询
4.修改
5.删除
0.退出
''')
#1. 显示学生信息
def show_all_student(self):
self.beauty_print(self.data)
#2.新建学生信息
def create_student(self):
name = self.input_name()
sex = self.choose_sex()
birthday = input('输入生日: ')
student = Student(name, sex, birthday )
self.data.append(student)
#3.查询学生信息
def find_student(self):
find_list = self.find_student_by_name()
self.beauty_print(find_list)
#4.修改学生信息
def modify_student(self):
find_list = self.find_student_by_name()
if find_list:
self.beauty_print(find_list)
index = int(input('选择修改的: '))
student = find_list[index]
print("当前修改的:")
name = input('新名字:').strip()
sex = self.choose_sex()
birthday = input('修改生日:')
if name:
student.name = name
student.sex = sex
student.birthday = birthday
#5.删除
def remove_student(self):
find_list = self.find_student_by_name()
if find_list:
self.beauty_print(find_list)
index = int(input('选择删除的是:'))
print('当前要删除的是:')
student = find_list[index]
self.beauty_print([student])
self.data.remove(student)
if __name__ == '__main__':
student_sys = StudentSystem('bili学生系统')
student_sys.start()
09-24
1594