• 프로그래밍 언어 활용 part 1 - 애플리케이션 구현

    2021. 8. 1.

    by. 고구마달랭이

    애플리케이션 구현

    [학습내용] [학습목표]
    프로그램 설계
    코드 분석
    프로그래밍 개발 시 적절한 자료구조를 선택할 수 있다.
    ▪ 구조체를 사용하여 함수의 매개변수 전달을 구현할 수 있다.

    프로그램 설계

     

    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. 코드 분석

    ▪ 매크로 상수는 프로그램의 가독성을 높이고 유지보수를 편리하게 하는 장점이 있음

    ▪ 사용자 정의 헤더 파일은 “ ”를 이용하여 기술함

     

     

    댓글