Letter Grade Calculations in C#
using System;
//must include System.Collections if using ArrayList
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Letter_Grade
{
public partial class frmLetterGrade : Form
{
//array to hold our grades,
//a double to accept the grade as type double
ArrayList grades = new ArrayList();
double grade = 0;
public frmLetterGrade()
{
InitializeComponent();
}
private void frmLetterGrade_Load(object sender, EventArgs e)
{
//I decided to make the buttons inactive to
//prevent misfiring of methods
btnEnterGrade.Enabled = false;
btnCalcAverage.Enabled = false;
}
private void txtNumericGrade_Leave(object sender, EventArgs e)
{
//no code necessary
}
private void txtNumericGrade_TextChanged(object sender, EventArgs e)
{
//if we don't have a blank on the text box, let's
//test the number for validity
if (txtNumericGrade.Text != "")
{
grade = numberText(txtNumericGrade.Text);
if (grade < 0)
{
MessageBox.Show("You need to enter a positive number");
}
//this if statement won't allow the user to enter
//any value under 1
if (grade >= 1)
{
btnCalcAverage.Enabled = true;
btnEnterGrade.Enabled = true;
}
else
{
txtNumericGrade.Text = "";
}// end if/else statement
}
}// end outer if
//this method was written to cast the entry
//as a number and catch alphabetic characters
private double numberText(string entry)
{
try
{
return Convert.ToDouble(entry);
}
catch
{
MessageBox.Show("You did not enter a valid number.");
txtNumericGrade.Text = "0";
return 0.09;
}
}
private void btnEnterGrade_Click(object sender, EventArgs e)
{
grades.Add(grade);
txtNumericGrade.Text = "";
txtNumericGrade.Focus();
}
private void btnCalcAverage_Click(object sender, EventArgs e)
{
double totalPoints = 0;
double averageGrade = 0;
for(int i = 0; i < grades.Count; i++)
{
totalPoints += Convert.ToDouble(grades[i]);
}//end for loop
averageGrade = totalPoints / grades.Count;
lblAverageGrade.Text += averageGrade.ToString();
lblLetterGrade.Text += " " + LetterGrade(averageGrade).ToString();
}
private string LetterGrade(double avgGrade)
{
string letterGrade;
if (avgGrade > 100)
{
letterGrade = "A+";
}
else
{
switch ((int)Math.Floor(avgGrade / 10))
{
case 10:
case 9:
letterGrade = "A";
break;
case 8:
letterGrade = "B";
break;
case 7:
letterGrade = "C";
break;
case 6:
letterGrade = "D";
break;
default:
letterGrade = "F";
break;
}//end switch
}//end if else statement
return letterGrade;
}
}
}
| Attachment | Size |
|---|---|
| Letter Grade.zip | 42.97 KB |