##创建一个学生类
class student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = int(grade)

##添加学生成绩
def Add_Student(students):
    print('请依次输入姓名，成绩')
    print('姓名：')
    name = input()
    while(True):
        print('成绩：')
        score = int(input())
        if (score > 750 or score < 0):
            print('请重新输入成绩')
        else:
            break
    student1 = student(name, score)
    students.append(student1)
#观看学生成绩
def Print_Students(students):
    for student in students:
        print('name:',student.name, 'score:',student.grade)
#查询学生成绩
def Find_Students(students):
    print('请输入你要查询的学生名字：')
    name = input()
    val = 0
    for student in students:
        if(student.name == name):
            print('name:',student.name, 'score:',student.grade)
            val = 1
    if(val == 0):
        print("不存在此学生")

def Delete_Students(students):
    Print_Students(students)
    print('请输入要删除的学生名字')
    name = input()
    val = 0
    for student in students:
        if(student.name == name):
            students.remove(student)
            val = 1
    if(val == 1):
        print('已删除此记录')
    else:
        print("不存在此学生")

#成绩统计
def SEE_Students(students):
    if(len(students) == 0):
        print("无数据")
        return

    n = len(students)
    scores = 0
    mini = 100000
    maxi = 0
    for student in students:
        scores += student.grade
        if(student.grade < mini):
            mini = student.grade
        if(student.grade > maxi):
            maxi = student.grade

    print("最高成绩：", maxi)
    print("最低成绩：", mini)
    print("平均分", scores / n)

#保存函数
def Save_Students(students):
    data = []
    for student in students:
        new_stu = {'name': student.name, 'score': student.grade}
        data.append(new_stu)
    with open("student.json", "w", encoding = "utf-8")as fils:
        json.dump(data, fils, ensure_ascii=False, indent=4)
    print("保存数据成功")

#读取函数
def Load_Students():
    students = []
    try:
        with open("student.json", "r", encoding = "utf-8") as file:
            data = json.load(file)
        for item in data:
            student1 = student(item['name'], item['score'])
            students.append(student1)
        print("历史数据读取成功")
    except FileNotFoundError:
        print("文件为空，自动创建新数据文件")
    except json.JSONDecodeError:
        print("文件格式错误，使用空数据")

    return students

##主程序
#导入文件
import json

students =  Load_Students()
while(True):
    print("欢迎来到学生成绩操作系统")
    print("请选择你要进行的操作")
    print("1. 添加学生成绩")
    print("2. 观看学生成绩")
    print("3. 查询学生成绩")
    print("4. 删除学生记录")
    print("5. 观看成绩统计")
    print("6, 保存学生数据")
    print("0. 退出系统")

    choice = input()
    if choice == "1":
        Add_Student(students)
        Save_Students(students)
    elif choice == "2":
        Print_Students(students)
    elif choice == "3":
        Find_Students(students)
    elif choice == "4":
        Delete_Students(students)
        Save_Students(students)
    elif choice == "5":
        SEE_Students(students)
    elif choice == "6":
        Save_Students(students)
    elif choice == "0":
        Save_Students(students)
        break
    else:
        print("数字错了，请重新输入")

