CNSA-212-Personal/ElementaryMathematics/Form1.cs

411 lines
9.6 KiB
C#
Raw Normal View History

2024-02-01 09:26:21 -05:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics.Eventing.Reader;
2024-02-01 09:26:21 -05:00
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ElementaryMathematics
{
public partial class Form1 : Form
{
private bool isAdd = false;
private bool isSubtract = false;
private bool isMultiply = false;
private bool isDivide = false;
private Int32 numRunningCorrect = 0;
private Int32 numRunningIncorrect = 0;
private bool hasTried = false;
2024-02-01 09:26:21 -05:00
public Form1()
{
InitializeComponent();
pnlSummary.Visible = false;
lblNumCorrect.Text = "0";
lblNumIncorrect.Text = "0";
UpdateButtons();
2024-02-01 09:26:21 -05:00
}
2024-02-01 09:56:22 -05:00
private void groupBox1_Enter(object sender, EventArgs e)
{
// throw new System.NotImplementedException();
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
// throw new System.NotImplementedException();
}
private void chkSummary_CheckedChanged(object sender, EventArgs e)
2024-02-01 09:56:22 -05:00
{
if (chkShowSummary.Checked)
{
pnlSummary.Visible = true;
}
else
{
pnlSummary.Visible = false;
}
2024-02-01 09:56:22 -05:00
}
2024-02-01 09:57:29 -05:00
private void button1_Click(object sender, EventArgs e)
{
// throw new System.NotImplementedException();
}
private void ChangeOperator(string op)
{
isAdd = false;
isSubtract = false;
isMultiply = false;
isDivide = false;
if (op == "+")
{
isAdd = true;
lblOperator.Text = op;
}else if (op == "-")
{
isSubtract = true;
lblOperator.Text = op;
}else if (op == "*")
{
isMultiply = true;
lblOperator.Text = op;
}else if (op == "/")
{
isDivide = true;
lblOperator.Text = op;
}
else
{
lblOperator.Text = "";
}
}
private void rdoAddition_CheckedChanged(object sender, EventArgs e)
{
ChangeOperator("+");
}
private void rdoSubtraction_CheckedChanged(object sender, EventArgs e)
{
ChangeOperator("-");
}
private void rdoMultiplication_CheckedChanged(object sender, EventArgs e)
{
ChangeOperator("*");
}
private void rdoDivision_CheckedChanged(object sender, EventArgs e)
{
ChangeOperator("/");
}
private void btnExit_Click(object sender, EventArgs e)
{
Close();
}
private ErrorProvider ep1 = new ErrorProvider();
2024-02-01 11:03:13 -05:00
private decimal Calculate(decimal a, decimal b)
{
decimal answer = 0;
try
{
if (isAdd)
{
answer = a + b;
hasTried = true;
}else if (isSubtract)
{
answer = a - b;
hasTried = true;
}else if (isMultiply)
{
answer = a * b;
hasTried = true;
}else if (isDivide)
{
hasTried = true;
2024-02-01 11:03:13 -05:00
if (b != 0)
{
answer = a / b;
}
else
{
throw new Exception();
}
}
else
{
throw new Exception();
}
}
catch (Exception e)
{
2024-02-01 11:03:13 -05:00
ep1.SetError(btnChkAnswer, "Calculation Error");
}
return answer;
}
private void Win()
{
lblMessage.Text = "Good Job!";
numRunningCorrect++;
lblNumCorrect.Text = numRunningCorrect.ToString();
}
private void Fail()
{
lblMessage.Text = "Try Again";
numRunningIncorrect++;
lblNumIncorrect.Text = numRunningIncorrect.ToString();
}
private void btnChkAnswer_Click(object sender, EventArgs e)
{
ep1.Clear();
decimal a = 0;
decimal b = 0;
decimal c = 0;
try
{
a = decimal.Parse(txtA.Text);
try
{
b = decimal.Parse(txtB.Text);
try
{
c = decimal.Parse(txtC.Text);
try
{
2024-02-01 11:03:13 -05:00
if (c == Calculate(a,b))
{
Win();
}
else
{
Fail();
}
}
catch (Exception exception)
{
ep1.SetError(btnChkAnswer, "Calculation Error");
}
}
catch (Exception exception)
{
ep1.SetError(txtC, "Invalid Value");
}
}
catch (Exception exception)
{
ep1.SetError(txtB, "Invalid Value");
}
}
catch (Exception exception)
{
ep1.SetError(txtA, "Invalid Value");
}
UpdateButtons();
}
private void txtA_TextChanged(object sender, EventArgs e)
{
ep1.Clear();
hasTried = false;
UpdateButtons();
}
private void txtB_TextChanged(object sender, EventArgs e)
{
ep1.Clear();
hasTried = false;
UpdateButtons();
}
private void txtC_TextChanged(object sender, EventArgs e)
{
ep1.Clear();
hasTried = false;
UpdateButtons();
lblMessage.Text = "";
}
private void btnClear_Click(object sender, EventArgs e)
{
txtA.Clear();
txtB.Clear();
txtC.Clear();
UpdateButtons();
}
private void btnReset_Click(object sender, EventArgs e)
{
btnClear_Click(sender, e);
numRunningCorrect = 0;
numRunningIncorrect = 0;
UpdateButtons();
rdoAddition.Select();
2024-02-01 11:03:13 -05:00
lblNumCorrect.Text = "0";
lblNumIncorrect.Text = "0";
}
private void UpdateButtons()
{
2024-02-01 11:03:13 -05:00
if (txtA.TextLength > 0 && txtB.TextLength > 0 && txtC.TextLength > 0 && !hasTried)
{
btnChkAnswer.Enabled = true;
}
else
{
btnChkAnswer.Enabled = false;
}
if (hasTried)
{
btnShowCorrectAnswer.Enabled = true;
}
else
{
btnShowCorrectAnswer.Enabled = false;
}
if (txtA.TextLength > 0 || txtB.TextLength > 0 || txtC.TextLength > 0)
{
btnClear.Enabled = true;
}
else
{
btnClear.Enabled = false;
}
if (numRunningCorrect > 0 || numRunningIncorrect > 0)
{
btnReset.Enabled = true;
}
else
{
btnReset.Enabled = false;
}
}
2024-02-01 11:03:13 -05:00
private void btnShowCorrectAnswer_Click(object sender, EventArgs e)
{
ep1.Clear();
decimal a = 0;
decimal b = 0;
decimal c = 0;
try
{
a = decimal.Parse(txtA.Text);
try
{
b = decimal.Parse(txtB.Text);
try
{
lblMessage.Text = Calculate(a, b).ToString();
}
catch (Exception exception)
{
ep1.SetError(btnChkAnswer, "Calculation Error");
}
}
catch (Exception exception)
{
ep1.SetError(txtB, "Invalid Value");
}
}
catch (Exception exception)
{
ep1.SetError(txtA, "Invalid Value");
}
UpdateButtons();
}
2024-02-01 09:26:21 -05:00
}
}