时间: 2021-07-31 作者:daque
迩来单元构造了一次英语对话竞赛,笔者用powerpoint内嵌的vba功效创造了一个立即评阅体例,遭到教授和同窗们的普遍微词,现将创造进程与大师瓜分。
筹备处事:在桌面兴建一个名为“评阅体例”的文献夹,用来寄存参加比赛队的关系消息,个中name.txt中生存了各参加比赛队称呼(需事前筹备,每个队名占一条龙)。
启用处事:兴建一张空缺幻灯片,在“视图”菜单下找到“东西栏”子菜单,采用个中的“控件东西箱”(大师也可按照本质须要变换主界面作风)。安排相映控件场所,评选委员会委员像片用的是“图像控件”,底下的分数用的是“文本框”,两个按钮用的是“吩咐按钮”,安置好控件之后再安排各控件的属性来粉饰界面,也可按照本质须要插入图片举行化装。
评阅体例主界面中囊括8个评选委员会委员的像片和每个评选委员会委员给出的分数(如图),功效按钮囊括“清空”、“结果得分”。
各评阅得分的文本框的称呼为txts1,txts2……txts8,“结果得分”按钮的称呼为commandtotal,第二张幻灯片用来表露结果得分的标签称呼为lbltotal。
安排处事:翻开vba编纂器编写代码:
'指定文献夹用来寄存每组得分的统计文献
const path$ = "c:\windows\desktop\评阅体例\"
'全部变量,结果总分
dim sum as single
'全部变量,结果平衡得分
dim averagescore as single
'全部变量,记载组次,生存后机动加1
dim groupnum as integer
'清空“评选委员会委员得分”,清空“结果得分”
private sub commandbutton1_click()
txts1.text = ""
txts2.text = ""
txts3.text = ""
txts4.text = ""
txts5.text = ""
txts6.text = ""
txts7.text = ""
txts8.text = ""
'清空下一张幻灯片的结果总分
slide2.lbltotal.caption = ""
end sub
'“结果得分”按钮
private sub commandtotal_click()
on error goto er
dim sum as single
'将8个评选委员会委员的分数相加得出总分sum
sum = sum + csng(txts1.text)
sum = sum + csng(txts2.text)
sum = sum + csng(txts3.text)
sum = sum + csng(txts4.text)
sum = sum + csng(txts5.text)
sum = sum + csng(txts6.text)
sum = sum + csng(txts7.text)
sum = sum + csng(txts8.text)
'计划出结果得分(平等分),透彻到少量点后3位
averagescore = format(sum / 8, "#.###")
'第二张幻灯片表露结果得分
slide2.lbltotal.caption = averagescore
'写入结果得分
if groupnum>=1 and groupnum <= 5 then
open path$ && "inpscore.txt" for append as #1
print #1, averagescore
close #1
end if
groupnum = groupnum + 1
er:
end sub
兴建一个模块,写入如次代码,此处为评奖模块。
'评比项一等奖1名,二等奖2名,特别奖3名,故counter变量设为6
const counter = 6
public strname(counter) as string
public sngscore(counter) as single
'模块功效:读博得分文献,并对得分加以排序
public sub readdatainp()
on error goto er
open path$ && "inpname.txt" for input as #1
for i = 1 to counter
input #1, strname(i)
next
close #1
open path$ && "inpscore.txt" for input as #2
for i = 1 to counter
input #2, sngscore(i)
next
close #2
for i = 1 to counter
for j = 1 to counter
if sngscore(i) > sngscore(j) then
a = sngscore(i): sngscore(i) = sngscore(j): sngscore(j) = a
b = strname(i): strname(i) = strname(j): strname(j) = b
end if
next
next
er:
end sub
兴建一张幻灯片,用来表露特别奖获奖名单,按钮称呼为cmddisply,6个文本框的称呼为txtthirdprize1……txtthirdprize6。
代码如次:
private sub cmddisply_click()
readdatainp
由于分数从高到低排序,所以先输入结果三组
txtthirdprize1.text = strname(4)
txtthirdprize2.text = strname(5)
txtthirdprize3.text = strname(6)
创造时你也不妨介入其余的幻灯片用做化装,比方创造一个启发态功效的发端画面以及中断语之类,而后在竞赛时用投电影放映机动作输入,确定会起到衬托赛场氛围的效率
<