-
애플리케이션 구현
[학습내용] [학습목표] ▪ 프로그램 설계
▪ 코드 분석▪ 프로그래밍 개발 시 적절한 자료구조를 선택할 수 있다.
▪ 구조체를 사용하여 함수의 매개변수 전달을 구현할 수 있다.프로그램 설계
1. 프로그램 기능 정의
프로그램 명 ▪ 성적 처리 프로그램 주요 기능 ▪ 학생들의 성적을 입력받고 평균을 구하여 성적순으로 출력하는 프로그램 자료 구조 ▪ 이름, 국어, 영어, 수학, 평균 요구 사항 ▪ 학생 이름은 10글자 이내
▪ 최대 20명의 학생 성적 처리
▪ 평균값 자동계산
▪메뉴 방식 UI
2. 자료구조 정의
자료 구조 ▪ 이름, 국어, 영어, 수학, 평균 struct sungjuk { char name[10]; int kor, eng, mat; double avg; }
3. 메뉴 구조
코드 분석
1. 헤더 파일
#include <stdio.h> #define ST_NUM 20 #define NAME_LENGTH 10 typedefstructsungjuk{ char name[NAME_LENGTH]; intkor, eng, mat; double avg; }SUNGJUK; int inScore(SUNGJUK* , int); void outScore(SUNGJUK* , int); void sortScore(SUNGJUK* , int);
2. main함수
int main(){ int sel, totalSCnt=0; SUNGJUK student[ST_NUM]; while(1){ puts("\n원하는 메뉴를 선택하세요"); puts("1. 성적입력"); puts("2. 성적순출력"); puts("0. 종료 "); scanf("%d", &sel); fflush(stdin); switch(sel){ case 1 : totalSCnt= inScore(student, totalSCnt); break; case 2 : outScore(student, totalSCnt); break; case 0 : return 0; default : puts(“0~3 사이의메뉴번호를선택하세요”); } } }
3. 입출력함수
#include "scoreHeader.h" int inScore(SUNGJUK* st, int cnt){ char op; do{ fflush(stdin); printf("\n이름 : "); gets(st[cnt].name); printf("국어 : "); scanf("%d",&st[cnt].kor); printf("영어 : "); scanf("%d",&st[cnt].eng); printf("수학 : "); scanf("%d",&st[cnt].mat); puts("계속 입력하시겠습니까?(y/n)"); fflush(stdin); op = getc(stdin); st[cnt].avg = (double)(st[cnt].kor+st[cnt].eng+st[cnt].mat)/3.0; cnt++; }while(op!='n'); return cnt; }
void outScore(SUNGJUK* st, int cnt){ int i; sortScore(st,cnt); printf("\n----------------------------------------------------"); printf("\n 순위 이름 국어 영어 수학 평균 "); printf("\n----------------------------------------------------\n"); for(i=0;i<cnt;i++){ printf("% 2d %10s %5d %5d %5d %3.1f\n", i+1, st[i].name, st[i].kor, st[i].eng, st[i].mat, st[i].avg); } }
void sortScore(SUNGJUK* st, int cnt){ SUNGJUK temp; int i,j; for(i=0; i<cnt-1 ;i++) { for(j=0; j<(cnt-i)-1; j++) { if(st[j].avg<st[j+1].avg) { temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } } } }
학습정리
1. 프로그램 설계
▪ 프로그램 개발 시 요구사항 분석 후 적절한 자료구조를 선택하는 것이 중요함
▪ 다양한 데이터 타입을 묶어서 처리할 필요가 있는 경우 적절한 자료구조는 구조체임
2. 코드 분석
▪ 매크로 상수는 프로그램의 가독성을 높이고 유지보수를 편리하게 하는 장점이 있음
▪ 사용자 정의 헤더 파일은 “ ”를 이용하여 기술함
'Blog > JAVA기반 스마트웹 개발2021' 카테고리의 다른 글
프로그래밍 언어 활용 part 2 - 디버깅 (0) 2021.08.08 프로그래밍 언어 활용 part 2 - 프로그래밍 언어별 특성 (0) 2021.08.08 프로그래밍 언어 활용 part 1 - 전처리기 (0) 2021.08.01 프로그래밍 언어 활용 part 1 - 배열 포인터 처리 (0) 2021.08.01 프로그래밍 언어 활용 part 1 - 스토리지 클래스 (0) 2021.08.01 댓글