需求:
1. 先打印提示界面(1-6的数字), 让用户选择他/她要进行的操作.
2. 当用户选择1的时候, 实现操作: 添加学生(学生编号, 学生姓名, 手机号).
3. 当用户选择2的时候, 实现操作: 删除学生(根据编号删除)
4. 当用户选择3的时候, 实现操作: 修改学生信息(只能改姓名, 手机号)
5. 当用户选择4的时候, 实现操作: 查询单个学生信息(根据id查)
6. 当用户选择5的时候, 实现操作: 查询所有学生信息
7. 当用户选择6的时候, 实现操作: 退出系统
分析:
1一共有几个类?
学生类:里面包含三个学生属性:学生编号, 学生姓名, 手机号
操作类:里面包含方法增加学生,删除学生,修改学生,查询学生,展示所有学生,以及退出系统六个方法。
Main类:为使逻辑更清晰,定义一个类专门用来运行。
相关知识:
把每一条学生数据作为一个对象保存在列表中,使用列表嵌套对象保存所有数据
类方法:在方法内部,只需要对于类属性和类方法进行调用,而不需要使用到实例属性和实例方法
静态方法:在方法中,不需要使用实例也不需要使用类的情况下,可以将方法写成静态方法
注意:for...else...的使用
代码:
(没有做输入合法值判断,代码中手机号换成了年龄)
学生类:
#学生类
class Student(object):
def __init__(self, student_id, student_name, student_age):
self.student_id = student_id
self.student_name = student_name
self.student_age = student_age
def __str__(self):
return f"学生id:{self.student_id},姓名:{self.student_name},年龄:{self.student_age}"
操作类:
#操作类
from Student import Student
class Management(object):
list_stu = []
@staticmethod
def first_page():
print("""
1.添加学生(学生编号, 学生姓名, 年龄)
2.删除学生(根据编号删除)
3.修改学生信息(只能改姓名, 年龄)
4.查询单个学生信息(根据id查)
5.查询所有学生信息
6.退出系统
""")
@classmethod
def choose_option(cls, option):
if option == "1":
cls.add_student()
elif option == "2":
cls.delete_student()
elif option == "3":
cls.modify_student()
elif option == "4":
cls.search_student()
elif option == "5":
cls.show_student()
else:
cls.log_out()
@classmethod
def add_student(cls):
s_id = input("请输入学生编号:")
# 判断id是否存在
for stu_info in cls.list_stu:
if stu_info.student_id == s_id:
print("该学生ID已经存在")
break
# 这个else为什么在这里?
else:
s_name = input("请输入学生姓名:")
s_age = input("请输入学生年龄:")
new_stu = Student(s_id, s_name, s_age)
cls.list_stu.append(new_stu)
# Management.add_student()
# print(Management.list_stu)
@classmethod
def delete_student(cls):
s_id = input("请输入学生编号:")
for stu_info in cls.list_stu:
if stu_info.student_id == s_id:
cls.list_stu.remove(stu_info)
break
else:
print("输入有误")
@classmethod
def modify_student(cls):
s_id = input("请输入学生编号:")
# 判断id是否存在
for stu_info in cls.list_stu:
if stu_info.student_id == s_id:
# 修改对象的属性值
stu_info.student_name = input("请输入学生姓名:")
stu_info.student_age = input("请输入学生年龄:")
break
# 找不到ID
else:
print("找不到该学生!")
@classmethod
def search_student(cls):
s_id = input("请输入学生编号:")
# 判断id是否存在
for stu_info in cls.list_stu:
if stu_info.student_id == s_id:
print(f"学生id:{stu_info.student_id},姓名:{stu_info.student_name},年龄:{stu_info.student_age}")
break
# 找不到ID
else:
print("输入有误,找不到该学生!")
@classmethod
def show_student(cls):
for stu_info in cls.list_stu:
print(stu_info)
@staticmethod
def log_out():
exit()
Main类:
from Management import Management
class Main(object):
@staticmethod
def run():
while True:
Management.first_page()
option = input("请输入选项:")
Management.choose_option(option)