学生管理系统类封装
题目要求
(第3版 类封装版本)
做一个学员名字管理系统(控制台输入和输出)。
初始学生列表
students = [{‘name’: ‘小明’, ‘age’:10, ‘sex’:‘male’},
{‘name’:‘小红’, ‘age’:12, ‘sex’:‘female’},
{‘name’:‘小李’, ‘age’:12, ‘sex’:‘male’}
]
可以在程序中先写死。
要求:
终端开始打印主菜单信息如下。提问用户选择哪种操作?
1-查询学员姓名
2-添加学员姓名
3-修改学员姓名
4-删除学员姓名
0-退出程序
请选择操作?
>? 1
- 管理员输入1时,输出如下
行号 姓名 年龄 性别 --------------------------------------- 1 小明 10 male 2 小红 12 female 3 张三 9 male
- 管理员输入2时,提示继续输入名字,用户输入后将结果保存到student_list中,提示保存成功。
添加成功之后,回到主菜单。用户再次查询学员列表,发现学员已增加。请输入要添加学生的新姓名: >? xxx 请输入要添加学生的年龄: >? 10 请输入要添加学生的性别: >? 10 添加完毕。
- 管理员输入3时,提示修改"第几个"名字,选择编号后提示继续输入修改后的名字,修改后的结果保存到student_list中。保存成功后回到主菜单。
要修改第几个学生?: >? 1 修改后的姓名是?: >? 大明 修改后的年龄是?: >? 10 修改成功。
- 管理员输入4时,打印子菜单
子选项选择1时,提问要删除第几个学生,管理员输入编号后删除对应学生。删除>请输入子选项: 1> 按序号删除 2> 全部删除 (clear)
子选项选择2时,提示是否删除全部,选择’Y’时删除全部。>? 1 删除成功
确认全部删除?(Y/N): >? Y 删除全部成功
- 管理员输入0时,退出程序。
答案:
student_list = [
{'name': '小明', 'age': 10, 'sex': 'male'},
{'name': '小红', 'age': 12, 'sex': 'female'},
{'name': '小李', 'age': 12, 'sex': 'male'}
]
class Student():
# 暴露接口,操作变量student_list增删改查,只关注学生类的数据结构。不包含其余的业务逻辑。
# 类方法或静态方法
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def show_students(self):
print('行号\t\t姓名\t\t年龄\t\t性别')
print('-'*30)
for i in range(0,len(student_list)):
stu_dict = student_list[i]
name = stu_dict['name']
age = stu_dict['age']
sex = stu_dict['sex']
print('{:^4}{:^10}{:^4}{:^12}'.format(i+1,name,age,sex))
def update(self):
stu_num = input('选择要修改第几个:\n')
for stu_num in range(1, len(student_list)+1):
new_name = input('请输入修改后的姓名:\n')
new_age = input('请输入修改后的学生年龄: \n')
new_sex = input('请输入修改后的学生性别: \n')
student_list[int(stu_num)-1]['name'] = new_name
student_list[int(stu_num)-1]['age'] = new_age
student_list[int(stu_num)-1]['sex'] = new_sex
print('修改成功')
break
else:
print('输入错误')
@classmethod
def delete(self):
print("""删除-请选择操作编号
1-按序号删除
2-全部删除
""")
sub_num = int(input('请选择子操作:'))
if sub_num == 1:
self.show_students()
stu_num = int(input('删除第几个'))
student_list.pop(int(stu_num) - 1)
print('删除成功')
elif sub_num == 2:
confirm = input('确认删除全部?(Y/N)')
if confirm == 'Y' or confirm == 'y':
student_list.clear()
print('删除成功')
elif confirm == 'N' or confirm == 'n':
print('取消删除')
else:
print('删除失败')
while True:
print("""
欢迎使用学生管理系统
1-查看学员姓名
2-添加学员姓名
3-修改学员姓名
4-删除学员姓名
0-退出程序
""")
num = int(input('请输入操作编号:'))
if num == 1:
Student.show_students()
elif num == 2:
new_stu = {}
new_stu['name'] = input('新的学生姓名')
new_stu['age'] = input('新的学生年龄')
new_stu['sex'] = input('新的学生性别')
student_list.append(new_stu)
elif num == 3:
Student.update()
elif num == 4:
Student.delete()
elif num == 0:
break