-
WinForm 콤보박스를 이용한 학점계산기C# 예제 공부일기 2020. 8. 11. 19:26
과목명을 표시하는 7개의 TextBox와 학점수와 성적을 입력하는 각각 7개씩의 콤보박스로 구성된다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test1 { public partial class Form : System.Windows.Forms.Form { public Form() { InitializeComponent(); } TextBox[] titles; //교과목 Text배열 ComboBox[] crds; //학점 Combobox 배열 ComboBox[] grds; //성적 Combobox 배열 private void txt2_Load(object sender, EventArgs e) { txt1.Text = "인체의 구조와 기능"; txt2.Text = "일반수학"; txt3.Text = "디지털공학및실험"; txt4.Text = "자료구조"; txt5.Text = "비주얼 프로그래밍"; txt6.Text = "기업가정신"; //일일이 타이핑하기 귀찮으니 미리 TextBox 초기화 crds = new ComboBox[] { crd1, crd2, crd3, crd4, crd5, crd6, crd7 }; //콤보박스를 한꺼번에 처리하기위함 grds = new ComboBox[] { grd1, grd2, grd3, grd4, grd5, grd6, grd7 }; titles = new TextBox[] { txt1, txt2, txt3, txt4, txt5, txt6, txt7 };//과목이름이 비어있는지 체크하기 위함 int[] arrCredits = new int[] { 1, 2, 3, 4, 5 }; //학점콤보박스에 넣을 값들 List<String> lstGrade = new List<string> { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0" ,"F"}; //성적 콤보박스에 넣을 값들 UPdateCbo(crds,grds,titles,arrCredits,lstGrade); //콤보박스 없데이트 } private void UPdateCbo(ComboBox[] crds, ComboBox[] grds, TextBox[] titles, int[] arrCredits, List<string> lstGrade) { foreach (var item in crds) //콤보박스마다 { foreach (var i in arrCredits)//위에서 정의한 1,2,3,4,5 Add { item.Items.Add(i); } item.SelectedItem = 3; } foreach (var item in grds) //콤보박스마다 { foreach (var i in lstGrade) //위에서 정의한 A+ ~ F Add { item.Items.Add(i); } } } private void button1_Click(object sender, EventArgs e) {//평균평점 클릭할 시 double totalscore = 0; int totalCredits = 0; for(int i=0;i<crds.Length;i++) //학점 콤보박스의 수만큼 반복 { if(titles[i].Text != "")//과목란이 비어있으면 집계안함 { int crd = int.Parse(crd1.SelectedItem.ToString());//학점 콤보박스에서 선택한 값 int로 변환 totalCredits += crd; //누적 totalscore += crd * GetGrade(grds[i].SelectedItem.ToString()); //학점*성적 으로 총합성적 산출 } } avg.Text = (totalscore / totalCredits).ToString("0.00"); //총합성적에서 학점을 다 더한값을 나눈 걸 X.XX 형태로 TextBox에 표시 } private double GetGrade(string text) { double grade = 0; switch(text) //입력받은 문자열에 따른 성적 숫자 반환 { case "A+": grade = 4.5; break; case "A0": grade = 4.0; break; case "B+": grade = 3.5; break; case "B0": grade = 3.0; break; case "C+": grade = 2.5; break; case "C0": grade = 2.0; break; case "D+": grade = 1.5; break; case "D0": grade = 1.0; break; default: grade = 0; break; } return grade; } } }
콤보박스형의 배열을 만들어서 모두 똑같은 값을 Add해야할 경우 반복문 돌리면 되서 편리하다.
ComboBox[] crds = new ComboBox[] { crd1, crd2, crd3, crd4, crd5, crd6, crd7 };
'C# 예제 공부일기' 카테고리의 다른 글
C# Random 클래스 (0) 2020.08.20 MES 1일 (0) 2020.08.10 미니프로젝트 정리 (조원파트) NewMemberForm (0) 2020.08.08 미니프로젝트 정리 (조원파트) Login Form (0) 2020.07.31 Thread (0) 2020.07.31