Skip to content

Instantly share code, notes, and snippets.

@jwickster
Created October 8, 2016 05:17
Show Gist options
  • Select an option

  • Save jwickster/b8f59a595c1d393935c89bdd946bbe2e to your computer and use it in GitHub Desktop.

Select an option

Save jwickster/b8f59a595c1d393935c89bdd946bbe2e to your computer and use it in GitHub Desktop.

Revisions

  1. jwickster created this gist Oct 8, 2016.
    250 changes: 250 additions & 0 deletions MainWindow.xaml.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,250 @@
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    namespace CS_3280_Assignment_3_GradeBook_WPF
    {

    public partial class MainWindow : Window
    {

    #region Attributes

    private int SelectedStudentIndex
    {
    get { return _selectedStudentIndex; }
    set
    {
    _selectedStudentIndex = value;
    UpdateSelectedUserDisplay();
    }
    }



    private int iNumberOfAssignments = 0;
    private int iNumberOfStudents = 0;
    private int[,] iaScores = new int[0,0];
    private string[] saStudents = new string[0];
    private int _selectedStudentIndex;

    #endregion

    #region Methods

    public MainWindow()
    {
    InitializeComponent();
    }

    private void save_counts_button_Click(object sender, RoutedEventArgs e)
    {
    bool numberofAssignmentsValid = int.TryParse(input_Number_Assignments_COUNTS_TB.Text, out iNumberOfAssignments) && iNumberOfAssignments >= 1 && iNumberOfAssignments <= 99;
    bool numberOfStudentsValid = int.TryParse(input_Number_Students__COUNTS_TB.Text, out iNumberOfStudents) && iNumberOfStudents >= 1 && iNumberOfStudents <= 10;

    if (!numberofAssignmentsValid)
    {
    MessageBox.Show("Number of assignments must be between 1 and 99");
    }
    else if (!numberOfStudentsValid)
    {
    MessageBox.Show("Number of students must be between 1 and 10");
    }
    else
    {
    saStudents = new string[iNumberOfStudents];

    for (int i = 0; i < iNumberOfStudents; i++)
    {
    saStudents[i] = "Student #" + (i + 1);
    }

    iaScores = new int[iNumberOfStudents, iNumberOfAssignments];

    Display_Everything_Button.IsEnabled = true;
    save_counts_button.IsEnabled = false;
    SelectedStudentIndex = 0;
    }
    }

    public void Save_Scores_Button_Click(object sender, RoutedEventArgs e)
    {
    // make sure we're in a good state
    if (iNumberOfAssignments > 0 && iNumberOfStudents > 0)
    {
    int assignmentNumber = 0;
    bool assignmentNumberValid = int.TryParse(Input_NumberAssignments_SCORES_TB.Text, out assignmentNumber) && assignmentNumber >= 1 && assignmentNumber <= iNumberOfAssignments;

    if (!assignmentNumberValid)
    {
    MessageBox.Show("Assignment number must be between 1 and " + iNumberOfAssignments);
    return;
    }

    int assignmentScore = 0;
    bool assignmentScoreValid = int.TryParse(input_score_SCORES_TB.Text, out assignmentScore) && assignmentScore >= 0 && assignmentScore <= 100;

    if (!assignmentScoreValid)
    {
    MessageBox.Show("Assignment score must be between 0 and 100");
    return;
    }

    iaScores[SelectedStudentIndex, assignmentNumber-1] = assignmentScore;
    MessageBox.Show("You have saved score: " + assignmentScore + " to assignment number " + assignmentNumber);
    }
    }

    /// <summary>
    /// The user inputs a name less than 20 characters and pushed save to save.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void save_name_button_Click(object sender, RoutedEventArgs e)
    {
    //validate
    if (iNumberOfStudents > 0)
    {
    string newName = input_Student_Name_TB.Text.Trim();
    if (string.IsNullOrWhiteSpace(newName))
    {
    MessageBox.Show("No name entered ");
    return;
    }

    MessageBox.Show("You have saved " + newName + " to the list.");
    saStudents[SelectedStudentIndex] = newName;
    }
    }

    /// <summary>
    /// The Navigation Buttons
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void First_Student_Button_Click(object sender, RoutedEventArgs e)
    {
    SelectedStudentIndex = 0;
    }

    public void Next_Student_button_Click(object sender, RoutedEventArgs e)
    {
    if(SelectedStudentIndex < iNumberOfStudents-1)
    {
    SelectedStudentIndex++;
    }
    }

    public void Previous_Student_Button_Click(object sender, RoutedEventArgs e)
    {
    if (SelectedStudentIndex > 0)
    {
    SelectedStudentIndex--;
    }
    }

    public void Last_Student_Button_Click(object sender, RoutedEventArgs e)
    {
    if(iNumberOfStudents > 0)
    {
    SelectedStudentIndex = iNumberOfStudents - 1;
    }
    }

    public void Display_Everything_Button_Click(object sender, RoutedEventArgs e)
    {
    string sDisplayText = "";

    for (int i = 0; i < saStudents.Length; i++)
    {
    sDisplayText += saStudents[i] + "\t\t";
    int runningTotalGrade = 0;

    for (int j = 0; j < iNumberOfAssignments; j++)
    {
    runningTotalGrade += iaScores[i, j];
    sDisplayText += iaScores[i, j] + "\t";
    }

    int averageGrade = runningTotalGrade / iNumberOfAssignments;
    sDisplayText += averageGrade + "\t";
    sDisplayText += GetLetterGrade(averageGrade);

    sDisplayText += "\n";
    }

    Main_Output_Window.Text = sDisplayText;

    }

    private string GetLetterGrade(int averageGrade)
    {
    string letterGrade;

    if (averageGrade >= 90)
    {
    letterGrade = "A";
    }
    else if (averageGrade <= 89 && averageGrade >= 80)
    {
    letterGrade = "B";
    }
    else if (averageGrade <= 79 && averageGrade >= 70)
    {
    letterGrade = "C";
    }
    else if (averageGrade <= 69 && averageGrade >= 60)
    {
    letterGrade = "D";
    }
    else
    {
    letterGrade = "F";
    }

    return letterGrade;
    }

    private void Reset_Application_Button_Click(object sender, RoutedEventArgs e)
    {
    iNumberOfAssignments = 0;
    iNumberOfStudents = 0;
    SelectedStudentIndex = 0;

    iaScores = new int[0,0];
    saStudents = new string[0];

    input_Number_Assignments_COUNTS_TB.Text = string.Empty;
    input_Number_Students__COUNTS_TB.Text = string.Empty;
    Main_Output_Window.Text = string.Empty;
    input_Student_Name_TB.Text = string.Empty;
    Display_Everything_Button.IsEnabled = false;
    save_counts_button.IsEnabled = true;
    }

    private void UpdateSelectedUserDisplay()
    {
    if (saStudents != null && saStudents.Length > SelectedStudentIndex)
    {
    input_Student_Name_TB.Text = saStudents[SelectedStudentIndex];
    }
    }

    #endregion


    }
    }