안녕하세요!
오늘도 게임개발자가 되기위해 공부하고 있는 구구입니다.
오늘은 지금까지 배운 C#으로 문제를 하나 풀어보도록 하겠습니다.
문제 풀이는 제가 문제를 풀때 생각했던 순서의 흐름데로 정리를 해보았습니다.
제가 틀릴 수도 있고 완전한 정답은 없기 때문에 해보실 분들은 해보면서
자신이 원하는 답을 먼저 머리속으로 생각해 보시고 코딩한 뒤 자신이 원하는대로
동작을 하는가에 중점을 두고 코딩을 해보시면 좋을것 같습니다.
- 문제
- 성적 프로그램을 3명까지 저장하고 정보검색이 가능한 프로그램
- 배열을 사용해서 데이터 저장하기
- 저장한 자료를 이용해서 학생번호로 정보 보여주기
- 과목은 국어, 수학, 영어 3과목이고 성적을 보여줄때는 총점과 평균까지 공개
우선 학생의 정보를 입력받을 InputID라는 함수를 만들었습니다.
파라미터로는 ID를 저장해야하므로 ID를 배열로 받고 그다음 index에 학번을 저장하는 방식을 취했습니다.
국어, 수학, 영어도 위와 같은 방식으로 입력을 받으려고 했습니다.
코딩은 아래와 같습니다.
이 이후에 필요한 함수들이 뭐가 있을지 이때 당시는 떠오르지 않았기 때문에 일단 함수는 여기서 잠깐 멈추고
메인함수로 넘어가겠습니다.
우선 메인함수에서는 문제에선 3명의 정보를 받으라고 했지만 저는 한 class기준으로 해보고 싶어서 MAX를 30명으로 잡았습니다. 이때 MAX기준으로 학생 ID, 국어, 영어, 수학 성적을 입력받아야 합니다.
그 이후 무한으로 돌아가는 프로그램을 만들기 위해 While문을 이용하기로 했습니다.
while에 true를 넣으면 무한반복이라는 점을 이용해서 코딩을 할 예정입니다.
우선 학생의 정보를 입력받을 수 도 있고 학생의 정보를 열어서 확인하고 싶을수도 있기 때문에
checknum이라는 변수를 만들어서 각각의 경우에 대해 코딩을 하도록 하였습니다.
(whileNum은 나중에 코딩을 할때 따로 분기를 나눠야 할 필요가 있었기때문에 사용했습니다. 아래에 언급하겠습니다.)
checkNum을 입력받을때 Console.ReadLine을 이용하게 되면 string으로 받기 때문에 Parse를 이용해서 int형으로 바꿔주었습니다. 1번을 입력받으면 학생의 정보를 등록하고 2번을 입력받으면 학생의 정보를 확인할 수 있습니다. 그 외의 숫자의 경우 잘못된 숫자라고 경고하고 다시 돌아올 수 있도록 하였습니다.
우선 else의 경우 코딩이 간단하므로 바로 코딩을 완료했습니다.
Console.Clear(); 는 콘솔창을 싹 지워줍니다.
checkNum==1인 경우는 학생의 정보를 입력받아야합니다.
몇명의 정보를 입력받을건지 정한 후 그 수 만큼 for문을 이용해서 미리 만들어 둔 함수를 이용해서 정보를 입력합니다.
입력을 다 마친 후에는 다시 초기화면으로 돌아가는데 돌아가기전 콘솔창을 정리해줍니다.
다음은 학생의 정보를 출력해줘야하는 경우를 코딩해보았습니다.
여기서 우선 학생들이 몇 번까지 있는지 알기 위해서 ID를 출력하는 함수를 만들어야겠다는 생각을 했습니다.
그리고 while문을 빠져나가는 case를 만들기 위해 whileNum이란 변수를 만들어서 while문을 빠져나갈 수 있는 경우도 만들었습니다.
또 학번을 입력받았을때 그 학번이 실제로 있는 학번인지 체크해야하는 학번도 필요했으며 그 학번이 실제로 있다면 그 학번의 성적과 총점, 평균을 출력할 수 있도록 코딩했습니다.
PrintID는 현재 저장된 학생들의 번호를 전부 출력하도록 만든 코드입니다.
for문을 이용해서 ID라는 배열안에 있는 수를 쭉 출력하도록 하였고 혹시 출력할 수가 많을 경우 줄바꿈을 하기위해서
(i%10 == 1)&&(i! = 1)
를 추가해서 1이 아니고 10으로 나눴을때 1이 남는 수가 될때마다 줄바꿈을 하도록 하였습니다.(ex) 11, 21····
CheckID의 경우 학번을 찾아봤을때 존재한다면 그 학번을 반환하고 아닐경우 -1을 반환하도록 설정한 함수입니다.
그래서 메인함수에서 printNum이 0보다 크냐 작냐를 기준으로 if문을 나눴는데 그 이유가 여기에 있다고 할 수
있습니다.
이렇게해서 코딩은 완료되고 실제로 구동해 보도록 하겠습니다.
오늘은 여기까지 하도록 하겠습니다.
댓글