SlideShare a Scribd company logo
1 of 12
Download to read offline
Excel을 이용한
시험지 생성 프로그램
16038020 김희진
INDEX
1. 프로그램 개요
2. 소스코드(변수, 메인)
3. WindowsForms
4. 실행 결과
5. 평가
1.
프로그램 개요
• 평소 혼자서 단어를 외울 때 단어장에 있는 순서대로만 외우게 된다.
• 제대로 암기가 되지 않는다.
• 혼자서도 단어를 잘 외울 수 있도록 자체적으로 단어시험을 보면 도
움이 될 것 같다고 생각했다.
• Excel로 만든 단어장에서 랜덤으로 단어를 뽑아내서 시험지를 만드
는 프로그램
2.
소스코드(변수 선언)
//excel file path
string strPath = "";
//current rowNum
//2 ~ last row
int intRow = 2; //단어장 시작
int intLastRow = 0; //단어장 끝
static int Qnum = 20; //시험보는 단어 갯수
int[] iNumber = new int[Qnum];
int RandomNumber = 0;
//excel 데이터 변수
static Excel.Application excelApp = null;
static Excel.Workbook wb = null;
static Excel.Worksheet ws = null;
static object[,] data;
<단어장.xsl>
변수 선언
2.
소스코드(메인코드)
ws.Cells[1, 1] = "번호";
ws.Cells[1, 2] = "단어";
ws.Cells[1, 3] = "히라가나";
ws.Cells[1, 4] = "뜻";
try
{
radmRow(); //랜덤으로 2~마지막줄 까지의 숫자에서 Qnum만큼 난수를 뽑아냄
for (int i = 1; i < Qnum + 1; i++)
{
intRow = iNumber[i - 1];
ws.Cells[i + 1, 1] = i;
ws.Cells[i + 1, 2] = data[intRow, 3].ToString();
ws.Cells[i + 1, 3] = data[intRow, 4].ToString();
ws.Cells[i + 1, 4] = data[intRow, 5].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
radmRow()로 난수를 뽑아낸 후
차례대로 셀을 채운다
2.
소스코드(메인코드)
void radmRow()
{
Random r = new Random();
int i = 0;
while (i != Qnum)
{
RandomNumber = r.Next(2, intLastRow + 1); //2~intLastRow 사이의 난수
if (!Numbers(RandomNumber,i)) // Numbers()가 false면 iNumber[]에 추가
{
iNumber[i] = RandomNumber;
i++;
}
}
}
private bool Numbers(int Num,int t)
{
bool selection = false;
for (int i = 0; i < t; i++)
{
if (iNumber[i] == Num) // 중복이면 true
{
selection = true;
break;
}
}
return selection;
}
Numbers()는 중복 확인 함수
2.
소스코드(메인코드)
wb.SaveAs(@"C:Users김희진DesktopTest.xls",
Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
wb.Close(true, misValue, misValue);
excelApp.Quit();
Marshal.ReleaseComObject(ws);
Marshal.ReleaseComObject(wb);
Marshal.ReleaseComObject(excelApp);
MessageBox.Show("바탕화면에 저장되었습니다.");
}
바탕화면에 저장
2.
소스코드(메인코드)
//시험지
ws1 = (Excel.Worksheet)wb.Worksheets.get_Item(1);
try
{
for (int i = 1; i < Qnum + 1; i++)
{
ws1.Cells[i + 1, 3] = "";
ws1.Cells[i + 1, 4] = "";
}
}
catch (Exception ex)
{
throw ex;
}
wb.SaveAs(@"C:Users김희진DesktopTest.xls“
…
시험지도 동일한 방식으로 만들되,
뜻을 적는 부분인 [,3],[,4]는 공백으로 남긴다
3.
WindowsForms
button3button4
4.
실행 결과
Test.xls Answer.xls
5.
평가
• 구현하고자 하였던 기능이 모두 구현되었다.
• 독학하는 사람들이 더 편하게 공부할 수 있을 것 같다.
• 저장 이력이 남았으면 좋겠다.
• 여러 파일을 한꺼번에 로드 할 수 있었으면 좋겠다.
• 시험지의 저장위치나
문제 문항 수를 따로 입력 받아서 사용할 수 있도록 업데이트 예정
참고사이트
✓ https://docs.microsoft.com/ko-
kr/office/troubleshoot/office-
developer/automate-excel-using-visual-
c-fill-data
✓ http://www.csharpstudy.com/Practical/Pra
c-excel.aspx
✓ https://blog.naver.com/wes534/221629981
939

More Related Content

What's hot

이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
quxn6
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
익성 조
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
연우 김
 

What's hot (20)

코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
 
Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉Modern C++의 타입 추론과 람다, 컨셉
Modern C++의 타입 추론과 람다, 컨셉
 
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scopeJavascript 함수(function) 개념, 호출패턴, this, prototype, scope
Javascript 함수(function) 개념, 호출패턴, this, prototype, scope
 
Mockito, Robobinding
Mockito, RobobindingMockito, Robobinding
Mockito, Robobinding
 
Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8Effective c++ 정리 chapter 8
Effective c++ 정리 chapter 8
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
 
Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3Effective C++ 정리 chapter 3
Effective C++ 정리 chapter 3
 
C++ Advanced 강의 1주차
C++ Advanced 강의 1주차C++ Advanced 강의 1주차
C++ Advanced 강의 1주차
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Javascript - Function
Javascript - FunctionJavascript - Function
Javascript - Function
 
Java standard(8~13)
Java standard(8~13)Java standard(8~13)
Java standard(8~13)
 
튜터링 #9 20120409
튜터링 #9 20120409튜터링 #9 20120409
튜터링 #9 20120409
 
Initializer list
Initializer listInitializer list
Initializer list
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
스파르탄스터디 E04 Javascript 객체지향, 함수형 프로그래밍
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4Effective c++ 정리 chapter 4
Effective c++ 정리 chapter 4
 

Similar to [C# Winform] make vocabulary test using excel

자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6
KoChungWook
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin
knight1128
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
 
Naver api for android
Naver api for androidNaver api for android
Naver api for android
Sangon Lee
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
seonhyung
 
10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스
유석 남
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
병걸 윤
 

Similar to [C# Winform] make vocabulary test using excel (20)

자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6
 
C review
C  reviewC  review
C review
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin
 
10장 결과 검증
10장 결과 검증10장 결과 검증
10장 결과 검증
 
3.포인터
3.포인터3.포인터
3.포인터
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
6 function
6 function6 function
6 function
 
Java mentoring of samsung scsc 0
Java mentoring of samsung scsc   0Java mentoring of samsung scsc   0
Java mentoring of samsung scsc 0
 
Naver api for android
Naver api for androidNaver api for android
Naver api for android
 
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수(닷넷, C#기초교육)C#선택적인수, 명명된 인수
(닷넷, C#기초교육)C#선택적인수, 명명된 인수
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
java_2장.pptx
java_2장.pptxjava_2장.pptx
java_2장.pptx
 
배열과 포인터
배열과 포인터배열과 포인터
배열과 포인터
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스10장 문자열 클래스와 파일 클래스
10장 문자열 클래스와 파일 클래스
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기
 

[C# Winform] make vocabulary test using excel