Python实战:手把手教你打造学生管理系统

本地学生信息管理系统增删改查排序 学生信息管理系统: 采用本地txt文件存储学生信息 包括学号、姓名、英语成绩、python成绩、java成绩 -实现增、删、改、查、排序、计算总人数、显示全部、退出系统,功能 本地运行效果: 最后可用pyinstaller进行文件打包,以便在其他地方使用 ''' 学生信息管理系统: 1、采用本地txt文件存储学生信息 2、包括学号、姓名、英语成绩、python成绩、java成绩 3、实现增、删、改、查、排序、计算总人数、显示全部、退出系统,功能 ''' filename="students.txt" 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

前言
学生管理系统是学习Python编程的一个经典实战项目,它涵盖了文件操作、数据结构、面向对象编程等核心知识点。本文将带你从零开始,使用Python开发一个功能完整的学生管理系统,适合Python初学者练手。

一、系统功能设计
我们首先规划系统的基本功能:

学生信息管理:添加、删除、修改、查询学生信息

学生成绩管理:录入、修改、统计成绩

数据持久化:将数据保存到文件

用户界面:简单的控制台交互界面

二、核心代码实现

  1. 学生类设计
class Student:
    def __init__(self, id, name, gender, age, scores=None):
        self.id = id          # 学号
        self.name = name      # 姓名
        self.gender = gender  # 性别
        self.age = age       # 年龄
        self.scores = scores if scores else {}  # 成绩字典,科目:分数
        
    def __str__(self):
        score_info = ', '.join([f"{k}:{v}" for k, v in self.scores.items()])
        return f"学号:{self.id} 姓名:{self.name} 性别:{self.gender} 年龄:{self.age} 成绩:{score_info}"
  1. 管理系统类设计
import json
import os

class StudentManager:
    def __init__(self, file_path='students.json'):
        self.file_path = file_path
        self.students = {}
        self.load_data()
    
    def load_data(self):
        """从文件加载数据"""
        if os.path.exists(self.file_path):
            with open(self.file_path, 'r', encoding='utf-8') as f:
                data = json.load(f)
                for sid, info in data.items():
                    self.students[sid] = Student(
                        id=sid,
                        name=info['name'],
                        gender=info['gender'],
                        age=info['age'],
                        scores=info['scores']
                    )
    
    def save_data(self):
        """保存数据到文件"""
        data = {}
        for sid, student in self.students.items():
            data[sid] = {
                'name': student.name,
                'gender': student.gender,
                'age': student.age,
                'scores': student.scores
            }
        with open(self.file_path, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=4)
    
    def add_student(self, student):
        """添加学生"""
        if student.id in self.students:
            print(f"学号{student.id}已存在!")
            return False
        self.students[student.id] = student
        self.save_data()
        print("添加成功!")
        return True
    
    def delete_student(self, student_id):
        """删除学生"""
        if student_id not in self.students:
            print(f"学号{student_id}不存在!")
            return False
        del self.students[student_id]
        self.save_data()
        print("删除成功!")
        return True
    
    def update_student(self, student_id, **kwargs):
        """更新学生信息"""
        if student_id not in self.students:
            print(f"学号{student_id}不存在!")
            return False
        
        student = self.students[student_id]
        for key, value in kwargs.items():
            if hasattr(student, key):
                setattr(student, key, value)
        
        self.save_data()
        print("更新成功!")
        return True
    
    def query_student(self, student_id):
        """查询学生信息"""
        student = self.students.get(student_id)
        if student:
            print(student)
        else:
            print(f"学号{student_id}不存在!")
        return student
    
    def list_all_students(self):
        """列出所有学生"""
        if not self.students:
            print("暂无学生信息!")
            return
        
        for student in self.students.values():
            print(student)
    
    def add_score(self, student_id, subject, score):
        """添加成绩"""
        if student_id not in self.students:
            print(f"学号{student_id}不存在!")
            return False
        
        self.students[student_id].scores[subject] = score
        self.save_data()
        print("成绩添加成功!")
        return True
    
    def get_average_score(self, student_id):
        """计算平均成绩"""
        student = self.query_student(student_id)
        if not student or not student.scores:
            return None
        
        return sum(student.scores.values()) / len(student.scores)
  1. 用户界面实现
def show_menu():
    print("\n" + "="*30)
    print("学生管理系统")
    print("1. 添加学生")
    print("2. 删除学生")
    print("3. 修改学生信息")
    print("4. 查询学生信息")
    print("5. 显示所有学生")
    print("6. 录入学生成绩")
    print("7. 计算平均成绩")
    print("0. 退出系统")
    print("="*30)

def main():
    manager = StudentManager()
    
    while True:
        show_menu()
        choice = input("请选择操作:")
        
        if choice == '1':
            print("\n添加学生信息")
            sid = input("学号:")
            name = input("姓名:")
            gender = input("性别:")
            age = input("年龄:")
            student = Student(sid, name, gender, age)
            manager.add_student(student)
        
        elif choice == '2':
            print("\n删除学生")
            sid = input("请输入要删除的学号:")
            manager.delete_student(sid)
        
        elif choice == '3':
            print("\n修改学生信息")
            sid = input("请输入要修改的学号:")
            if sid in manager.students:
                print("请输入要修改的信息(不修改直接回车):")
                name = input(f"姓名({manager.students[sid].name}):") or None
                gender = input(f"性别({manager.students[sid].gender}):") or None
                age = input(f"年龄({manager.students[sid].age}):") or None
                
                update_data = {}
                if name: update_data['name'] = name
                if gender: update_data['gender'] = gender
                if age: update_data['age'] = age
                
                if update_data:
                    manager.update_student(sid, **update_data)
                else:
                    print("未修改任何信息!")
            else:
                print("学号不存在!")
        
        elif choice == '4':
            print("\n查询学生信息")
            sid = input("请输入要查询的学号:")
            manager.query_student(sid)
        
        elif choice == '5':
            print("\n所有学生信息:")
            manager.list_all_students()
        
        elif choice == '6':
            print("\n录入学生成绩")
            sid = input("学号:")
            subject = input("科目:")
            score = float(input("分数:"))
            manager.add_score(sid, subject, score)
        
        elif choice == '7':
            print("\n计算平均成绩")
            sid = input("请输入学号:")
            avg = manager.get_average_score(sid)
            if avg is not None:
                print(f"平均成绩:{avg:.2f}")
            else:
                print("无法计算平均成绩")
        
        elif choice == '0':
            print("感谢使用学生管理系统,再见!")
            break
        
        else:
            print("无效选择,请重新输入!")

if __name__ == '__main__':
    main()

三、系统功能扩展建议
数据验证:添加输入数据的合法性验证

异常处理:增强系统的健壮性

多条件查询:支持按姓名、年龄等条件查询

成绩分析:添加成绩统计、排名功能

图形界面:使用Tkinter或PyQt开发GUI界面

数据库支持:使用SQLite或MySQL替代文件存储

四、项目总结
通过这个项目,我们实现了:

面向对象编程思想的应用

JSON文件的数据持久化

字典等数据结构的灵活使用

控制台交互界面的设计

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

《Python系列》Python实战记录 1.Python学生信息管理系统 2.Python实现pdf合并功能,并打包生成应用[无Python环境下使用] 3.Python Connect to MySQL 阅读详情

相关推荐

10分钟教你用Python打造学生成绩管理系统

前言 大家好,这学期上了Python这门课,然后结课的时候老师要求做一个这样的学生管理系统。自己按照老师的要求写了一下,今天就把这个小程序分享出来吧供Python新手小朋友学习 欲下载本文相关的完整代码及算例,请关注公众号【程序猿声】,后台回复【Python成绩管理】不包括【】即可 1 总体构思 其实类似这类信息管理系统之类的程序,核心还是和数据打交道吧,包括增删查改,读取、展示、保存等。 在数据结构上,我依然用了老师给定的数据结构,即: score1 = { "姓名":"张三丰",

infinitor的博客 5568

Python之学生信息管理系统

python实现简易版学生信息管理系统

申小兮和林小兮的博客宝 7万+

使用Python实现学生信息管理系统

个人练习作品

鹅不糊涂的博客 7213

Python课程设计 | 实现学生信息管理系统

本文介绍了一个简单的学生信息管理系统,包括管理员登录、重置学生密码、添加、删除和修改学生信息、查询学生信息以及对学生成绩进行排序等功能。该系统使用Python编写,基于控制台交互

Python栈 2万+

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1490

Python字典实战:打造高效学生成绩管理系统

本文详细介绍了如何使用 Python 字典创建学生成绩管理系统,并实现了添加、修改、删除、显示和查找学生成绩的功能。通过本文的学习,读者应该能够熟练掌握 Python 字典的基本操作和应用,并能够将其应用到实际的数据管理和查询任务中。

铭渊老黄 233

python打造学生系统_10分钟教你用Python打造学生成绩管理系统

前言大家好,这学期上了Python这门课,然后结课的时候老师要求做一个这样的学生管理系统。自己按照老师的要求写了一下,今天就把这个小程序分享出来吧供Python新手小朋友学习1 总体构思其实类似这类信息管理系统之类的程序,核心还是和数据打交道吧,包括增删查改,读取、展示、保存等。在数据结构上,我依然用了老师给定的数据结构,即:score1 = { "姓名":"张三丰","学号":"U1999000...

weixin_29019241的博客 1645

Python与MySQL打造学生信息管理系统实战指南

htmltable {th, td {th {pre {简介:在信息技术飞速发展的背景下,数据库管理系统在教育行业中扮演着重要角色,特别是对于学生信息的管理。本文介绍的”Python+MySQL 学生信息管理系统”是一个面向高校的应用程序,旨在帮助学生理解和掌握数据库操作,实现基本的数据增删改查功能。系统结合了Python的易读性和MySQL的稳定性,通过pymysql或mysql-connector-python库来实现与MySQL数据库的连接和操作。

weixin_42590539的博客 888

Python实战:打造简易学生管理系统

每个操作后即时反馈结果,比如新增成功提示、删除确认等,提升用户体验。通过-F参数生成单一文件,便于分发到其他Windows电脑使用。使用Python字典存储单个学生信息(姓名、性别、班级、学号),通过全局列表管理所有学生数据。这种结构既方便扩展字段,又能通过列表方法快速增删查改。上可以直接体验生成的项目原型,无需配置环境就能快速运行。我测试时发现它的AI生成功能对初学者特别友好,能自动补全基础代码结构,大大降低了上手门槛。读写文件时处理编码问题,并考虑文件不存在等异常情况。- 字典和列表的复合使用。

SilvermistFalcon67的博客 426

基于Python Tkinter的学生信息管理系统实战项目

经过这一番实战,你应该意识到:Tkinter教会你的从来不是“画按钮”,而是如何设计交互流程、管理程序状态、组织代码结构。当你能熟练运用事件绑定、布局管理、数据绑定、持久化存储这些技能时,你会发现——不管是做一个简单的配置工具,还是复杂的行业软件,底层思维模型都是一样的。而且别忘了,Python + Tkinter 的组合特别适合做一些“内部小工具”:比如批量处理Excel、自动化报表生成、设备监控面板等等。它们不需要华丽的界面,但要求稳定、可靠、易维护。

weixin_36151775的博客 984

Python与MySQL打造高级学生信息管理系统

htmltable {th, td {th {pre {简介:本项目介绍了一个进阶版的Python学生信息管理系统,它使用MySQL数据库来高效地存储和管理数据。项目涉及使用pymysql库与MySQL数据库交互,数据库设计以存储用户和学生信息,实现用户认证和安全的密码处理,界面优化提升用户体验,以及利用SQL命令进行数据操作。该系统是学习Python开发和数据库应用的实用案例。

weixin_32252929的博客 1096

从零开始用 Python 打造学生管理系统:面向对象实战全解析

作为 Python 初学者,完成一个完整的项目是检验学习成果最好的方式。今天我将带大家从零拆解一个纯 Python 面向对象实现的学生管理系统,这是我刚完成的第一个实战项目,涵盖了类与对象、文件操作、异常处理、循环控制等核心知识点,代码简洁易懂,非常适合新手入门。这是一个基于控制台的学生信息管理系统,实现了学生信息的增删改查核心功能,同时支持数据的本地持久化存储(保存到 txt 文件)和启动自动加载。整个项目采用面向对象思想设计,代码结构清晰,易于扩展和维护。

2501_93446564的博客 348

运算放大器测试方法-输入失调电压

由于运放输入回路的不对称性,在输入端将产生一定的误差信号,从而限制运放信号灵敏度。通常用输入失调电压(VOS)、输入失调电流(Ios)和输入偏置电流(IB)表示。运放有四个主要特征:输入失调特征、开环特征、共模特征及输出特征。其放大倍数较大,由于外界的影响,即使运放的输入端产生较小的输入信号,经过放大,在输出端也会产生较大的误差。为能精确测量其性能,一般采用辅助运放进行测试。下面着重讲了运放的主要参数及如何精确测量这些参数。文中DUT代表被测运放,A代表辅助运放。

weixin_46135931的博客 1万+

Python-简易学生管理系统-课程设计:为教育机构打造的完美管理工具

Python-简易学生管理系统-课程设计:为教育机构打造的完美管理工具 【下载地址】Python-简易学生管理系统-课程设计 这是一个基于Python的简易学生管理系统,专为课程设计打造,适合初学者学习和实践。系统采用面向对象编程思想,模块化设计清晰,易于维护和扩展。主要功能包括管理员对学生和教师信息的增删改查,教师对学...

gitblog_06710的博客 1069

防火墙——双机热备理论讲解

本端和对端协商失败。有可能是因为本端和对端设备的软件版本不一致、某端配置错误、对端设备的心跳接口状态为Down、HRP源或目的端口号被修改、或者底层链路不通等原因导致。会话表、SeverMap表、IP监控表、分片缓存表、GTP表、黑名单、PAT方式端口映射表、NO-PAT方式地址映射表。两台设备一主一备,正常情况下业务流量由主设备处理,当主设备故障时,业务流量平滑切换到备用设备进行处理,业务不中断。开启自动备份后,当主用设备配置了一条可备份的命令或产生了可备份的会话表状态时,会直接备份到备用设备上。

m0_49864110的博客 2万+

DSP28335笔记——内部Flash中进行数据读写(Flash_API的使用)

Program时的报错返回值较为常见,对返回值30、31进行详解:返回值为30:每次操作写入16位的字节,直到Buffer中的数据全部写入,若写入的数据位超过16位时则返回值30。返回值为31:表示尝试将已有数据位上的0写成1。一般情况下,在Program操作之前,会将指定部分中的数据进行擦除;但擦除函数执行时间较久,且只能以扇区为单位进行擦除,因此也可以在已有数据的基础上再进行Program,但无法将已有数据的位中的0值写成1。

m0_46621336的博客 8750

按照学号查找学生_10分钟教你用Python打造学生成绩管理系统

程序猿声代码黑科技的分享区大家好,这学期上了Python这门课,然后结课的时候老师要求做一个这样的学生管理系统。自己按照老师的要求写了一下,今天就把这个小程序分享出来吧~供Python新手小朋友学习~1总体构思其实类似这类信息管理系统之类的程序,核心还是和数据打交道吧,包括增删查改,读取、展示、保存等。在数据结构上,我依然用了给定的数据结构,即:score1={"姓名":"张三丰...

weixin_32244597的博客 3900

OpenClaw Browser Relay Extension 鉴权失败与 invalid handshake 问题的终极解决方案

在使用 OpenClaw 浏览器插件 (Browser Relay Extension) 时,许多用户可能会遇到两个主要问题:一是配置端口错误导致的连接失败,二是鉴权失败 (Gateway token rejected)。本文将详细解析这两个问题并提供解决方案。

gerryke的blog 5559

Python实战:打造高效学生通讯录管理系统

本文详细介绍了如何使用Python字典和函数从零开始构建一个命令行学生通讯录管理系统。文章通过实战代码演示了系统的核心功能,包括学生信息的添加、删除、修改、搜索与批量显示,并进一步讲解了如何实现数据持久化与模糊搜索,帮助Python初学者将基础语法串联起来解决实际问题。

tomato的博客 846

Android 14.0 SystemUI下拉通知栏通知去掉长按事件

在14.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分 要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现 相关功能

安卓兼职framework和app工程师的博客 277

在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统

智能建筑能效优化是现代建筑管理的重要组成部分,旨在通过智能化手段降低能源消耗、减少碳排放并提高居住舒适性。通过Simulink进行智能建筑能效优化仿真,可以验证控制策略的有效性、优化系统设计并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的智能建筑能效优化仿真。该系统能够模拟复杂的建筑环境,验证能效优化策略的有效性,并通过优化设计提高建筑的能源利用效率和居住舒适性。

xiaoheshang_123的博客 138

Python界面版学生管理系统:打造你的第一个GUI应用

Python界面版学生管理系统:打造你的第一个GUI应用 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 你是否对Python编程充满兴趣,却又苦于找不到一个合适的项目来实践?你是否想要学习如何开发图形用户界面(GUI),却不知从何入手?Python界面版学生管理系统正是为你量身打造的学习利器!这个项目提供了一个完整的Python GUI应用程序,让你在实践中掌握Pyt...

gitblog_09745的博客 598

强化学习在视觉导航中的应用

强化学习在视觉导航中的应用​ ,人工智能,计算机视觉,大模型,AI,强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境进行交互,以最大化累积奖励为目标的机器学习范式。它不依赖于预定义的规则或大量标注数据,而是让智能体在试错过程中学习最优策略。计算机视觉(Computer Vision)则赋予智能体 “观察” 环境的能力,使其能够从图像或视频中提取有用信息。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

基于Python的学生成绩管理系统的设计与实现(源码+lw+部署文档+讲解等)

本课题致力于设计与实现一个基于 Python 和 Django 的学生成绩管理系统。在教育领域,高效的成绩管理对于学校和教师来说至关重要,可以帮助他们更好地了解学生的学习情况,制定教学策略。 该系统利用 Python 的强大编程能力和 Django 框架的高效开发特性,为学生成绩管理提供全面的解决方案。主要功能包括: 一、学生信息管理 学生注册与登录:学生可以通过账号密码登录系统,查看自己的成绩等信息。 学生信息录入:教师或管理员可以录入学生的基本信息,如姓名、学号、班级等。 学生信息查询与修改:可以根据不

专注于大学生项目实战开发,讲解,毕业答疑辅导,java就业辅导,高校老师/讲师/同行合作。以及产品测评宣传、工具推广等合作。全网粉丝10w+,平台优质创作者。 3082

IgH EtherCAT 从入门到精通:第 2 章 环境搭建与编译安装

环境搭建与编译安装指南 本章详细介绍了搭建IgH EtherCAT Master开发环境的完整流程。内容包括: 硬件要求:支持多种Intel和Realtek网卡的原生驱动,以及通用网卡的generic驱动选项 软件依赖:列出Linux系统下所需的工具链和开发包 源码获取:通过Git克隆官方仓库并切换稳定版本的方法 配置选项:详细解析bootstrap脚本和configure的核心参数,包括路径设置、功能开关和实时框架选项 编译流程:从生成构建系统到最终编译安装的完整步骤 通过本章指导,读者可以完成一个可运行

从事嵌入式linux android驱动开发,拥有全栈能力 479

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

打造简单实用的Python学生管理系统

在学习python过程中,为了更好地理解面向对象编程(OOP)的概念,我们将通过构建一个简单而实用的 Python 学生管理系统来学习其核心原理和实践技巧。

l475378094的博客 632

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: Python编程入门:10道经典练习题附详细解答
下一篇: Python实战:快速抓取网页数据的5种高效方法
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值