栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 函数封装之“学生信息管理系统“

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 函数封装之“学生信息管理系统“

# 学生信息管理系统  ——  函数封装

"""
思考:
    1、学生信息有哪些?
    2、是否区分学生、老师、管理员权限
    3、该怎么存储学生信息
    4、是否需要登录界面

介绍:
    在工作生活中,信息管理很常见、例如:文件归档、账户流水账、登录信息、宿舍管理、购票管理、学生信息管理等。

知识点:
    1、自定义函数的使用:函数封装、调用,使用到了默认参数和关键字参数
    2、字典的使用:增 删 改 查 遍历
    3、循环语句:while、for
    4、条件语句:if、elif、else
    5、跳转语句:break、continue
    6、字符串运算
    7、旗帜应用,这个很重要

不足(待改善):
    1、在打印学生信息使用到了制表符't',但打印出来的效果并不理想,有哪位高人可以指点一下
    2、此程序无太强的可读性,后续可以完善,添加一些条件和提示语
    3、字典的特点:无法存储两个姓名一样的学生,体现了字典的不可重复性
    4、在新建学生信息时,如果出现重复新建,会覆盖原有的学生信息,等价于修改了学生信息,可以添加遍历判断
    5、程序员的愤怒“删除库跑路”,在本程序没有体现,可以利用clear()函数实现
    6、最大的通病:没有实际保存,退出程序即恢复出厂设置,有待改善
"""


# 定义一个空字典,用存储学生信息   # 字典的特点:元素不可重复、元素无序
stu_info = dict()
message = '请输入编号:'


# 函数封装  ==========================================================
# 菜单打印
def menu():
    print(' ' + '='*5 + '欢迎进入学生管理系统' + '='*5)
    print('1.新建学生信息t2.删除学生信息')
    print('3.修改学生信息t4.查寻学生信息')
    print('5.查看所有学生信息t0.退出')


# 打印标题  ==========================================================
def show_title(num1=0, info='='*10, num=9):
    print(' '*num1 + '=' * num + info + '=' * num)


# 输入编号(选择菜单)    ==============================================
def input_num(message):
    return input(message)


# 1.新建学生信息  ====================================================
def new_stu_info():
    show_title(info='新建学生信息')        # 打印标题

    # 输入学生信息
    name = input('请输入学生姓名:')
    stu_id = input('请输入学生学号:')
    phone_num = input('请输入学生手机号码:')
    addr = input('请输入学生家庭地址:')

    # 存储学生信息(添加到字典中)
    stu_info[name] = [stu_id, phone_num, addr]
    # student_info.update(name=[stu_id, phone_num, addr])   # 注意:这里字典添加元素不能用update()


# 2.删除学生信息  ====================================================
def del_stu_info():
    show_title(info='删除学生信息')        # 打印标题

    # 判断字典是否为空
    if stu_info == dict():
        show_title(info='暂无学生信息')    # 打印提示
        return

    # 输入需要删除的学生姓名
    name = input('请输入需要删除的学生姓名:')
    flag_del = 0                                # 定义删除的旗帜

    # 在字典中查找是否存在
    for i in stu_info:
        if name == i:
            print('学生姓名:{}t学号:{}t手机号码:{}t家庭地址:{}'.format(name, stu_info[i][0], stu_info[i][1], stu_info[i][2]))

            stu_info.pop(name)                      # 删除字典元素
            show_title(info='已删除成功', num1=1)    # 打印删除成功
            flag_del = 1                            # 删除旗帜赋值
            break

    # 判断是否删除此学生信息
    if flag_del != 1:
        show_title(info='无此学生信息')    # 打印提示


# 3.修改学生信息  ====================================================
def change_stu_info():
    show_title(info='修改学生信息')        # 打印标题

    # 判断字典是否为空
    if stu_info == dict():
        show_title(info='暂无学生信息')    # 打印提示
        return

    # 输入需要修改的学生姓名
    name = input('请输入需要修改的学生姓名:')
    flag_change = 0                               # 定义修改的旗帜

    # 在字典中查找是否存在
    for i in stu_info:
        if name == i:

            # 输入学生新的信息
            new_name = input('请输入学生新的姓名:')
            new_stu_id = input('请输入学生学号:')
            new_phone_num = input('请输入学生手机号码:')
            new_addr = input('请输入学生家庭地址:')

            # 判断是否需要删除原来的元素
            if new_name != name:
                stu_info.pop(name)              # 删除原来的元素

            # 存储修改后学生信息
            stu_info[new_name] = [new_stu_id, new_phone_num, new_addr]

            print('学生姓名:{}t学号:{}t手机号码:{}t家庭地址:{}'.format(new_name, new_stu_id, new_phone_num, new_addr))
            show_title(info='已修改成功', num1=1)         # 打印已修改成功

            flag_change = 1                     # 修改旗帜赋值
            break

    # 判断是否修改此学生信息
    if flag_change != 1:
        show_title(info='无此学生信息')    # 打印提示


# 4.查寻学生信息  ====================================================
def find_stu_info():
    show_title(info='查寻学生信息')                # 打印标题

    # 判断字典是否为空
    if stu_info == dict():
        show_title(info='暂无学生信息')            # 打印提示
        return

    # 输入需要查询的学生姓名
    name = input('请输入需要查询的学生姓名:')
    flag_find = 0                                       # 定义查询的旗帜

    # 在字典中查找是否存在
    for i in stu_info:
        if name == i:
            print('学生姓名:{}t学号:{}t手机号码:{}t家庭地址:{}'.format(name, stu_info[i][0], stu_info[i][1], stu_info[i][2]))

            flag_find = 1                               # 查询旗帜赋值
            break

    # 判断是否查询到此学生信息
    if flag_find != 1:
        show_title(info='无此学生信息')            # 打印提示


# 5.查看所有学生信息    ===============================================
def show_all_stu():
    show_title(info='查看所有学生信息', num=7, num1=1)      # 打印标题

    # 判断字典是否为空
    if stu_info == dict():
        show_title(info='暂无学生信息')             # 打印提示
        return

    # 遍历打印学生信息
    for i in stu_info:
        print('学生姓名:{}t学生学号:{}t手机号码:{}t家庭地址:{}' .format(i, stu_info[i][0], stu_info[i][1], stu_info[i][2]))


# 等价于C语言的主函数    ===============================================
while True:

    menu()                          # 打印菜单
    num = input_num(message)        # 选择菜单

    # 1.新建学生信息
    if num == '1':
        new_stu_info()              # 调用函数

    # 2.删除学生信息
    elif num == '2':
        del_stu_info()              # 调用函数

    # 3.修改学生信息
    elif num == '3':
        change_stu_info()           # 调用函数

    # 4.查寻学生信息
    elif num == '4':
        find_stu_info()             # 调用函数

    # 5.查看所有学生信息
    elif num == '5':
        show_all_stu()              # 调用函数

    # 0.退出
    elif num == '0':
        show_title(info='已退出', num=11, num1=1)              # 装13的打印方式,利用函数封装,然后调用
        # print(' '*1 + '='*11 + '已退出' + '='*11)            # 有基础的打印方式,利用字符串运算(只能用加法和乘法)
        break

    # 其他
    else:
        show_title(info='输入有误!', num=10)                    # 装13的打印方式,利用函数封装,然后调用
        # print('==========输入有误!==========')                # 最原始的打印方式,打印什么写什么

        message = '请重新输入编号:'
        continue

    message = '请输入编号:'




运行结果:

 创作日期:2022/5/25

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号