简单学生成绩分析系统

存储50名学生的信息,包括:学号,姓名,语文成绩,
数学成绩,英语成绩(成绩为随机生成0-100之间的整数)
(1)计算每名同学的平均成绩并排序
(2)分别计算每门课程的平均分
(3)输出每门课程最高分,最低分学生名单,统计各分段
学生人数:0-59,60-69,70-79,80-89,90-100

# @Time : 2020/10/5 18:04
# @Author : Yurken
# @File : 10.5日作业.py
import random

name = ['包乐山', '包咏琦', '杨强', '李晶晶', '於斌涛', '石卓', '贾玉盈', '石江南', '乔倩倩', '杨光', '王霖', '贺立松', '任可', '张翔', '王振强', '吕彦良',
        '黛肖黎', '秦斌', '包锐', '包礼军', '黄宁宁', '许杰', '吴娜', '后箫航', '杜玉曦', '赫倩倩', '杨玉倩', '张蕊', '王蕊蕊', '孝雪霞', '曹建', '曾嫖丽', '杜勇',
        '弥玉薇', '常睿娟', '后妙慧', '罗亚婷', '骆冰冰', '后田田', '包圆圆', '孙启浩', '周佳颖', '张孙辰', '黄砺锋', '周南', '严楚楚', '张乐缘', '刘瑛轩', '谭静',
        '吴逸菲']
num = [0] * 50  # 学号
f = 1804011001
for i in range(0, 50):
    num[i] = f + i
chinese = random.choices(range(0,100),k=50,weights=range(0,100))  # 随机生成语文成绩,成绩可重复,此随机方式导致每次都有不一样的成绩
math = random.choices(range(0,100),k=50,weights=range(0,100))   # 随机生成数学成绩
english = random.choices(range(0,100),k=50,weights=range(0,100))    # 随机生成英语成绩
information = [name, num, chinese, math, english] # 学生信息生成
avegrade=[0]*50
for i in range(0,50):
    avegrade[i]=(chinese[i]+math[i]+english[i])/3 # 计算语数英三科平均成绩
avegrade = [round(i,2) for i in avegrade] # 将总平均成绩保留两位小数
a=[None]*50
for i in range(0,50):
    a[i]=[name[i],num[i],avegrade[i]] # 将姓名,学号,总平均成绩合成a列表
b=sorted(a, key=lambda x:x[2], reverse=True) # 将a列表降序成为b列表
print("请选择你想要的操作:\n"
      "1.查看学生信息\n"
      "2.查看总平均成绩排序\n"
      "3.查看语文成绩平均分\n"
      "4.查看数学成绩平均分\n"
      "5.查看英语成绩平均分\n"
      "6.查看每门课程最低分名单\n"
      "7.查看每门课程最高分名单\n"
      "8.统计各分段学生人数\n"
      "0.退出")
q=int(input())
while q!=0:
    if q==1:
        information=[None]*50
        for i in range(0, 50):
            information[i] = [name[i], num[i], chinese[i],math[i],english[i]]
        for i in information:
            print(" ".join(str(k) for k in i)) # 将学生信息以空格分隔输出
        print("请继续输入:")
        q = int(input())
    elif q == 2:
        for i in b:
            print(" ".join(str(k) for k in i))
        print("请继续输入:")
        q = int(input())
    elif q==3:
        avechinese =0
        for i in chinese:
           avechinese+=i
        avechinese=avechinese/50
        avechinese= round(avechinese,3)
        print("语文平均成绩为:",avechinese)
        print("请继续输入:")
        q = int(input())
    elif q==4:
        avemath = 0
        for i in math:
            avemath += i
        avemath = avemath / 50
        avemath= round(avemath,3)
        print("数学平均成绩为:",avemath)
        print("请继续输入:")
        q = int(input())
    elif q==5:
        avenglish = 0
        for i in english:
            avenglish += i
        avenglish = avenglish / 50
        avenglish= round(avenglish,3)
        print("英语平均成绩为:", avenglish)
        print("请继续输入:")
        q = int(input())
    elif q==6:
        print("语文最低分为:")
        aveyw1 = [None] * 50
        for i in range(0, 50):
            aveyw1[i] = [name[i],  chinese[i]]
        for i in range(0,50):
            yw=min(chinese)
            if yw==aveyw1[i][1]:
                print(aveyw1[i])
        print("数学最低分为:")
        avesx1 = [None] * 50
        for i in range(0, 50):
            avesx1[i] = [name[i], math[i]]
        for i in range(0, 50):
            sx = min(math)
            if sx == avesx1[i][1]:
                print(avesx1[i])
        print("英语最低分为:")
        aveyy1 = [None] * 50
        for i in range(0, 50):
            aveyy1[i] = [name[i], english[i]]
        for i in range(0, 50):
            yy = min(english)
            if yy == aveyy1[i][1]:
                print(aveyy1[i])
        print("请继续输入:")
        q = int(input())
    elif q==7:
        print("语文最高分为:")
        aveyw = [None] * 50
        for i in range(0, 50):
            aveyw[i] = [name[i],  chinese[i]]
        for i in range(0,50):
            yw=max(chinese)
            if yw==aveyw[i][1]:
                print(aveyw[i])
        print("数学最高分为:")
        avesx = [None] * 50
        for i in range(0, 50):
            avesx[i] = [name[i], math[i]]
        for i in range(0, 50):
            sx = max(math)
            if sx == avesx[i][1]:
                print(avesx[i])
        print("英语最高分为:")
        aveyy = [None] * 50
        for i in range(0, 50):
            aveyy[i] = [name[i], english[i]]
        for i in range(0, 50):
            yy = max(english)
            if yy == aveyy[i][1]:
                print(aveyy[i])
        print("请继续输入:")
        q = int(input())
    elif q==8:
        ywe=0
        ywd=0
        ywc=0
        ywb=0
        ywa=0
        for i in chinese:
            if 0<=i<=59:
                ywe+=1
            elif 60<=i<=69:
                ywd+=1
            elif 70<=i<=79:
                ywc+=1
            elif 80<=i<=89:
                ywb+=1
            elif 90<=i<=100:
                ywa+=1
        print('语文成绩分布:\n0-59:',ywe,'人\n60-69:',ywd,'人\n70-79:',ywc,'人\n80-89:',ywb,'人\n90-100:',ywa,'人')
        sxa=sxb=sxc=sxd=sxe=0
        for i in math:
            if 0 <= i <= 59:
                sxe += 1
            elif 60 <= i <= 69:
                sxd += 1
            elif 70 <= i <= 79:
                sxc += 1
            elif 80 <= i <= 89:
                sxb += 1
            elif 90 <= i <= 100:
                sxa += 1
        print('数学成绩分布:\n0-59:', sxe, '人\n60-69:', sxd, '人\n70-79:', sxc, '人\n80-89:', sxb, '人\n90-100:', sxa, '人')
        yya=yyb=yyc=yyd=yye=0
        for i in english:
            if 0 <= i <= 59:
                yye += 1
            elif 60 <= i <= 69:
                yyd += 1
            elif 70 <= i <= 79:
                yyc += 1
            elif 80 <= i <= 89:
                yyb += 1
            elif 90 <= i <= 100:
                yya += 1
        print('英语成绩分布:\n0-59:', yye, '人\n60-69:', yyd, '人\n70-79:', yyc, '人\n80-89:', yyb, '人\n90-100:', yya, '人')
        print("请继续输入:")
        q = int(input())
    elif q==0:
        print('程序已结束!')
        break
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
简易成绩分析系统使用说明 四川省泸州市纳溪区大渡学教务室制作使用 ※※※※一、特色 1、 EXCEL平台 本作品采用EXCEL 公式+VBA制作,既可根据你平时使用EXCEL的习惯和方式操作充分发挥EXCEL的功能,又能利用本作品提高效率。 2、 结构紧凑,界面简洁 本作品工作表个数极少,分别是总表、表册、设置。你可以先在总表输入、在记录单逐条录入、导入或复制粘贴原始成绩,经设置表简单设置后即可在“表册”根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 ※※※※二、与众不同 本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:总表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、“七(2)”等)、各科目名称、顺序、录入范围固定等;如果采用公式制作的话,有些单元格还不能移除、拖动、删除等,否则公式会发生错误,当然一不小心公式被删除或破坏那就更糟了。但本作品为你解决了这几个问题,与众不同: 1、限制条件少,通用性更强 只需把原始成绩输入、导入、复制粘贴或在记录单逐条录入总表即可,对总表要求极为宽松:不必整理试卷、非顺序录入;各列(包括科目)名称、位置任意;不受班级、每班人数、科目等数量限制,行列不受限制。简言之,只要您原始成绩表是什么样,把它搞过来就行,只是需注意对本总表的惟一要求是:第一行为表格项目且有班级一列和不合并单元格即可,其它不受任何限制。 2、具有容错能力 也许您对函数和公式比较熟悉,知道当公式引用的单元格被移动或删除时公式往往会出错。本作品避免了这个问题。本作品“成绩册(公式)”、统计表和“成绩单(公式)”采用公式生成,数据均来源于总表。可是对总表您尽可放心大胆编辑、修改,对数据进行各种处理,比如可以进行排序、筛选、删除等操作,哪怕移动和删除任何一行、一列,删除任何一个单元格也无妨。 3、具有恢复能力 本作品对“成绩册(公式)”和“成绩单(公式)”,虽然采用函数和公式实现,但您仍可自由编辑排版以便输出,如编辑、修改、删除公式,删除行列,哪怕删除或者清空整张表也可,如果你进行了以上或者其他误操作,您只需重新点击相应按钮即可自动恢复。 ※※※※三、主要功能 1、查询:查询条件多样,可按姓名查询、按班级查询(分班);按某学科(含总分)某分数段查询;按班内名次(年级名次)段查询(如某班前XX名、年级前XX-XX名)等,各种查询条件还可自由组合。对查询结果,可按某关键字排序后显示,如按班级排名升序可组合出某班全部或班前XX名、年级前XX名排名等,按年级排名升序可组合出年级前XX名排名或全部排名等。 2、统计:根据班级和科目(含总体)按统计范围自动实时生成各项指标(参考人数、平均分、及格人数、及格率、优生人数、优生率、差生人数、差生率、优质分等)、各分数段人数统计、年级前XX名在各班分布等。 3、成绩册和成绩条:自动按班生成成绩册和成绩条。 ※※※※四、操作指南 在总表输入、导入、复制粘贴或在记录单逐条录入原始成绩,经设置表简单设置后即可在“表册”根据你的需要自动生成各种表册,包括分班成绩册等各种表册、成绩单、各种统计表等。 其,分班成绩册和成绩单、统计分别以VBA和公式两种方式制作,这两种方式各有特点,供你选择:公式方式的优点是当条件变化(如所选班级、科目变化)时显示结果随之实时变化,除非公式被破坏或者刚从其它表册转入本功能你才需要重新点击按钮;VBA方式每次改变条件后必须点击相应按钮才能刷新结果,但对结果你可随意进行各种操作。如果你觉得窗体有可能遮住结果,窗体可移动,可关闭,也可随时按CTRL+Q(W)打开,以便在EXCEL按你熟悉的方式操作。另总表还提供了按班级排序、填入总分、平均分、计算班级排名、年级排名、分数超限检查等多种自动化功能。 ※※※※四、温馨提示 1、本成绩分析设计是本人想当然而成,加之时间仓促,错误和疏漏在所难免,如果你在使用不符合您的需要,请及时告知,以便进一步改进! 2、本成绩分析工作表之间,相互引用,相互关联,不得随意更改删除,也不得对工作表重命名,否则将影响本成绩分析的正常使用。 3、操作前请做好数据备份,凡因使用本成绩分析而造成的数据损失,本人概不负责。 4、如果不能运行宏,请把“工具--宏--安全性”,安全级别设为“”。 制作:石明富 2009-6-29 简易成绩分析系统使用说明 总表操作提示 进入总表,你会发现一个窗口,如图所示,你
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不关我事~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值