67: 学生成绩管理(python)

收藏

难度:简单

标签:暂无标签

题目描述

有N个学生,每个学生的数据包括学号、班级、姓名、三门课成绩。从键盘输入N 个
学生数据,要求打印出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、
班级、姓名、三门课成绩,平均分)。
要求:
1、 定义学生结构体。
2、 用一个函数实现N 个学生数据的输入,用另一个函数负责求每个学生三门课程的平
均成绩,再用一个函数求出平均分最高的学生并输出该学生的数据。要求平均分和平均分最
高的学生数据都在主函数中输出。

输入
 

第一行:N,表示N 个学生

下面N 行:每行数据包括学号、班级、姓名、三门课成绩。

输出
 

输出每个学生三门课的平均成绩,以及平均分最高分学生数据(包括学号、班级、姓名、
三门课成绩,平均分)。
格式见下。(四舍五入保留一位小数)

样例输入复制
4
20070008 software1 wangjun 87 84 76
20070001 science1 lanxin 90 84 83
20070007 software2 wuke 94 87 86
20070003 science4 xuede 90 86 87
样例输出复制
wangjun 82.3
lanxin 85.7
wuke 89.0
xuede 87.7
20070007 software2 wuke 94.0 87.0 86.0 89.0

class Student:
    def __init__(self, student_id, class_name, name, score1, score2, score3):
        self.student_id = student_id
        self.class_name = class_name
        self.name = name
        self.score1 = score1
        self.score2 = score2
        self.score3 = score3

def input_students(n):
    students = []
    for _ in range(n):
        student_info = input().split()
        student_id, class_name, name = student_info[:3]
        scores = list(map(float, student_info[3:]))
        student = Student(student_id, class_name, name, *scores)
        students.append(student)
    return students

def calculate_average(student):
    return (student.score1 + student.score2 + student.score3) / 3

def find_highest_average(students):
    highest_average = 0
    highest_student = None
    for student in students:
        average = calculate_average(student)
        if average > highest_average:
            highest_average = average
            highest_student = student
    return highest_student

def main():
    n = int(input("请输入学生人数:"))
    students = input_students(n)

    for student in students:
        average_score = calculate_average(student)
        print(f"{student.name} {average_score:.1f}")

    highest_student = find_highest_average(students)
    print(f"{highest_student.student_id} {highest_student.class_name} {highest_student.name} "
          f"{highest_student.score1} {highest_student.score2} {highest_student.score3} "
          f"{calculate_average(highest_student):.1f}")

if __name__ == "__main__":
    # main()

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
设计课题一:班级成绩管理系统 一、 问题描述: 对一个有N个学生班级每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。 二、功能要求: 1、本系统采用一个结构体数组,每个数据的结构应当包括学号姓名、M门课程名称。 2、本系统显示这样的菜单: 请选择系统功能项: a、 成绩录入 b、 成绩显示 c、 成绩保存 d、 成绩排序 e、 成绩修改(要求先输入密码) f、 成绩统计 (1) 显示每门课程成绩最高的学生的基本信息 (2) 显示每门课程的平均成绩 (3) 显示超过某门课程平均成绩的学生人数 g、 退出系统 3、执行一个具体的功能之后,程序将重新显示菜单。 4、将学生成绩保存到文件中。 三、算法提示: 1、数据结构:结构体类型数组。 2、数据库结构:下表构成该系统的基本数据库。 姓名 学号 课程名称1 课程名称2 ●●●●●● char Char float float 四、测试数据学生人数N=10 课程门数M=4 课程名:数学、语文、英语、政治 五、其它 对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。 问题补充: 今天谁能给我答案啊!!!!!!!急急!!!!!!! 提问者: 342123465 - 试用期 一级 最佳答案 C语言课程设计报告—班级成绩管理系统 需要分析: 学生成绩管理系统有13种功能。把这13个功能做成13个子函数。在主函当数中设计一个菜单对这13个子数进行管理。来实现对整个系统的操作。 根据课题的要求。每一个学生包括姓名(char)、学号(char)、M门课程的成绩(float).再加上系统功能上的要求每一学生的信息还要总分和名次等。所以自然的想到要用结构体来定义每一个学生的信息结构。然后用链表把它们组成一个有序的整体。用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。最后为了以后按照处理后的顺序保存到文件中。 . 各函数的功能: 概要设计: 程序的模块组成: 主 函 数: int main() 新建函数:STUDENT *init() 输入函数 :STUDENT *create() 显示函数: void print(STUDENT *head) 删除函数: STUDENT *delete(STUDENT *head) 按名字寻找函数: void lookup(STUDENT *head) 保存函数: void save(STUDENT *head) 按总分排序函数: STUDENT *sort(STUDENT *head) 计算总分和均分函数: void computer(STUDENT *h) 修改函数: STUDENT *Modify(STUDENT *head,STUDENT *new) 按学号排序函数: STUDENT *index(STUDENT *h) 菜单函数:int menu_select() 各个函数的主要功能: 输入函数: 随时输入数据。 菜单函数:显示系统主菜单。 显示函数: 显示所有学生的信息。 寻找函数: 方便学生查找自己的成绩。 删除函数: 删除某学生的信息。 排序函数: 按总成绩排序。 按学号排序函数: 按学号排序。 插入函数: 可以插入新的信息。 保存函数: 保存好学生成绩,以免丢失。 统计函数: l 显示每门课程成绩最高的学生的基本信息。 l 显示每门课程的平均成绩。 l 显示超过某门课程平均成绩的学生人数。 课题的功能模块的划分: 开始 菜单界面 功能选择 初始化函数 输入学生信息 删除学生信息 显示学生信息 查找学生信息 按成绩排序 保存到文件 从文件读数据 插入学生成绩 分类合计 退出系统 结束 详细设计: 整个系统除了主函数外,另外还有14个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的详细设计说明分别如下: 主函数 main() 利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。 菜单选择函数 int menu_select() 这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,返回菜单。 代码设计: 初始化函数 STUDENT *init() 这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚与蓝莓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值