实验目的:初次属性python处理数据(将数据写入excel文件中)
任务:教师奖励性工作量
已知初一某班招收了60个学生学生,从初一到初三的教师不变。其中语文、数学、英语、地理、历史、政治、体育、音乐、画画,在初一开设,物理在初二开设、化学在初三开设。
为了更好的激励老师,给重要考试给与奖励(初一、初二的期中、期末考试,初三月考及中考),其中对于语文、数学、外语的老师:如果一个学生成绩90分以上,教师奖励1个工作量,一个学生成绩超过80分,奖励教师0.3个工作量,如果一个学生成绩低于60分,扣除0.1个工作量。其他科目的老师:如果一个学生成绩90分以上,教师奖励0.3个工作量,一个学生成绩超过80分,奖励教师0.1个工作量,如果一个学生成绩低于60分,扣除0.1个工作量。特别是中考成绩需要特别奖励,考起师大附中和南昌二中的,一个学生奖励1000个工作量,按各科成绩所占比率分配给任课老师,其他不给与惩罚。
- 写一个学生生成函数:学号(唯一,三年不变,比如2021年入学,学号为2021001-202160)、姓名;
- 写一个教师生成函数:工号(不变,唯一)、姓名;
- 写一个函数,模拟某门课程考试,考试成绩保存到excel文件中,用来给任课老师平时分析和总结。
第4题作答,你的学号3,余数为1的做第4.1,余数为2的做第4.2题,余数为0的做第4.3:
- 写一个初一、初二期中考试、期末考试函数,生成文件保存到excel文件中,但考虑到管理问题,需要进行不同的处理,同学们根据自己的情况作答。
如果学校管理严格,有1%以下的学生向下波动,有5%的学生向上波动;
- 写一个初三考试函数,生成月考、中考,生成文件保存到excel文件中;
- 统计各个老师的工作量,生成excel文件;
- 将前5名用柱状图表示出来.
参考数据:
某年某个班同学在6年级的成绩分布:
- 英语90分以上的同学有20个,数学为:18个,语文:12个,体育:50个;音乐:58个,画画:52个,政治:30个,历史:45个。
- 这是管理相对严格的情况下,近4年师大附中和南昌二中人数:
15(6,9)
16(7,9)
13(5,8)
14(6,8)
- 师大附中录取9年基本分数在90%,比如830分的试卷,747分,南昌二中为:86%以上。
- 语文、英语、数学各120分,物理:70、化学:70:政治:100;生物:50;体育:70;画画:30;音乐:30;地理:50,历史70分 总分为:900
import random as rm import xlwt import xlrd import copy import matplotlib import matplotlib.pyplot as plt import numpy as np def CreateName(): """ 随机生成姓名 :return: """ xing = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任柳" ming = "仪正礼奉承渊原建阳谧彦靖廙敬礼禁文则士孙瑞君荣山涛巨源瓘伯玉磾翁叔良季常忠德信超孟起谡幼常成允子师双子全平子均匡公节戎睿冲观伟台甫国舒撒法胡桃将爱情国环境" xingbiao = rm.randint(0, len(xing) - 1) mingbiao = rm.randint(0, len(ming) - 1) name = str(xing[xingbiao]) + str(ming[mingbiao]) a = rm.randint(1, 3) if a >= 1: mingbiao2 = rm.randint(0, len(ming) - 1) name += str(ming[mingbiao2]) return name xing=list(xing) ming=ming.split("、") lengthxing=len(xing) lenming=len(ming) temp=rm.randint(0,lengthxing) Nx=xing[temp] Nn="" for i in range(2): temp=rm.randint(0,lenming-1) Nn=Nn+ming[temp] Name=Nx+Nn return Name def create_student(n): """ 创造学生列表 有俩个属性,名字,学号 n代表创建的个数 :param n: :return: """ students=[] # sex = ["男", "女"] for i in range(n): student=[] Name = CreateName() student.append(Name) num = 2021000 Num = rm.randint(1,999) num+=Num student.append(num) b = rm.randint(0,100) students.append(student) return students def create_teacher(n): """ 创造老师表 :param n: :return: """ teachers=[] for i in range(n): teacher = [] Number = rm.randint(10000, 20000) teacher.append(Number) Name = CreateName() teacher.append(Name) if i==0: teacher.append("语文") teacher.append(0) elif i==1: teacher.append("数学") teacher.append(0) elif i==2: teacher.append("英语") teacher.append(0) elif i==3: teacher.append("物理") teacher.append(0) elif i==4: teacher.append("化学") teacher.append(0) elif i==5: teacher.append("地理") teacher.append(0) elif i==6: teacher.append("生物") teacher.append(0) elif i==7: teacher.append("历史") teacher.append(0) elif i==8: teacher.append("政治") teacher.append(0) elif i==9: teacher.append("体育") teacher.append(0) elif i==10: teacher.append("音乐") teacher.append(0) elif i==11: teacher.append("绘画") teacher.append(0) teachers.append(teacher) return teachers def test_student3(grade2): #最开始随机生成一组初三学生成绩,之后的考试成绩都是根据最开始生成数据进行波动的 """ 根据传入初二学生成绩的基础上 对已经有的科目进行上下随机波动 对新加入的化学科目进行随机取值 :param grade2: :return: """ students_grade = [] for i in range(len(grade2)): student_grade = [] for j in range(len(grade2[i]) + 1): if j <= 2: grade = grade2[i][j] + rm.randint(-3, 3) if (grade > 120): grade = 120 student_grade.append(grade) elif j == 3: grade = grade2[i][j] + rm.randint(-3, 3) if (grade > 70): grade = 70 student_grade.append(grade) elif j == 4: grade = rm.randint(50, 70) student_grade.append(grade) elif j==5 or j==6: grade = grade2[i][j - 1] + rm.randint(-3, 3) if (grade > 50): grade = 50 student_grade.append(grade) elif j==7 or j==9: grade = grade2[i][j - 1] + rm.randint(-3, 3) if (grade > 70): grade = 70 student_grade.append(grade) elif j==8: grade = grade2[i][j - 1] + rm.randint(-3, 3) if (grade > 100): grade = 100 student_grade.append(grade) elif j == 10 or j == 11: grade = grade2[i][j - 1] + rm.randint(-3, 3) if (grade > 30): grade = 30 student_grade.append(grade) students_grade.append(student_grade) return students_grade def test_student2(grade1): """ 根据传入初一学生成绩的基础上 对已经有的科目进行上下随机波动 对新加入的物理科目进行随机取值 :param grade1: :return: """ students_grade=[] for i in range(len(grade1)): student_grade = [] for j in range(len(grade1[i])+1): if j <=2: grade=grade1[i][j]+rm.randint(-3,3) if(grade>120): grade=120 student_grade.append(grade) elif j==3: grade=rm.randint(50,70) student_grade.append(grade) elif j==4 or j==5: grade=grade1[i][j-1]+rm.randint(-3,3) if (grade > 50): grade = 50 student_grade.append(grade) elif j==6 or j==8: grade = grade1[i][j - 1] + rm.randint(-3, 3) if (grade > 70): grade = 70 student_grade.append(grade) elif j==7: grade = grade1[i][j - 1] + rm.randint(-3, 3) if (grade > 100): grade = 100 student_grade.append(grade) elif j==9 or j==10: grade = grade1[i][j - 1] + rm.randint(-3, 3) if (grade > 30): grade = 30 student_grade.append(grade) # if j==0 or j==1 or j== 2: # grade = rm.randint(78, 108) # student_grade.append(grade) # if j==3 or j==6 or j==8: # grade=rm.randint(50,70) # student_grade.append(grade) # if j== 4 or j==5 : # grade=rm.randint(35,50) # student_grade.append(grade) # if j==7: # grade=rm.randint(68,95) # student_grade.append(grade) # if j==9 or j== 10: # grade=rm.randint(23,30) # student_grade.append(grade) students_grade.append(student_grade) return students_grade def test_student1(n): """随机生成n个初一学生的考试成绩""" students_grade = [] for i in range(n): student_grade = [] for j in range(10): # grade=rm.randint(70,92) # student_grade.append(grade) if j == 0 or j == 1 or j == 2: grade = rm.randint(78, 108) student_grade.append(grade) if j == 5 or j == 7: grade = rm.randint(50, 70) student_grade.append(grade) if j == 3 or j == 4: grade = rm.randint(35, 50) student_grade.append(grade) if j == 6: grade = rm.randint(68, 95) student_grade.append(grade) if j == 8 or j == 9: grade = rm.randint(23, 30) student_grade.append(grade) students_grade.append(student_grade) return students_grade # for j in range(12): # if j <= 2: # student_grade[i][j]=int(student_grade[i][j]*1.2) # if j==3 |j==4 | j==7| j==9: # # student_grade[i][j] = int(student_grade[i][j] * 0.7) # if j== 5 | j==6 : # # student_grade[i][j] = int(student_grade[i][j] * 0.2) # if j==8: # # student_grade[i][j] = int(student_grade[i][j] * 1.0) # if j==10 | j==11: # # student_grade[i][j] = int(student_grade[i][j] * 0.3) # # for k in range(len(students_grade)): # print(student_grade[k]) def test_studentnext(students_grade): """ #学校管理严格,有1%以下的学生向下波动,有5%的学生向上波动 :param students_grade: :return: """ students_gradenext=[] for i in range(len(students_grade)): student_gradenext=[] for j in range(len(students_grade[i])): n=rm.random()*100 if n<=5: #百分之5的人成绩上升 grade=students_grade[i][j] num=rm.randint(10,15) grade=grade+num if grade>100: grade=100 student_gradenext.append(grade) elif n>=99: #百分之1的人成绩下降 grade=students_grade[i][j] num=rm.randint(10,15) grade=grade-num student_gradenext.append(grade) else: #其余人在自身成绩基础上进行小范围上下波动 grade=students_grade[i][j] grade += rm.randint(-3,3) student_gradenext.append(grade) students_gradenext.append(student_gradenext) return students_gradenext def write_excel3(students,studentsgrade,name,theme,co,to): """ 通用的打印表单格式,便于代码复用 student是学生信息队列 studentsgrade是学生成绩队列 name是表名 theme是各个表的第一行属性的名字 co,to负责调整数据从第几行第几列导入 :param students: :param studentsgrade: :param name: :param theme: :param co: :param to: :return: """ wb = xlwt.Workbook(encoding="utf-8") s = wb.add_sheet(name) style = xlwt.XFStyle() font = xlwt.Font() font.bold = True font.height = 300 font.colour_index = 4 alignment = xlwt.Alignment() alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER style.font = font style.alignment = alignment # s.write_merge(0,2,0,2,"江西财经大学附属中学老师评测表",style) s.write_merge(0,2,0,to,name,style) # for u in range(len(theme)): # s.write(3,u,theme[u]) for k in range(len(theme)): s.write(3, k, theme[k]) for i in range(len(students)): for j in range(len(students[i])+len(studentsgrade[i])): if(j<=1): s.write(i+co, j, students[i][j]) else: s.write(i+co,j,studentsgrade[i][j-2]) wb.save(name+".xls") def write_excel4(students,studentsgrade,name,theme,co,to): """ 通用的打印表单格式,便于代码复用 student是学生信息队列 studentsgrade是学生成绩队列 name是表名 theme是各个表的第一行属性的名字 co,to负责调整数据从第几行第几列导入 :param students: :param studentsgrade: :param name: :param theme: :param co: :param to: :return: """ wb = xlwt.Workbook(encoding="utf-8") s = wb.add_sheet(name) style = xlwt.XFStyle() font = xlwt.Font() font.bold = True font.height = 300 font.colour_index = 4 alignment = xlwt.Alignment() alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER style.font = font style.alignment = alignment # s.write_merge(0,2,0,2,"江西财经大学附属中学老师评测表",style) s.write_merge(0,2,0,to,name,style) # for u in range(len(theme)): # s.write(3,u,theme[u]) for k in range(len(theme)): s.write(3, k, theme[k]) s.write(3,14,"总分") for i in range(len(students)): for j in range(len(students[i])+len(studentsgrade[i])): if(j<=1): s.write(i+co, j, students[i][j]) else: s.write(i+co,j,studentsgrade[i][j-2]) for i in range(len(students)): num=0 for j in range(len(studentsgrade[i])): num += studentsgrade[i][j] s.write(i+co,14,num) wb.save(name+".xls") # def test_chusan(students,student_grade2): # students_grade3 = test_studentnext(students_grade2) # student_grade3月考 # students_grade4=test_studentnext(students_grade3) #student_grade4为中考 # write_excel3(students, students_grade3, "月考成绩", theme, 4, 13) # write_excel3(students, students_grade4, "中考成绩", theme, 4, 13) def writeTermExam1(students,testgrade11,testgrade12,testgrade13,testgrade14): ''' 模拟初一期中、期末考试 并将所有数据整合在一张表里 :return: ''' wb = xlwt.Workbook(encoding="utf-8") ws = wb.add_sheet("ScoreTable") style = xlwt.XFStyle() font = xlwt.Font() font.bold = True font.height = 300 font.colour_index = 4 alignment = xlwt.Alignment() alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER style.font = font style.alignment = alignment ws.write_merge(0, 2, 0, 12, "初一学生期中期末成绩表", style) ws.write_merge(3, 4, 0, 0, "姓名", style) ws.write_merge(3, 3, 1, 4, "语文", style) ws.write_merge(3, 3, 5, 8, "数学", style) ws.write_merge(3, 3, 9, 12, "英语", style) ws.write_merge(3, 3, 13, 16, "地理", style) ws.write_merge(3, 3, 17, 20, "生物", style) ws.write_merge(3, 3, 21, 24, "历史", style) ws.write_merge(3, 3, 25, 28, "政治", style) ws.write_merge(3, 3, 29, 32, "体育", style) ws.write_merge(3, 3, 33, 36, "音乐", style) ws.write_merge(3, 3, 37, 40, "绘画", style) for i in range(1, 41, 4): ws.write(4, i, "初一上期中考试") ws.write(4, i + 1, "初一上期末考试") ws.write(4, i + 2, "初一下期末考试") ws.write(4, i + 3, "初一下期末考试") ws.write(65, 0, '平均分') ws.write(66, 0, '最高分') ws.write(67, 0, '最低分') for i in range(len(students)): ws.write(5 + i, 0, students[i][0]) for k in range(5, len(students) + 5): num=0 for j in range(1,40,4): ws.write(k,j,studentgrade11[k-5][num]) num+=1 for k in range(5, len(students) + 5): num = 0 for j in range(2, 40, 4): ws.write(k, j, studentgrade12[k - 5][num]) num += 1 for k in range(5, len(students) + 5): num = 0 for j in range(3, 40, 4): ws.write(k, j, studentgrade13[k - 5][num]) num += 1 for k in range(5, len(students) + 5): num = 0 for j in range(4, 41, 4): ws.write(k, j, studentgrade14[k - 5][num]) num += 1 # for i in range(len(studentgrade11)): #10 # sum=0 # for j in range(len(studentgrade11[i])): #60 # sum+=studentgrade11[i][j] # sum=sum/60 # print(sum) file = '初一成绩表.xls' wb.save(file) def writeTermExam2(students,testgrade21,testgrade22,testgrade23,testgrade24): """ 将该班初二年级的上学期期中,期末,下学期期中期末考试整合在一张表里 :param students: :param testgrade21: :param testgrade22: :param testgrade23: :param testgrade24: :return: """ wb = xlwt.Workbook(encoding="utf-8") ws = wb.add_sheet("ScoreTable") style = xlwt.XFStyle() font = xlwt.Font() font.bold = True font.height = 300 font.colour_index = 4 alignment = xlwt.Alignment() alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER style.font = font style.alignment = alignment ws.write_merge(0, 2, 0, 12, "初二学生期中期末成绩表", style) ws.write_merge(3, 4, 0, 0, "姓名", style) ws.write_merge(3, 3, 1, 4, "语文", style) ws.write_merge(3, 3, 5, 8, "数学", style) ws.write_merge(3, 3, 9, 12, "英语", style) ws.write_merge(3, 3, 13, 16, "物理", style) ws.write_merge(3, 3, 17, 20, "地理", style) ws.write_merge(3, 3, 21, 24, "生物", style) ws.write_merge(3, 3, 25, 28, "历史", style) ws.write_merge(3, 3, 29, 32, "政治", style) ws.write_merge(3, 3, 33, 36, "体育", style) ws.write_merge(3, 3, 37, 40, "音乐", style) ws.write_merge(3, 3, 41, 44, "绘画", style) for i in range(1, 45, 4): ws.write(4, i, "初二上期中考试") ws.write(4, i + 1, "初二上期末考试") ws.write(4, i + 2, "初二下期中考试") ws.write(4, i + 3, "初二下期末考试") ws.write(65, 0, '平均分') ws.write(66, 0, '最高分') ws.write(67, 0, '最低分') for i in range(len(students)): ws.write(5 + i, 0, students[i][0]) for k in range(5, len(students) + 5): num = 0 for j in range(1, 44, 4): ws.write(k, j, studentgrade21[k - 5][num]) num += 1 for k in range(5, len(students) + 5): num = 0 for j in range(2, 44, 4): ws.write(k, j, studentgrade22[k - 5][num]) num += 1 for k in range(5, len(students) + 5): num = 0 for j in range(3, 44, 4): ws.write(k, j, studentgrade23[k - 5][num]) num += 1 for k in range(5, len(students) + 5): num = 0 for j in range(4, 45, 4): ws.write(k, j, studentgrade24[k - 5][num]) num += 1 file = '初二成绩表.xls' wb.save(file) # def writeTermExam3(students,testgrade31,testgrade32,testgrade33,testgrade34): # wb = xlwt.Workbook(encoding="utf-8") # ws = wb.add_sheet("ScoreTable") # style = xlwt.XFStyle() # font = xlwt.Font() # font.bold = True # font.height = 300 # font.colour_index = 4 # alignment = xlwt.Alignment() # alignment.horz = xlwt.Alignment.HORZ_CENTER # alignment.vert = xlwt.Alignment.VERT_CENTER # style.font = font # style.alignment = alignment # ws.write_merge(0, 2, 0, 12, "初三学生期中期末成绩表", style) # ws.write_merge(3, 4, 0, 0, "姓名", style) # ws.write_merge(3, 3, 1, 4, "语文", style) # ws.write_merge(3, 3, 5, 8, "数学", style) # ws.write_merge(3, 3, 9, 12, "英语", style) # ws.write_merge(3, 3, 13, 16, "物理", style) # ws.write_merge(3, 3, 17, 20, "化学", style) # ws.write_merge(3, 3, 21, 24, "地理", style) # ws.write_merge(3, 3, 25, 28, "生物", style) # ws.write_merge(3, 3, 29, 32, "历史", style) # ws.write_merge(3, 3, 33, 36, "政治", style) # ws.write_merge(3, 3, 37, 40, "体育", style) # ws.write_merge(3, 3, 41, 44, "音乐", style) # ws.write_merge(3, 3, 45, 49, "绘画", style) # for i in range(1, 49, 4): # ws.write(4, i, "初二上期中考试") # ws.write(4, i + 1, "初二上期末考试") # ws.write(4, i + 2, "初二下期中考试") # ws.write(4, i + 3, "初二下期末考试") # ws.write(65, 0, '平均分') # ws.write(66, 0, '最高分') # ws.write(67, 0, '最低分') # for i in range(len(students)): # ws.write(5 + i, 0, students[i][0]) # # for k in range(5, len(students) + 5): # num = 0 # for j in range(1, 49, 4): # ws.write(k, j, studentgrade31[k - 5][num]) # num += 1 # for k in range(5, len(students) + 5): # num = 0 # for j in range(2, 49, 4): # ws.write(k, j, studentgrade32[k - 5][num]) # num += 1 # for k in range(5, len(students) + 5): # num = 0 # for j in range(3, 49, 4): # ws.write(k, j, studentgrade33[k - 5][num]) # num += 1 # for k in range(5, len(students) + 5): # num = 0 # for j in range(4, 49, 4): # ws.write(k, j, studentgrade34[k - 5][num]) # num += 1 # # file = '初三成绩表.xls' # # wb.save(file) def write_excel1(teachers,work): """ 打印出老师评测表,具有工作号,老师姓名,老师工作量 :param teachers: :param work: :return: """ wb = xlwt.Workbook(encoding="utf-8") s = wb.add_sheet("江西财经大学附属中学老师评测表") style = xlwt.XFStyle() font = xlwt.Font() font.bold=True font.height=300 font.colour_index=4 alignment=xlwt.Alignment() alignment.horz=xlwt.Alignment.HORZ_CENTER alignment.vert=xlwt.Alignment.VERT_CENTER style.font=font style.alignment=alignment s.write_merge(0, 2, 0, 2 , "教师测评表", style) s.write(3,0,"教师编号") s.write(3,1,"教师姓名") s.write(3,2,"任课科目") s.write(3,3,"工作量") for i in range(len(teachers)): for j in range(len(teachers[i])): s.write(i+4,j,teachers[i][j]) # s.write(4+1,3,work[i]) wb.save("教师测评表.xls") # def reade_excel1(excel,work,name): # file = excel # grade=[120,120,120,70,70,50,50,70,100,70,30,30] # wb = xlrd.open_workbook(filename=file) # 打开文件 # # print(wb.sheet_names()) # 获取所有表格名字 # sheet1 = wb.sheet_by_name(name) # 通过索引获取表格 # for i in range(2,14): # cols = sheet1.col_values(i) # 获取列内容 # for j in range(4,64): # price=0 # print(cols[j]) # if i <=5: # if cols[j]>grade[i-2]*0.9: # price = 1 # elif cols[j] > grade[i-2]*0.8: # price = 0.3 # elif cols[j]<grade[i-2]*0.6: # price = -0.1 # work[i-2] += price # else: # if cols[j] > grade[i - 2] * 0.9: # price = 0.3 # elif cols[j] > grade[i - 2] * 0.8: # price = 0.1 # work[i - 2] += price # return work def count_work(work,grade): """ 其中对于语文、数学、外语的老师:如果一个学生成绩90分以上,教师奖励1个工作量,一个学生成绩超过80分,奖励教师0.3个工作量,如果 一个学生成绩低于60分,扣除0.1个工作量。其他科目的老师:如果一个学生成绩90分以上,教师奖励0.3个工作量,一个学生成绩超过80分, 奖励教师0.1个工作量,如果一个学生成绩低于60分,扣除0.1个工作量。 :param work: :param grade: :return: """ scores = [120, 120, 120, 70, 70, 50, 50, 70, 100, 70, 30, 30] for j in range(len(grade)): price = 0 for i in range(len(grade[j])): if i<=2: if grade[j][i] >= scores[i]*0.9: price=1 elif grade[j][i] >= scores[i]*0.8: price=0.3 elif grade[j][i] <= scores[i]*0.6: price= -0.1 else: if grade[j][i] >= scores[i]*0.9: price=0.3 elif grade[j][i] >= scores[i]*0.8: price=0.1 work[i] += price return work def count_finally(work,grade): """ 中考成绩需要特别奖励,考起师大附中和南昌二中的,一个学生奖励1000个工作量,按各科成绩所占比率分配给任课老师,其他不给与惩罚。 :param work: :param grade: :return: """ scores = [120, 120, 120, 70, 70, 50, 50, 70, 100, 70, 30, 30] for i in range(len(grade)): num =0 flag=0 for j in range(len(grade[i])): num += grade[i][j] if num>774: flag=1 if(flag>0): for j in range(len(grade[i])): price = 1000*grade[i][j]/num work[j]+=price return work def sort(work): #挑选出work队列中最大的五个数并返回 t = copy.deepcopy(work) # 求m个最大的数值及其索引 max_number = [] max_index = [] for _ in range(5): number = max(t) index = t.index(number) t[index] = 0 max_number.append(number) max_index.append(index) t = [] return max_number def getint(work): #将work工作量取整 for i in range(len(work)): work[i]=int(work[i]) return work def bar(work):#画出柱状图的函数 labels = ['first', 'secend', 'third', 'fourth', 'fifth'] x = np.arange(len(labels)) # the label locations width = 0.35 # the width of the bars fig, ax = plt.subplots() rects1 = ax.bar(x - width / 2, work2, width, label='Men') ax.set_ylabel('work num') ax.set_title('work ranking') ax.set_xticks(x) ax.set_xticklabels(labels) ax.legend() fig.tight_layout() plt.show() if __name__=="__main__": students=create_student(60) # for i in range(len(students)): # print(students[i]) # for i in range(len(teachers)): # print(teachers[i]) studentsgrade1 = test_student1(60) # for i in range(len(students_grade)): # print(students_grade[i]) studentsgrade2=test_student2(studentsgrade1) studentsgrade3 = test_student3(studentsgrade2) theme3 = ["姓名", "学号", "语文", "数学", "英语", "物理", "化学", "地理", "生物 ","历史", "政治", "体育", "音乐", "绘画"] theme2 = ["姓名", "学号", "语文", "数学", "英语", "物理", "地理", "生物 ","历史", "政治", "体育", "音乐", "绘画"] theme1 = ["姓名", "学号", "语文", "数学", "英语", "地理", "生物 ","历史", "政治", "体育", "音乐", "绘画"] write_excel3(students, studentsgrade3, "初三", theme3, 4, 13) write_excel3(students, studentsgrade2, "初二", theme2, 4, 13) write_excel3(students, studentsgrade1, "初一", theme1, 4 ,13) # testgrade=[] # for i in range(4): # studentgrade= test_studentnext(students_grade) # students_grade=studentgrade # testgrade.append(studentgrade) # for i in range(len(testgrade)): # for j in range(len(testgrade[i])): # for k in range(len(testgrade[i][j])): # print(testgrade[i][j][k]) studentgrade11 = test_studentnext(studentsgrade1) # print(len(studentgrade11)) # print(len(studentgrade11[0])) studentgrade12 = test_studentnext(studentgrade11) studentgrade13 = test_studentnext(studentgrade12) studentgrade14 = test_studentnext(studentgrade13) writeTermExam1(students,studentgrade11,studentgrade12,studentgrade13,studentgrade14) """ test_student2是根据初一下学期期末考试的成绩基础上进行上下波动,并对新科目物理进行随机生成成绩 test_studentnext(grade)是根据传进grade成绩基础上,#学校管理严格,有1%以下的学生向下波动,有5%的学生向上波动 """ studentgrade21 = test_student2(studentgrade14) studentgrade22 = test_studentnext(studentgrade21) studentgrade23 = test_studentnext(studentgrade22) studentgrade24 = test_studentnext(studentgrade23) writeTermExam2(students,studentgrade21,studentgrade22,studentgrade23,studentgrade24) # studentgrade31 = test_student3(studentgrade24) # studentgrade32 = test_studentnext(studentgrade31) # studentgrade33 = test_studentnext(studentgrade32) # studentgrade34 = test_studentnext(studentgrade33) # writeTermExam3(students, studentgrade31, studentgrade32, studentgrade33, studentgrade34) studentgrade31 = test_student3(studentgrade24) write_excel3(students,studentgrade31,"月考",theme3, 4,13) studentgrade32 =test_studentnext(studentgrade31) write_excel4(students,studentgrade32,"中考",theme3, 4,13) work=[0,0,0,0,0,0,0,0,0,0,0,0] # print(len(studentgrade31)) # print(len(studentgrade31[0])) # work=reade_excel1("月考.xls",work,"月考") work=count_work(work,studentgrade31) work=count_finally(work,studentgrade32) #特别是中考成绩需要特别奖励,考起师大附中和南昌二中的,一个学生奖励1000个工作量,按各科成绩所占比率分配给任课老师,其他不给与惩罚。 getint(work) #将工作量转化为整数 """ 将工作量赋给创建老师列表中的工作量,并创建老师的excel文件 """ teachers = create_teacher(12) for i in range(len(teachers)): for j in range(len(teachers[i])): if j==3: teachers[i][j]=work[i] # print(teachers) write_excel1(teachers, work) work2 = sort(work) #挑出前五名的工作量 bar(work2) #将其打印成柱状图