【发布时间】:2017-02-10 01:04:15
【问题描述】:
我正在使用 C# 中的 GUI 编写一个程序,其中包括三个文本框(一个用于姓名输入,一个用于成绩输入,一个用于成绩输出)和五个按钮(一个用于输入姓名/成绩并添加到相应的数组,一个只显示刚刚输入的姓名和成绩,一个显示最低成绩,一个显示最高成绩,一个显示班级平均成绩)。
我设计了表单,但需要一些代码方面的帮助,有两个数组,一个用于成绩,一个用于姓名,它们最初存储了五个值。这是我到目前为止的代码:
namespace WindowsFormsApplication3
{
using static System.Console;
public partial class highestGrade : Form
{
int[] grade = new int[] { 90, 80, 60, 70, 80, };
string[] name = new string[] { "Sally", "Joe", "Sue", "Pete", "Tom", };
double sum = 0;
double average;
int x = 4;
int y = 4;
int z = 0;
public highestGrade()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void addStudent_Click(object sender, EventArgs e)
{
if (x <= 9)
{
Array.Sort(grade, name);
name[x] = textBox1.Text;
grade[x] = Convert.ToInt32(textBox2.Text);
sum = sum + grade[x];
textBox1.Text = string.Empty;
textBox2.Text = string.Empty;
}
}
private void display_Click(object sender, EventArgs e)
{
outputText.Visible = true;
outputText.Text = textBox1.Text + " " + textBox2.Text;
}
private void lowestGrade_Click(object sender, EventArgs e)
{
Array.Sort(grade, name);
outputText.Visible = true;
outputText.Text = name[z] + " " + grade[z];
}
private void button4_Click(object sender, EventArgs e)
{
Array.Sort(grade, name);
outputText.Visible = true;
outputText.Text = name[y] + " " + grade[y];
}
private void averageGrade_Click(object sender, EventArgs e)
{
for (int y = 0; y < 5; y++)
{
sum = sum + grade[y];
}
average = sum / grade.Length;
string avgOutput = Convert.ToString(average);
outputText.Visible = true;
outputText.Text = "Class Average: " + avgOutput;
y++;
}
}
}
我需要该程序输入最多 10 名学生的成绩/姓名,同时能够在用户点击时连续输出最低/最高成绩。它还需要在用户点击时连续输出总平均值。
平均值计算不正确,每次单击平均值按钮时,它都会不断增加总和,我无法获得最高分来保持其值。例如:如果我输入一个新等级为 100,然后单击最高等级,它会显示我想要的那个等级。但是如果我输入 95 到下一个年级,它会将 100 替换为 95。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
试试dotnetperls.com/average.. 最低/最高只需排序并抓取数组中的第一个或最后一个....
-
你最好切换到
List<int>
标签: c# visual-studio