반응형
[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();
}
}
}
반응형
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[C# 실습, 사용자 정의 컨트롤 제작 예광탄] 레코드 코팅 (0) | 2020.10.06 |
---|---|
[C# 실습] 레코드 코팅 - 더블 버퍼링 가능한 Panel 정의하기 (0) | 2020.10.06 |
[C# 실습, 예광탄 소스] 레코드 코팅 (0) | 2020.10.06 |
[C# 실습 시나리오] 레코드 코팅 - 반도체 장비 및 제어시스템 개발자 양성 과정 (0) | 2020.10.06 |
[C# 실습] 반도체 장비 관리 프로그램 - 3. 상세 구현 (0) | 2020.09.22 |
[C# 실습] 반도체 장비 관리 프로그램 - 1. 단일체 패턴 표현 (0) | 2020.09.21 |
[C# 실습] 반도체 장비 관리 프로그램 (0) | 2020.09.21 |
[C#] 컬렉션(Dictionary) 실습 - 도서 관리 프로그램 (0) | 2019.08.10 |
[C#] 상속과 다형성, 인터페이스 실습 - 도형 (0) | 2019.08.10 |
[C#] 컬렉션 실습 - IList 인터페이스 구현 약속한 컬렉션 (0) | 2019.08.09 |