评委打分程序mysql数据表怎么设计好

评委打分程序mysql数据表怎么设计好,第1张

据我的理解:

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

Print "得分:";

For i = 1 To 10

Print Left(CStr(Sc(i)) & " ", 4);

Next i

Print

Print "平均分:"; p

以上就是关于评委打分程序mysql数据表怎么设计好全部的内容,包括:评委打分程序mysql数据表怎么设计好、求JAVA评委打分代码、用C语言编写,编写评分统计程序:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9879531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存