提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一个简单的Python学生信息管理系统可以包括以下功能:
- 添加学生信息。包括学生姓名、学号、年龄、性别、成绩等。
- 修改学生信息。根据学号查询到指定学生信息进行修改。
- 删除学生信息。根据学号查询到指定学生信息进行删除。
- 查看学生信息。支持按照学号或成绩排序查看全部学生信息,并显示总人数、平均分、最高分、最低分等统计信息。
- 保存学生信息。将添加、修改、删除后的学生信息保存到文件中以便下次打开程序时读取。
使用步骤
代码如下(示例):
import os
students = []
def save_students():
with open("students.txt", "w") as f://学生信息保存在文件students.txt中
for s in students:
f.write(str(s) + "\n")
def load_students():
if os.path.exists("students.txt"):
with open("students.txt", "r") as f:
lines = f.readlines()
for line in lines:
parts = line.strip().split(",")
if len(parts) == 5:
student = {"学号": parts[0], "姓名": parts[1], "年龄": int(parts[2]), "性别": parts[3], "成绩": float(parts[4])}
students.append(student)
def add_student():
print("=== 添加学生 ===")
sno = input("请输入学号:")
name = input("请输入姓名:")
age = int(input("请输入年龄:"))
gender = input("请输入性别:")
score = float(input("请输入成绩:"))
student = {"学号": sno, "姓名": name, "年龄": age, "性别": gender, "成绩": score}
students.append(student)
print("添加成功!")
def modify_student():
print("=== 修改学生 ===")
sno = input("请输入要修改的学生的学号:")
for student in students:
if student["学号"] == sno:
name = input(f"请输入新的姓名(原姓名为{student['姓名']}):")
age = int(input(f"请输入新的年龄(原年龄为{student['年龄']}):"))
gender = input(f"请输入新的性别(原性别为{student['性别']}):")
score = float(input(f"请输入新的成绩(原成绩为{student['成绩']}):"))
student["姓名"] = name
student["年龄"] = age
student["性别"] = gender
student["成绩"] = score
print("修改成功!")
return
else:
print("未找到该学生!")
def delete_student():
print("=== 删除学生 ===")
sno = input("请输入要删除的学生的学号:")
for student in students:
if student["学号"] == sno:
students.remove(student)
print("删除成功!")
return
else:
print("未找到该学生!")
def show_students(sort_key):
if sort_key not in ["学号", "成绩"]:
sort_key = "学号"
sorted_students = sorted(students, key=lambda s: s[sort_key])
print(f"学号\t姓名\t年龄\t性别\t成绩")
for student in sorted_students:
print(f"{student['学号']}\t{student['姓名']}\t{student['年龄']}\t{student['性别']}\t{student['成绩']}")
count = len(sorted_students)
avg_score = sum([s["成绩"] for s in students]) / count if count > 0 else 0
max_score = sorted_students[-1]["成绩"] if count > 0 else 0
min_score = sorted_students[0]["成绩"] if count > 0 else 0
print(f"\n总人数:{count}")
print(f"平均分:{avg_score:.2f}")
print(f"最高分:{max_score:.2f}")
print(f"最低分:{min_score:.2f}")
def main():
load_students()
while True:
print("""
=== 学生信息管理系统 ===
1. 添加学生信息
2. 修改学生信息
3. 删除学生信息
4. 查看学生信息
5. 退出程序""")
choice = input("请输入操作编号:")
if choice == "1":
add_student()
save_students()
elif choice == "2":
modify_student()
save_students()
elif choice == "3":
delete_student()
save_students()
elif choice == "4":
order = input("请选择按照什么字段排序(输入“学号”或“成绩”):")
show_students(order)
elif choice == "5":
print("感谢使用本程序!")
break
else:
print("输入错误,请重新选择!")
if __name__ == "__main__":
main()