本项目是一个基于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):
# 结构化数据,便于程序读取
三、使用步骤
-
添加学生:填写完整信息后点击"添加"按钮
-
查询学生:输入姓名或学号后点击"查询"按钮
-
修改信息:先查询出学生,修改后点击"修改"按钮
-
删除学生:输入学号后点击"删除"按钮(需确认)
-
导出数据:点击"导出数据"按钮选择格式和位置
四、项目特点
本系统代码结构清晰,采用面向对象设计,便于维护和扩展。功能完整实用,包含学生信息的增删改查、数据持久化存储和多种格式导出。代码注释详细,非常适合Python初学者学习和参考,能够帮助理解GUI编程的基本原理和数据处理流程。
五、总结
这个学生信息管理系统是一个完整的Python GUI实战项目,涵盖了Tkinter界面开发、JSON数据存储、数据验证和文件操作等核心知识点。通过本项目学习,可以掌握GUI应用程序的开发流程,理解数据管理的实现原理,为后续学习更复杂的Python项目打下良好基础。
项目源码已上传至 GitHub:18June96/student-management-system: 学生信息管理系统
175

被折叠的 条评论
为什么被折叠?



