C#

027_ComboBox를 이용한 성적계산기

iwannabebackendexpert 2022. 4. 6. 16:55

ComboBox를 이용한 성적계산기를 만들어보자

도구 상자에서 성적계산을 원하는 과목개수만큼 textbox를 만들어 이름을 txt1 ~ 7 까지 만듦

combobox를 이용해서 학점은 cred1~7 / 성적은 grd1~7

성적이 총 계산되어서 나오는 부분은 txtGrade라고 지정해주었다.

TextBox[] titles;
ComboBox[] crds; //학점
ComboBox[] grds; //성적

폼 생성자에는 TextBox형 리스트/ComboBox[] / ComboBox[]  만들어준다.

 

과목명에

txt1.Text = "인체와구조의기능I";
txt2.Text = "일반수학I";
txt3.Text = "데이터사이언스";
txt4.Text = "설계 및 프로젝트";
txt5.Text = "중국어I";
txt6.Text = "비주얼 프로그래밍";
txt7.Text = "기업가정신";

이렇게 적어서 미리 지정해주자.

titles = new TextBox[] {txt1,txt2,txt3,txt4,txt5,txt6,txt7 };
crds = new ComboBox[] {crd1,crd2,crd3,crd4,crd5,crd6,crd7 };
grds = new ComboBox[] { grd1, grd2, grd3, grd4, grd5, grd6, grd7 };

그리고 폼생성자에서 지정한 리스트에 위 코드 처럼 값을 입력해준다.

int[] arrCredit = { 1, 2, 3, 4, 5 }; //학점
            List<string> lstGrade = new List<string>
            {
                "A+","A0","B+","B0","C+","C0","D+","D0","F"};
            foreach(var c in crds)
            {
                foreach(var i in arrCredit)
                    c.Items.Add(i);
                c.SelectedItem = 3; //default 3학점
            }
            foreach (var G in grds)
            {
                foreach (var c in lstGrade)
                    G.Items.Add(c);
            }

int형 리스트 arrCredit을 이용해 각 과목의 학점을 지정

foreach 를 이용해 각 crds에 그에 상응하는 학점을 넣는다.

foreach를 이용해 grds에 lstGrade의 A+~F까지 학점을 넣는다.

private void button1_Click(object sender, EventArgs e)
        {
            double totalScore = 0;
            double totalCredit = 0;
            for(int i = 0; i < grds.Length; i++)
            {
                if(grds[i].SelectedItem != null) //성적이 입력된 과목
                {
                    int crd = int.Parse(crds[i].SelectedItem.ToString()); //crds = object
                    totalCredit += crd;
                    totalScore += crd* GetGrade(grds[i].SelectedItem.ToString());
                }
              
            }
            txtGrade.Text = (totalScore / totalCredit).ToString("0.0");
        }
        //A+~F까지 학점을 가져오는 메소드
private double GetGrade(string v)
        {
            double grade;
            if (v == "A+") grade = 4.5;
            else if (v == "A") grade = 4.0;
            else if (v == "B+") grade = 3.5;
            else if (v == "B0") grade = 3.0;
            else if (v == "C+") grade = 2.5;
            else if (v == "C0") grade = 2.0;
            else if (v == "D+") grade = 1.5;
            else if (v == "D0") grade = 1.0;
            else grade = 0;
            return grade;
        }

if문을 이용해 각 성적에 맞는 점수를 가져온다.

'C#' 카테고리의 다른 글

029_DateTimePicker  (0) 2022.04.06
028_Timer  (0) 2022.04.06
026_ComboBox  (0) 2022.04.06
025_ListBox  (0) 2022.04.06
024_scrollBar  (0) 2022.03.30