언어 자료구조 알고리즘/프로그래밍 실습

[C# 기본 문법 활용하기] 프로그래밍 언어 활용 실습 - 포트폴리오

언제나휴일 2018. 9. 5. 10:33
반응형

[C# 기본 문법 활용하기] 프로그래밍 언어 활용 실습 - 포트폴리오



평가일시

2018

훈련생

 

과정명

LG CNS 스마트 팩토리 과정

평가유형

포트폴리오

교과목

C#과 닷넷플랫폼

훈련교사

장 문 석 ()

능력단위명

프로그래밍 언어 활용(2001020215_15v3 )

성취기준

5(매우우수), 4(우수), 3(보통), 2(미흡), 1(매우미흡)

능력단위요소

문항

교수자 평가

성취

수준

점수

환산

기본 문법 활용하기

(2001020215_15v3.1)

 

성적 관리 프로그램을 작성하고 프로그램의 구조 및 실행 화면을 첨부하여 포트폴리오를 작성하시오.

- 메뉴 선택에 의해 성적 추가, 성적 검색, 성적 삭제, 전체 성적 보기를 수행할 수 있어야 한다.

- 메뉴 선택 기능 구현: 1

- 주어진 기능 중 하나라도 구현: 2

- 1개 학급의 학생 성적 관리 : 3

- 1학년 여러 개의 학급의 학생 성적 관리: 4

- 여러 개 학년의 여러 개의 학급의 학생 성적 관리: 5

 

 

 


참고 파일

프로그래밍 언어 활용_ 기본 문법 활용하기.hwp



1점 예제 소스 코드

Program.cs

 namespace 성적_관리_프로그램

{

    class Program

    {

        static void Main(string[] args)

        {

            App app = App.Singleton;

 

            app.Start();

        }

    }

}


App.cs

 using System;

 

namespace 성적_관리_프로그램

{

    internal class App

    {

        static App()

        {

            Singleton = new App();

        }

        internal static App Singleton { get; private set; }

 

        internal void Start()

        {

            ConsoleKey key = ConsoleKey.Escape;

            while((key = SelectMenu())!=ConsoleKey.Escape)

            {

                switch(key)

                {

                    case ConsoleKey.F1: Insert(); break;

                    case ConsoleKey.F2: Delete(); break;

                    case ConsoleKey.F3: Search(); break;

                    case ConsoleKey.F4: ViewAll(); break;

                    default: Console.WriteLine("잘못 선택하였습니다."); break;

                }

                Console.WriteLine("아무 키나 누르세요.");

                Console.ReadKey(true);

            }

        }

 

        private void ViewAll()

        {

            Console.WriteLine("전체 성적 보기");

        }

 

        private void Search()

        {

            Console.WriteLine("성적 검색");

        }

 

        private void Delete()

        {

            Console.WriteLine("성적 삭제");

        }

 

        private void Insert()

        {

            Console.WriteLine("성적 추가");

        }

 

        private ConsoleKey SelectMenu()

        {

            Console.Clear();

            Console.WriteLine("=== 성적 관리 프로그램 메뉴 ===");

            Console.WriteLine("F1: 성적 추가");

            Console.WriteLine("F2: 성적 삭제");

            Console.WriteLine("F3: 성적 검색");

            Console.WriteLine("F4: 전체 성적 보기");

            return Console.ReadKey(true).Key;

        }

    }

}

 



2점 예제 소스 코드(성적 추가, 전체 성적 보기 기능 구현)

Program.cs

 namespace 성적_관리_프로그램

{

    class Program

    {

        static void Main(string[] args)

        {

            App app = App.Singleton;

 

            app.Start();

        }

    }

}



App.cs

 using System;

 

namespace 성적_관리_프로그램

{

    internal class App

    {

        int[][][] scores;

        static App()

        {

            Singleton = new App();

        }

        internal static App Singleton { get; private set; }

        App()

        {

            Initialize();

        }

 

        private void Initialize()

        {

            Console.WriteLine("관리할 학년 개수를 입력하세요.");

            int gnum = EhFun.GetNum();

            scores = new int[gnum][][];

            for(int gi=0;gi<scores.Length;gi++)

            {

                InitGrade(gi+1,out scores[gi]);

            }

        }

 

        private void InitGrade(int gn,out int[][] gscores)

        {

            Console.WriteLine("{0} 학년의 학급 개수를 입력하세요.",gn);

            int cnum = EhFun.GetNum();

            gscores = new int[cnum][];

            for (int ci = 0; ci < gscores.Length; ci++)

            {

                InitClass(gn, ci + 1, out gscores[ci]);

            }

        }

 

        private void InitClass(int gn, int cn,out int[] cscores)

        {

            Console.WriteLine("{0} 학년 {1}반의 학생 수를 입력하세요.",gn,cn);

            int snum = EhFun.GetNum();

            cscores = new int[snum];

            for (int si = 0; si < cscores.Length; si++)

            {

                cscores[si] = -1;

            }

        }

 

        internal void Start()

        {

            ConsoleKey key = ConsoleKey.Escape;

            while((key = SelectMenu())!=ConsoleKey.Escape)

            {

                switch(key)

                {

                    case ConsoleKey.F1: Insert(); break;

                    case ConsoleKey.F2: Delete(); break;

                    case ConsoleKey.F3: Search(); break;

                    case ConsoleKey.F4: ViewAll(); break;

                    default: Console.WriteLine("잘못 선택하였습니다."); break;

                }

                Console.WriteLine("아무 키나 누르세요.");

                Console.ReadKey(true);

            }

        }

 

        private void ViewAll()

        {

            for (int gi = 0; gi < scores.Length; gi++)

            {

                ViewGrade(gi + 1, scores[gi]);

            }

        }

 

        private void ViewGrade(int gn, int[][] gscores)

        {

            Console.WriteLine("=== {0}학년 정보 ===", gn);

            for (int ci = 0; ci < gscores.Length; ci++)

            {

                ViewClass(gn, ci + 1, gscores[ci]);

            }

        }

 

        private void ViewClass(int gn, int cn, int[] cscores)

        {

            Console.WriteLine("... {0}학년 {1}반 정보 ...", gn,cn);

            for (int si = 0; si < cscores.Length; si++)

            {

                if (cscores[si] == -1)

                {

                    Console.WriteLine("{0}번 입력하지 않음", si + 1);

                }

                else

                {

                    Console.WriteLine("{0} {1}", si + 1, cscores[si]);

                }

            }

        }

 

        private void Search()

        {

            Console.WriteLine("성적 검색");

        }

 

        private void Delete()

        {

            Console.WriteLine("성적 삭제");

        }

 

        private void Insert()

        {

            Console.WriteLine("성적 추가 기능입니다.");

            Console.WriteLine("학년을 입력하세요.1~{0}",scores.Length);

            int gn = EhFun.GetNum();

            if((gn<1)||(gn>scores.Length))

            {

                Console.WriteLine("범위를 벗어났습니다.");

                return;

            }

 

            Console.WriteLine("반을 입력하세요.1~{0}", scores[gn-1].Length);

            int cn = EhFun.GetNum();

            if ((cn < 1) || (cn > scores[gn-1].Length))

            {

                Console.WriteLine("범위를 벗어났습니다.");

                return;

            }

 

            Console.WriteLine("번호를 입력하세요.1~{0}", scores[gn-1][cn-1].Length);

            int sn = EhFun.GetNum();

            if ((sn < 1) || (sn > scores[gn-1][cn-1].Length))

            {

                Console.WriteLine("범위를 벗어났습니다.");

                return;

            }

 

            Console.WriteLine("성적을 입력하세요.");

            int score = EhFun.GetNum();

            if ((score < 0) || (score > 100))

            {

                scores[gn-1][cn-1][sn-1] = -1;

                Console.WriteLine("유효하지 않은 성적입니다.");

                return;

            }

            scores[gn - 1][cn - 1][sn - 1] = score;

            Console.WriteLine("입력 성공!!!");

        }

 

        private ConsoleKey SelectMenu()

        {

            Console.Clear();

            Console.WriteLine("=== 성적 관리 프로그램 메뉴 ===");

            Console.WriteLine("F1: 성적 추가");

            Console.WriteLine("F2: 성적 삭제");

            Console.WriteLine("F3: 성적 검색");

            Console.WriteLine("F4: 전체 성적 보기");

            return Console.ReadKey(true).Key;

        }

    }

}

 



EhFun.cs

 using System;

 

namespace 성적_관리_프로그램

{

    public class EhFun

    {

        public static int GetNum()

        {

            int num = 0;

            if(int.TryParse(Console.ReadLine(),out num))

            {

                return num;

            }

            return 0;

        }

    }

}



프로젝트 폴더 및 포트폴리오 압축한 파일

장언휴.zip


반응형