news 2026/5/25 23:59:39

Python实战-学生信息管理系统开发(Tkinter+Json)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python实战-学生信息管理系统开发(Tkinter+Json)

本项目是一个基于Python Tkinter的图形化学生信息管理系统,实现学生信息的增删改查、数据保存和文件导出等功能。

这个学生信息管理系统的逻辑非常简单,它就像一个电子笔记本:所有学生信息都记在一个列表里,并自动保存成一个文件,你要做什么,就在窗口的输入框里填好内容,然后点按钮。

点“添加”,它就检查信息对不对,然后记到列表里;点“删除”或“修改”,它就先根据你输入的姓名或学号找到那个人,然后执行操作;点“查询”,它就帮你从列表里找出来并显示。每次对列表做完改动,它都会立刻自动保存到文件里,所以不用担心关机后信息会消失。

整个过程就是:填表、点按钮 -> 程序处理内存里的列表 -> 同时把列表存进文件

一、功能要点

1.1 核心功能

实现学生信息的改;显示所有学生信息;保存学生信息到本地;输入框内容清除。

1.2 数据验证功能

  • 学号唯一性检查

  • 手机号11位数字验证

  • 必填字段完整性检查

  • 性别下拉框选择(防止输入错误)

1.3 最终实现的主页面

二、代码详解

2.1 导入模块

import tkinter as tk # Python的标准GUI库 from tkinter import messagebox # 用于文件选择对话框 from tkinter import ttk # 提供更现代的、主题化的控件 from tkinter import filedialog # 用于文件选择对话框 import json # 将Python对象转换为JSON格式字符串保存到文件 import os # 主要用于检查文件是否存在

2.2 主类定义和初始化

将整个系统封装在一个类中,便于管理;__init__方法初始化系统核心组件,数据与界面分离,便于维护。

class StudentInfoSystem: def __init__(self, root): self.root = root # 主窗口 self.students = [] # 学生数据列表 self.setup_gui() # 创建界面 self.load_data() # 加载数据

2.3 GUI界面构建

# 使用LabelFrame分组 input_frame = tk.LabelFrame(self.root, text="学生信息录入") # 使用grid布局精确定位 tk.Label(parent, text="学号:").grid(row=0, column=0, sticky="e") self.entry_id = tk.Entry(parent, width=30) self.entry_id.grid(row=0, column=1)

2.4 数据持久化

把保存数据到JSON文件。

def save_data(self): with open(DATA_FILE, 'w', encoding='utf-8') as f: json.dump(self.students, f, ensure_ascii=False, indent=2)

2.5 数据验证

def validate_data(self, data, is_update=False): # 1. 必填字段检查 if not data['id'] or not data['name'] or not data['class']: return False, "学号、姓名和班级为必填项!" # 2. 学号唯一性检查 if not is_update: for student in self.students: if student['id'] == data['id']: return False, f"学号 {data['id']} 已存在!" # 3. 手机号格式检查 if data['phone']: if len(data['phone']) != 11 or not data['phone'].isdigit(): return False, "手机号必须是11位数字!" return True, "验证通过"

2.6 核心功能实现

1. 添加学生
def add_student(self): # 1. 获取数据 → 2. 验证数据 → 3. 添加到列表 → 4. 保存文件
2. 删除学生
def delete_student(self): # 1. 输入学号 → 2. 查找学生 → 3. 确认删除 → 4. 删除并保存
3. 查询学生
def search_student(self): # 支持模糊查询(姓名包含关键词或学号完全匹配) if keyword in student['name'] or keyword == student['id']: results.append(student)

2.7 数据导出功能

支持三种格式导出:

# 文本格式(.txt) def export_to_txt(self, file_path): # 制表符分隔,便于阅读 # CSV格式(.csv) def export_to_csv(self, file_path): # 逗号分隔,Excel兼容 # JSON格式(.json) def export_to_json(self, file_path): # 结构化数据,便于程序读取

三、使用步骤

  1. 添加学生:填写完整信息后点击"添加"按钮

  2. 查询学生:输入姓名或学号后点击"查询"按钮

  3. 修改信息:先查询出学生,修改后点击"修改"按钮

  4. 删除学生:输入学号后点击"删除"按钮(需确认)

  5. 导出数据:点击"导出数据"按钮选择格式和位置

四、项目特点

本系统代码结构清晰,采用面向对象设计,便于维护和扩展。功能完整实用,包含学生信息的增删改查、数据持久化存储和多种格式导出。代码注释详细,非常适合Python初学者学习和参考,能够帮助理解GUI编程的基本原理和数据处理流程。

五、总结

这个学生信息管理系统是一个完整的Python GUI实战项目,涵盖了Tkinter界面开发、JSON数据存储、数据验证和文件操作等核心知识点。通过本项目学习,可以掌握GUI应用程序的开发流程,理解数据管理的实现原理,为后续学习更复杂的Python项目打下良好基础。

项目源码已上传至 GitHub:18June96/student-management-system: 学生信息管理系统

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 4:52:55

python中模型加速训练accelerate包的用法

文章目录介绍应用示例适配训练环境快速启动分布式训练推理时的显存优化优势介绍 accelerate 最核心的价值是简化大模型训练 / 推理的硬件适配,它抽象了不同硬件(单卡、多卡、CPU、TPU、GPU 混合精度)的底层差异,让你用一套代码就…

作者头像 李华
网站建设 2026/5/25 23:46:51

科技发展的ai

科技发展的双重赋能与治理困境:在创新与平衡中探寻可持续路径摘要科技发展作为人类文明进步的核心驱动力,在重塑经济结构、优化生活方式、破解全球难题等方面展现出颠覆性力量。从智能手机普及到人工智能赋能产业升级,从绿色技术革新到跨领域…

作者头像 李华
网站建设 2026/5/26 5:17:41

Java基础阶段练手项目清单

Java基础阶段练手项目清单这份清单覆盖语法应用、逻辑训练、简单数据处理等核心能力,适合刚学完基础语法的新手,无需框架,只用JDK即可完成。1. 控制台计算器- 核心需求:实现加、减、乘、除、取余运算,支持输入两个数字…

作者头像 李华
网站建设 2026/5/26 5:14:17

30、Linux系统操作与资源指南

Linux系统操作与资源指南 1. info工具的操作 info工具是Linux系统中常用的帮助工具,其相关文件存放在 /usr/share/info 目录下。在info工具中,有一些常用的组合键操作,如下表所示: | 组合键 | 操作 | | — | — | | 空格键、PageDown | 向下滚动到下一页 | | 退格键…

作者头像 李华
网站建设 2026/5/26 5:14:20

9.有人网络转RS485模块的使用

可能是水平问题,个人不太喜欢用QT的串口类,进行开发,宁可转一下。有人的网络转RS485,比较喜欢用。这里记录一下,使用方法:设置成服务端:然后,保存重启即可。此时模块就变成一个网络转…

作者头像 李华
网站建设 2026/5/26 5:17:22

HSWeb框架企业级权限管理系统终极指南:从入门到精通

HSWeb框架企业级权限管理系统终极指南:从入门到精通 【免费下载链接】hsweb-framework hsweb (haʊs wɛb) 是一个基于spring-boot 2.x开发 ,首个使用全响应式编程的企业级后台管理系统基础项目。 项目地址: https://gitcode.com/gh_mirrors/hs/hsweb-framework …

作者头像 李华