Page 256 고등학교 프로그래밍 교과서
P. 256
1 컴포넌트 및 배열 초기화: 폼이 생성될 때 실행되는 문장으로 폼에 배치한 컴포
넌트를 초기화하고, 프로그램에서 사용할 배열의 크기를 지정한다.
14 InitializeComponent( ); 컴포넌트 초기화
15 chongjum = new int[300]; 배열 초기화
16 average = new float[300];
17 grade = new byte[300];
18 score = new byte[300, 10];
2 총점, 평균, 등급 처리: ‘stuScore.txt’ 파일에 저장된 점수를 읽어서 총점, 평균, 등
급을 처리한다. 개인별 점수가 저장되는 시작 위치는 각 레코드의 시작점으로부
터 20바이트 이후에 저장되므로 파일 포인터 위치를 ‘(cnt recordSize)+20’으
로 계산하였다.
22 int cnt, sum;
23 byte level;
24 BinaryReader inStream = new BinaryReader(new FileStream
25 (@"C:\Data\stuScore.txt", FileMode.Open));
26 cnt = 0;
27 try { 파일 포인터 이동
28 while (true) {
29 inStream.BaseStream.Seek(cnt * recordSize, SeekOrigin.Begin);
peekChar( ) 30 if (inStream.PeekChar( ) = = -1) break;
스트림 객체의 다음 위치에서 더 이 31 inStream.BaseStream.Seek(cnt * recordSize + 20, SeekOrigin.Begin);
상 자료를 가져올 수 없으면 –1을
32 sum = 0;
반환한다.
33 for (int j = 0; j < 10; j++) 파일 포인터 이동
34 {
35 score[cnt, j] = inStream.ReadByte( );
36 sum += score[cnt, j];
37 }
38 chongjum[cnt] = sum; 총점을 배열에 보관
39 average[cnt] = (float)(sum / 10.0); 평균은 총점을 과목 수로 나눔.
40 level = (byte)(average[cnt] / 10); 평균에 따라 0~9등급으로 분류
41 if (level > 9) level = 9; 9보다 크면 9등급으로
42 grade[cnt] = level;
43 cnt++;
44 }
45 } catch {
46 MessageBox.Show(@"성적 파일(C:\Data\stuScore.txt)이 존재하는지 확인하십시오");
47 }
48 inStream.Close( );
254 Ⅲ. 프로그래밍 설계와 구현
(책)2015프로그래밍-교과서3차심의본 본문.indb 254 2017-09-05 오후 4:17:08