学生管理系统类版本

学生管理系统类封装

题目要求
(第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时,输出如下
    行号        姓名       年龄        性别  
    ---------------------------------------
    1           小明        10         male
    2           小红        12         female
    3           张三        9          male
    
  2. 管理员输入2时,提示继续输入名字,用户输入后将结果保存到student_list中,提示保存成功。
    添加成功之后,回到主菜单。用户再次查询学员列表,发现学员已增加。
        请输入要添加学生的新姓名:
        >?  xxx
        请输入要添加学生的年龄:
        >?  10
        请输入要添加学生的性别:
        >?  10
        添加完毕。
    
  3. 管理员输入3时,提示修改"第几个"名字,选择编号后提示继续输入修改后的名字,修改后的结果保存到student_list中。保存成功后回到主菜单。
        要修改第几个学生?:
        >?  1
        修改后的姓名是?:
        >?  大明
        修改后的年龄是?:
        >?  10
        修改成功。
    
  4. 管理员输入4时,打印子菜单
    删除>请输入子选项:
       1> 按序号删除
       2> 全部删除  (clear)
    
    子选项选择1时,提问要删除第几个学生,管理员输入编号后删除对应学生。
        >?  1
        删除成功
    
    子选项选择2时,提示是否删除全部,选择’Y’时删除全部。
        确认全部删除?(Y/N):
        >?  Y
        删除全部成功
    
  5. 管理员输入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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值