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

[C# 실습] 반도체 장비 관리 프로그램 - 2. 프로토 타이핑

언제나휴일 2020. 9. 21. 14:42
반응형

[C# 실습] 반도체 장비 관리 프로그램

[C# 실습] 반도체 장비 관리 프로그램 - 1. 단일체 패턴 표현

사용자와 상호 작용 부분 구현

* 메뉴 선택 *

EWorld.cs

using System;
using System.Security.AccessControl;

namespace 반도체_월드
{
    class EWorld
    {
        #region 단일체 패턴
        //1. 생성자의 보호 수준을 private로 지정
        //멤버의 디폴트 가시성은 private
        EWorld()
        {
            Console.WriteLine("EWorld 생성자");
        }
        //2. 정적 멤버로 단일체를 참조할 변수 선언
        static EWorld eworld = null;
        //3.정적 생성자에서 단일체 생성
        static EWorld()
        {
            Console.WriteLine("정적 EWorld 생성자");
            eworld = new EWorld();
        }
        //4.다른 곳에서 단일체에 접근할 수 있게 속성 제공
        static internal EWorld EW
        {
            get
            {
                return eworld;
            }
        }
        #endregion
        internal void Run()
        {
            ConsoleKey key = ConsoleKey.NoName;
            while((key = SelectMenu())!=ConsoleKey.Escape)
            {
                switch(key)
                {
                    case ConsoleKey.F1: Making(); break;
                    case ConsoleKey.F2: Control(); break;
                    case ConsoleKey.F3: ViewAll(); break;
                    default: Console.WriteLine("잘못 선택하였습니다."); break;
                }
                Console.WriteLine("아무 키나 누르세요.");
                Console.ReadKey(true);
            }
            
        }

        private void ViewAll()
        {
            Console.WriteLine(" F3: 전체 보기");
        }

        private void Control()
        {
            Console.Clear();
            Console.WriteLine(" F2: 장비 제어");
            int seqno = 0;
            Console.Write("장비 일련 번호:");
            int.TryParse(Console.ReadLine(), out seqno);
            Equipment equipment = null;

            ConsoleKey key = ConsoleKey.Escape;
            while((key = SelectControlMenu())!=ConsoleKey.Escape)
            {
                switch(key)
                {
                    case ConsoleKey.F1: BuyMeterial(equipment); break;
                    case ConsoleKey.F2: MakingSemiconductor(equipment);break;
                    case ConsoleKey.F3: TestSemiconductor(equipment); break;
                    case ConsoleKey.F4: SaleSemiconductor(equipment); break;
                    case ConsoleKey.F5: ViewStates(equipment); break;
                    default: Console.WriteLine("잘못 선택하였습니다."); break;
                }
                Console.WriteLine("아무 키나 누르세요.");
                Console.ReadKey(true);
            }

        }

        private void ViewStates(Equipment equipment)
        {
            Console.WriteLine("F5:현황확인");
        }

        private void SaleSemiconductor(Equipment equipment)
        {
            Console.WriteLine("F4:반도체판매");
        }

        private void TestSemiconductor(Equipment equipment)
        {
            Console.WriteLine("F3:반도체테스트");
        }

        private void MakingSemiconductor(Equipment equipment)
        {
            Console.WriteLine("F2:반도체생산");
        }

        private void BuyMeterial(Equipment equipment)
        {
            Console.WriteLine("F1: 재료구입");
        }

        private ConsoleKey SelectControlMenu()
        {
            Console.Clear();
            Console.WriteLine("=== 반도체 장비 제어 메뉴 ===");
            Console.WriteLine("F1: 재료구입");
            Console.WriteLine("F2:반도체생산");
            Console.WriteLine("F3:반도체테스트");
            Console.WriteLine("F4:반도체판매");
            Console.WriteLine("F5:현황확인");
            Console.WriteLine("메뉴를 선택 (ESC:메인 메뉴로)☞");
            return Console.ReadKey(true).Key;
        }

        private void Making()
        {
            Console.WriteLine(" F1: 장비 생산");
        }

        private ConsoleKey SelectMenu()
        {
            Console.Clear();
            Console.WriteLine("=== 반도체 월드 메인 메뉴 ===");
            Console.WriteLine(" F1: 장비 생산");
            Console.WriteLine(" F2: 장비 제어");
            Console.WriteLine(" F3: 전체 보기");
            Console.WriteLine("메뉴를 선택 ☞");
            return Console.ReadKey(true).Key;
        }
    }
}

Program.cs

namespace 반도체_월드
{
    class Program
    {
        static void Main(string[] args)
        {
            EWorld ew = EWorld.EW;
            ew.Run();
        }
    }
}
반응형