Update code.py

main
p49flchze 9 months ago
parent 74ff3fab38
commit c61a043b6c

@ -1,144 +1,140 @@
import PySimpleGUI as sg import PySimpleGUI as sg
import openpyxl import openpyxl
import xlrd import xlrd
import random import random
def TakeRoll(): def TakeRoll():
book = xlrd.open_workbook('sample.xlsx') book = xlrd.open_workbook('sample.xlsx')
sheet = book.sheet_by_index(0) sheet = book.sheet_by_index(0)
book = openpyxl.load_workbook(filename='sample.xlsx') book = openpyxl.load_workbook(filename='sample.xlsx')
ins_sheet = book.active ins_sheet = book.active
if sheet.ncols == 2: if sheet.ncols == 2:
ins_sheet['C1'] = 'Scredit' ins_sheet['C1'] = 'Scredit'
idx = random.randint(2, sheet.nrows) idx = random.randint(2, sheet.nrows)
stu = str(ins_sheet.cell(row=idx, column=1).value) + ins_sheet.cell(row=idx, column=2).value stu = str(ins_sheet.cell(row=idx, column=1).value) + ins_sheet.cell(row=idx, column=2).value
i = 2 i = 2
while i <= sheet.nrows: while i <= sheet.nrows:
ins_sheet.cell(row=i, column=3).value = 0 ins_sheet.cell(row=i, column=3).value = 0
i += 1 i += 1
book.save(filename='sample.xlsx') book.save(filename='sample.xlsx')
else: return stu, idx
max = 0 else: #学生表中含有已创建的SCredit列
credit = ins_sheet['C'] max = 0
i = 1 credit = ins_sheet['C'] #将SCredit列存入redit数组
while i <= sheet.nrows-1: i = 1
credit[i].value *= 2 while i <= sheet.nrows-1:
i += 1 credit[i].value *= 2 #将所有积分值整数化所有非整数积分值小数部分均为0.5
i = 1 i += 1
while i <= sheet.nrows-1: i = 1
if credit[i].value > max: while i <= sheet.nrows-1:
max = credit[i].value if credit[i].value > max:
i += 1 max = credit[i].value
''' i += 1
while i<=sheet.nrows: max += 1 #求出最大积分值并加1
if ins_sheet.cell(row=i, column=3).value > max: slct = []
max = ins_sheet.cell(row=i, column=3).value i = 1
i += 1 while i <= sheet.nrows-1:
''' credit[i].value = max - credit[i].value #倒转积分值将最大的积分值置为1其余积分依次增大
max += 1 r = 1
slct = [] while r <= int(credit[i].value):
i = 1 slct.append(i)
while i <= sheet.nrows-1: r += 1 #第i个学生倒转后的积分值即为slct数组中对应第i个学生的元素个数和该生被选中的概率呈负相关
credit[i].value = max - credit[i].value i += 1
r = 1 idx = random.randint(0, len(slct)-1)
while r <= int(credit[i].value): stu = str(ins_sheet.cell(row=slct[idx]+1, column=1).value) + ins_sheet.cell(row=slct[idx]+1, column=2).value
slct.append(i) return stu, slct[idx]+1
r += 1
i += 1 def CreditUpdate(stu, isInc, point):
idx = random.randint(0, len(slct)-1) book = openpyxl.load_workbook(filename='sample.xlsx')
stu = str(ins_sheet.cell(row=slct[idx]+1, column=1).value) + ins_sheet.cell(row=slct[idx]+1, column=2).value sheet = book.active
return stu, slct[idx]+1 if isInc == True:
sheet.cell(row=stu, column=3).value += point
def CreditUpdate(stu, isInc, point): else:
book = openpyxl.load_workbook(filename='sample.xlsx') sheet.cell(row=stu, column=3).value -= point
sheet = book.active book.save(filename='sample.xlsx')
if isInc == True:
sheet.cell(row=stu, column=3).value += point layoutA = [
else: [sg.Text('被点到的同学:'), sg.Text('', key = 'roll')],
sheet.cell(row=stu, column=3).value -= point [sg.Button('点名')]
book.save(filename='sample.xlsx') ]
layoutA = [ layoutB1 = [
[sg.Text('被点到的同学:'), sg.Text('', key = 'roll')], [sg.Button(''), sg.Button('')],
[sg.Button('点名')] ]
]
layoutB2 = [
layoutB1 = [ [sg.Button(''), sg.Button('')],
[sg.Button(''), sg.Button('')], ]
]
layoutB3 = [
layoutB2 = [ [sg.Button(''), sg.Button('')],
[sg.Button(''), sg.Button('')], ]
]
layoutC = [
layoutB3 = [ [sg.Button('回答问题'), sg.Button('请ta坐下')],
[sg.Button(''), sg.Button('')], ]
]
List = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
layoutC = [ layoutD = [
[sg.Button('回答问题'), sg.Button('请ta坐下')], [sg.Drop(List,
] default_value = None,
size = (30, 6),
List = [0.5, 1.0, 1.5, 2.0, 2.5, 3.0] enable_events = True,
layoutD = [ key = 'point'
[sg.Drop(List, )],
default_value = None, [sg.Button('确认')]
size = (30, 6), ]
enable_events = True,
key = 'point' window = sg.Window('点名', layoutA)
)], while True:
[sg.Button('确认')] event, values = window.read()
] if event == sg.WINDOW_CLOSED:
break
window = sg.Window('点名', layoutA) if event == '点名':
while True: ret, rownum = TakeRoll()
event, values = window.read() window['roll'].update(value=ret)
if event == sg.WINDOW_CLOSED: window = sg.Window('该同学是否到位?', layoutB1)
break while True:
if event == '点名': event, values = window.read()
ret, rownum = TakeRoll() if event in (sg.WINDOW_CLOSED, ''):
window['roll'].update(value=ret) break
window = sg.Window('该同学是否到位?', layoutB1) if event == '':
while True: CreditUpdate(rownum, True, 1.0)
event, values = window.read() window = sg.Window('接下来...', layoutC)
if event in (sg.WINDOW_CLOSED, ''): while True:
break event, values = window.read()
if event == '': if event in (sg.WINDOW_CLOSED, '请ta坐下'):
CreditUpdate(rownum, True, 1.0) break
window = sg.Window('接下来...', layoutC) if event == '回答问题':
while True: window = sg.Window('该同学能否复述问题?', layoutB2)
event, values = window.read() while True:
if event in (sg.WINDOW_CLOSED, '请ta坐下'): event, values = window.read()
break if event == sg.WINDOW_CLOSED:
if event == '回答问题': break
window = sg.Window('该同学能否复述问题?', layoutB2) if event == '':
while True: CreditUpdate(rownum, True, 0.5)
event, values = window.read() window = sg.Window('该同学答对问题了吗?', layoutB3)
if event == sg.WINDOW_CLOSED: while True:
break event, values = window.read()
if event == '': if event in (sg.WINDOW_CLOSED, ''):
CreditUpdate(rownum, True, 0.5) break
window = sg.Window('该同学答对问题了吗?', layoutB3) if event == '':
while True: window = sg.Window('给ta打分', layoutD)
event, values = window.read() while True:
if event in (sg.WINDOW_CLOSED, ''): event, values = window.read()
break if event == sg.WINDOW_CLOSED:
if event == '': break
window = sg.Window('给ta打分', layoutD) if event == '确认':
while True: CreditUpdate(rownum, True, values['point'])
event, values = window.read() break
if event == sg.WINDOW_CLOSED: break
break break
if event == '确认': if event == '':
CreditUpdate(rownum, True, values['point']) CreditUpdate(rownum, False, 1.0)
break break
break break
break break
if event == '': break
CreditUpdate(rownum, False, 1.0)
break window.close()
break
break
break
window.close()

Loading…
Cancel
Save