zoukankan      html  css  js  c++  java
  • Python基础案例练习:制作学生管理系统

    一.前言

    学生管理系统,相信大家或多或少都有做过

    最近看很多学生作业都是制作一个学生管理系统

    于是,今天带大家做一个简单的学生管理系统

    二.开发环境:

    我用到的开发环境

    • Python 3.8
    • Pycharm 2021.2

    三.涉及知识点

    • Python基础语法
    • 基本的数据类型与结构
    • 基本的逻辑控制语句
    • 实战小项目

    四.接下来我们开始敲代码

    我们一步步来完成学生管理系统

    第一步:制作学生管理系统的界面

    1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
    2. 用户用数字选择不同的功能 (input)
    3. 根据功能选择,执行不同的功能 (if 判断 多分支选择)
    4. 需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分 (input, 数据容器存储输入的学生信息)
    5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
    6. 进入或退出时加载或保存数据 (文件操作)
    """
    str_info = """**************************************************
    欢迎使用【学生信息管理系统】V1.0
    请选择你想要进行的操作
    1. 新建学生信息
    2. 显示全部信息
    3. 查询学生信息
    4. 删除学生信息
    5. 修改学生信息
    
    0. 退出系统
    **************************************************"""
    
    
    while True:
        # 1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
        print(str_info)
        # 2.用户用数字选择不同的功能(input)
        action = input('请选择你要进行的操作(输入数字):')
        if action == '1':
            print('1. 新建学生信息')
        elif action == '2':
            print('2. 显示全部信息')
        elif action == '3':
            print('3. 查询学生信息')
        elif action == '4':
            print('4. 删除学生信息')
        elif action == '5':
            print('5. 修改学生信息')
        elif action == '0':
            print('0. 退出系统')
            break
        else:
            print('请输入正确的选项!')
    

    效果:

    **************************************************
    欢迎使用【学生信息管理系统】V1.0
    请选择你想要进行的操作
    1. 新建学生信息
    2. 显示全部信息
    3. 查询学生信息
    4. 删除学生信息
    5. 修改学生信息
    
    0. 退出系统
    **************************************************
    

    第二步:新建学生信息

    需要记录学生的 姓名、语文成绩、数学成绩、英语成绩 、总分 (input, 数据容器存储输入的学生信息)

    name = input('请输入学生的姓名:')
    chinese = int(input('请输入学生的语文成绩:'))
    math = int(input('请输入学生的数学成绩:'))
    english = int(input('请输入学生的英语成绩:'))
    
    total = chinese + math + english
    
    # 用什么数据容器接受比较好?  存储信息, 取值  采用字典
    students = [
        {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total}
    ]
    
    print(students)
    

    第三步:显示全部学生信息

    students = [
        {'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
    ]
    
    print('姓名\t语文\t数学\t英语\t总分')
    
    for stu in students:
        # print(stu)
        print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
    

    第四步:查询学生信息

    students = [
        {'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
    ]
    
    # 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
    
    name = input('请输入你要查询学生的姓名:')
    # 更多Python相关视频、资料加群778463939免费获取
    # 先遍历所有学生
    for stu in students:
        # 如果满足条件, 就是查询到了
        if name == stu['name']:
            print('姓名\t语文\t数学\t英语\t总分')
            print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
            # 一旦查询到了就停止查询
            break
    
    else:
        # 没找到
        print('该学生不存在, 请检查名字是否输入正确!')
    

    第五步:修改学生信息

    import pprint
    
    students = [
        {'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
    ]
    
    # 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
    
    name = input('请输入你要修改学生的姓名:')
    
    # 先遍历所有学生
    for stu in students:
        # 如果满足条件, 就是查询到了, 找到了这个学生
        # 找到了需要修改的学生
        if name == stu['name']:
            # 不想修改, 直接回车
            print('(如果不想修改,直接回车!)')
            name = input('请重新输入学生的姓名:')
            chinese = input('请重新输入学生的语文成绩:')
            math = input('请重新输入学生的数学成绩:')
            english = input('请重新输入学生的英语成绩:')
            # total = chinese + math + english
    
            # 用户输入了数据才修改
            if name:
                stu['name'] = name
            if chinese:
                stu['chinese'] = int(chinese)
            if math:
                stu['math'] = int(math)
            if english:
                stu['english'] = int(english)
    
            stu['total'] = stu['chinese'] + stu['math'] + stu['english']
    
            break
    
    else:
        # 没找到
        print('该学生不存在, 请检查名字是否输入正确!')
    
    pprint.pprint(students)
    

    第六步: 删除学生信息

    import pprint
    
    students = [
        {'name': '正心', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '张三', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '李四', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
        {'name': '王五', 'chinese': 59, 'math': 59, 'english': 59, 'total': 177},
    ]
    
    # 5. 如果查询到指定的学生信息,用户可以选择 修改 或者 删除 信息 (多分支选择里面的逻辑)
    # 更多Python相关视频、资料加群778463939免费获取
    name = input('请输入你要删除学生的姓名:')
    
    # 先遍历所有学生
    for stu in students:
        # 找到学生
        if name == stu['name']:
            # 删除学生
            students.remove(stu)
            break
    
    else:
        # 没找到
        print('该学生不存在, 请检查名字是否输入正确!')
    
    pprint.pprint(students)
    

    然后把他们拼接起来,就完成了我们简单的一个学生管理系统!

    五、最后代码

    import json
    
    str_info = """**************************************************
    欢迎使用【学生信息管理系统】V1.0
    请选择你想要进行的操作
    1. 新建学生信息
    2. 显示全部信息
    3. 查询学生信息
    4. 删除学生信息
    5. 修改学生信息
    
    0. 退出系统
    **************************************************"""
    
    # 读取文件
    with open('students.json', mode='r', encoding='utf-8') as f:
        students_str = f.read()
    
    students = json.loads(students_str)
    
    while True:
        # 1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单 (print)
        print(str_info)
        # 2.用户用数字选择不同的功能(input)
        action = input('请选择你要进行的操作(输入数字):')
        if action == '1':
            print('1. 新建学生信息')
            name = input('请输入学生的姓名:')
            chinese = int(input('请输入学生的语文成绩:'))
            math = int(input('请输入学生的数学成绩:'))
            english = int(input('请输入学生的英语成绩:'))
    
            total = chinese + math + english
            # 新的学生
            stu = {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total}
            students.append(stu)
    
        elif action == '2':
            print('2. 显示全部信息')
            print('姓名\t语文\t数学\t英语\t总分')
    
            for stu in students:
                print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
    
        elif action == '3':
            print('3. 查询学生信息')
            name = input('请输入你要查询学生的姓名:')
    
            # 先遍历所有学生
            for stu in students:
                # 如果满足条件, 就是查询到了
                if name == stu['name']:
                    print('姓名\t语文\t数学\t英语\t总分')
                    print(f'{stu["name"]}\t{stu["chinese"]}\t\t{stu["math"]}\t\t{stu["english"]}\t\t{stu["total"]}')
                    # 一旦查询到了就停止查询
                    break
    
            else:
                # 没找到
                print('该学生不存在, 请检查名字是否输入正确!')
    
        elif action == '4':
            print('4. 删除学生信息')
            name = input('请输入你要删除学生的姓名:')
    
            # 先遍历所有学生
            for stu in students:
                # 找到学生
                if name == stu['name']:
                    # 删除学生
                    students.remove(stu)
                    break
    
            else:
                # 没找到
                print('该学生不存在, 请检查名字是否输入正确!')
        elif action == '5':
            print('5. 修改学生信息')
            name = input('请输入你要修改学生的姓名:')
    
            # 先遍历所有学生
            for stu in students:
                # 如果满足条件, 就是查询到了, 找到了这个学生
                # 找到了需要修改的学生
                if name == stu['name']:
                    # 不想修改, 直接回车
                    print('(如果不想修改,直接回车!)')
                    name = input('请重新输入学生的姓名:')
                    chinese = input('请重新输入学生的语文成绩:')
                    math = input('请重新输入学生的数学成绩:')
                    english = input('请重新输入学生的英语成绩:')
                    # total = chinese + math + english
    
                    # 用户输入了数据才修改
                    if name:
                        stu['name'] = name
                    if chinese:
                        stu['chinese'] = int(chinese)
                    if math:
                        stu['math'] = int(math)
                    if english:
                        stu['english'] = int(english)
    
                    stu['total'] = stu['chinese'] + stu['math'] + stu['english']
                    break
            else:
                # 没找到
                print('该学生不存在, 请检查名字是否输入正确!')
        elif action == '0':
            print('0. 退出系统')
            with open('students.json', mode='w', encoding='utf-8') as f:
                # 把列表对象转化成字符串  ascii 编码
                students_str = json.dumps(students, ensure_ascii=False)
                f.write(students_str)
                print(students_str)
            break
        else:
            print('请输入正确的选项!')
    

    是不是很简单!欢迎留言讨论!

    喜欢记得点赞哦!

    最后要是代码看不懂,还有视频教程
    学生管理系统视频教程地址:←点击左边蓝色文字就可以跳转观看了
    Python基础入门教程推荐:←点击左边蓝色文字就可以跳转观看了

  • 相关阅读:
    OSG-提示“error reading file e:1.jpg file not handled”
    OSG-加载地球文件报0x00000005错误,提示error reading file simple.earth file not handled
    QT-找开工程后,最上方提示the code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.
    我的书《Unity3D动作游戏开发实战》出版了
    java中无符号类型的第三方库jOOU
    Windows批处理备份mysql数据
    使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A
    Java版本,Java版本MongoDB驱动,驱动与MongoDB数据库,Spring之间的兼容性
    Jrebel本地激活方法
    wget下载指定网站目录下的所有内容
  • 原文地址:https://www.cnblogs.com/xxpythonxx/p/15676362.html
Copyright © 2011-2022 走看看