본문 바로가기
IT창고/C

학생 관리 프로그램 with C

by 창구창고 2007. 1. 22.
반응형
/**************************************************************
*  Name:                                 student number: 200210***        
*  Source: mint.c                                Executable: mint.exe
*  Cource: C programming1       Spring 2003                        
*  Assignment #1                Due Date: 03/21/2003
****************************************************************/
#include<stdio.h>
#include<math.h>
int avg_grade_var(int *, int); //평균, 학점, 편차 구하는 함수
int max_min(int *, int); //최대, 최소 구하는 함수
int start();//프로그램 시작시 돌아가는 함수
void start_end(void)//시작과 끝의 루프를 돌기위해 만든함수
{
        int i;
        while(i!=0){
                printf("Program Start is 1, Program End is 0 : ");//프로그램의 시작과 끝의 조건
                scanf("%d",&i);
                switch(i)//1이면 시작, 0이면 프로그램 종료
                {
                case 1:        start();
                        break;

                case 0: printf("Program End, Good bye!!!!!!!n");
                        break;
                }
        }
}
int main(void)
{
        //프로그램 소개및 라이센스
        printf("************************************n");
        printf("*This program is score calculation.*n");
        printf("************************************n");
        printf("*      copyleft 2003.03 by mint.   *n");
        printf("************************************n");
        start_end(); //시작할지 종료할지 정하는 함수로 이동
}
int start(void)
{
        int mark[10], i; //점수변수, 증가변수
        int score, oper; //점수자리변수, 메뉴선택 변수

        printf("***********************n");
        printf("  0 is top of program  n");//프로그램 처음으로
        printf("  How many score? -> ");
        scanf("%d",&score); //점수를 몇개 받을지 선언
        printf("***********************n");
        
        
        if(score == 0){
                //프로그램 처음으로 갈때 출력
                printf("++++++++++++++++++++++++++++++++n");
                printf("+         Program Top          +n");
                printf("++++++++++++++++++++++++++++++++n");
        }
        else if(score > 10){
                //프로그램 처음으로 갈때 출력
                printf("++++++++++++++++++++++++++++++++n");
                printf("+         Program Top          +n");
                printf("++++++++++++++++++++++++++++++++n");
        }
        else{
                //점수 받는 소스
        for(i=0;i<score;i++){
                printf("Enter score %d: ",i+1);
                scanf("%d",&mark[i]);
        }
        //메뉴 소스
        printf("n");
        printf("*********************************n");
        printf("*              Menu             *n");
        printf("*********************************n");
        printf("*  1. Average, Grade, Variance  *n");
        printf("*  2. Maximum, Minimum          *n");
        printf("*********************************n");
        printf("What kind of operation?");
        scanf("%d",&oper);

        //메뉴 선택시 실행할 함수
        if(oper == 1) avg_grade_var(mark, score);
        else max_min(mark, score);
}
        return 0;
}
int avg_grade_var(int *mark, int score)
{
        int i, reavg, avg, oper; //증가, 평균, 메뉴선택 변수
        float var, sum; //편차 변수
        
        //메뉴 소스
        printf(".................n");
        printf(":      Menu     :n");
        printf(". ...............n");
        printf(":  1. Average   :n");
        printf(":  2. Grade     :n");
    printf(":  3. Variance  :n");
        printf(":  4. All       :n");
        printf(".................n");
        //메뉴 선택 소스
        printf("What kind of operation? ");
        scanf("%d",&oper);
        
        //메뉴 실행 소스
        if(oper >= 0){
                printf("++++++++++++++++++++++n");//점수 나타내는 소스
                for(i=0; i<score; i++)                        
                        printf("+   Score # %d = %d   +n",i+1,mark[i]);
                //평균 구하는 소스
                avg=0;
                for(i=0; i<score; i++) avg=avg+mark[i];
                        reavg=avg/score;
                        printf("++++++++++++++++++++++++++++++++++++n");
                        printf("+         Average is      +   %d   +n",reavg);
                //학점 구하는 소스
                if(avg/score >= 90)
                        printf("+         Grade is        +    A   +n");
                else if(avg/score >= 80)
                        printf("+         Grade is        +    B   +n");
                else if(avg/score >= 70)
                        printf("+         Grade is        +    C   +n");
                else if(avg/score >= 60)
                        printf("+          Grade is       +    D   +n");
                else{
                        {
                        printf("+             Failed               +n");
                        printf("+ You must take this course again. +n");
                }
        }
                //편차구하는 소스
                sum=0;
                for(i=0; i<score; i++){
                        sum+=(float)pow((float)reavg-(float)mark[i], 2);
                }
                        var=(float)sqrt(sum/score);
                printf("+         Variance is     +  %2.2f  +n", var);
                printf("++++++++++++++++++++++++++++++++++++n");
        }
        return 0;
}

int max_min(int *mark, int score)
{
        int i, max, min; //증가, 최대, 최소 변수
        int oper; //메뉴 선택 변수

        //메뉴 소스
        printf(".................n");
        printf(":      Menu     :n");
        printf(". ...............n");
        printf(":  1. Maximum   :n");
        printf(":  2. Minimum   :n");
    printf(":  3. All       :n");
        printf(".................n");
        //메뉴 선택 소스
        printf("What kind of operation? ");
        scanf("%d",&oper);
        
        if(oper >= 0){
                printf("++++++++++++++++++++++n"); //점수 나타내는 소스
                for(i=0; i<score; i++)                        
                        printf("+   Score # %d = %d   +n",i+1,mark[i]);
                //최대 최소 구하는 소스
                min=1000;
                max=0;
                for(i=0; i<score; i++){
                        if(max<mark[i]) max = mark[i];
                        if(min>mark[i]) min = mark[i];
                        }
                printf("++++++++++++++++++++++n");
                printf("+Maximum score: + %d +n",max);
                printf("+Minimum score: + %d +n",min);
                printf("++++++++++++++++++++++n");
        }
        return 0;
}
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."