期末代码Python

以下是 学生信息管理系统 的简化版代码示例(控制台版本,使用文件存储数据),包含核心功能:

 

1. 定义学生类

 

class Student:

    def __init__(self, sid, name, score):

        self.sid = sid # 学号

        self.name = name # 姓名

        self.score = score# 成绩

 

    def to_dict(self):

        """转为字典格式,方便存储"""

        return {"sid": self.sid, "name": self.name, "score": self.score}

 

 

2. 数据存储模块(文件操作)

 

import json

 

DATA_FILE = "students.txt"

 

def save_students(students):

    """将学生列表保存到文件"""

    with open(DATA_FILE, "w", encoding="utf-8") as f:

        json.dump([s.to_dict() for s in students], f)

 

def load_students():

    """从文件加载学生列表"""

    try:

        with open(DATA_FILE, "r", encoding="utf-8") as f:

            data = json.load(f)

            return [Student(**item) for item in data]

    except FileNotFoundError:

        return []

 

 

3. 核心功能函数

 

# 初始化学生列表(从文件加载)

students = load_students()

 

def add_student():

    """添加学生"""

    sid = input("请输入学号:")

    name = input("请输入姓名:")

    score = float(input("请输入成绩:"))

    students.append(Student(sid, name, score))

    save_students(students)

    print("添加成功!")

 

def query_student():

    """查询学生(按学号)"""

    sid = input("请输入要查询的学号:")

    for s in students:

        if s.sid == sid:

            print(f"学号:{s.sid},姓名:{s.name},成绩:{s.score}")

            return

    print("未找到该学生!")

 

def update_student():

    """修改学生成绩"""

    sid = input("请输入要修改的学号:")

    for s in students:

        if s.sid == sid:

            new_score = float(input("请输入新成绩:"))

            s.score = new_score

            save_students(students)

            print("修改成功!")

            return

    print("未找到该学生!")

 

def delete_student():

    """删除学生"""

    sid = input("请输入要删除的学号:")

    global students

    students = [s for s in students if s.sid != sid]

    save_students(students)

    print("删除成功!")

 

def show_all_students():

    """显示所有学生"""

    if not students:

        print("暂无学生信息!")

        return

    print("学号\t姓名\t成绩")

    for s in students:

        print(f"{s.sid}\t{s.name}\t{s.score}")

 

 

4. 菜单交互

 

def main_menu():

    print("\n===== 学生信息管理系统 =====")

    print("1. 添加学生")

    print("2. 查询学生")

    print("3. 修改成绩")

    print("4. 删除学生")

    print("5. 显示所有学生")

    print("0. 退出系统")

    choice = input("请选择操作(0-5):")

    return choice

 

if __name__ == "__main__":

    while True:

        choice = main_menu()

        if choice == "1":

            add_student()

        elif choice == "2":

            query_student()

        elif choice == "3":

            update_student()

        elif choice == "4":

            delete_student()

        elif choice == "5":

            show_all_students()

        elif choice == "0":

            print("退出系统,感谢使用!")

            break

        else:

            print("输入有误,请重新选择!")

 

 

使用说明:

 

1. 运行代码后,根据菜单提示输入数字选择功能。

2. 数据会自动保存到同目录的  students.txt  文件中,下次运行时自动加载。

3. 可扩展功能:

- 添加成绩统计(平均分、最高分)

- 支持多条件查询(如按姓名模糊查询)

- 改用 SQLite 数据库存储(需引入  sqlite3  模块)

 

需要其他案例的代码或功能扩展,可随时告诉我!

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

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

相关文章

zotero pdf中英翻译插件使用

最近发现一个pdf中英翻译的神器zotero-pdf2zh,按照官方安装教程走一遍的时候,发现一些流程不清楚的问题, 此文就是整理一些安装需要的文件以及遇到的问题: 相关文件下载地址 Zotero 是一款免费的、开源的文献管理工具&#xff0…

本地MySQL连接hive

1、首先需要修改MySQL的配置,允许远程连接: # 在本地MySQL服务器上执行 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到 bind-address 行,将其修改为: bind-address 0.0.0.02、在本地MySQL中创建用户并授权(注意…

Nginx核心功能2

一:正向代理 正向代理(Forward Proxy)是一种位于客户端和原始服务器之间的代理服务器,其主要作用是将客户端的请求转发给目标服务器,并将响应返回给客户端Nginx的正向代理充当客户端的“中间人”,代表用户访问外部资源…

高定电视,一场关于生活方式的觉醒

需要有自己的工作室,雇用3个以上专职模特,至少15名全职员工和20名技术工匠‌; 每年都要参加巴黎高级时装周,展示至少50款原创设计; 使用的面料必须高质量、昂贵且不同寻常,设计上注重细节和个性&#x…

用PyTorch搭建卷积神经网络实现MNIST手写数字识别

用PyTorch搭建卷积神经网络实现MNIST手写数字识别 在深度学习领域,卷积神经网络(Convolutional Neural Network,简称CNN)是处理图像数据的强大工具。它通过卷积层、池化层和全连接层等组件,自动提取图像特征&#xff…

Tensorrt 基础入门

什么是tensorrt? 其他厂商: Qualcomm, Hailo, google TPU tensorrt的优劣势 使用tensorrt的pipeline tensorrt使用中存在的问题以及解决方案 tensorrt的应用场景 自动驾驶模型部署需要关注的问题: 边端硬件资源有限 散热(不能水冷) 实时性&…

Qt 显示QRegExp 和 QtXml 不存在问题

QRegExp 和 QtXml 问题 在Qt6 中 已被弃用; 1)QRegExp 已被弃用,改用 QRegularExpression Qt5 → Qt6 重大变更:QRegExp 被移到了 Qt5Compat 模块,默认不在 Qt6 核心模块中。 错误类型解决方法QRegExp 找不到改用 Q…

玩玩OCR

一、Tesseract: 1.下载windows版: tesseract 2. 安装并记下路径,等会要填 3.保存.py文件 import pytesseract from PIL import Image def ocr_local_image(image_path):try:pytesseract.pytesseract.tesseract_cmd rD:\Programs\Tesseract-OCR\tesse…

Dify 完全指南(一):从零搭建开源大模型应用平台(Ollama/VLLM本地模型接入实战)》

文章目录 1. 相关资源2. 核心特性3. 安装与使用(Docker Compose 部署)3.1 部署Dify3.2 更新Dify3.3 重启Dify3.4 访问Dify 4. 接入本地模型4.1 接入 Ollama 本地模型4.1.1 步骤4.1.2 常见问题 4.2 接入 Vllm 本地模型 5. 进阶应用场景6. 总结 1. 相关资源…

C++ Windows 打包exe运行方案(cmake)

文章目录 背景动态库梳理打包方案一、使用 Vcpkg 安装静态库(关键基础配置)1. 初始化 Vcpkg2. 安装静态库(注意 x64-windows-static 后缀) 二、CMakeLists.txt 关键配置三、编译四、验证 不同平台代码兼容\_\_attribute\_\_((pack…

Java学习手册:Hibernate/JPA 使用指南

一、Hibernate 和 JPA 的核心概念 实体(Entity) :实体是 JPA 中用于表示数据库表的 Java 对象。通过在实体类上添加 Entity 注解,JPA 可以将实体类映射到数据库表。例如,定义一个 User 实体类: import ja…

字符串匹配 之 拓展 KMP算法(Z算法)

文章目录 习题2223.构造字符串的总得分和3031.将单词恢复初始状态所需的最短时间 II 灵神代码模版 区别与KMP算法 KMP算法可用于求解在线性时间复杂度0(n)内求解模式串p在主串s中匹配的未知当然,由于在KMP算法中,预处理求解出了next数组,也就…

安全为上,在系统威胁建模中使用量化分析

*注:Open FAIR™ 知识体系是一种开放和独立的信息风险分析方法。它为理解、分析和度量信息风险提供了分类和方法。Open FAIR作为领先的风险分析方法论,已得到越来越多的大型组织认可。 在数字化风险与日俱增的今天,企业安全决策正面临双重挑战…

游戏引擎学习第259天:OpenGL和软件渲染器清理

回顾并为今天的内容做好铺垫 今天,我们将对游戏的分析器进行升级。在之前的修复中,我们解决了分析器的一些敏感问题,例如它无法跨代码重新加载进行分析,以及一些复杂的小问题。现在,我们的分析器看起来已经很稳定了。…

讯睿CMS模版常用标签参数汇总

一、模板调用标签 1、首页 网站名称:{SITE_NAME} 标题:{$meta_title}(列表页通用) Keywords:{$meta_keywords} Description:{$meta_description}2、列表页 迅睿cms调用本栏目基础信息标签代码 当前栏目…

【C#】Buffer.BlockCopy的使用

Buffer.BlockCopy 是 C# 中的一个方法,用于在数组之间高效地复制字节块。它主要用于操作字节数组(byte[]),但也可以用于其他类型的数组,因为它直接基于内存操作。 以下是关于 Buffer.BlockCopy 的详细说明和使用示例&…

记一次pdf转Word的技术经历

一、发现问题 前几天在打开一个pdf文件时,遇到了一些问题,在Win10下使用WPS PDF、万兴PDF、Adobe Acrobat、Chrome浏览器打开都是正常显示的;但是在macOS 10.13中使用系统自带的预览程序和Chrome浏览器(由于macOS版本比较老了&am…

在Laravel 12中实现4A日志审计

以下是在Laravel 12中实现4A(认证、授权、账户管理、审计)日志审计并将日志存储到MongoDB的完整方案(包含性能优化和安全增强措施): 一、环境配置 安装MongoDB扩展包 composer require jenssegers/mongodb配置.env …

链表高级操作与算法

链表是数据结构中的基础,但也是面试和实际开发中的重点考察对象。今天我们将深入探讨链表的高级操作和常见算法,让你能够轻松应对各种链表问题。 1. 链表翻转 - 最经典的链表问题 链表翻转是面试中的常见题目,也是理解链表指针操作的绝佳练…

架构思维:构建高并发读服务_使用懒加载架构实现高性能读服务

文章目录 一、引言二、读服务的功能性需求三、两大基本设计原则1. 架构尽量不要分层2. 代码尽可能简单 四、实战方案:懒加载架构及其四大挑战五、改进思路六、总结与思考题 一、引言 在任何后台系统设计中,「读多写少」的业务场景占据主流:浏…