python:14 函数综合练习_应用学员管理系统

函数综合练习_应用学员管理系统

  • 应用:学员管理系统
  • 递归
  • lambda 表达式
  • 高阶函数

1 应用:学员管理系统

1.1 系统简介

需求: 进入系统显示系统功能界面,功能如下

  • 1、添加学员
  • 2、删除学员
  • 3、修改学员信息
  • 4、查询学员信息
  • 5、显示所有学员信息
  • 6、退出系统

系统共有 6 个功能,用户根据自己需求选取。

1.2 步骤分析

  1. 显示功能界面

  2. 用户输入功能序号

  3. 根据用户输入的功能序列号,执行不同的功能通过函数实现

    3.1 定义函数

    3.2 调用函数

1.3 需求实现

1.3.1 框架构建

定义函数print_info 负责显示系统功能。然后再将代码框架搭建出来

工作中,需要根据实际需求调优代码,如下:

  1. 用户选择系统功能的代码需要循环使用,直到用户主动退出系统
  2. 如果用户输入 1-6 以外的数字,则需要提示用户 输入功能序号有误,请重新选择!
'''
1.显示功能界面
2.用户输入功能序号
3.按照用户输入的功能序号,执行不同的功能(函数)
'''

# 1.定义功能界面函数
def info_print():
    print("请选择功能--------------")
    print("1.添加学员")
    print("2.删除学员")
    print("3.修改学员信息")
    print("4.查询学员信息")
    print("5.显示所有学员")
    print("6.退出系统")
    print("-"*30)

# 系统功能需要循环使用,直到用户输入 6 才退出系统
# 通过 while true 实现无限循环
while True:
    info_print()

    # 2.用户输入功能序号
    # 由于 input 会将用户输入的内容转换为 str 类型,所以通过 int 转换数据类型
    select_num = int(input("请输入功能序号:"))

    # 3.根据用户输入的功能序列号,执行不同的功能通过函数实现
    if select_num == 1:
        print("添加学员")
    elif select_num == 2:
        print("删除学员")
    elif select_num == 3:
        print("修改学员信息")
    elif select_num == 4:
        print("查询学员信息")
    elif select_num == 5:
        print("显示所有学员")
    elif select_num == 6:
        # break 退出循环程序
        break
    else:
        # 因为在功能中只有 1-6 这几个功能,所以当用户输入其他数字的时候就提示功能有误
        print("输入功能序号有误,请重新选择!")

1.3.2 定义不同功能的函数

在编写代码之前,我们需要先明确每一个学员信息应该如何存储,比如学员信息都需要包含 学号、姓名、手机号 而对于这种数据类型在 python 中推荐通过字典存储,所以每一位学员信息就是一个字典

由于可能会出现不同的班级,在班级中还有不同的学员信息,所以这个时候就需要通过列表来实现存储,每个列表中存放的就是该班级的每个学员信息也就是所谓的字典

由于需要后期对学员信息做增删改查,而增删改查这么个操作需要对班级的这个列表做操作,所有这个增删改查需要被所有函数能够实现调用,那么他就是一个全局变量

所有功能函数都是操作学员信息,存储所有学员信息应该是一个全局变量,数据类型为列表。

class_info = []

我们都知道不同功能就是不同函数,所以如下步骤:

  1. 定义函数
  2. 调用函数

1.3.2.1 添加学员

  • 需求分析:

    1. 接收用户输入学员信息,并保存

    2. 判断是否添加学员信息(由于 class 是一个列表,则可以通过 append 实现追加数据)

      2.1 如果学员名字已经存在,则报错提示

      2.2 如果学员名字不存在,则准备空字典,将用户输入的数据追加到字典,在列表中追加字典数据

    3. 对呀的 if 田间成立的位置调用该函数

  • 代码实现

# 4.实现添加学员功能函数
def add_student():
    """
    注释信息:通过 help 查看
    添加学员函数
    """

    new_id = input("输入学号:")
    new_name = input("输入姓名:")
    new_tel = input("输入手机号:")

    # 声明 class_info 为全局变量
    global class_info

    # 遍历取出列表单个数据,应为单个数据为字典,这通过 name key 与 new_name 做判断是否相同
    for i in class_info:
        if new_name == i["name"]:
            print(f"{new_name} 该用户已经存在")

            # 退出当前函数
            return

    # 创建 student_dict 字典来接收不存的新学员信息
    student_dict = {}

    # 将用户输入的数据追加至 student_dict
    student_dict["id"] = new_id
    student_dict["name"] = new_name
    student_dict["tel"] = new_tel

    # 通过 append 将学员信息追加至 class_info
    class_info.append(student_dict)

    print(class_info)
[13:40:37 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
请选择功能--------------
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员
6.退出系统
------------------------------
请输入功能序号:1
输入学号:1
输入姓名:bb
输入手机号:122
[{'id': '1', 'name': 'bb', 'tel': '122'}]
请选择功能--------------
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员
6.退出系统
------------------------------
请输入功能序号:1
输入学号:2
输入姓名:bb
输入手机号:123
bb 该用户已经存在          # 提示 bb 用户已经存在
请选择功能--------------
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员
6.退出系统
------------------------------

1.3.2.2 删除学员

需求分析:

按用户输入的学员姓名进行删除

  1. 用户输入目标学员姓名

  2. 检查这个学员是否存在
    2.1 如果存在,则列表删除这个数据

    2.2 如果不存在,则提示“该用户不存在’

  3. 对应的 if 条件成立的位置调用该函数

'''
1. 用户输入要删除的学员的姓名
2. 判断学员是否存在:存在则删除;不存在提示
3. 声明 class_info 是全局变量遍历列表
4. 判断学员是否存在:存在执行删除(列表里面的字典),并 break 这个系统不允许重名
5. 删除了一个后面的不再需要遍历直接退出循环
'''

def del_student():
    # 接收用户删除学员名
    del_name = input("请输入需要删除的学员名称:")

    # 调用全局变量
    global class_info

    # 通过 for in 循环将每一个字典单独遍历
    for i in class_info:

        # 判断需要删除的学员是否匹配
        if del_name == i["name"]:
            # 调用 remove() 函数清空 i 数据
            class_info.remove(i)
            # 通过 break 退出循环避免用户名重复导致程序崩溃
            break

    # else 与 for 同级别时,则该循环正常结束都没有遍历到需要删除的学员那么就提示 del_name,"学员未注册"
    else:
        print(del_name,"学员未注册")
        print(class_info)

    # 输出所有的 class_info 信息,查看是否删除成功
    print(class_info)
    print(del_name,"学员删除成功!")

1.3.2.3 修改学员信息

需求分析:

  1. 用户输入目标学员姓名
  2. 检查这个学员是否存在
    2.1 如果存在,则修改这位学员的信息,例如手机号
    2.2 如果不存在,则报错
  3. 对应的 if 条件成立的位置调用该函数
  • 代码实现:
# 修改函数
def modify_student():
    """
    注释信息:通过 help 查看
    修改学员信息函数
    """

    # 查找学员接收用户输入数据
    modify_name = input("输入需要修改的学员:")

    global class_info

    # for 循环判断用户是否存在
    for i in class_info:
        if modify_name == i["name"]:
            # 直接通过 input 获取数据,并赋值
            i['tel'] = print("请输入修改手机号:")

            # 通过 break 退出循环避免用户名重复导致程序崩溃
            break
    else:
        print("用户名输入有误")

    print(class_info)

1.3.2.4 查询学员信息

需求分析:

  1. 用户输入目标学员姓名
  2. 检查学员是否存在
    2.1 如果存在,则显示这个学员的信息
    2.2 如果不存在,则报错提示
  3. 对应的if条件成立的位置调用该函数

代码实现

# 查询函数
def query_student():
    """
    该函数通过输入用户名实现查询
    """

    query_name = input("请输入需要查询的姓名")
    global class_info

    for i in class_info:
        if query_name == i["name"]:
            print(f"学员查询结果学号:{i['id']},姓名:{i['name']},手机号:{i['tel']}")
            # 通过 break 退出循环避免用户名重复导致程序崩溃
            break
    else:
        print("查询用户有误!")

1.3.2.5 显示所有学员信息

def query_all():
    """
    查看所有学员信息
    """
    print('学员\t姓名\t手机号\t')
    for i in class_info:
        print(f'{i["id"]}\t{i["name"]}\t{i["tel"]}')

1.3.2.6 退出程序

因为在 while True 死循环中需要通过 break 实现退出循环从而结束程序

    elif select_num == 6:
        exit_flag = input("是否退出程序:(yes or no)")
        if exit_flag == "yes" :
            # break 退出循环并实现退出程序
            break

2 全部代码

'''
1.显示功能界面
2.用户输入功能序号
3.按照用户输入的功能序号,执行不同的功能(函数)
'''
class_info = []

# 1.定义功能界面函数
def info_print():
    """
    功能界面
    """
    print("请选择功能--------------")
    print("1.添加学员")
    print("2.删除学员")
    print("3.修改学员信息")
    print("4.查询学员信息")
    print("5.显示所有学员")
    print("6.退出系统")
    print("-"*30)

# 4.实现添加学员功能函数
def add_student():
    """
    注释信息:通过 help 查看
    添加学员函数
    """

    new_id = input("输入学号:")
    new_name = input("输入姓名:")
    new_tel = input("输入手机号:")

    # 声明 class_info 为全局变量
    global class_info

    # 遍历取出列表单个数据,应为单个数据为字典,这通过 name key 与 new_name 做判断是否相同
    for i in class_info:
        if new_name == i["name"]:
            print(f"{new_name}该用户已经存在")
            return

    # 创建 student_dict 字典来接收不存的新学员信息
    student_dict = {}

    # 将用户输入的数据追加至 student_dict
    student_dict['id'] = new_id
    student_dict['name'] = new_name
    student_dict['tel'] = new_tel

    # 通过 append 将学员信息追加至 class_info
    class_info.append(student_dict)

    print(class_info)

def del_student():
    """
    注释信息:通过 help 查看
    删除学员函数
    """

    del_name = input("请输入需要删除的学员名称:")

    global class_info
    for i in class_info:
        if del_name == i["name"]:
            class_info.remove(i)
            print(del_name,"学员删除成功!")
            break
    else:
        print(del_name,"学员未注册")
        print(class_info)
    print(class_info)

# 修改函数
def modify_student():
    """
    注释信息:通过 help 查看
    修改学员信息函数
    """

    # 查找学员接收用户输入数据
    modify_name = input("输入需要修改的学员:")

    global class_info

    # for 循环判断用户是否存在
    for i in class_info:
        if modify_name == i["name"]:
            # 直接通过 input 获取数据,并赋值
            i['tel'] = print("请输入修改手机号:")

            # 修改了上述条件之后终止循环
            break
    else:
        print("用户名输入有误")

    print(class_info)

# 查询函数
def query_student():
    """
    该函数通过输入用户名实现查询
    """

    query_name = input("请输入需要查询的姓名:")
    global class_info

    for i in class_info:
        if query_name == i["name"]:
            print(f"学员查询结果学号:{i['id']},姓名:{i['name']},手机号:{i['tel']}")
            break
    else:
        print("查询用户有误!")

# 查询所有信息
def query_all():
    """
    查看所有学员信息
    """
    print('学员\t姓名\t手机号\t')
    for i in class_info:
        print(f'{i["id"]}\t{i["name"]}\t{i["tel"]}')

# 系统功能需要循环使用,直到用户输入 6 才退出系统
# 通过 while true 实现无限循环
while True:
    info_print()

    # 2.用户输入功能序号
    # 由于 input 会将用户输入的内容转换为 str 类型,所以通过 int 转换数据类型
    select_num = int(input("请输入功能序号:"))

    # 3.根据用户输入的功能序列号,执行不同的功能通过函数实现
    if select_num == 1:
        add_student()
    elif select_num == 2:
        del_student()
    elif select_num == 3:
        modify_student()
    elif select_num == 4:
        query_student()
    elif select_num == 5:
        query_all()
    elif select_num == 6:
        exit_flag = input("是否退出程序:(yes or no)")
        if exit_flag == "yes" :
            # break 退出循环并实现退出程序
            break
    else:
        # 因为在功能中只有 1-6 这几个功能,所以当用户输入其他数字的时候就提示功能有误
        print("输入功能序号有误,请重新选择!")
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇