好的!下面我将详细介绍如何使用Python实现一个功能完整的学生管理系统,包括基础功能(增删改查)和数据持久化(使用JSON文件存储)。教程包含完整源码及详细注释。
学生管理系统设计
系统主要功能模块:
- 添加学生信息
- 删除学生信息
- 修改学生信息
- 查询学生信息
- 显示所有学生
- 数据持久化(JSON文件存储)
核心代码实现
1. 数据结构设计
每个学生信息包含:
- 学号(ID)
- 姓名(name)
- 年龄(age)
- 班级(class)
python
# 学生信息结构示例
student = {
"id": "2023001",
"name": "张三",
"age": 18,
"class": "计算机1班"
}
2. 主程序框架
python
import json
import os
# 数据存储文件名
DATA_FILE = "students.json"
def load_data():
"""从文件加载学生数据"""
if os.path.exists(DATA_FILE):
with open(DATA_FILE, 'r') as f:
return json.load(f)
return []
def save_data(students):
"""保存学生数据到文件"""
with open(DATA_FILE, 'w') as f:
json.dump(students, f, ensure_ascii=False, indent=4)
def add_student(students):
"""添加学生信息"""
student_id = input("请输入学号: ")
# 检查学号是否重复
if any(s['id'] == student_id for s in students):
print("学号已存在!")
return
name = input("请输入姓名: ")
age = input("请输入年龄: ")
class_name = input("请输入班级: ")
students.append({
"id": student_id,
"name": name,
"age": age,
"class": class_name
})
save_data(students)
print("添加成功!")
# 其他功能函数(删除、修改、查询等)类似实现
3. 完整功能代码
python
import json
import os
DATA_FILE = "students.json"
def load_data():
if not os.path.exists(DATA_FILE):
return []
try:
with open(DATA_FILE, 'r') as f:
return json.load(f)
except:
return []
def save_data(students):
with open(DATA_FILE, 'w') as f:
json.dump(students, f, ensure_ascii=False, indent=4)
def show_menu():
print("\n===== 学生管理系统 =====")
print("1. 添加学生")
print("2. 删除学生")
print("3. 修改学生")
print("4. 查询学生")
print("5. 显示所有学生")
print("0. 退出系统")
def add_student(students):
student_id = input("学号: ")
if any(s['id'] == student_id for s in students):
print("错误:学号重复!")
return
name = input("姓名: ")
age = input("年龄: ")
class_name = input("班级: ")
students.append({
"id": student_id,
"name": name,
"age": age,
"class": class_name
})
save_data(students)
print(f"成功添加学生: {name}")
def delete_student(students):
student_id = input("输入要删除的学号: ")
for i, s in enumerate(students):
if s['id'] == student_id:
students.pop(i)
save_data(students)
print("删除成功!")
return
print("未找到该学生!")
def modify_student(students):
student_id = input("输入要修改的学号: ")
for s in students:
if s['id'] == student_id:
s['name'] = input(f"新姓名 (原: {s['name']}): ") or s['name']
s['age'] = input(f"新年龄 (原: {s['age']}): ") or s['age']
s['class'] = input(f"新班级 (原: {s['class']}): ") or s['class']
save_data(students)
print("修改成功!")
return
print("未找到该学生!")
def search_student(students):
keyword = input("输入学号或姓名: ")
results = [
s for s in students
if keyword in s['id'] or keyword in s['name']
]
if results:
print("查询结果:")
for s in results:
print(f"学号: {s['id']}, 姓名: {s['name']}, 年龄: {s['age']}, 班级: {s['class']}")
else:
print("未找到匹配记录!")
def show_all(students):
if not students:
print("暂无学生记录!")
return
print("\n===== 所有学生信息 =====")
for s in students:
print(f"学号: {s['id']}, 姓名: {s['name']}, 年龄: {s['age']}, 班级: {s['class']}")
def main():
students = load_data()
while True:
show_menu()
choice = input("请选择操作: ")
if choice == '1':
add_student(students)
elif choice == '2':
delete_student(students)
elif choice == '3':
modify_student(students)
elif choice == '4':
search_student(students)
elif choice == '5':
show_all(students)
elif choice == '0':
print("系统已退出!")
break
else:
print("无效选项!")
if __name__ == "__main__":
main()
功能测试
-
运行程序后选择操作:
===== 学生管理系统 ===== 1. 添加学生 2. 删除学生 3. 修改学生 4. 查询学生 5. 显示所有学生 0. 退出系统 -
数据持久化验证:
程序关闭后,数据保存在students.json文件中,格式如下:json[ { "id": "2023001", "name": "张三", "age": "18", "class": "计算机1班" } ]
扩展建议
- 异常处理:增加输入校验(如年龄需为数字)
- 数据加密:敏感信息加密存储
- 多条件查询:支持按班级、年龄范围查询
源码获取
完整代码已托管至GitHub仓库:
👉 点击获取完整源码
通过本教程,您已掌握如何构建一个具有数据持久化功能的学生管理系统。欢迎在项目中实践并扩展更多功能!