Wednesday, April 23, 2014

Two Lists Working In Parrallel


namespace Two_Lists_Working_In_Parallel
{


    public partial class Form1 : Form
    {
        //a list to hold the names of students
        List<string> names = new List<string>();
        //a list to hold their corresponding grades
        List<int> grades = new List<int>();

        public Form1()
        {
            InitializeComponent();
        }
        public void PreloadLists()
        {
            //Preloads both lists with some data
            string[] stunames = { "John", "David", "Heather", "Sheryl", "Robert", "Mike", "Karen", "Linda", "Sam" };
            int[] stugrades = { 88, 93, 91, 77, 81, 95, 75, 81, 96 };

            //load both list
            names.AddRange(stunames);
            grades.AddRange(stugrades);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //preload both list at the start of this application
            PreloadLists();
            //populate listbox (1stnames) with the content of the list names.

            lstNames.Items.AddRange(names.ToArray());
        }

        private void btnAddNameGrade_Click(object sender, EventArgs e)
        {
            //get name and grade
            string name = txtName.Text;
            int grade = int.Parse(txtGrades.Text);
            //add name and grade to the lists
            names.Add(name);
            grades.Add(grade);
            //display lists
            DisplayNames();
        }
        private void DisplayNames()
        {
            lstNames.Items.Clear();// clear display
            foreach (string name in names)
            {
                lstNames.Items.Add(name);
            }
        }

        private void btnGetGradeOfSelectedName_Click(object sender, EventArgs e)
        {
            //get the index of selected name
            if (lstNames.SelectedIndex != -1)
            {
                int sindex = lstNames.SelectedIndex;
                //use the index to extract the grade
                //from the grades list
                int grade = grades[sindex];
                //display it
                txtGrade2.Text = grade.ToString();
            }
            else
                MessageBox.Show("You must first select a name");
        }

        private void btnGetNamesWithGradesAboveAvg_Click(object sender, EventArgs e)
        {
            //Compute the average
            double average = grades.Average();
            lstNames.Items.Add("====Avg: " + average.ToString("f1") +"========");

            for (int i = 0; i < grades.Count; i++)
            {
                if (grades[i] > average)
                    lstNames.Items.Add(names[i]);
            }
        }

        private void btnGetNameWithGradeLessThan65_Click(object sender, EventArgs e)
        {   bool b1 = false;
            for (int i = 0; i < grades.Count; i++)
            {
                if (grades[i] < 65)
                    lst65Down.Items.Add(names[i]);
                else
                   b1 = true;

            }
            if (b1)
                MessageBox.Show("There is no student whose grade are less than 65");
        }

        private void btnChangeStuGrade_Click(object sender, EventArgs e)
        {
            try
            {
                //make sure that a name is selected

                if (lstNames.SelectedIndex != -1)
                {
                    int grade = int.Parse(txtNewGrade.Text);
                    int sindex = lstNames.SelectedIndex;
                    if (grade >= 0 && grade <= 100)
                    {
                        grades[sindex] = grade;
                        MessageBox.Show("Grade has been updated");
                    }
                    else
                    {
                        MessageBox.Show("Please type numeric value");
                    }
                }
            }
            catch (FormatException fe)
            {
                MessageBox.Show(fe.Message);
                //MessageBox.Show(
            }
            catch (IndexOutOfRangeException ie)
            {
                MessageBox.Show(ie.Message);
            }
        }

        private void btnRemoveSelectedStudentNGrade_Click(object sender, EventArgs e)
        {
           
            if (lstNames.SelectedIndex != -1)
            {
                int sindex = lstNames.SelectedIndex;
                names.RemoveAt(sindex);
                grades.RemoveAt(sindex);
                DisplayNames();
                //int index = lstNames.SelectedIndex;
                //lstNames.Items.Remove(lstNames.SelectedItem);
                //names.RemoveAt(index);
                //grades.RemoveAt(index);
            }
            //or (for multiple selection)
            //for (int i = lstNames.SelectedIndices.Count - 1; i >= 0; i--)
            //{
            //    lstNames.Items.RemoveAt(lstNames.SelectedIndices[i]);
            //    names.RemoveAt(i);
            //    grades.RemoveAt(i);
            //}
        }
    }
}
//Add button to list the students whose grades are below 65
//Include GUI to change a grade of the selected student
//Add button to remove the selected student
//(hint: you must remove his/her grade as well)

No comments:

Post a Comment