C#/실습으로 다지는 C#

[C# 소스] 21. 콘솔 응용의 기본 제어 – 메뉴로 상호 작용

언제나 휴일 빅데이터 언제나휴일 2020. 4. 14. 21:37
반응형

소스 코드

Application.cs

using System;

namespace 콘솔_응용_상호_작용_개요___메뉴
{    
    class Application
    {
        #region 단일체
        internal static Application Singleton
        {
            get;
            private set;
        }
        static Application()
        {
            Singleton = new Application(); 
        }
        Application()
        {
        }
        #endregion 단일체



        internal void Init()
        {
            Console.WriteLine("콘솔 응용의 기본 제어 - 메뉴로 상호 작용");
            Console.WriteLine("아무 키나 누르면 시작합니다.");
            Console.ReadKey(true);
        }

        internal void Run()
        {
            ConsoleKey key = ConsoleKey.NoName;
            while((key = SelectMenu())!= ConsoleKey.Escape)//반복((키=메뉴 선택())!=종료키)
            {
                switch(key) //선택한 키에 따라
                {
                    case ConsoleKey.F1: FunA(); break;//키1 일 때: 메서드1 수행
                    case ConsoleKey.F2: FunB(); break;//키2 일 때: 메서드2 수행
                    case ConsoleKey.F3: FunC(); break;//키3 일 때: 메서드3 수행
                    case ConsoleKey.F4: FunD(); break;//키4 일 때: 메서드4 수행
                    case ConsoleKey.F5: FunE(); break;//키15일 때: 메서드5 수행
                    default: Console.WriteLine("잘못 선택하였습니다."); break;//다른 키: 잘못 선택한 것을 통보
                }
                Console.WriteLine("아무 키나 누르세요.");
                Console.ReadKey(true);//사용자가 결과 확인할 기회를 부여(아무 키나 누를 때까지 대기)
            }
        }
        internal void Exit()
        {
            Console.WriteLine("아무 키나 누르시면 프로그램을 종료합니다.");
            Console.ReadKey(true);
        }

        private void FunE()
        {
            Console.WriteLine("FunE");
        }

        private void FunD()
        {
            Console.WriteLine("FunD");
        }

        private void FunC()
        {
            Console.WriteLine("FunC");
        }

        private void FunB()
        {
            Console.WriteLine("FunB");
        }

        private void FunA()
        {
            Console.WriteLine("FunA");
        }

        private ConsoleKey SelectMenu()
        {
            Console.Clear();
            Console.WriteLine("사용자와 상호 작용 개요 - 메뉴편");
            Console.WriteLine("{0}:FunA", ConsoleKey.F1);
            Console.WriteLine("{0}:FunB", ConsoleKey.F2);
            Console.WriteLine("{0}:FunC", ConsoleKey.F3);
            Console.WriteLine("{0}:FunD", ConsoleKey.F4);
            Console.WriteLine("{0}:FunE", ConsoleKey.F5);
            Console.WriteLine("종료를 원하시면 {0}를 누르세요.", ConsoleKey.Escape);
            return Console.ReadKey(true).Key;
        }
    }
}

Program.cs

//http://ehpub.co.kr
//실습으로 다지는 C#
//콘솔 응용 메뉴를 통한 상호 작용 개요
namespace 콘솔_응용_상호_작용_개요___메뉴
{
    class Program
    {
        static void Main(string[] args)
        {
            Application app = Application.Singleton;
            app.Init();
            app.Run();
            app.Exit();
        }
    }
}
반응형