연습문제 (3)
□ 단원 : C# WinForm □ 목표 : C# Form, Controls, GUI, Dialog □ 주요 연습 내용 : collections, class, Form, 속성, FileIO 연습 □ 준비자료 : CurrencyExchange.cs |
연습문제 Ex3 (Due by 11/10 토 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex3.zip으로 묶어서 낼 것. 보고서 (30%)
[연습문제]
1. Form1에 각종 컨트롤을 추가한다. (10%)
– groupBox1(환전방법) & radioButton1 & radioButton2 & radioButton3
– groupBox2
– textBox1 & textBox2
– comboBox1 & comboBox2 (한국/미국/일본…)
– label1 & label2 (KRW…)
– label3 (=) & label4 (환율고시 최근업데이트 시각)
– listView1 (View 속성을 Details로 하고, Columns에 통화명, 매매기준율, 살 때, 팔 때 추가)
2. CurrencyExchange.cs 클래스와 CurrencyExchangeConverter.cs 클래스를 가지고CurrencyConverter.dll을 생성한다. (20%)
참조: http://dis.dankook.ac.kr/lectures/hci12/entry/C-Point-Point3D-Class-Assembly
경고: Reference에서 System.Windows.Forms를 추가해야 함
새프로젝트 -> Class Library 선택해서 CurrencyConverter로 생성
CurrencyExchangeConverter 클래스
– 멤버 필드
+static Dictionary<string, CurrencyExchange> currencies; // 환율 데이터
+static DateTime lastUpdated; // 최근 업데이트 시각
+static string filename; // 환율 데이터를 저장하는 파일명 (lastUpdated를 이용하여 파일명 생성, 예: 2012-11-01_17-55-10.txt)
– 속성
+public static DateTime LastUpdated { get; }
=> lastUpdated 반환 (label4에서 사용)
– 메소드
+static CurrencyExchangeConverter()
=> currencies 생성, DownloadTodayCurrencyExchangeRates, WriteFile
+static void DownloadTodayCurrencyExchangeRates()
=> 네이버 환율 사이트에서 데이터를 받아서 currencies에 저장
+static void WriteFile()
=> currencies 데이터를 파일로 저장 (이미 파일이 존재할 시 저장 안함)
+public static Dictionary<string, CurrencyExchange> GetCurrencyExchangeList()
=> currencies 데이터를 반환
+ICollection<string> GetCurrencyExchangeKeys()
=> currencies에서 Keys를 반환 (comboBox1&2에서 사용)
+public static ICollection<CurrencyExchange> GetCurrencyExchangeValues()
=> currencies에서 Values를 반환 (listView1에서 사용)
+public static string GetCurrencySign(string hname)
=> currencies 데이터에서 hname (예: 미국)을 가지고 해당 sign (예: USD)
반환 (label1&2에서 사용)
+public static double Exchange(string fromCurrency, string toCurrency, ExchangeMethod
method, double value)
=> currencies 데이터에서 환전방법(기준/살 때/팔 때)에 따라서 환율을
받아와서 환전을 계산 (공식: value * (fromRate/toRate) )
3. CurrencyConverter.dll을 이용하여 Form1에서 환율계산기를 작성한다. (20%)
경고: Reference에서 CurrencyConverter.dll를 추가해야 함
– Form1_Load
=> 초기화 상태를 만들어 준다.
=> comboBox1&2는 CurrencyExchangeConverter.GetCurrencyExchangeKeys() 사용
=> listView1은 CurrencyExchangeConverter.GetCurrencyExchangeValues() 사용 (listView에 Item 추가 시 한국은 빼준다.)
=> label4는 CurrencyExchangeConverter.LastUpdated 사용
– radioButton_CheckChanged
=> radioButton1/2/3을 Checked하면 ExchangeMethod.Standard/Buy/Sell로 선택
– comboBox1_SelectedIndexChanged & comboBox2_SelectedIndexChanged
=> comboxBox1/2에서 “유럽연합” 선택하면 label1/2을 EUR로 바꿔줌
=> CurrencyExchangeConverter.GetCurrencySign(…) 사용 (단, 일본은 “JPY 100”로 바꿔줌)
– textBox1_KeyPress & textBox2_KeyPress
=> 실제 textBox1 또는 textBox2에 넣은 value 값으로 환율변환을 계산하여 상대방 쪽에 보여줌
=> CurrencyExchangeConverter.Exchange(…) 사용 (단, 일본은 100엔 기준임)
4. 일반 TextBox 대신 숫자만 입력받을 수 있는 사용자 정의 컨트롤 (NumberTextBox)를 사용하거나, 본인이 원하는 기능을 더 추가한다. (10%)
참조: http://dis.dankook.ac.kr/lectures/hci12/entry/Number-Only-Textbox
http://dis.dankook.ac.kr/lectures/hci12/entry/Custom-Control
경고: Reference에서 NumberTextBoxLib.dll를 추가해야 함 & 도구상자 (Toolbox)에서 오른쪽마우스버튼을 누르고 팝업메뉴에서 아이템선택 (Choose Items)을 한 후 Browse해서 직접 NumberTextBoxLib.dll을 선택하면 NumberTextBox라는 컨트롤이 생성 됨
– numberTextBox1 & numberTextBox2