Olá pessoal, neste post apresento a vocês um programa usando Windows Forms com C#, para calcular a média dos alunos de uma determinada escola. O programa pede para o usuário inserir quatro notas válidas de 0 a 10, permitindo valores decimais, e clicando em um botão é feito o cálculo das notas e exibido logo abaixo a maior nota, a menor nota e a média. Observe como fica na Figura 1

Programa pronto
Figura 1. Programa pronto

O primeiro passo é criar um novo projeto conforme a Figura 2.

Iniciando projeto
Figura 2. Iniciando projeto

Após o ok, construa o formulário igual ao da Figura 3.

Construção do formulário
Figura 3. Construção do formulário

Aperte F7 para ir para o source code, ou abra no Solution Explorer o arquivo Form1.cs e insira os códigos da Listagem 1.


namespace ExemploMediaAlunos
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void Calcular()
{
try
{
//Declaro as variáveis, as converto para decimal e as jogo nos labels
decimal nota1, nota2, nota3, nota4, maiornota, menornota, media;

nota1 = Convert.ToDecimal(txtNota1.Text);
nota2 = Convert.ToDecimal(txtNota2.Text);
nota3 = Convert.ToDecimal(txtNota3.Text);
nota4 = Convert.ToDecimal(txtNota4.Text);
maiornota = Convert.ToDecimal(IsTextValidated(lblMaiorNota.Text));
menornota = Convert.ToDecimal(IsTextValidated(lblMenorNota.Text));
media = Convert.ToDecimal(IsTextValidated(lblMedia.Text));

//Teste condicional para descobrir qual é a maior nota
if (nota1 > nota2 && nota1 > nota3 && nota1 > nota4)
{
maiornota = nota1;
}
else if (nota2 > nota1 && nota2 > nota3 && nota2 > nota4)
{
maiornota = nota2;
}
else if (nota3 > nota1 && nota3 > nota2 && nota3 > nota4)
{
maiornota = nota3;
}
else
{
maiornota = nota4;
}

//Teste condicional para descobrir qual é a menor nota
if (nota1 < nota2 && nota1 < nota3 && nota1 < nota4)
{
menornota = nota1;
}
else if (nota2 < nota1 && nota2 < nota3 && nota2 < nota4)
{
menornota = nota2;
}
else if (nota3 < nota1 && nota3 < nota2 && nota3 < nota4)
{
menornota = nota3;
}
else
{
menornota = nota4;
}

//Faço a conversão dos valores das labels para string
lblMaiorNota.Text = maiornota.ToString();
lblMenorNota.Text = menornota.ToString();

//Calculo a média das notas e as armazeno na label
media = (nota1 + nota2 + nota3 + nota4) / 4;
lblMedia.Text = media.ToString();
}

catch (FormatException)
{
//Caso ocorra algum erro, apresento uma mensagem ao usuário
MessageBox.Show("Digite números de 0 a 10, com ou sem vírgulas", 
"Mensagem do Sistema");
}
}

private bool IsTextValidated(string strTextEntry)
{
//Método para não deixar o label vazio, senão dá erro de InvalidCast
Regex objNotWholePattern = new Regex("[^0-9]");
return !objNotWholePattern.IsMatch(strTextEntry);
}

public void Limpar()
{
//Limpo as variáveis
txtNota1.Text = "";
txtNota2.Text = "";
txtNota3.Text = "";
txtNota4.Text = "";
lblMaiorNota.Text = "";
lblMenorNota.Text = "";
lblMedia.Text = "";
lblResultado.Text = "";
}

public void Sair()
{
//Crio o método para o botão Sair
DialogResult result;

result = MessageBox.Show("Tem certeza que deseja sair?", 
"Mensagem do Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == System.Windows.Forms.DialogResult.Yes)
{
this.Close();
}
}

private void txtNota1_KeyPress(object sender, KeyPressEventArgs e)
{
//Teste condicional para aceitar números no textbox
if (!(char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}

//Teste condicional para aceitar a tecla Backspace e vírgula
if (e.KeyChar == 8 || e.KeyChar == 44)
{
e.Handled = false;
}
}

private void txtNota2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}

if (e.KeyChar == 8 || e.KeyChar == 44)
{
e.Handled = false;
}
}

private void txtNota3_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}

if (e.KeyChar == 8 || e.KeyChar == 44)
{
e.Handled = false;
}
}

private void txtNota4_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}

if (e.KeyChar == 8 || e.KeyChar == 44)
{
e.Handled = false;
}
}

private void btnCalcular_Click(object sender, EventArgs e)
{
Calcular();
}

private void btnLimpar_Click(object sender, EventArgs e)
{
Limpar();
}

private void btnSair_Click(object sender, EventArgs e)
{
Sair();
}
}
}
Listagem 1. Codificação do projeto