import pdb
classStudent:def__init__(self,args):
self.sid,self.cid,self.name,self.chinese,self.math,self.english,self.programming = args
self.tot_scores = int(self.chinese)+int(self.math)+int(self.english)+int(self.programming)
defSheet():
record = []
SID = [0]*101defprint_menu():
print('Weclcome to student Performence\n')
print('1 - Add')
print('2 - Remove')
print('3 - Query')
print('4 - Show ranking')
print('5 - Show statistic')
print('0 - Exit')
defprint_std(std):defrank():
ranks = 1for each in record:
if(std.tot_scores < each.tot_scores ):ranks += 1return ranks
average_scores = std.tot_scores/4
print('*'*15)
print(rank(),std.sid,std.cid,std.name,std.chinese,std.math,std.english,std.programming,
std.tot_scores,'%.2f'%average_scores)
defadd():while(True):
print('Please enter the SID,CID,name,and four scores. Enter o to finsih')
curr_input = input()
if(curr_input == '0'):break
val = curr_input.split(' ')
print('*'*10,val)
if(SID[int(val[0])] != 0):print('Duplicate SID');
else:record.append(Student(val));SID[int(val[0])] = 1;#添加
print(dir(Student(val)))
defDQ(isq_d):while(True):
print('Please enter the SID,or name. Enter o to finsih')
curr_input = input()
if(curr_input == '0'):break
val = curr_input.split(' ')[0]
count = 0for each_std in record:
if(each_std.sid == val or each_std.name == val):
if(isq_d == 'd'):count += 1;SID[int(each_std.sid)] = 0;each_std = 0;
elif(isq_d == 'q') :print_std(each_std)
if(isq_d == 'd'):
print('%d student(s) removed'%count)
defstat():if(record == []):return
print('please enter the class ID,0,for the whole statistics')
try:
ID = int(input())
except:
return
conditions = ['chinese','math','english','programming']
information = {'chinese':[0,0],'math':[0,0],'english':[0,0],'programming':[0,0],'overall':[0,0,0,0,0]}
count = 0for std in record:
passed_course = 0#用来统计通过的课程数目if(ID == 0or ID == int(std.cid)):
for each in conditions:
tmp_grade = int(getattr(std,each,None))#获取相应的属性
is_passed = 1if(tmp_grade>=60) else0
passed_course += is_passed
information[each][0] += tmp_grade
information[each][1] += is_passed
information['overall'][passed_course] += 1
count += 1for each in conditions:
print(each)
print('Average Score: %.2f'% (information[each][0]/count))
print('Number of passed students: %d'%information[each][1])
print('Number of failed students: %d'%(count-information[each][1]))
#输出相关信息
print('Overall\nNumber of students who passed all subjects: %d'%(information['overall'][4]))
for i in range(3,0,-1):
print('Number of students who passed %d or more subjects: %d'%(i,information['overall'][i]))
print('Number of students who failed all subjects: %d'%(information['overall'][0]))
while(True):
print_menu()
choice = input()
if(choice=='0'):breakelif(choice=='1'):add()
elif(choice=='2'):DQ('d')
elif(choice=='3'):DQ('q')
elif(choice=='4'):print('Don\'t do that')
elif(choice=='5'):stat()
Sheet()