#include< stdio.h>
#include< stdlib.h>
#include< string.h>
#include<ctype.h>
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;i<list_limit;i++)
if
(
strcmp
(temp,(list+i)-=
""
>name)==0)
{
same=1;
printf
(
"기존에 있던 리스트 과목명과 동일합니다. "
);
break
;
}
for
(i=0;i<user_limit;i++)
if
(
strcmp
(temp,(user+i)-=
""
>name)==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)
{
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;i<list_limit;i++)
if
(
strcmp
(temp,(list+i)-=
""
>name)==0)
{
same=0;
break
;
}
for
(i=0;i<user_limit;i++)
if
(
strcmp
(temp,(user+i)-=
""
>name)==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;i<user_limit;i++)
for
(j=
"i;j<user_limit;j++)"
if
(=
""
((user+i)-=
""
>year*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;i<list_limit;i++)
for
(j=
"i;j<list_limit;j++)"
if
(=
""
((list+i)-=
""
>year*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;i<toeic_limit;i++)
for
(j=
"i;j<toeic_limit;j++)"
if
(=
""
(toeic+i)-=
""
>score < (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;i<toeic_limit;i++)
if
(toeic_top_score<=
"(toeic+i)-"
>score)
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;i<limit;i++) {=
""
for
(j=
"i;j<limit;j++)"
{=
""
if
(=
""
(user+i)-=
""
>year*10+(user+i)->term==(user+j)->year*10+(user+j)->term )
{
k++;
for
(l=0;l<list_limit;l++) {=
""
if
(!=
""
strcmp
(=
""
(user+j)-=
""
>name,(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;i<list_limit;i++) {=
""
printf
(
"##="
" %3d="
" |="
" %-30s="
" |%4d|%4d|%04s|%04s|%04s|%4d="
" ##\n"
,=
""
i+1,(list+i)-=
""
>name,(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;i<user_limit;i++) {=
""
printf
(
"##="
" %3d="
" |="
" %-30s ="
" %4d="
" | ="
" %1.3f="
" ##\n"
,=
""
i+1,(user+i)-=
""
>name,(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;i<toeic_limit;i++) {=
""
printf
(
"##="
" %3d="
" | %8d="
" ##\n"
,i+1,(toeic+i)-=
""
>score);
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;i<list_limit;i++)
if
(
strcmp
(temp,(list+i)-=
""
>name)==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;j<user_limit;j++)
if
(
strcmp
(temp,(user+j)-=
""
>name)==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;j<list_limit;j++)
if
(
strcmp
(temp,(list+j)-=
""
>name)==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;i<list_limit;i++)
if
(
strcmp
(temp,(list+i)-=
""
>name)==0)
break
;
if
(i==list_limit)
puts
(
"입력하신 이름의 과목이 없습니다.\n"
);
else
{
for
(i;i<list_limit;i++) *(list+i)=
"*(list+i+1);"
list_limit--;=
""
puts
(
"삭제="
" 되었습니다."
);=
""
}=
""
}=
""
}=
""
}=
""
if
(mode=
"=2)"
{=
""
while
(1)=
""
{=
""
printf
(
"\n삭제할="
" 과목의="
" 이름을="
" 입력하세요="
" (="
" quit="
" :="
" 엔터="
" ,="
" 기존="
" 리스트="
" 'l'="
" )="
" :"
);=
""
gets
(temp);=
""
same=
"0;"
if
(*temp=
"="
'\0'
)=
""
break
;=
""
'l'
||*temp=
"="
'l'
)=
""
{=
""
list_view(list);=
""
same=
"1;"
if
(!same)=
""
for
(i=
"0;i<list_limit;i++)"
if
(
strcmp
(temp,(list+i)-=
""
>name)==0)
break
;
if
(i==list_limit)
puts
(
"입력하신 이름의 과목이 없습니다.\n"
);
else
{
for
(i;i<list_limit;i++) *(list+i)=
"*(list+i+1);"
list_limit--;=
""
puts
(
"삭제="
" 되었습니다."
);=
""
}=
""
}=
""
}=
""
}=
""
if
(mode=
"=3)"
{=
""
while
(1)=
""
{=
""
=
""
메뉴부분=
""
same=
"0;"
printf
(
"\n삭제할="
" 토익점수의="
" 리스트="
" 번호를="
" 입력하세요="
" (="
" quit="
" :="
" 숫자="
" '0'="
" )="
" "
);=
""
scanf
(
"%d"
,&num);=
""
if
(!num)=
""
break
;=
""
if
(num=
""
>toeic_limit)
{
puts
(
"입력하신 토익점수의 리스트 번호가 없습니다.\n"
);
same=1;
break
;
}
if
(!same)
{
for
(num;num<toeic_limit;num++); *(toeic+num)=
"*(toeic+num+1);"
toeic_limit--;=
""
puts
(
"삭제="
" 되었습니다."
);=
""
}=
""
}=
""
}=
""
system
(
"pause"
);=
""
}=
""
void
=
""
grade_cal()=
""
간이=
""
평점=
""
계산기=
""
{=
""
int
=
""
calnum=
"1,total_sisoo=0,sisoo=0;"
double
=
""
score=
"0;"
char
=
""
temp[10],*grade;=
""
grade=
"temp;"
while
(1)=
""
{=
""
clrview();=
""
puts
(
"##----------------------------------------------------------------------##"
);=
""
puts
(
"## for="
" my="
" future="
" -="
" 계산기 ="
" ##"
);=
""
puts
(
"## ="
" 성적="
" 입니다.="
" 평점과="
" 과목당="
" 학점을="
" 입력해="
" 주세요. ="
" if(calnum="
=1)
" printf("
=
""
>> 현재 입력된 데이터가 없습니다.\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"
);
}
</toeic_limit;num++);></list_limit;i++)></list_limit;i++)></list_limit;i++)></list_limit;j++)></user_limit;j++)></list_limit;i++)></toeic_limit;i++)></user_limit;i++)></list_limit;i++)></list_limit;l++)></limit;i++)></toeic_limit;i++)></toeic_limit;i++)></list_limit;i++)></user_limit;i++)></user_limit;i++)></list_limit;i++)></user_limit;i++)></list_limit;i++)></ctype.h>