 닫기  
Code Type : C
 닫기  
Code Type : C
#include< stdio.h>
#include< stdlib.h>
#include< string.h>
#include
// todo : 토익 수정 , 전체평점 토익입력, 유져 노말 입력
// readme.txt 와 result.txt를 만들까 말까;;;
typedef struct USERSTR
{
    char name[30];
    double score;
    int year;
    int term;
}USER;
typedef struct LISTSTR
{
    char name[30];
    int year;
    int term;
    int inpil;
    int major;
    int culture;
    int sisoo;
}LIST;
typedef struct TOEICSTR
{
    int score;
}TOEIC;
#define MAX 100
int list_limit=0;
int user_limit=0;
int toeic_limit=0;
void save(USER *user, LIST *list, TOEIC *toeic);
void load(USER *user, LIST *list, TOEIC *toeic);
void clrview();
void help_menu();
void about_menu();
void main_menu();
void grade_menu(USER *user, LIST *list, TOEIC *toeic);
void list_menu(USER *user, LIST *list, TOEIC *toeic);
void toeic_menu(USER *user, LIST *list, TOEIC *toeic);
void load_list(USER *user, LIST *list, TOEIC *toeic);
void mystats(USER *user, LIST *list, TOEIC *toeic);
void list_view(LIST *list);
void user_view(USER *user);
void toeic_view(TOEIC *toeic);
void user_manager_quick (USER *user, LIST *list, TOEIC *toeic);
void user_manager (USER *user, LIST *list, TOEIC *toeic);
void list_manager (USER *user, LIST *list, TOEIC *toeic);
void toeic_manager (USER *user, LIST *list, TOEIC *toeic);
void sort_manager (USER *user, LIST *list, TOEIC *toeic);
void change_manager(USER *user, LIST *list, TOEIC *toeic, char *name, int i, int mode);
void delete_manager(USER *user,LIST *list, TOEIC *toeic,int mode);
void grade_cal(); // 간이 평점 계산기
char *grade(double score);
char *pil(int no);
void main()
{
    char temp[10]={0};
    char *sel;
    USER *user={0};
    LIST *list={0};
    TOEIC *toeic={0};
    user = (USER*)malloc(sizeof(USER) * MAX);
    list = (LIST*)malloc(sizeof(LIST) * MAX);
    toeic = (TOEIC*)malloc(sizeof(TOEIC) * MAX);
    load(user, list, toeic); // 데이터 읽어오기, 없을경우 만들어짐 ㅋㅋㅋ
    sel=temp;
    while(1)
    {
        main_menu();
        gets_s(sel,5);
        sel=strupr(sel);
        if (*sel=='1') // 성적 관리
            grade_menu(user, list, toeic);
        if (*sel=='2') // 수강 과목 관리
            list_menu(user, list, toeic);
        if (*sel=='3') // 토익 과목 관리
            toeic_menu(user, list, toeic);
        if (*sel=='4') // 현재 상황
            mystats(user, list, toeic);
        if (*sel=='5') // 간이 평점 계산기
            grade_cal();
        if (!strcmp(sel,"H")) // 도움말
            help_menu();
        if (!strcmp(sel,"A")) // 본 프로그램에 대해서
            about_menu();
        if (!strcmp(sel,"X")) // 끝내기
        {
            save(user, list, toeic);
            break;
        }
    }
}
void save(USER *user, LIST *list, TOEIC *toeic)
{
    FILE *user_man, *list_man, *toeic_man;
    user_man = fopen("user.txt", "w");
    fwrite(&user_limit, sizeof(user_limit),1,user_man);
    fwrite(user, sizeof(USER)*MAX,1,user_man);
    fclose(user_man);
    list_man = fopen("list.txt", "w");
    fwrite(&list_limit, sizeof(list_limit),1,list_man);
    fwrite(list, sizeof(USER)*MAX,1,list_man);
    fclose(list_man);
    
    toeic_man = fopen("toeic.txt", "w");
    fwrite(&toeic_limit, sizeof(toeic_limit),1,toeic_man);
    fwrite(toeic, sizeof(USER)*MAX,1,toeic_man);
    fclose(toeic_man);
}
void load(USER *user, LIST *list, TOEIC *toeic)
{
    FILE *user_man, *list_man, *toeic_man;
    // 성적 입력부분과 과목 입력 부분이 없다면 새로 만든다.
    user_man = fopen("user.txt", "r");
    if(!user_man)
    {
        user_man = fopen("user.txt", "w+");
        fclose(user_man);
    }
    else
    {
        fread(&user_limit, sizeof(user_limit),1,user_man);
        fread(user, sizeof(USER)*MAX,1,user_man);
        fclose(user_man);
    }
    list_man = fopen("list.txt", "r");
    if(!list_man)
    {
        list_man = fopen("list.txt", "w+");
        fclose(list_man);
    }
    else
    {
        fread(&list_limit, sizeof(list_limit),1,list_man);
        fread(list, sizeof(LIST)*MAX,1,list_man);
        fclose(list_man);
    }
    
    toeic_man = fopen("toeic.txt", "r");
    if(!toeic_man)
    {
        toeic_man = fopen("toeic.txt", "w+");
        fclose(toeic_man);
    }
    else
    {
        fread(&toeic_limit, sizeof(toeic_limit),1,toeic_man);
        fread(toeic, sizeof(TOEIC)*MAX,1,toeic_man);
        fclose(toeic_man);
    }
}
void clrview()
{    
    system("cls");
}
void help_menu()
{
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("##                 For My Future - Help                 ##");
    puts("##----------------------------------------------------------------------##");
    puts("##  공학인증에 특화된 미래를 위한 성적 관리 프로그램 ( 광운대학교 용 )  ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");
    puts("##  주의 - 자세한 사항은 ReadMe.txt를 읽어보세요.                ##");
    puts("##                                               ##");
    puts("##  1. 성적 관리 - 수강 과목 중에서 자신이 수강한 과목의 성적을 입력,  ##");
    puts("##            관리하며, 평점등의 상황을 볼 수 있습니다.        ##");  
    puts("##                                               ##");
    puts("##  2. 수강 과목 관리 - 학기별 자신이 수강해야할 과목이나,          ##");
    puts("##               공학인증 과목을 설정 하고 관리 해줍니다.      ##");
    puts("##                                               ##");
    puts("##  3. 토익 점수 관리 - 자신의 토익 점수를 관리 합니다.            ##");
    puts("##                                               ##");
    puts("##  4. 현재 상황 보기 - 파일, 화면으로 전체 상황을 확인합니다.       ##");
    puts("##                                               ##");
    puts("##  5. 간이 평점 계산기 - 성적과 학점만을 입력하여 빠르게 평점을 확인  ##");
    puts("##                ( 이경우 파일에 저장되지 않습니다. )       ##");    
    puts("##                                               ##");
    puts("##----------------------------------------------------------------------##");
    system("pause");
}
void about_menu()
{
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("##                For My Future - About                 ##");
    puts("##----------------------------------------------------------------------##");
    puts("##  공학인증에 특화된 미래를 위한 성적 관리 프로그램 ( 광운대학교 용 )  ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");
    puts("##  성공적인 취업을 위한 학점 관리 프로그램입니다.               ##");
    puts("##  기본적으로 자신의 학점과 토익 성적등 졸업에 필요한 자료들을      ##");
    puts("##  입력한뒤 추후 관리를 할 수 있도록 만들어 주는 프로그램입니다.     ##");
    puts("##  공학인증제를 하는 학생들을 위해 자신이 이수해야할 과목등을       ##");
    puts("##  알려주며 자신이 이수한 과목등에 대해 철저하게 관리를 해줍니다.    ##");
    puts("##                                               ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");
    puts("##  본 프로그램은 2007년 고급 프로그래밍 및 실습의 프로젝트를 위해    ##");
    puts("##  작성되고, 제출되는 프로그램입니다.                       ##");
    puts("##                                               ##");
    puts("##  소스코드는 광운대학교 전자통신공학과 3학년                  ##");
    puts("##  오형탁 ( 2002711158 ) , 김철기 ( 2005709043 ) 가 작성하였습니다.   ##");
    puts("##                                               ##");
    puts("##----------------------------------------------------------------------##");
    system("pause");
}
void main_menu()
{
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("##                    For My Future                   ##");
    puts("##----------------------------------------------------------------------##");
    puts("##  공학인증에 특화된 미래를 위한 성적 관리 프로그램 ( 광운대학교 용 )  ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");
    puts("##  1. 성적 관리    ##  2. 수강 과목 관리   ##  3. 토익 점수 관리    ##");
    puts("##                                               ##");
    puts("##  4. 파일 또는 화면으로 현재 상황 보기    ##  5. 간이 평점 계산기  ##");
    puts("##                                               ##");
    puts("##  a. 본 프로그램에 대해서...           ##  h. 도움말 보기      ##");
    puts("##                                               ##");
    puts("##----------------------------------------------------------------------##");
    printf(">> 원하시는 메뉴를 고르세요 ( Quit : X ) --> ");
}
void user_manager_quick (USER *user, LIST *list, TOEIC *toeic)
{
    int i=0,same=0;
    char name[30],*temp;
    temp=name;
    printf("\n빠른 입력 모드입니다. ( Quit : 엔터 )\n");
    while(list_limit < MAX)
    {
        same=0;
        printf("\n수강 과목 이름 ( Quit : 엔터 ) : ");
        gets(temp);
        if(*temp == '\0')
            break;
        // 중복 확인부분
        for(i=0;iname)==0)
            {
                same=1;
                printf("기존에 있던 리스트 과목명과 동일합니다. ");
                break;
            }
        for(i=0;iname)==0)
            {
                same=1;
                printf("기존에 있던 과목명과 동일합니다. 수정하시겠습니까? ( Y or N ) : ");
                gets(temp);
                if(*temp == 'y'||*temp == 'Y')
                    change_manager(user, list, toeic, (user+i)->name, i, 1 );
                break;
            }
        if(!same)
        {
            strcpy(user[user_limit].name,temp);
            strcpy(list[list_limit].name,temp);
            printf("받은점수 : ");
            gets(temp);
            if(!*temp) break;
            temp=strupr(temp);
            if(!strcmp(temp,"A+")) (user+user_limit)->score=4.5;
            else if(!strcmp(temp,"A")) (user+user_limit)->score=4.0;
            else if(!strcmp(temp,"B+")) (user+user_limit)->score=3.5;
            else if(!strcmp(temp,"B")) (user+user_limit)->score=3.0;
            else if(!strcmp(temp,"C+")) (user+user_limit)->score=2.5;
            else if(!strcmp(temp,"C")) (user+user_limit)->score=2.0;
            else if(!strcmp(temp,"D+")) (user+user_limit)->score=1.5;
            else if(!strcmp(temp,"D")) (user+user_limit)->score=1.0;
            else if(!strcmp(temp,"F")) (user+user_limit)->score=0;
            else (user+user_limit)->score=atof(temp);
            
            printf("수강연도 : ");
            scanf("%d", &(user+user_limit)->year);
            fflush(stdin);
            if ((user+user_limit)->year<100)(user+user_limit)->year+=2000;
            (list+list_limit)->year=(user+user_limit)->year;
            while(1)
            {
                printf("수강 학기 ( 1: 봄학기 2: 가을학기 3:여름계절 4: 겨울계절 ) : ");
                scanf("%d", &(user+user_limit)->term);
                fflush(stdin);
                (list+list_limit)->term=(user+user_limit)->term;
                if((list+list_limit)->term>0 && (list+list_limit)->term<5) break;
            }
            while(1)
            {
                printf("인증 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->inpil);
                fflush(stdin);
                if(((list+list_limit)->inpil)>=0 && ((list+list_limit)->inpil)<2) break;
            }
            while(1)
            {
                printf("전공 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->major);
                fflush(stdin);
                if(((list+list_limit)->major)>=0 && ((list+list_limit)->major)<2) break;
            }
            while(1)
            {
                printf("교양 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->culture);
                fflush(stdin);
                if(((list+list_limit)->culture)>=0 && ((list+list_limit)->culture)<2) break;
            }
            while(1)
            {
                printf("학점 (시수) ( 1,2,3 ) : ");
                scanf("%d", &(list+list_limit)->sisoo);
                fflush(stdin);
                if(((list+list_limit)->sisoo)>0 && ((list+list_limit)->sisoo)<4) break;
            }
            user_limit++;
            list_limit++;
        }
        sort_manager(user,list,toeic);
    }
}
void user_manager (USER *user, LIST *list, TOEIC *toeic)
{
    int i=0,same=0;
    char name[30],*temp;
    temp=name;
    while(user_limit < MAX)
    {
        //clrview();
        //list_view(list);
        printf("\n일반 입력 모드입니다. ( Quit : 엔터 , 수강한 과목 : 'p' , 기존 리스트 : 'l')\n");
        same=0;
        printf("\n수강 과목 이름 ( Quit : 엔터 ) :");
        gets(temp);
        if(*temp == '\0')
            break;
        if(*temp == 'l'||*temp == 'L')
        {
            list_view(list);
            same=1;
        }
        if(*temp == 'p'||*temp == 'P')
        {
            user_view(user);
            same=1;
        }
        for(i=0;iname)==0)
            {
                same=0;
                break;
            }
        for(i=0;iname)==0)
            {
                same=1;
                printf("기존에 수강한 과목명과 동일합니다.");
                system("pause");
                break;
            }
        if(!same)
        {
            strcpy(user[user_limit].name,temp);
            printf("받은점수 : ");
            gets(temp);
            if(!*temp) break;
            temp=strupr(temp);
            if(!strcmp(temp,"A+")) (user+user_limit)->score=4.5;
            else if(!strcmp(temp,"A")) (user+user_limit)->score=4.0;
            else if(!strcmp(temp,"B+")) (user+user_limit)->score=3.5;
            else if(!strcmp(temp,"B")) (user+user_limit)->score=3.0;
            else if(!strcmp(temp,"C+")) (user+user_limit)->score=2.5;
            else if(!strcmp(temp,"C")) (user+user_limit)->score=2.0;
            else if(!strcmp(temp,"D+")) (user+user_limit)->score=1.5;
            else if(!strcmp(temp,"D")) (user+user_limit)->score=1.0;
            else if(!strcmp(temp,"F")) (user+user_limit)->score=0;
            else (user+user_limit)->score=atof(temp);
            printf("수강연도 : ");
            scanf("%d", &(user+user_limit)->year);
            fflush(stdin);
            if ((user+user_limit)->year<100)(user+user_limit)->year+=2000;
            (list+list_limit)->year=(user+user_limit)->year;
            while(1)
            {
                printf("수강 학기 ( 1: 봄학기 2: 가을학기 3:여름계절 4: 겨울계절 ) : ");
                scanf("%d", &(user+user_limit)->term);
                fflush(stdin);
                (list+list_limit)->term=(user+user_limit)->term;
                if((list+list_limit)->term>0 && (list+list_limit)->term<5) break;
            }
            user_limit++;
        }
        sort_manager(user,list,toeic);
    }
}
void sort_manager (USER *user, LIST *list, TOEIC *toeic)
{
    int i=0,j=0;
    USER user_temp;
    LIST list_temp;
    TOEIC toeic_temp;
    for(i=0;iyear*10+(user+i)->term) < ((user+j)->year*10+(user+j)->term) )
            {
                user_temp = *(user+i);
                *(user+i) = *(user+j);
                *(user+j) = user_temp;
            }
    for(i=0;iyear*10+(list+i)->term) < ((list+j)->year*10+(list+j)->term) )
            {
                list_temp = *(list+i);
                *(list+i) = *(list+j);
                *(list+j) = list_temp;
            }
    for(i=0;iscore < (toeic+j)->score )
            {
                toeic_temp = *(toeic+i);
                *(toeic+i) = *(toeic+j);
                *(toeic+j) = toeic_temp;
            }
}
void grade_menu(USER *user, LIST *list, TOEIC *toeic)
{
    char temp[10];
    char *sel;
    sel=temp;
    
    while(1)
    {
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("##              For My Future - 성적 관리기                ##");
    puts("##----------------------------------------------------------------------##");
    puts("##      성적 관리 메뉴 입니다.  원하는 메뉴를 선택하세요.        ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");
    puts("## 1. 빠른 입력  -  수강 과목 관리를 거치지 않고 빠르게 입력합니다.    ##");
    puts("##                                               ##");
    puts("## 2. 일반 입력  -  수강 과목 관리에 입력된 데이터를 토대로 자신의    ##");
    puts("##            학점을 입력 받습니다.                     ##");
    puts("##                                               ##");
    puts("## 3. 목록 보기  -  자신이 입력한 데이터를 살펴 봅니다.            ##");
    puts("##                                               ##");
    puts("## 4. 평점 보기  -  전체적인 학점을 봅니다.                    ##");
    puts("##                                               ##");
    puts("## 5. 과목 삭제  -  리스트내의 과목중 원하는 과목을 삭제 합니다.      ##");
    puts("##                                               ##");
    puts("##----------------------------------------------------------------------##");
    printf(">> 현재 %03d 건의 성적이 입력되어 있습니다.\n>> 메뉴를 선택하세요 ( Quit : X )  --> ",user_limit);
        gets_s(sel,5);
        sel=strupr(sel);
        if (*sel=='1') // 빠른 입력
            user_manager_quick(user, list,toeic);
        if (*sel=='2') // 일반입력
            user_manager(user, list,toeic);
        if (*sel=='3') // 수강과목 보기
            user_view(user);
        if (*sel=='4') // 평점보기
            mystats(user,list, toeic);
        if (*sel=='5') // 과목 삭제
            delete_manager(user,list,toeic,1);
        if (!strcmp(sel,"X")) // 끝내기
            break;
    }
}
void list_menu(USER *user, LIST *list, TOEIC *toeic)
{
    char temp[10];
    char *sel;
    sel=temp;
    
    while(1)
    {
        clrview();
        puts("##----------------------------------------------------------------------##");
        puts("##            For My Future - 수강 과목 관리기              ##");
        puts("##----------------------------------------------------------------------##");
        puts("##     수강 과목  관리 메뉴 입니다.  원하는 메뉴를 선택하세요.     ##");
        puts("##----------------------------------------------------------------------##");
        puts("##                                               ##");
        puts("## 1. 과목 입력  -  자신이 수강할 과목이나 수강한 과목의 기본 정보를   ##");
        puts("##            입력하거나 수정 관리 합니다.                ##");
        puts("##                                               ##");
        puts("## 2. 과목 보기  -  특정한 학기나, 전체적인 과목을 봅니다.          ##");
        puts("##                                               ##");
        puts("## 3. 과목 삭제  -  리스트내의 과목중 원하는 과목을 삭제 합니다.      ##");
        puts("##                                               ##");
        puts("##----------------------------------------------------------------------##");
        printf(">> 현재 %03d 건의 과목이 입력되어 있습니다.\n>> 메뉴를 선택하세요 ( Quit : X )  --> ",list_limit);
                
        gets_s(sel,5);
        sel=strupr(sel);
        if (*sel=='1') // 과목 입력
            list_manager(user, list,toeic);
        if (*sel=='2') // 과목 보기
            list_view(list);
        if (*sel=='3') // 과목 삭제
            delete_manager(user,list,toeic,2);
        if (!strcmp(sel,"X")) // 끝내기
            break;
    }
}
void toeic_menu(USER *user, LIST *list, TOEIC *toeic)
{
    char temp[10];
    char *sel;
    sel=temp;
    
    while(1)
    {
        clrview();
        puts("##----------------------------------------------------------------------##");
        puts("##             For My Future - 토익 점수 관리              ##");
        puts("##----------------------------------------------------------------------##");
        puts("##     토익 점수  관리 메뉴 입니다.  원하는 메뉴를 선택하세요.     ##");
        puts("##----------------------------------------------------------------------##");
        puts("##                                               ##");
        puts("## 1. 점수 입력  -  자신이 받은 토익점수를 입력합니다.            ##");
        puts("##                                               ##");
        puts("## 2. 점수 보기  -  전체적인 토익점수를 봅니다.                 ##");
        puts("##                                               ##");
        puts("## 3. 점수 삭제  -  특정 점수를 삭제 합니다.                   ##");
        puts("##                                               ##");
        puts("##----------------------------------------------------------------------##");
        printf(">> 현재 %03d 건의 토익점수가 입력되어 있습니다.\n>> 메뉴를 선택하세요 ( Quit : X )  --> ",toeic_limit);
                
        gets_s(sel,5);
        sel=strupr(sel);
        if (*sel=='1') // 과목 입력
            toeic_manager(user, list, toeic);
        if (*sel=='2') // 점수 보기
            toeic_view(toeic);
        if (*sel=='3') // 과목 삭제
            delete_manager(user,list,toeic,3);
        if (!strcmp(sel,"X")) // 끝내기
            break;
    }
}
void mystats(USER *user, LIST *list, TOEIC *toeic)
{
    int i,j,k=0,limit=0,l=0,sisoo=0,m=0;
    int toeic_top_score=0,total_sisoo=0;
    int temp_year=0,year_count=0,term_count=0,total_count=0;
    double total_year=0,total_term=0,total_all=0;
    char pass[5]="불가";
    for(i=0;iscore)
            toeic_top_score=(toeic+i)->score;
    if(toeic_top_score>=600)
        strcpy(pass,"가능");
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("##               For My Future - 현재 상황                ##");
    puts("##----------------------------------------------------------------------##");
    puts("##                                               ##");    
    temp_year=(user)->year*10+(user)->term;
    limit=user_limit;
    for(i=0;iyear*10+(user+i)->term==(user+j)->year*10+(user+j)->term )
            {
                k++;
                for(l=0;lname,(list+l)->name ) )
                        sisoo=(list+l)->sisoo;
                }
                total_term+=((user+j)->score*sisoo);
                total_sisoo+=sisoo;
                total_all+=((user+j)->score*sisoo);
                total_count+=sisoo;
            }
        }
        i=k-1;
        printf("##  %4d년 %d학기 -  %2d개의 과목 , 평점 : %1.3f                  ##\n"
                ,(user+i)->year,(user+i)->term,k-m,total_term/total_sisoo);
        total_term=0;
        total_sisoo=0;
        m=k;
    }
        
    puts("##                                               ##");
    printf("##  전체 평점 - 과목 : %2d개의 과목 ,  평점 : %1.3f               ##\n"
        ,user_limit,total_all/total_count);
    puts("##                                               ##");
    printf("##  토익 점수 - 총 %02d 개의 입력중 최고점은 %3d 입니다. 졸업 %s      ##\n",toeic_limit,toeic_top_score,pass);
    puts("##                                               ##");
    puts("## 상세 정보는 Report.txt 를 확인하세요.                      ##");
    puts("##----------------------------------------------------------------------##");
    system("pause");
}
void list_view(LIST *list)
{
    int i=0;
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("## No. |  과목명                 |연도|학기|인필|전공|교양|시수 ##");
    puts("##----------------------------------------------------------------------##");
    for(i=0;iname,(list+i)->year,(list+i)->term,pil((list+i)->inpil),pil((list+i)->major),pil((list+i)->culture),(list+i)->sisoo);
        if(i%16==15)
        {
            puts("##----------------------------------------------------------------------##");
            system("pause");
            puts("##----------------------------------------------------------------------##");
            puts("## No. |  과목명                 |연도|학기|인필|전공|교양|시수 ##");
            puts("##----------------------------------------------------------------------##");
        }
    }
    puts("##----------------------------------------------------------------------##");
    system("pause");
}
void user_view(USER *user)
{
    int i=0;
    clrview();
    puts("##----------------------------------------------------------------------##");
    puts("## No. |  과목명                     | 연도 | 학기 | 받은점수 ##");
    puts("##----------------------------------------------------------------------##");
    for(i=0;iname,(user+i)->year,(user+i)->term,(user+i)->score);
        if(i%16==15)
        {
            puts("##----------------------------------------------------------------------##");
            system("pause");
            puts("##----------------------------------------------------------------------##");
            puts("## No. |  과목명                     | 연도 | 학기 | 받은점수 ##");
            puts("##----------------------------------------------------------------------##");
        }
    }
    puts("##----------------------------------------------------------------------##");
    system("pause");
}
void toeic_view(TOEIC *toeic)
{
    int i=0;
    clrview();
    puts("##-------------------##");
    puts("## No. |  받은 점수  ##");
    puts("##-------------------##");
    for(i=0;iscore);
        if(i%16==15)
        {
            puts("##-------------------##");
            system("pause");
            puts("##-------------------##");
            puts("## No. |  받은 점수  ##");
            puts("##-------------------##");
        }
    }
    puts("##-------------------##");
    system("pause");
}
char *grade(double score)
{
    char *grade;
    grade = (char *)calloc(2, sizeof(char));
    if(score >= 4.5) strcpy(grade, "A+");
    else if(score >= 4.0) strcpy(grade, "A");
    else if(score >= 3.5) strcpy(grade, "B+");
    else if(score >= 3.0) strcpy(grade, "B");
    else if(score >= 2.5) strcpy(grade, "C+");
    else if(score >= 2.0) strcpy(grade, "C");
    else if(score >= 1.5) strcpy(grade, "D+");
    else if(score >= 1.0) strcpy(grade, "D");
    else strcpy(grade, "F");
    return grade;
}
char *pil(int no)
{
    char *grade;
    grade = (char *)calloc(2, sizeof(char));
    return (no) ? strcpy(grade, "필수"):strcpy(grade, "아님");
}
void list_manager (USER *user, LIST *list, TOEIC *toeic)
{
    int i=0,same=0;
    char name[30],*temp;
    temp=name;
    while(list_limit < MAX)
    {
        printf("\n리스트입력모드입니다. ( Quit : 엔터 , 기존 리스트 : 'l' )");
        same=0;
        printf("\n수강 과목 이름 : ");
        gets(temp);
        if(*temp == '\0')
            break;
        if(*temp == 'l'||*temp == 'L')
        {
            list_view(list);
            same=2;
        }
        // 중복 확인부분
        for(i=0;iname)==0)
            {
                same=1;
                printf("기존에 있던 과목명과 동일합니다. 수정하시겠습니까? ( Y or N ) : ");
                gets(temp);
                if(*temp == 'y'||*temp == 'Y')
                    change_manager(user, list, toeic,(list+i)->name, i, 2 );
                break;
            }
        if(!same)
        {
            strcpy((list+list_limit)->name,temp);
            printf("수강연도 : ");
            scanf("%d", &(list+list_limit)->year);
            fflush(stdin);
            if ((list+list_limit)->year<100)(list+list_limit)->year+=2000;
            while(1)
            {
                printf("수강 학기 ( 1: 봄학기 2: 가을학기 3:여름계절 4: 겨울계절 ) : ");
                scanf("%d", &(list+list_limit)->term);
                fflush(stdin);
                if((list+list_limit)->term>0 && (list+list_limit)->term<5) break;
            }
            while(1)
            {
                printf("인증 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->inpil);
                fflush(stdin);
                if(((list+list_limit)->inpil)>=0 && ((list+list_limit)->inpil)<2) break;
            }
            while(1)
            {
                printf("전공 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->major);
                fflush(stdin);
                if(((list+list_limit)->major)>=0 && ((list+list_limit)->major)<2) break;
            }
            while(1)
            {
                printf("교양 (1:필수 0:선택) : ");
                scanf("%d", &(list+list_limit)->culture);
                fflush(stdin);
                if(((list+list_limit)->culture)>=0 && ((list+list_limit)->culture)<2) break;
            }
            while(1)
            {
                printf("학점 (시수) ( 1,2,3 ) : ");
                scanf("%d", &(list+list_limit)->sisoo);
                fflush(stdin);
                if(((list+list_limit)->sisoo)>0 && ((list+list_limit)->sisoo)<4) break;
            }
            list_limit++;
        }
    sort_manager(user,list,toeic);
    }
}
void toeic_manager (USER *user, LIST *list, TOEIC *toeic)
{
    int i=0,same=0;
    char name[30],*temp;
    temp=name;
    while(toeic_limit < MAX)
    {
        same=0;
        printf("\n%d번째 토익 성적을 입력해 주시기 바랍니다. ( Quit : 엔터 , 기존 리스트 : 'l' )",toeic_limit+1);
        printf("\n받은 점수 : ");
        gets(temp);
        if(*temp == '\0')
            break;
        if(*temp == 'l'||*temp == 'L')
        {
            toeic_view(toeic);
            same=1;
        }
        if(!same)
        {
            (toeic+toeic_limit)->score=atoi(temp);
            toeic_limit++;
        }
    sort_manager(user,list,toeic);
    }
}
void change_manager(USER *user, LIST *list, TOEIC *toeic,char *name, int i, int mode)
{
    int choice=0,j=0;
    char *temp;
    temp = (char*)malloc(30*sizeof(char));
    if(mode==1) // 유져모드
    {
        while(choice < 1 || choice > 4)
        {
            printf("\n# ------ 수정하고자 하는 항목을 선택해 주세요 ------ #");
            printf("\n1.수강 과목 이름");
            printf("\n2.수강 연도");
            printf("\n3.수강 학기");
            printf("\n4.평점 (받은점수)");
            printf("\n선택: ");
            scanf("%d", &choice);
            fflush(stdin);
        }
        switch(choice)
        {
            case 1:
                printf("\n기존 수강 과목 이름 : %s \n수정할 이름을 입력: ",name);
                gets(temp);
                if(*temp == '\0')
                    break;
                for(j=0;jname)==0)
                    {
                        puts("기존에 있던 과목명과 동일합니다.");
                        break;
                    }
                strcpy((user+i)->name,temp);
                break;
            case 2:
                printf("\n기존 수강 연도 : %d \n 수정할 수강 연도 : ",(user+i)->year);
                scanf("%d", &(user+i)->year);
                fflush(stdin);
                break;
            case 3:
                while(1)
                {
                    printf("\n기존 수강 학기 : %d \n수강 학기 ( 1: 봄학기 2: 가을학기 3:여름계절 4: 겨울계절 ) : ",(user+i)->term);
                    scanf("%d", &(user+i)->term);
                    fflush(stdin);
                    if((user+i)->term>0 && (user+i)->term<5) break;
                }
                break;
            case 4:
                while(1)
                {
                    printf("\n기존 받은점수 : %f\n수정할 점수 입력 : ",(user+i)->score);
                    gets(temp);
                    if(!*temp) break;
                    temp=strupr(temp);
                    if(!strcmp(temp,"A+")) (user+i)->score=4.5;
                    else if(!strcmp(temp,"A")) (user+i)->score=4.0;
                    else if(!strcmp(temp,"B+")) (user+i)->score=3.5;
                    else if(!strcmp(temp,"B")) (user+i)->score=3.0;
                    else if(!strcmp(temp,"C+")) (user+i)->score=2.5;
                    else if(!strcmp(temp,"C")) (user+i)->score=2.0;
                    else if(!strcmp(temp,"D+")) (user+i)->score=1.5;
                    else if(!strcmp(temp,"D")) (user+i)->score=1.0;
                    else if(!strcmp(temp,"F")) (user+i)->score=0;
                    else (user+i)->score=atof(temp);
                    break;
                }
                break;
        }
    }
    if(mode==2)
    {
        while(choice < 1 || choice > 7)
        {
            printf("\n# ------ 수정하고자 하는 항목을 선택해 주세요 ------ #");
            printf("\n1.수강 과목 이름");
            printf("\n2.수강 연도");
            printf("\n3.수강 학기");
            printf("\n4.인증 필수 유무");
            printf("\n5.전공 필수 유무");
            printf("\n6.교양 필수 유무");
            printf("\n7.학점 (시수)");
            printf("\n선택: ");
            scanf("%d", &choice);
            fflush(stdin);
        }
        switch(choice)
        {
            case 1:
                printf("\n기존 수강 과목 이름 : %s \n수정할 이름을 입력: ",name);
                gets(temp);
                if(*temp == '\0')
                    break;
                for(j=0;jname)==0)
                    {
                        puts("기존에 있던 과목명과 동일합니다.");
                        break;
                    }
                strcpy((list+i)->name,temp);
                break;
            case 2:
                printf("\n기존 수강 연도 : %d \n 수정할 수강 연도 : ",(list+i)->year);
                scanf("%d", &(list+i)->year);
                fflush(stdin);
                break;
            case 3:
                while(1)
                {
                    printf("\n기존 수강 학기 : %d \n수강 학기 ( 1: 봄학기 2: 가을학기 3:여름계절 4: 겨울계절 ) : ",(list+i)->term);
                    scanf("%d", &(list+i)->term);
                    fflush(stdin);
                    if((list+i)->term>0 && (list+i)->term<5) break;
                }
                break;
            case 4:
                while(1)
                {
                    printf("\n기존 인증 필수 유무 : %s\n인증 (1:필수 0:선택) : ",pil((list+i)->inpil));
                    scanf("%d", &(list+i)->inpil);
                    fflush(stdin);
                    if(((list+i)->inpil)>=0 && ((list+i)->inpil)<2) break;
                }
                break;
            case 5:
                while(1)
                {
                    printf("\n기존 전공 필수 유무 : %s\n전공 (1:필수 0:선택) : ",pil((list+i)->major));
                    scanf("%d", &(list+i)->major);
                    fflush(stdin);
                    if(((list+i)->major)>=0 && ((list+i)->major)<2) break;
                }
                break;
            case 6:
                while(1)
                {
                    printf("\n기존 교양 필수 유무 : %s\n교양 (1:필수 0:선택) : ",pil((list+i)->culture));
                    scanf("%d", &(list+i)->culture);
                    fflush(stdin);
                    if(((list+i)->culture)>=0 && ((list+i)->culture)<2) break;
                }
                break;
            case 7:
                while(1)
                {
                    printf("\n기존 학점 ( 시수 ) : %d 학점\n학점 (시수) ( 1,2,3 ) : ",(list+i)->sisoo);
                    scanf("%d", &(list+i)->sisoo);
                    fflush(stdin);
                    if(((list+i)->sisoo)>0 && ((list+i)->sisoo)<4) break;
                }
                break;
        }
    }
    sort_manager(user,list,toeic);
}
void delete_manager(USER *user, LIST *list, TOEIC *toeic, int mode)
{
    int i=0,num=0,same=0;
    char *temp;
    temp = (char*)malloc(30*sizeof(char));
    if(mode==1)
    {
        while(1)
        {
            printf("\n삭제할 과목의 이름을 입력하세요 ( Quit : 엔터 , 기존 리스트 : 'l' ) :");
            gets(temp);
            same=0;
            if(*temp == '\0')
                break;
            if(*temp == 'l'||*temp == 'L')
            {
                list_view(list);
                same=1;
            }
            if(!same)
            {
                for(i=0;iname)==0)
                        break;
                if(i==list_limit)
                    puts("입력하신 이름의 과목이 없습니다.\n");
                else
                {
                    for(i;iname)==0)
                        break;
                if(i==list_limit)
                    puts("입력하신 이름의 과목이 없습니다.\n");
                else
                {
                    for(i;itoeic_limit)
            {
                puts("입력하신 토익점수의 리스트 번호가 없습니다.\n");
                same=1;
                break;
            }
            if(!same)
            {
                for(num;num> 현재 입력된 데이터가 없습니다.\n");
    else
    printf(">> 현재 전체 평점 %1.3f 에 총 %2d 학점이 입력되어 있습니다.\n",score/total_sisoo,total_sisoo);
    printf("\n>> %2d 번째 과목의 평점(점수)은?  ( Quit : 엔터 ) --> ",calnum);
    gets(grade);
    if(!*grade) break;
    grade=strupr(grade);
    printf(">> %2d 번째 과목의 학점(시수)는?  --> ",calnum);
    scanf("%d",&sisoo);
    fflush(stdin);
    
    if(!strcmp(grade,"A+")) score+=4.5*sisoo;
    else if(!strcmp(grade,"A")) score+=4.0*sisoo;
    else if(!strcmp(grade,"B+")) score+=3.5*sisoo;
    else if(!strcmp(grade,"B")) score+=3.0*sisoo;
    else if(!strcmp(grade,"C+")) score+=2.5*sisoo;
    else if(!strcmp(grade,"C")) score+=2*sisoo;
    else if(!strcmp(grade,"D+")) score+=1.5*sisoo;
    else if(!strcmp(grade,"D")) score+=1*sisoo;
    else if(!strcmp(grade,"F")) score+=0*sisoo;
    else score+=atof(grade)*sisoo;
    total_sisoo+=sisoo;
    calnum++;
    }
    if(calnum>1)
    {
    puts("\n\n##----------------------------------------------------------------------##");
    printf("##        전체 평점 %1.3f 에 총 %02d 학점을 이수하였습니다.        ##\n",score/total_sisoo,total_sisoo);
    puts("##----------------------------------------------------------------------##");
    }
    system("pause");
}
 닫기
 닫기