blue84818971 发表于 2021-7-14 16:39

新手python函数练习--学生管理系统--

本帖最后由 blue84818971 于 2021-7-14 16:46 编辑

# 函数练习—----制作学生信息管理系统—----
"""
需求:
1.输出主功能页面
    1.1添加学生信息
    1.2删除学生信息
    1.3修改学生信息
    1.4查询学生信息
    1.5查看所有学生信息
    1.6退出管理系统
2.输入对应功能序号
3.执行对应序号的功能
"""


def main_print():# 主页面显示
    print('------请选择功能--------')
    print('1.添加学生信息')
    print('2.删除学生信息')
    print('3.修改学生信息')
    print('4.查询学生信息')
    print('5.查看所有学生信息')
    print('6.退出管理系统')
    print('-' * 20)


# 创建空列表保存所有信息数据,将单个学生信息放入字典info = [{},{},{}]
info = []


def add_info():# 添加学生信息
    # 1.创建新信息
    new_id = int(input('请输入学号:'))
    new_name = input('请输入姓名:')
    new_gender = input('请输入性别:')
    new_tel = input('请输入手机号:')
    # 2.判断输入的信息是否重复,若重复则返回已存在,重新输入
    # 2.1 判断输入的id在info中是否存在
    # 2.1.1 info是全局变量,函数内修改要global处理
    global info
    # id是单个字典中的key,因此先遍历info,再对比判断
    for i in info:
      if new_id == i['id'] and new_name == i['name'] and new_gender == i['gender'] and new_tel == i['tel']:
            print('输入的信息已存在,请重新输入!!!')
            # return作用:判断完成,终止后面执行的代码
            return

    # 创建字典接收数据
    new_info = {'id': new_id, 'name': new_name, 'gender': new_gender, 'tel': new_tel}
    # 若不重复则录入单个信息进字典,然后添加进info
    info.append(new_info)
    print(info)


def print_change():
    print('输入1:修改id')
    print('输入2:修改name')
    print('输入3:修改gender')
    print('输入4:修改tel')


def del_info():# 删除学生信息
    # 1.输入要删除的学号和名字
    del_id = int(input('请输入要删除的学号:'))
    del_name = input('请输入要删除的名字:')
    # 2.查找指定信息,确认是否存在,若存在继续判断是否删除,若不存在,返回用户不存在
    # 2.1 全局化info,然后遍历查找判断
    global info
    for i in info:
      if del_id == i['id'] and del_name == i['name']:
            print(i)
            print('确认是否删除信息,Y删除,N取消')
            while True:
                answer = input('请输入:')
                if answer == 'Y':
                  info.remove(i)
                  print('已删除!')
                  break
                elif answer == 'N':
                  print('返回主页面')
                  return
                else:
                  print('输入有误,请重新输入')
      else:
            print('用户不存在,请重新输入!')
    print(info)


def change_info():
    # 1.输入查找的信息
    change_id = int(input('请输入要修改的学生信息学号:'))
    # 2.判断输入的指定信息是否存在,
    # 2.0 global info 处理 遍历查找
    global info
    for i in info:
      # 2.1若存在,打印该信息详情,确认信息
      if change_id == i['id']:
            print(i)
            # 确认是否修改
            print('是否确认修改?Y确认,N取消')
            # 若输入的不算Y,N 则循环重新输入
            while True:
                answer = input('请选择:')
                if answer == 'Y':
                  # 用函数代替显示代码
                  print_change()
                  # 选择修改内容错误后继续循环选择
                  while True:
                        temp = int(input('请输入要修改的内容序号:'))
                        if temp == 1:
                            i['id'] = input('请输入新id:')
                            print(i)
                            return
                        elif temp == 2:
                            i['name'] = input('请输入新name:')
                            print(i)
                            return
                        elif temp == 3:
                            i['gender'] = input('请输入新gender:')
                            print(i)
                            return
                        elif temp == 4:
                            i['tel'] = input('请输入新tel:')
                            print(i)
                            return
                        else:
                            print('输入序号有误,请重新输入序号!')
                elif answer == 'N':
                  print('返回主页面')
                  return
                else:
                  print('输入有误,请重新输入')
    # 2.2若不存在,返回用户不存在,重新操作。
    print('输入的学号不存在,请重新操作!!')


def find_info():# 查找信息
    global info
    # 1.输入要查找的信息例如id
    find_id = int(input('请输入要查找的id:'))
    # 2.根据输入的信息,遍历info
    for i in info:
      # 3.查找到则返回对应数据
      if find_id == i['id']:
            print(f'该学生id为{i["id"]},姓名为{i["name"]},性别为{i["gender"]},电话为{i["tel"]}')
            return
    # 没有则返回不存在
    print('查找的id不存在')


def all_info():# 查看所有信息
    print('-------学生信息表---------')
    print('学号\t姓名\t性别\t电话')
    global info# 全局化
    for i in info:
      print(f'{i["id"]}\t{i["name"]}\t{i["gender"]}\t{i["tel"]}')


# -在未选择序号6之前,对应功能执行后,应当继续重新选择功能。(循环)
while True:
    # 1.输出主功能页面
    main_print()
    # 2.输入对应功能序号
    num = int(input('请输入对应功能序号:'))
    # 3.执行对应序号的功能--定义对应功能函数
    if num == 1:
      add_info()
    elif num == 2:
      del_info()
    elif num == 3:
      change_info()
    elif num == 4:
      find_info()
    elif num == 5:
      all_info()
    elif num == 6:    # 退出循环系统
      flag = input('确认要退出吗?请输入yes or no ')
      if flag == 'yes':
            break
    else:
      print('输入的序号有误,请重新输入')

cfanpc 发表于 2021-7-14 23:52

# 函数练习—----制作学生信息管理系统—----
"""
需求:
1.输出主功能页面
    1.1添加学生信息
    1.2删除学生信息
    1.3修改学生信息
    1.4查询学生信息
    1.5查看所有学生信息
    1.6退出管理系统
2.输入对应功能序号
3.执行对应序号的功能
"""


def main_print():# 主页面显示
    print('------请选择功能--------')
    print('1.添加学生信息')
    print('2.删除学生信息')
    print('3.修改学生信息')
    print('4.查询学生信息')
    print('5.查看所有学生信息')
    print('6.退出管理系统')
    print('-' * 20)


# 创建空列表保存所有信息数据,将单个学生信息放入字典info = [{},{},{}]
info = []


def add_info():# 添加学生信息
    # 1.创建新信息
    new_id = int(input('请输入学号:'))
    new_name = input('请输入姓名:')
    new_gender = input('请输入性别:')
    new_tel = input('请输入手机号:')
    # 2.判断输入的信息是否重复,若重复则返回已存在,重新输入
    # 2.1 判断输入的id在info中是否存在
    # 2.1.1 info是全局变量,函数内修改要global处理
    global info
    # id是单个字典中的key,因此先遍历info,再对比判断
    for i in info:
      if new_id == i['id'] and new_name == i['name'] and new_gender == i['gender'] and new_tel == i['tel']:
            print('输入的信息已存在,请重新输入!!!')
            # return作用:判断完成,终止后面执行的代码
            return

    # 创建字典接收数据
    new_info = {'id': new_id, 'name': new_name, 'gender': new_gender, 'tel': new_tel}
    # 若不重复则录入单个信息进字典,然后添加进info
    info.append(new_info)
    print(info)


def print_change():
    print('输入1:修改id')
    print('输入2:修改name')
    print('输入3:修改gender')
    print('输入4:修改tel')


def del_info():# 删除学生信息
    # 1.输入要删除的学号和名字
    del_id = int(input('请输入要删除的学号:'))
    del_name = input('请输入要删除的名字:')
    # 2.查找指定信息,确认是否存在,若存在继续判断是否删除,若不存在,返回用户不存在
    # 2.1 全局化info,然后遍历查找判断
    global info
    for i in info:
      if del_id == i['id'] and del_name == i['name']:
            print(i)
            print('确认是否删除信息,Y删除,N取消')
            while True:
                answer = input('请输入:')
                if answer == 'Y':
                  info.remove(i)
                  print('已删除!')
                  break
                elif answer == 'N':
                  print('返回主页面')
                  return
                else:
                  print('输入有误,请重新输入')
      else:
            print('用户不存在,请重新输入!')
    print(info)


def change_info():
    # 1.输入查找的信息
    change_id = int(input('请输入要修改的学生信息学号:'))
    # 2.判断输入的指定信息是否存在,
    # 2.0 global info 处理 遍历查找
    global info
    for i in info:
      # 2.1若存在,打印该信息详情,确认信息
      if change_id == i['id']:
            print(i)
            # 确认是否修改
            print('是否确认修改?Y确认,N取消')
            # 若输入的不算Y,N 则循环重新输入
            while True:
                answer = input('请选择:')
                if answer == 'Y':
                  # 用函数代替显示代码
                  print_change()
                  # 选择修改内容错误后继续循环选择
                  while True:
                        temp = int(input('请输入要修改的内容序号:'))
                        if temp == 1:
                            i['id'] = input('请输入新id:')
                            print(i)
                            return
                        elif temp == 2:
                            i['name'] = input('请输入新name:')
                            print(i)
                            return
                        elif temp == 3:
                            i['gender'] = input('请输入新gender:')
                            print(i)
                            return
                        elif temp == 4:
                            i['tel'] = input('请输入新tel:')
                            print(i)
                            return
                        else:
                            print('输入序号有误,请重新输入序号!')
                elif answer == 'N':
                  print('返回主页面')
                  return
                else:
                  print('输入有误,请重新输入')
    # 2.2若不存在,返回用户不存在,重新操作。
    print('输入的学号不存在,请重新操作!!')


def find_info():# 查找信息
    global info
    # 1.输入要查找的信息例如id
    find_id = int(input('请输入要查找的id:'))
    # 2.根据输入的信息,遍历info
    for i in info:
      # 3.查找到则返回对应数据
      if find_id == i['id']:
            print(f'该学生id为{i["id"]},姓名为{i["name"]},性别为{i["gender"]},电话为{i["tel"]}')
            return
    # 没有则返回不存在
    print('查找的id不存在')


def all_info():# 查看所有信息
    print('-------学生信息表---------')
    print('学号\t姓名\t性别\t电话')
    global info# 全局化
    for i in info:
      print(f'{i["id"]}\t{i["name"]}\t{i["gender"]}\t{i["tel"]}')


# -在未选择序号6之前,对应功能执行后,应当继续重新选择功能。(循环)
while True:
    # 1.输出主功能页面
    main_print()
    # 2.输入对应功能序号
    num = int(input('请输入对应功能序号:'))
    # 3.执行对应序号的功能--定义对应功能函数
    if num == 1:
      add_info()
    elif num == 2:
      del_info()
    elif num == 3:
      change_info()
    elif num == 4:
      find_info()
    elif num == 5:
      all_info()
    elif num == 6:    # 退出循环系统
      flag = input('确认要退出吗?请输入yes or no ')
      if flag == 'yes':
            break
    else:
      print('输入的序号有误,请重新输入')
论坛提供了代码样式,这样看上去更好看

Hangjau 发表于 2021-7-16 10:11

axin1999 发表于 2021-7-14 20:14
建议多用try except增加代码可靠性,elif的多重判断可以用switch来做

switch?py没有这个函数吧,只能用字典映射

sai692 发表于 2021-7-14 16:54

沙发支持

2014晴天 发表于 2021-7-14 17:08

编码风格不错,支持一下

kicebeauty 发表于 2021-7-14 17:25

第二步,改造成文件保存

QingYi. 发表于 2021-7-14 17:28

逻辑是有点简单了

muelfox 发表于 2021-7-14 18:00

毕业设计?

dft2010 发表于 2021-7-14 18:51

这玩意我好像是再B站看过一样的开源的,难道楼主是作者?

浮夸夸 发表于 2021-7-14 18:52

风格不错,支持支持

lsaizm1314 发表于 2021-7-14 19:55

不错,学习一下。

axin1999 发表于 2021-7-14 20:13

muelfox 发表于 2021-7-14 18:00
毕业设计?

毕设不会这么简单吧
页: [1] 2 3
查看完整版本: 新手python函数练习--学生管理系统--