Если бы это был я, я мог бы создать класс для представления учащегося и присвоить ему свойство для Name
, а также для каждого экзаменационного балла. Затем я бы добавил свойство, которое дает рассчитанную совокупную оценку на основе процентов.
Далее мы можем заполнить список этих Student
объектов, основываясь на данных в вашем DataGridView
, и тогда легко отобразить агрегаты и среднее значение по классу.
Например, класс Student
может выглядеть следующим образом:
public class Student
{
public string Name { get; set; }
public int Course1Score { get; set; }
public int Course2Score { get; set; }
public int FinalExamScore { get; set; }
public double AggregateScore => Course1Score * .3 + Course2Score * .3 +
FinalExamScore * .4;
}
И затем мы можем заполнить их список и вывести наши результаты:
private void button4_Click(object sender, EventArgs e)
{
var students = new List<Student>();
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
{
students.Add(new Student
{
Name = $"student{i + 1}",
Course1Score = int.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString()),
Course2Score = int.Parse(dataGridView1.Rows[i].Cells[5].Value.ToString()),
FinalExamScore = int.Parse(dataGridView1.Rows[i].Cells[6].Value.ToString()),
});
}
string results = string.Join(Environment.NewLine,
students.Select(s => $"{s.Name} had an aggregate score of {s.AggregateScore}"));
results += "\n\nThe average aggregated score is: " +
students.Average(student => student.AggregateScore);
MessageBox.Show(results);
}