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 |