据我的理解:
1 评委信息库(评委的个人资料信息,比如,姓名、性别、职业等,根据需要增减)
2 参赛选手库(选手的资料)
3 评分库(id、选手id、评分1-5(对应五个评委)
正好我闲着,给你写一个吧。
我写的这个评委分数是在代码里固定到数组里了,如果你需要运行时手动输入评分,可以将oldScores里的数据改成手动输入就行了(这个不用我再写了吧,如果不会再追问,再告诉你)。
你先新建一个类,将下面的main方法全部复制进去就能运行了,自己看一下吧。
/ 主方法 /public static void main(String[] args)
{
/ 保存原始评分的数组(如果你需要运行时手动输入分数,将 oldScores中的数据改成手动输入就行了 /
double[] oldScores = {15, 77, 55, 88, 79, 98, 67, 89, 68, 88};
/ 最终将用来保存排序后的数组 /
double[] scores = new double[oldScoreslength];
double temp;
/ 平均分 /
double avg = 0;
int k;
/ 将原始评分放入最终排序数组 /
for (int i = 0; i < oldScoreslength; i++)
{
scores[i] = oldScores[i];
}
/ 开始排序 /
for (int i = 0; i < scoreslength - 1; i++)
{
k = i;
for (int j = i + 1; j < scoreslength; j++)
{
if (scores[k] < scores[j])
{
k = j;
}
}
if (i != k)
{
temp = scores[k];
scores[k] = scores[i];
scores[i] = temp;
}
}
/ 计算去掉最高分和最低分之后的和 /
double sum = 0;
/ 记录计算平均分的分数个数 /
double num = 0;
for (int i = 1; i < scoreslength - 1; i++)
{
num++;
sum += scores[i];
}
/ 计算平均分 /
avg = sum / num;
/ 最公平的肯定不是在scores数组两端 /
double zgp = 0;
double cha = 0;
/ 标记与平均值差值最小的分数位置 /
int flag = 0;
/ 开始寻找最公平评分 /
for (int i = 1; i < scoreslength - 1; i++)
{
/ 为cha赋初始值,注意比较差值要使用绝对值比较 /
if (i == 1)
{
cha = Mathabs(scores[i] - avg);
}
double cha1 = Mathabs(scores[i] - avg);
if (cha1 < cha)
{
cha = cha1;
flag = i;
}
}
zgp = scores[flag];
/ 由于最不公平的分数肯定在scores数组的第一个或者是最后一个 /
double bgp = 0;
if (Mathabs(scores[0] - avg) > Mathabs(scores[scoreslength - 1] - avg))
{
bgp = scores[0];
}
else
{
bgp = scores[scoreslength - 1];
}
/ 全部计算完成,下面开始输出结果 /
Systemoutprintln("原始评委分数如下:");
for (int i = 0; i < oldScoreslength; i++)
{
Systemoutprint(oldScores[i] + ", ");
}
Systemoutprintln();
Systemoutprintln("排序后分数如下:");
for (int i = 0; i < scoreslength; i++)
{
Systemoutprint(scores[i] + ", ");
}
Systemoutprintln();
Systemoutprintln("去掉最高分和最低分后平均分:" + avg);
Systemoutprintln("最公平分数:" + zgp);
Systemoutprintln("最不公平分数:" + bgp);
}
#include <stdioh>
int main()
{
float x[8]={92,95,90,89,93,95,91,90};
float max, min;
int i;
float avg = 0;
max = min = x[0];
for (i = 0; i < 8; i++)
{
if (x[i] > max)
{
max = x[i];
}
if (x[i] < min)
{
min = x[i];
}
avg += x[i];
}
avg = (avg - max - min) / 6;
printf("the avrage sorce is: %f\n", avg);
return 0;
}
’3个label,2个command
Private Sub Command1_Click()
Dim s, i, j, arr(1 To 10), t, sum
For i = 1 To 10
s = InputBox("输入评分(0-10分):", "第" & i & "个分数")
If IsNumeric(s) Then
s = Val(s)
If s < 0 Or s > 10 Then
i = i - 1
Else
arr(i) = s
End If
Else
i = i - 1
End If
Next
For i = 1 To 9
For j = i + 1 To 10
If arr(i) > arr(j) Then
t = arr(i): arr(i) = arr(j): arr(j) = t
End If
Next
Next
For i = 2 To 9
sum = sum + arr(i)
Next
Label1Caption = "最高分为:" & arr(10)
Label2Caption = "最低分为:" & arr(1)
Label3Caption = "选手最后得分:" & Round(sum / 8, 1)
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Command1Caption = "评分"
Command2Caption = "结束"
With Label1
Caption = ""
AutoSize = True
End With
With Label2
Caption = ""
AutoSize = True
End With
With Label3
Caption = ""
AutoSize = True
End With
End Sub
既然你没有思路,就先给你一点小小的点拨^_^:
1、现在假设评委的数量不超过20个(1~20),这样您可以创建一个20人的数组。
2、要求输入评委的个数(必须大于等于3个,小于20个)。
3、判断评委的个数:
1、如果评委的数目<=9,应该在循环读入的时候就使用Max和Min变量分别记录最大和最小的值(假设Max=-1和Min等于999,一个无限大的数),那么每次读入一个数的时候判断如果比Max大,将Max赋值;如果比Min小,给Min赋值。最后统计成绩综合,扣除Max和Min的即可。
2、如果评委数目>9,应该先按照1的办法统计出Max和Min,然后再次进行循环,注意,此次循环跳过Max和Min的数(使用continue)。
聪明的办法:
先将输入的20个分数或者制定的评委分数存在数组中,进行排序(从大到小),然后根据评委的个数扣除对应的头、末尾和第二个、倒数第二个分数即可。
Dim Sc(10) As Single
Dim max As Single, min As Single, s As Single, p As Single, x As Single
Dim i As Integer
s = 0
Sc(1) = Val(InputBox("请输入第1个评委的分数!"))
Do While Sc(1) < 0 Or Sc(1) > 10
Sc(1) = Val(InputBox("请输入第1个评委的分数!", "输入错误!请重新输入!"))
Loop
max = Sc(1)
min = Sc(1)
s = s + Sc(1)
For i = 2 To 10
Sc(i) = Val(InputBox("请输入第" & i & "个评委的分数!"))
Do While Sc(i) < 0 Or Sc(i) > 10
Sc(i) = Val(InputBox("请输入第" & i & "个评委的分数!", "输入错误!请重新输入!"))
Loop
s = s + Sc(i)
If Sc(i) > max Then max = Sc(i)
If Sc(i) < min Then min = Sc(i)
Next i
s = s - max - min
p = s / 8
Print "评委给分:"
Print "序号:";
For i = 1 To 10
Print Left(CStr(i) & " ", 4);
Next i
Print "得分:";
For i = 1 To 10
Print Left(CStr(Sc(i)) & " ", 4);
Next i
Print "平均分:"; p
以上就是关于评委打分程序mysql数据表怎么设计好全部的内容,包括:评委打分程序mysql数据表怎么设计好、求JAVA评委打分代码、用C语言编写,编写评分统计程序:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)