包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】
前言
学生管理系统是学习Python编程的一个经典实战项目,它涵盖了文件操作、数据结构、面向对象编程等核心知识点。本文将带你从零开始,使用Python开发一个功能完整的学生管理系统,适合Python初学者练手。
一、系统功能设计
我们首先规划系统的基本功能:
学生信息管理:添加、删除、修改、查询学生信息
学生成绩管理:录入、修改、统计成绩
数据持久化:将数据保存到文件
用户界面:简单的控制台交互界面
二、核心代码实现
- 学生类设计
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}"
- 管理系统类设计
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)
- 用户界面实现
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漫画教程,手机也能学习