import csv
import os
FILENAME = "students.csv"
def load_students():
students = []
if not os.path.exists(FILENAME):
with open(FILENAME, mode="w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["name", "score"])
writer.writeheader()
return students
with open(FILENAME, mode="r", newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
row["score"] = int(row["score"])
students.append(row)
return students
def save_students(students):
with open(FILENAME, mode="w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["name", "score"])
writer.writeheader()
for student in students:
writer.writerow(student)
def add_student(students):
name = input("请输入学生姓名:")
score = int(input("请输入学生成绩:"))
student = {
"name": name,
"score": score
}
students.append(student)
save_students(students)
print("✅ 学生添加成功!")
def show_students(students):
if not students:
print("📭 当前没有学生信息")
return
print("📋 学生列表:")
for student in students:
print(f"姓名:{student['name']},成绩:{student['score']}")
def search_student(students):
name = input("请输入要查询的学生姓名:")
for student in students:
if student["name"] == name:
print(f"🎯 {name} 的成绩是:{student['score']}")
return
print("❌ 未找到该学生")
def update_student(students):
name = input("请输入要修改的学生姓名:")
for student in students:
if student["name"] == name:
new_score = int(input("请输入新的成绩:"))
student["score"] = new_score
save_students(students)
print("✅ 成绩修改成功!")
return
print("❌ 未找到该学生")
def delete_student(students):
name = input("请输入要删除的学生姓名:")
for student in students:
if student["name"] == name:
students.remove(student)
save_students(students)
print("🗑 学生已删除")
return
print("❌ 未找到该学生")
def menu():
print("\n====== 学生成绩管理系统 ======")
print("1. 添加学生")
print("2. 显示所有学生")
print("3. 查询学生成绩")
print("4. 修改学生成绩")
print("5. 删除学生")
print("0. 退出系统")
def main():
students = load_students()
while True:
menu()
choice = input("请选择功能:")
if choice == "1":
add_student(students)
elif choice == "2":
show_students(students)
elif choice == "3":
search_student(students)
elif choice == "4":
update_student(students)
elif choice == "5":
delete_student(students)
elif choice == "0":
print("👋 已退出系统")
break
else:
print("⚠ 输入错误,请重新选择")
main()
import csv
import random
FILENAME = "students_full.csv"
students_names = ["张三", "李四", "王五", "赵六", "钱七","王沁","颜奕","杨胤隆","童圆","李金铭","莫文蔚","张嘉涵","李佳妍"]
subjects = {
"math": 120,
"english": 120,
"chinese": 120,
"history": 100,
"politics": 100,
"geography": 100,
"biology": 100,
"chemistry": 100,
"physics": 100
}
students = []
for name in students_names:
student = {"name": name}
total = 0
for subject, max_score in subjects.items():
score = random.randint(int(max_score*0.5), max_score)
student[subject] = score
total += score
student["total"] = total
student["average"] = round(total / len(subjects), 2)
students.append(student)
students.sort(key=lambda x: x["total"], reverse=True)
for idx, student in enumerate(students, start=1):
student["rank"] = idx
fieldnames = ["name"] + list(subjects.keys()) + ["total", "average", "rank"]
with open(FILENAME, mode="w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for student in students:
writer.writerow(student)
print("✅ 成绩文件已生成:students_full.csv")
import csv
import os
FILENAME = "students_full.csv"
subjects = ["math", "english", "chinese", "history", "politics", "geography", "biology", "chemistry", "physics"]
def load_students():
students = []
if not os.path.exists(FILENAME):
print("📭 成绩文件不存在,请先生成。")
return students
with open(FILENAME, mode="r", newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
for subject in subjects + ["total", "rank"]:
row[subject] = int(row[subject]) if subject not in ["average"] else float(row["average"])
students.append(row)
return students
def save_students(students):
fieldnames = ["name"] + subjects + ["total", "average", "rank"]
students.sort(key=lambda x: x["total"], reverse=True)
for idx, student in enumerate(students, start=1):
student["rank"] = idx
with open(FILENAME, mode="w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for student in students:
writer.writerow(student)
def add_student(students):
name = input("请输入学生姓名:")
total = 0
student = {"name": name}
for subject in subjects:
score = int(input(f"请输入{subject}成绩:"))
student[subject] = score
total += score
student["total"] = total
student["average"] = round(total / len(subjects), 2)
students.append(student)
save_students(students)
print("✅ 学生成绩已添加!")
def show_students(students):
if not students:
print("📭 当前没有学生信息")
return
for student in students:
print(f"姓名:{student['name']},总分:{student['total']},平均分:{student['average']},排名:{student['rank']}")
def search_student(students):
name = input("请输入要查询的学生姓名:")
for student in students:
if student["name"] == name:
print(f"🎯 {name} 的成绩:")
for subject in subjects:
print(f"{subject}:{student[subject]}")
print(f"总分:{student['total']},平均分:{student['average']},排名:{student['rank']}")
return
print("❌ 未找到该学生")
def update_student(students):
name = input("请输入要修改的学生姓名:")
for student in students:
if student["name"] == name:
total = 0
for subject in subjects:
score = int(input(f"请输入新的{subject}成绩:"))
student[subject] = score
total += score
student["total"] = total
student["average"] = round(total / len(subjects), 2)
save_students(students)
print("✅ 成绩修改完成!")
return
print("❌ 未找到该学生")
def delete_student(students):
name = input("请输入要删除的学生姓名:")
for student in students:
if student["name"] == name:
students.remove(student)
save_students(students)
print("🗑 学生已删除")
return
print("❌ 未找到该学生")
def menu():
print("\n====== 学生成绩管理系统(多科版) ======")
print("1. 添加学生")
print("2. 显示所有学生")
print("3. 查询学生成绩")
print("4. 修改学生成绩")
print("5. 删除学生")
print("0. 退出系统")
def main():
students = load_students()
if not students:
return
while True:
menu()
choice = input("请选择功能:")
if choice == "1":
add_student(students)
elif choice == "2":
show_students(students)
elif choice == "3":
search_student(students)
elif choice == "4":
update_student(students)
elif choice == "5":
delete_student(students)
elif choice == "0":
print("👋 已退出系统")
break
else:
print("⚠ 输入错误,请重新选择")
main()