Python字典列表实现学生信息管理系统

公子初心
2024-03-17 / 0 评论 / 30 阅读 / 正在检测是否收录...

ltusio5b.png


# 需求:学生管理系统 实现 对学生的增删改查
students = []
def getIndexByStuId(stuId):
    for student in students:
        if stuId == student['stuId']:
            # 获取到这个字典对应的索引
            return students.index(student)


# 欢迎
def welcome():
    msg = """
欢迎使用<学生信息管理系统>
1.查询所有学生信息
2.添加
3.删除
4.修改
5.退出
"""
    return input(msg)

# 查询
def show():
    print("----------------正在[查询]--------------------")
    if students:
        print("学号\t\t\t名字\t\t\t年龄")
        for student in students:
            print(f"{student['stuId']}\t\t{student['name']}\t\t\t{student['age']}")
    else:
        print("暂无学生信息,请添加")
# 添加
def add():
    print("----------------正在[添加]--------------------")
    # 依次获取用户输入的数据
    # 存到字典中
    student = {}
    # 获取用户的学号后,要去查一查此学号是否存在 如果存在则提示用户重新输入 如果不存在 则正常添加
    while True:
        stuId = input("请输入学号:")
        i = getIndexByStuId(stuId)
        if i == None:
            student['stuId'] =  stuId
            student['name'] = input("请输入名字:")
            student['age'] = int(input("请输入年龄:"))
            # print(student)
            # 把字典添加到列表
            students.append(student)
            break
        else:
            print("请重新输入新的学号")
# 删除
def delete():
    print("----------------正在[删除]--------------------")
    while True:
        # 接收学号
        stuId = input('请输入想要删除的学生的学号')
        # 获取索引
        i = getIndexByStuId(stuId)
        if i == None:
            print("学号不存在,请重新输入")
        else:
            students.pop(i)
            print("删除成功")
            break

    # for student in students:
    #     if stuId == student['stuId']:
    #         break
    # # 删除
    # students.remove(student)
    # print(students)

# 修改
def update():
    print("----------------正在[修改]--------------------")
    while True:
        # 接收学号
        user_input = input('请输入想要修改的学生的学号(如果想退出请输入"q")')

        if user_input == 'q':
            break
        i = getIndexByStuId(user_input)

        # None
        if i == None:
            print("学号不存在,请重新输入(如果想退出请输入'q')")
        else:
            # 根据列表的索引找到列表中的字典
            while True:
                stuId = input(f"请输入新的学号({students[i]['stuId']})[回车表示不修改]")
                # 根据学号查询索引
                index = getIndexByStuId(stuId)
                if i != index:
                    print("学生id已存在")
                else:
                    break

            name = input(f"请输入新的姓名({students[i]['name']})[回车表示不修改]")
            age = input(f"请输入新的年龄({students[i]['age']})[回车表示不修改]")
            # # 如果为true说明改了,如果为false说明没改
            students[i]['stuId'] = stuId if stuId else  students[i]['stuId']
            students[i]['name'] = name if name else  students[i]['name']
            students[i]['age'] = age if age else  students[i]['age']


            break
    print(students)
    pass


while True:
    # 欢迎
    num = welcome()
    match num:
        case '1':
            show()
        case '2':
            add()
        case '3':
            # 查看列表中是否有数据,如果有才往下执行
            if students:
                show()
                delete()
                show()
            else:
                print("暂无数据,请添加")
        case '4':
            # 查看列表中是否有数据,如果有才往下执行
            if students:
                show()
                update()
            else:
                print("暂无数据,请添加")


        case '5':
            print("欢迎下次使用")
            break
        case _:
            print("输入有误,请重新输入")

0

评论 (0)

取消