Python : 使用python实现学生管理系统的功能,详细注释

news2024/10/6 6:46:25

一、学生管理系统

学生描述:姓名、年龄、成绩

学生管理系统功能:添加学生信息、删除学生信息、根据姓名修改学生信息、根据姓名查询学生信息、显示所有学生信息、退出系统

二、代码说明

1. 将每一个学生的信息放一个元组中,再把元组添加到列表中

2. 元组 键值对儿  {name: value,  age: value,  score: value } 

3. 用到 字典的增删改查、列表的增删改查、函数的调用、列表的遍历、循环语句、判断语句等知识 

三、代码实现

# 定义一个空列表,用来存放学生信息
class_info = []
def print_menu():
    print("-------------------")
    print("学生管理系统 V1.0")
    print(" 1:添加学生")
    print(" 2:删除学生")
    print(" 3:修改学生")
    print(" 4:查询学生")
    print(" 5:显示所有学生")
    print(" 6:退出系统")
    print("-----------------")

# 完成添加学生信息的函数
def add_student():

    # 声明使用全局变量 class_info
    global class_info
    # 从键盘输入 学生 姓名 年龄 成绩
    name = input("请输入学生的姓名:>>")
    age = int(input("请输入学生的年龄:>>"))
    score = int(input("请输入学生的成绩:>>"))
    # 对数据进行验证,验证学生是否有重名情况
    for student in class_info:
        # 发生重名现象
        if student["name"] == name:
            print("您输入的学生已经存在~!")
            return

    # 将学生信息添加到班级信息中
    student = {
        "name": name,
        "age": age,
        "score": score
    }
    class_info.append(student)
    print("恭喜您,添加学生信息成功 !")
    return None

# 删除学生信息
def del_student():
    global class_info
    # 根据学生姓名删除学生
    name = input("请输入您要删除的学生的姓名:>>")
    # 在班级信息中,找到想要删除的学生
    for student in class_info:
        if student["name"] == name:
            # 对列表进行删除
            class_info.remove(student)
            print("恭喜您删除成功")
            return 0
    # 遍历完 程序走到这里证明学生不存在
    print("您输入的学生不存在,删除失败~~")
    return None

# 修改学生信息
def modify_student():
    global class_info
    # 通过学生姓名,来找到学生
    name = input("请输入需要修改的学生姓名:>>>")
    # 遍历班级信息,找到需要修改的学生
    for student in class_info:
        # 找到想要修改的学生信息
        if student["name"] == name:
            student["name"] = input("请输入修改后的学生姓名: >>>")
            student["age"] = int(input("请输入修改后的学生年龄:>>>"))
            student["score"] = int(input("请输入修改后的学生成绩: >>>"))
            print("恭喜您,修改成功..")
            return 0
    # 当走出循环的时候表明,学生不存在
    print("您输入的学生不存在,修改失败~~")
    return None

# 查找学生信息
def search_student():
    global class_info
    # 根据学生的姓名进行查找
    name = input("请输入您要查找的学生姓名:>>>")
    # 遍历班级信息,查找对应的学生
    for student in class_info:
        # 找到学生
        if student["name"] == name:
            print("姓名:{}\n年龄:{}\n成绩:{}"
                  .format(student["name"], student["age"], student["score"]))
            return 0
    # 跳出循环表示学生没有找到
    print("您输入的学生不存在,查找失败~~")
    return None

# 显示所有学生信息
def show_student():
    print("%-10s%-5s%-5s" %("姓名", "年龄", "成绩"))
    # 遍历学生信息
    for student in class_info:
        print("%-10s%-5d%-5d" %(student["name"], 
                        student["age"], student["score"]))

def run():
    # 开始运行学生管理系统
    while True:
        # 1.打印学生管理系统功能
        print_menu()
        # 2.从键盘中输入选择的功能
        choose = int(input("请输入您需要的功能 >>>>"))
        # 3.根据输入的选项,做相应的功能
        if choose == 1:
            # 添加学生功能
            add_student()
        elif choose == 2:
            # 删除学生信息
            del_student()
        elif choose == 3:
            # 修改学生信息
            modify_student()
        elif choose == 4:
            # 查找学生信息
            search_student()
        elif choose == 5:
            # 查看所有的学生信息
            show_student()
        elif choose == 6:
            # 退出系统
            print("Bey~~")
            break
        else:
            print("您输入有误,请重新输入~~")
    return None

# 调用函数
run()

四、代码运行结果

1. 添加学生信息

 

2. 显示添加的所有学生

 

 3. 根据姓名查询学生信息

4.  修改学生信息

5. 修改后所有学生信息 

 

5. 删除学生信息

 

 6. 退出系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 144 二叉树的前序遍历

大家新年快乐,long年大吉 今天的题很简单,前序用栈就行。 电脑没拿,用我妈的pad艰难敲代码,敲字 知识点随便写点吧,这里基础点挺多,以后补充下 栈:先进后出,数据结构用stack&…

C#实现矩阵乘法

目录 一、使用的方法 1.矩阵 2.矩阵的乘法原理 二、实例 1.源码 2.生成效果 一、使用的方法 矩阵相当于一个数组,主要用来存储一系列数,例如,mn矩阵是排列在m行和n列中的一系列数,mn矩阵可与一个np矩阵相乘,结果…

C语言笔试题之实现C库函数 pow()(递归的思想)

实例要求: 1、请你实现C库函数 pow()(stdio.h & math.h) ,即计算 x 的整数 n 次幂函数(即x^n );2、函数声明:double myPow(double x, int n);参数:1、x …

城市合伙人计划:资源共享、知识交流、合作创新

城市合伙人计划是一种合作伙伴关系,旨在通过共享资源、知识和经验,共同推动城市的经济发展和社会进步。这种计划通常涉及市政府、企业、社会组织和个人等多个方面,通过合作共同解决城市面临的问题和挑战。 城市合伙人计划的具体形式和内容可…

【java】Hibernate访问数据库

一、Hibernate访问数据库案例 Hibernate 是一个在 Java 社区广泛使用的对象关系映射(ORM)工具。它简化了 Java 应用程序中数据库操作的复杂性,并提供了一个框架,用于将对象模型数据映射到传统的关系型数据库。下面是一个简单的使…

洛谷p4391 无限传输

考察字符串周期的题 题目链接 结论 要求字串 s s s的最短循环字串长就是: a n s n − p m t [ n ] ansn-pmt[n] ansn−pmt[n] 证明如下: 这是最大的前缀和后缀 现在我们做如下操作: 补全字段 a a a和字段 b b b,按子段 a a a的…

阿里(淘天)一面笔试算法原题

阿里撤资 "车来了" 近日,国内实时公交产品"车来了"关联公司武汉元光科技有限公司发生工商变更,阿里巴巴(中国)网络技术有限公司退出股东行列。 这很好理解,符合近期阿里收缩战线的行为一致性。 毕…

vue-生命周期+工程化开发(三)

生命周期 Vue 生命周期 和 生命周期的四个阶段 思考: 什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期:一个Vue实例从 创建…

【新书推荐】7.4节 寄存器间接和相对寻址方式

本节内容:当指令操作数为内存操作数,且内存操作数的地址使用指针寄存器表示时,称为寄存器间接寻址方式。 ■寄存器间接寻址方式:在地址表达式中,只能使用BX、SI、DI、BP四个指针寄存器用来寻址。 7.4.1 寄存器间接寻…

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息维护模块UI设计实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

动态水印怎么加 怎么去除动态水印 视频剪辑软件 会声会影安激活序列号 会声会影怎么剪辑视频

为了防止白嫖或者增加美观效果,视频制作者可能会采用动态水印的方式,让其他人难以盗取视频使用。动态水印的添加,需要应用到运动路径功能。接下来,本文会教大家动态水印怎么加,怎么去除动态水印的相关内容。感兴趣的小…

力扣 第 383 场周赛 解题报告 | KMP

力扣 第 383 场周赛 解题报告 | KMP 链接 前言 一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。 T1 修改矩阵 思路:模拟 时间复杂度: O ( m n ) O(mn) O(mn) class Solution:def modifiedMatrix(se…

一招搞定!Windows 右键秒建 Markdown 文件

创建Markdown文件(拓展名为.md)在Windows 10操作系统中并非内置功能。以下是一篇博客教程,指导用户如何实现在Windows 10中通过右键菜单新建Markdown文件的过程。 如何在Windows 10中通过右键菜单新建Markdown文件 Markdown是一种轻量级标记…

C#,欧拉常数(Euler Constant)的算法与源代码

1 欧拉常数 欧拉常数最先由瑞士数学家莱昂哈德 欧拉 (Leonhard Euler) 在1735年发表的文章《De Progressionibus harmonicus observationes》中定义。欧拉曾经使用γ作为它的符号,并计算出了它的前6位,1761年他又将该值计算到了16位 。 欧拉常数最先由瑞…

Open CASCADE学习|环形弹簧建模

目录 Draw Test Harness: C: 环形弹簧,也称为弓簧,是由拉伸弹簧和连接弹簧构成的。在结构上,环形弹簧通常包括端环、外环和内环,其主要参数包括弹簧的内径、外径和自由高度。环形弹簧的一个显著特点是&am…

MySQL篇----第二十篇

系列文章目录 文章目录 系列文章目录前言一、NULL 是什么意思二、主键、外键和索引的区别?三、你可以用什么来确保表格里的字段只接受特定范围里的值?四、说说对 SQL 语句优化有哪些方法?(选择几条)前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…

ECMAScript Modules规范的示例详解

ECMAScript Modules(ESM)是JavaScript中用于模块化开发的规范,它允许开发者将代码分割成多个独立的文件,以提高代码的可维护性和可重用性。下面是一个ECMAScript Modules规范的示例详解: 创建模块 1.1 导出变量 在一个…

低代码开发的数字化革新:实业界的成功秘诀与实践之路

在信息时代,实业界正迎来一场变革的风暴,传统的管理系统逐渐不再满足越来越复杂的生产流程和不断增长的市场需求,而低代码开发正如一颗璀璨的明星,将为企业带来前所未有的灵活性和创新力,这并非一场技术的简单变迁&…

React - 分页插件默认是英文怎么办

英文组件的通用解决方案 这里以分页插件为例: 大家可以看到,最后的这个页面跳转提示文字为Go to,不是中文,而官网里面的案例则是: 解决方案: import { ConfigProvider } from antd; import zhCN from an…

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画,就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像,两次绘制的图像之间差异较小,肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法,可以借助于…