python 学生成绩管理练习

主程序:

(加载数据方法)

def load_data() -> dict:
    res = {}
    if os.path.exists(file):
        file_instence = open(file,encoding="UTF8")
        csv_reader = csv.DictReader(file_instence)
        for row in csv_reader:
            name = row.get("name")
            res[name] = row
        file_instence.close()
    return res

1、获得输入命令函数

def get_command()->str:
    command = input("请输入命令:")
    cmd = command.lower()
    if cmd not in COMMAND_LIST:
        print("你输入的命令无效,请重新输入:")
    else:
        return cmd

2、处理命令函数(参数 方法名,加载的数据(字典))

def command_list(data:dict):
    result = list(data.values())
    for record in result:
        print(record.get("name"))
        print(f"语文成绩是 : {record.get('chinese')}")
        print(f"英语成绩是 : {record.get('english')}")
        print(f"数学成绩是 : {record.get('math')}")


def command_add(data:dict):
    name = input("请输入姓名:")
    chinese_score = input("请输入语文成绩:")
    english_score = input("请输入英语成绩:")
    math_score = input("请输入数学成绩:")

    record = {
        "name":name,
        "chinese":chinese_score,
        "english":english_score,
        "math":math_score
    }
    data[name] = record


def command_edit(data:dict):
    name = input("请输入姓名:")
    if name in data.keys():
        course = input("请输入课程:")
        if course in course_def.COURSE_LIST:
            score = input("请输入成绩:")
            data[name][course] = score
            print("修改成功!")
        else:
            print("输入课程错误")
    else:
        print("姓名不存在!")

def command_delete(data:dict):
    name = input("请输入姓名:")
    if name in data.keys():
        data.pop(name)
        print(f"删除成功")
    else:
        print(f"输入的名字不存在")


def command_average(data:dict):
    student_count = len(data)
    if student_count == 0:
        print("没有学生成绩")
        return
    total_result = {}
    for course in course_def.COURSE_LIST:
        total_result[course] = 0

    for record in data.values():
        for course in course_def.COURSE_LIST:
            total_result[course] = total_result[course] + int(record.get(course))

    for course in course_def.COURSE_LIST:
        average = total_result[course] / student_count
        print(f"{course}的平均分是:{average}")

def process_command(cmd:str,data:dict):
    if cmd == "list":
        command_list(data)
    elif cmd == "add":
        command_add(data)
    elif cmd == "edit":
        command_edit(data)
    elif cmd == "delete":
        command_delete(data)
    elif cmd == "average":
        command_average(data)

(保存数据方法)

def save_data(data:dict):
    headers = ({"name"}).union(course_def.COURSE_LIST)
    file_instence = open(file,"w",encoding="UTF8")
    if len(data) > 0:
        csv_writer = csv.DictWriter(file_instence,headers)
        rows = list(data.values())
        csv_writer.writeheader()
        csv_writer.writerows(rows)
    file_instence.close()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值