본문 바로가기

.NET/C#

C# 성적 관리 프로그램(단순 학점 부여)

728x90
반응형

프로그램을 공부하셨던 분들이라면 이런 프로그램은 눈 감고도 짜시겠지요~

네 프로그래밍을 처음 배울때 한 번쯤 짜보았을 학점 관리입니다. 기본적으로 점수와 학점만 출력하는 프로그램이지요

저같은 이런 프로그램으로도 도움이 된다는것...그러니 쉽지만 한번 살짝 구현을 해보도록 하지요

우선 사용자가 과목 점수를 3과목을 입력한다 가정하겠습니다 점수는 0~100점 사이겠지요 출력값은 합계와 평균 점수 그리고 학점을 출력 할것입니다. 그리고 일반적인 A,B,C,D,F 의 학점 시스템을 가질꺼고요~

    1 using System;

    2 using System.Collections.Generic;

    3 using System.Linq;

    4 using System.Text;

    5 

    6 namespace Grade

    7 {

    8     class Program

    9     {

   10         static void Main(string[] args)

   11         {

   12             int score1, score2, score3, total;

   13             double average;

   14             char grade;

   15 

   16             Console.Write("첫번째 점수 : ");

   17             score1 = int.Parse(Console.ReadLine());

   18             Console.Write("두번째 점수 : ");

   19             score2 = int.Parse(Console.ReadLine());

   20             Console.Write("세번째 점수 : ");

   21             score3 = int.Parse(Console.ReadLine());

   22 

   23             total = score1 + score2 + score3;

   24             average = (double)total / 3;

   25             switch ((int)average / 10)

   26             {

   27                 case 10:

   28                 case 9:

   29                     grade = 'A';

   30                     break;

   31                 case 8:

   32                     grade = 'B';

   33                     break;

   34                 case 7:

   35                     grade = 'C';

   36                     break;

   37                 case 6:

   38                     grade = 'D';

   39                     break;

   40                 default:

   41                     grade = 'F';

   42                     break;

   43             }

   44             Console.WriteLine("TOTAL : {0}\tAVERAGE : {1}\tGRADE : {2}", total, average, grade);

   45         }

   46     }

   47 }

이렇게만 해주시면 아주 간단한 학점 프로그램이 만들어집니다. 물론 허접합니다만...그래도 좀만 살만 붙이면 간단히 볼수는 있겠지요 ㅎㅎ 실행 해 보시면요 다음과 같은 결과가 나올 겁니다.

진짜 많이 허접해보이네요 ㅜㅜ

하지만 여기서 살짝 살을 붙여 보겠습니다~^^

    1 using System;

    2 using System.Collections.Generic;

    3 using System.Linq;

    4 using System.Text;

    5 

    6 namespace Grade

    7 {

    8     class Program

    9     {

   10         static void Main(string[] args)

   11         {

   12             int score1, score2, score3, total;

   13             double average;

   14             char grade;

   15             string yn = "y";

   16 

   17             while (true)

   18             {

   19                 Console.Write("첫번째 점수 : ");

   20                 score1 = int.Parse(Console.ReadLine());

   21                 if (score1 < 0 || score1 > 100)

   22                     continue; //반복문을 리셋- 반복문의 처음 위치로 이동

   23             ReInput:

   24                 Console.Write("두번째 점수 : ");

   25                 score2 = int.Parse(Console.ReadLine());

   26                 if (score2 < 0 || score2 > 100)

   27                     goto ReInput;

   28                 do

   29                 {

   30                     Console.Write("세번째 점수 : ");

   31                     score3 = int.Parse(Console.ReadLine());

   32                 } while (score3 < 0 || score3 > 100);

   33 

   34                 total = score1 + score2 + score3;

   35                 average = (double)total / 3;

   36                 switch ((int)average / 10)

   37                 {

   38                     case 10:

   39                     case 9:

   40                         grade = 'A';

   41                         break;

   42                     case 8:

   43                         grade = 'B';

   44                         break;

   45                     case 7:

   46                         grade = 'C';

   47                         break;

   48                     case 6:

   49                         grade = 'D';

   50                         break;

   51                     default:

   52                         grade = 'F';

   53                         break;

   54                 }

   55                 Console.WriteLine("TOTAL : {0}\tAVERAGE : {1}\tGRADE : {2}", total, average, grade);

   56                 Console.Write("더 하시겠습니까? (y / n) ? ");

   57                 yn = Console.ReadLine();

   58                 if (!yn.Equals("y", StringComparison.OrdinalIgnoreCase))

   59                     break;

   60             }

   61         }

   62     }

   63 }

위와 같이 바꿔주게 되면 점수 0~100사이만을 입력할 수 있어 잘못된 입력을 막을 수 있습니다.


위에서는 continue와 goto문 do while문을 써서 반복하게 하였습니다. 여기서 goto문은 프로그램의 순서를 흐리게 만들 수 있어서 요즘에는 쓰지 않는 추세이므로 진짜 꼭 필요한 부분이 아니라면 쓰지 않는 것이 좋을 것입니다.

코드 몇줄 추가 해주고 반복문을 써준것 뿐인데 여러 기능이 추가되고 더 깔끔한 처리가 되는걸 보실 수 있을 겁니다.아직 문제가 만지만 남어지는 여러분의 해결능력을 믿으며 여기서 마추도록 하겠습니다~

감사합니다~~

728x90
반응형

'.NET > C#' 카테고리의 다른 글

Class(2)  (0) 2009.12.16
Class(1)  (0) 2009.12.16
C# enum, struct  (0) 2009.12.16
C# Array 에 대해서...  (2) 2009.12.16
C# 메소드  (0) 2009.12.15
C# 반복문  (0) 2009.12.15
C# 기초 계산기  (0) 2009.12.15
C# 타입  (0) 2009.12.15
C# value타입 vs Reference타입  (2) 2009.12.15
시샵 기초중에 기초 Hello world 시작하기  (0) 2009.12.15