HW3

HW3

단국대학교 멀티미디어공학과 HCI프로그래밍2 (2016년 가을학기) 실습
과목코드 : 300890
강사 : 박경신
——————————————————————
날짜: 2016년 10월 31일
– 실습번호 : HW3 (Due by 11/21)
– 실습제목 : collections, FileIO, GUI
– 실습요약 : 입체 도형의 겉넓이(surface area)와 부피(volume) 구하기 GUI 작성
– 준비자료 : HW1 http://www.mathsisfun.com/area-calculation-tool.html
http://math.about.com/od/formulas/ss/surfaceareavol.htm

11/21까지 online.dankook.ac.kr 이러닝으로 실행파일(bin\*.exe)과 소스코드(*.cs)와 보고서(*.doc/*.hwp)를 전부 “학번_이름_HW3.zip”으로 묶어서 제출한다. 또한, 비주얼 스튜디오에서 만든 프로젝트 전체 파일(*.sln, *.csproj)을 폴더에 같이 넣어준다. 보고서는 출력해서 수업시간에 제출한다.

– 실습문제

1. Geometry 추상클래스를 정의한다.

2. Geometry 추상클래스를 상속받은 Sphere, Cone, Cylinder, … 는 겉넓이(Surface Area), 부피(Volume)를 계산한다.

3. GeometryForm 를 구현하고 입체도형의 겉넓이와 부피 계산을 구현한다.
-ComboBox, Label, TextBox, Button, Panel을 사용하여 GUI를 정의한다.
-Geometry 객체를 생성해서 텍스트필드에서 입력받은 값으로 SurfaceArea와 Volume을 계산하여 화면에 출력한다.

4. MainForm은 List<Geometry>를 관리한다.
-Listview을 사용하여 Geometry 리스트를 출력한다.
-File I/O을 사용하여 Geometry 리스트를 관리한다.

5. 사용자의 잘못된 입력에 따른 처리를 반드시 포함해야 하며, 그 외에 본인이 더 테스트해보고 싶은 method나 routine을 추가하라. 실행 화면과 코드를 첨부하시오.

GeometryForm

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GeometryForm
{
public abstract class Geometry
{
public abstract GeometryType Type { get; }
public abstract double SurfaceArea { get; }
public abstract double Volume { get; }
public void Print()
{
System.Diagnostics.Trace.WriteLine
(ToString() + ” S.A.=” + SurfaceArea + ” Vol=” + Volume);
}
// needed for ListView
#region ListViewItem
public ListViewItem ToListViewItem()
{
ListViewItem item = new ListViewItem(this.ToString());
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, string.Format(“{0:0.###}”, this.SurfaceArea)));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, string.Format(“{0:0.###}”, this.Volume)));
return item;
}
#endregion
}
}

TRACE macro

TRACE macro
-윈도우 응용프로그램 개발시 Visual Studio IDE의 Output Window (출력창)에 Debug하는 내용을 출력하고자 할 때System.Diagnostics.Trace.WriteLine(…..)을 사용
-기존의 C# Console 응용프로그램에서 System.Console.WriteLine(….)와 동일
-기존의 MFC 윈도우 프로그래밍에서 TRACE 매크로와 비슷 (C의 printf와 동일한 형식 지원)
-기존의 WIN32 윈도우 프로그래밍에서 OutputDebugString 함수와 같은 기능 (C의 printf와 동일한 형식 지원)

Windows Forms Application

.NET2015

  • 메뉴에서 File->New->Project->Visual C# 템플릿->Windows Forms Application를 선택한 후 “프로젝트 이름(예를 들어, WindowFormHello)”을 적고 확인버튼을 누르면 빈폼 프로젝트가 생성된다.
 form1
 form2

컨트롤 코드 추가

  • Toolbox(도구상자) 에서 컨트롤을 선택(예를 들어, Label 또는 Button)하여 Dialog기반의 Form1 안에 추가하여 편집한다.
 form3

컨트롤에 이벤트 추가하기
-컨트롤 (예를들어, 버튼을 더블클릭하면 또는 이벤트목록중 Click이벤트에 더블클릭하면)에 클릭 이벤트에 대한 이벤트핸들러에 내용(예를 들어, 레이블의 Text를 “Button Clicked”)을 작성한다.
private void button1_Click(object sender, EventArgs e)
{

// button1을 클릭하면 label1 텍스트 변경

label1.text = “Button Clicked”;
// button1을 클릭하면 Form2 팝업

Form2 f = new Form2();

f.ShowDialog();
}

form8

폼 코드 추가

  • Project 에서 폼을 추가(Add New Item)하여 Form2 를 추가한다.

form5

form6

  • Toolbox(도구상자) 에서 컨트롤을 선택(예를 들어, Label 또는 Textbox)하여 Dialog기반의 Form2 안에 추가하여 편집한다.

form7

  • Form2 안에 코드를 추가한다.

form9

빌드(F7) 후 실행(F5)하기

Getting Started with Windows Forms

http://msdn.microsoft.com/en-us/library/ms229601(VS.80).aspx

  • Creating a New Windows Form
  • Creating Event Handlers in Windows Forms
  • Adjusting the Size and Scale of Windows Forms
  • Changing the Appearance of Windows Forms
  • Windows Forms Controls
  • User Input in Windows Forms
  • Dialog Boxes in Windows Forms
  • Windows Forms Data Binding
  • Windows Forms Security
  • ClickOnce Deployment for Windows Forms
  • How to: Access Keyed Collections in Windows Forms