닫기
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");
}
닫기