import json
import os
# 定义数据文件路径
DATA_FILE = "students.json"
# 初始化学生数据
def init_data():
if os.path.exists(DATA_FILE):
with open(DATA_FILE, "r", encoding="utf-8") as f:
return json.load(f)
return []
# 保存学生数据到文件
def save_data(students):
with open(DATA_FILE, "w", encoding="utf-8") as f:
json.dump(students, f, ensure_ascii=False, indent=4)
# 添加学生信息
def add_student(students):
student_id = input("请输入学生学号:")
# 检查学号是否已存在
for student in students:
if student["id"] == student_id:
print("该学号已存在!")
return
name = input("请输入学生姓名:")
age = input("请输入学生年龄:")
gender = input("请输入学生性别:")
major = input("请输入学生专业:")
student = {
"id": student_id,
"name": name,
"age": age,
"gender": gender,
"major": major
}
students.append(student)
save_data(students)
print("学生信息添加成功!")
# 查询学生信息
def query_student(students):
query_type = input("请选择查询方式(1-按学号查询,2-按姓名查询,3-查询所有):")
if query_type == "1":
student_id = input("请输入学生学号:")
for student in students:
if student["id"] == student_id:
print_student(student)
return
print("未找到该学生!")
elif query_type == "2":
name = input("请输入学生姓名:")
found = False
for student in students:
if student["name"] == name:
print_student(student)
found = True
if not found:
print("未找到该学生!")
elif query_type == "3":
if not students:
print("暂无学生信息!")
return
print("-" * 60)
for student in students:
print_student(student)
print("-" * 60)
else:
print("无效的查询方式!")
# 打印学生信息
def print_student(student):
print(f"学号:{student['id']}")
print(f"姓名:{student['name']}")
print(f"年龄:{student['age']}")
print(f"性别:{student['gender']}")
print(f"专业:{student['major']}")
# 修改学生信息
def modify_student(students):
student_id = input("请输入要修改的学生学号:")
for student in students:
if student["id"] == student_id:
print("当前学生信息:")
print_student(student)
student["name"] = input("请输入新姓名(回车保持不变):") or student["name"]
student["age"] = input("请输入新年龄(回车保持不变):") or student["age"]
student["gender"] = input("请输入新性别(回车保持不变):") or student["gender"]
student["major"] = input("请输入新专业(回车保持不变):") or student["major"]
save_data(students)
print("学生信息修改成功!")
return
print("未找到该学生!")
# 删除学生信息
def delete_student(students):
student_id = input("请输入要删除的学生学号:")
for i, student in enumerate(students):
if student["id"] == student_id:
confirm = input(f"确定要删除{student['name']}的信息吗?(y/n):")
if confirm.lower() == "y":
del students[i]
save_data(students)
print("学生信息删除成功!")
return
print("未找到该学生!")
# 显示菜单
def show_menu():
print("\n===== 学生管理系统 =====")
print("1. 添加学生信息")
print("2. 查询学生信息")
print("3. 修改学生信息")
print("4. 删除学生信息")
print("5. 退出系统")
print("========================")
def main():
students = init_data()
while True:
show_menu()
choice = input("请输入操作序号:")
if choice == "1":
add_student(students)
elif choice == "2":
query_student(students)
elif choice == "3":
modify_student(students)
elif choice == "4":
delete_student(students)
elif choice == "5":
print("感谢使用学生管理系统,再见!")
break
else:
print("无效的操作序号,请重新输入!")
if __name__ == "__main__":
main()
系统功能特点
- 数据持久化:采用 JSON 文件存储学生数据,即便程序退出,数据也不会丢失。
- 完整的 CRUD 操作:涵盖添加(Create)、查询(Read)、修改(Update)和删除(Delete)学生信息的功能。
- 多种查询方式:支持按学号查询、按姓名查询以及查看所有学生信息。
- 数据验证:添加学生时会检查学号是否重复,避免出现重复数据。
- 友好的交互界面:拥有清晰的菜单提示和操作反馈,提升用户体验。