연습문제 (5)

단국대학교 멀티미디어공학전공 HCI프로그래밍 II (2009년 가을학기) 연습

□ 단원 : C# WinForm

□ 목표 : C# WinForm 프로그래밍

□ 주요 연습 내용 : Form, Label, GroupBox, Button, TextBox, ListView 연습

□ 준비자료 : Test.csv

연습문제 Ex5 (Due by 11/26 목 24시까지)

-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex5.zip으로 묶어서 낼 것. 보고서 (30%)

[연습문제]

1. PersonRecord라는 Window Form 응용프로그램 프로젝트를 생성한다.

2. 생성된 폼 Form1.cs [Design]에서 Toolbox(도구상자)에서 Controls (컨트롤)을 가져와 출력화면을 위한 폼을 디자인한다. (10%)

-리스트 출력을 위한 ListView는 속성 (Property) 창에서 View를 Details로 바꾼다.

-편집 컨트롤 그룹을 위한 Group Box

-사람정보 (이름, ID, 전화번호, 주소) 입력을 위한 TextBox. 그리고 ID는 숫자만 입력할 수 있도록 한다.

-등록, 수정, 삭제, 모두 삭제를 위한 Button

-파일 열기, 파일 저장, 응용프로그램 끝내기 ToolStrip (또는 Button 사용)

-OpenFileDialog와 SaveFileDialog 공용컨트롤 등등

3. Person.cs 클래스는 다음 메소드를 가진다. (10%)

- public override string ToString() // “이름,ID,전화번호,주소”로 출력 (CSV 파일 출력에 필요)

- public int CompareTo(Person other) // Person의 이름 순서대로 비교 (Sort에 필요)

- public bool Equals(Person other)	// 이름과 같은지 비교 (Find에 필요)

- public ListViewItem ToListViewItem() // 리스트뷰 항목을 생성 (ListView 컨트롤에 필요) 메소드를 추가한다.

4. Form1.cs 클래스에 List<Person>을 데이터 멤버로 포함시키고, 파일열기, 파일저장, 추가, 수정, 삭제, 모두 삭제  버튼을 이용하여 사람 정보를 ListView에 새로운 항목으로 추가하거나, 선택된 항목의 수정 및 삭제 등이 가능하도록 이벤트 핸들러를 작성한다. (30%)

멤버 필드:

-private List<Person> pList;

-public Form1()

{

InitializeComponent();

pList = new List<Person>();

}

툴바 이벤트 핸들러:

// 파일을 읽어 리스트와 리스트뷰에 Person 추가

-private void loadFileButton_Click(object sender, EventArgs e)

// 리스트에 있는 모든 Person을 파일로 저장

-private void saveFileButton_Click(object sender, EventArgs e)

// 응용프로그램 종료

-private void closeButton_Click(object sender, EventArgs e)

- 텍스트파일은 CSV 포맷 (예: Test.csv를 사용하여 테스트해 볼 것)

김승훈, 1202, 041-550-3481, 3과420

박태근, 1204, 041-550-3486, 3과419

김대원, 1204, 041-550-3487, 3과418

박경신, 1207, 041-550-3469, 3과417

서병문, 1207, 041-550-3471, 3과407

정재진, 1209, 041-550-3482, 3과409

김태완, 1207, 041-550-3512, 학생회관

김명숙, 1207, 041-550-3511, 3과511

버튼 이벤트 핸들러:

// pList와 ListView1에 Person 항목 추가 (Person의 ToListViewItem() 사용할 것)

-private void addButton_Click(object sender, EventArgs e)

// pList와 ListView1에서 현재 선택된 Person 정보 수정

-private void editFileButton_Click(object sender, EventArgs e)

// pList와 ListView1에서 현재 선택된 Person 항목 삭제

-private void deleteButton_Click(object sender, EventArgs e)

// pList와 ListView1에서 모든 Person 항목 삭제

-private void deleteallButton_Click(object sender, EventArgs e)

리스트뷰 이벤트 핸들러:

// 리스트뷰에서 현재 선택된 항목을 사람 정보(이름/ID/전화번호/주소) TextBox에 출력

-private void listView1_ItemSelectionChanged(object sender,

ListViewItemSelectionChangedEventArgs e)

// 리스트뷰에서 현재 선택된 항목에 Person을 삭제

-private void listView1_DoubleClick(object sender, EventArgs e)

4. 생성한 폼을 이용하여 구현한 모든 메소드를 테스트한 결과를 스냅샷으로 찍어서 보고서에 제출한다. (10%)

- 파일 열기로 데이터를 읽어들여 리스트에 로딩

- 추가, 수정, 삭제, 모두삭제를 사용하여 5명 이상 Person 추가 또는 제거

- 리스트뷰의 항목을 선택(ItemSelectionChanged), 항목을 더블클릭(DoubleClick), 헤더의 칼럼을 클릭(ColumnClick)하는 기능 테스트

- 파일 저장을 사용하여 리스트에 있는 모든 데이터를 저장 (리스트뷰에 있는 정보와 저장한 파일의 정보가 동일한지 스냅샷으로 찍어서 비교해줄 것)

- 응용프로그램 종료

5. Person 또는 Form1에서 본인이 더 테스트해보고 싶은 Method를 추가하라. 예를 들어 리스트뷰의 칼럼을 클릭하면 그 순서대로 전체 항목을 정렬하는 것 등등. (10%)

http://msdn.microsoft.com/ko-kr/library/ms229643(VS.80).aspx

// 리스트뷰의 헤더(이름/ID 칼럼)을 클릭하면 그 순서대로 전체 항목 Sort (정렬)

-private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)