#include
#include
#include
char menu();
void input(int p1[30][5], char p2[30][25]);
void output(int p1[30][5], char p2[30][25]);
void search(int p1[30][5], char p2[30][25]);
void del(int p1[30][5], char p2[30][25]);
void sort(int p1[30][5], char p2[30][25]);
void main()
{
int score[30][5] = {{90,80,100},{70,80,45},{80,90,70},{75,90,65},{85,95,70},{100,80,65},
{75,65,90},{98,70,70},{82,45,75},{49,55,80},{80,50,65},{80,75,66},
{79,73,77},{59,90,77},{88,100,95},{88,60,70},{90,55,82},{29,77,59},
{87,69,90},{100,98,95},{45,91,88},{89,75,66},{88,100,72},{79,82,95},
{88,95,22},{80,75,60},{100,80,92},{95,75,100},{77,100,65},{66,75,98}}; //서른명의 점수
char name[30][25]={"Kimyt","Kimjj","Sinkh","Leemr","Nojh","Huj","Sondi","Ahnyg","Kimsj","Leeej",
"Humu","Kimdb","Jungks","Kimsk","Leesk","Kimjh","Honges","Kimka","Leehj","Kwonht",
"Uooks","Jungsk","Seoos","Kanghs","Namdo","Junyb","Parkjs","Gwaknk","Yangcj","Leesd"};//서른명의이름
char menuNumber;
while(1){
system("cls");
menuNumber = menu();
if(menuNumber == '1'){ system("cls"); input(score,name);}
else if(menuNumber == '2'){system("cls"); output(score,name); }
else if(menuNumber == '3'){system("cls"); search(score,name); }
else if(menuNumber == '4'){system("cls"); del(score,name); }
else if(menuNumber == '5'){ break;}
}
}
char menu()
{
printf("\n\n\n\n\n\n");
printf(" 1. 총 점 구 하 기 \n\n");
printf(" 2. 성적 출력 하기 \n\n");
printf(" 3. 개인 성적 확인 \n\n");
printf(" 4. 성 적 수 정 \n\n");
printf(" 5. 종 료 \n\n");
printf(" # 메뉴를 선택하세요 : ");
char menuNumber=getchar();
return menuNumber;
}
void input(int p1[30][5], char p2[30][25]){
/* printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 1번 입력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");
getch();
*/
int i,j;
for(i=0 ; i<30;i++){
p1[i][3] = 0;
} //재차 눌를때 누적방지..
for(i=0;i<30;i++){
for(j=0;j<3;j++){
p1[i][3] += p1[i][j];
}
} //총점 구하기
sort(p1,p2); //등수에 따라 정렬함수 호출
printf("\n\n\n\n\n\n\n\n\n");
printf(" 총 점 계 산 중 \n\n");
printf(" ");
for(i=0 ; i<11 ; i++)
{
printf("[");
Sleep(150);
printf("]");
Sleep(150);
}
/*보기좋게 하기 위해서*/
printf("\n\n\n #계산이 완료 되었습니다. 아무키나 누르면 주메뉴로 돌아 갑니다. \n");
getch();
return;
}
void output(int p1[30][5], char p2[30][25]){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 2번 출력력하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");
getch();
*/
int i;
printf("[등수] [ 이름 ] [ 국 영 수 ] [ 총점 ] [ 평균 ]\n");
for(i=0 ; i<30; i++){
printf("%4d %7s %4d %4d %4d %4d %8.2lf \n",p1[i][4],p2[i],p1[i][0],p1[i][1],p1[i][2],p1[i][3],double(p1[i][3])/3);
/*10명이 출력대고 엔터 치라고 하고 출력이 끝나으면 주메뉴로 돌아가게한다.*/
if( (i%10) == 9 ) {
if( i == 29) {
printf("#출력이 완료 되었습니다. 아무키나 누르면 주메뉴로 돌아 갑니다.");
getch();
}
else{
printf("Press Enter key to continue...");
getch();
printf("\n");
}
}
}
return;
}
void search(int p1[30][5], char p2[30][25]){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 3번 검색하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");
getch();
*/
int i,temp1 = 0;
char temp[80]={0,}; //임시 저장공간
while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복
printf("#학생이름를 입력하세요 : "); //이름 입력 받기
scanf("%s",temp);
for(i=0; i<30; i++){
if(strcmp(temp,p2[i]) == 0){ //존재 하면 그학생의 성적 출력
printf("\n %s의 성적입니다. \n",p2[i]);
printf(" 등수 : %5d등 \n", p1[i][4]);
printf(" 총점 : %5d점 \n", p1[i][3]);
printf(" 평균 : %5.2lf점 \n",double(p1[i][3])/3);
printf(" 국어 : %5d점 \n", p1[i][0]);
printf(" 영어 : %5d점 \n", p1[i][1]);
printf(" 수학 : %5d점 \n\n", p1[i][2]);
temp1++; //이름이 있으면 증가.
}
}
if(temp1 == 0){
printf("이름이 존재하지않습니다. 확인 후 다시 입력하세요. \n"); } //출력대면 증가대니까없으면 0이 남는다
temp1 = 0; // loop안에서 증가상태로 남아있으면 로직에러
}
return;
}
void del(int p1[30][5], char p2[30][25]){
/*
printf("\n\n\n\n\n\n\n\n\n\n\n");
printf(" 4번 삭제하기 메뉴입니다. \n\n\n\n\n");
printf(" # 아무키나 누르면 주메뉴로 돌아갑니다. \n\n\n\n");
getch();
*/
int i,j,k,choi,jumsu,temp1 = 0;
char temp[80]={0,}; //임시 저장공간
while (strcmp(temp,"end") != 0){ //입력문자열이 "end" 아닐경우까지 반복
printf("#수정할 학생이름를 입력하세요 : "); //이름 입력 받기
scanf("%s",temp);
for(i=0; i<30; i++){
if(strcmp(temp,p2[i]) == 0){ //존재 하면 그학생의 성적 정정
while(1){
printf("#정정할 과목을 선택하세요.\n");
printf(" 국어(1),영어(2),수학(3) : ");
scanf("%d",&choi);
if(choi == 1 ){ //1번 국어 점수를 선택했을때
while(1){
printf(" 정정할 국어 점수를 입력하세요 : ");
scanf("%d",&jumsu);
if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][0] = jumsu;
break; //맞게 넣었으면 loop탈출
}
else{
printf("잘못 입력하셨습니다. 다시 입력하세요. \n"); //새로운 점수 받기..
}
}
break; //과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 1번 선택시 if 문 종료
else if(choi == 2 ){ //2번 영어 점수를 선택했을때
while(1){
printf(" 정정할 영어 점수를 입력하세요 : ");
scanf("%d",&jumsu);
if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][1] = jumsu;
break;//맞게 넣었으면 loop탈출
}
else{
printf("잘못 입력하셨습니다. 다시 입력하세요. \n");//새로운 점수 받기..
}
}
break;//과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 2번 선택시 if 문 종료
else if(choi == 3 ){
while(1){
printf(" 정정할 수학 점수를 입력하세요 : ");
scanf("%d",&jumsu);
if(jumsu >= 0 && jumsu <= 100){ //0~100점 사이 점수를 넣었는가?
p1[i][2] = jumsu;
break;//맞게 넣었으면 loop탈출
}
else{printf("잘못 입력하셨습니다. 다시 입력하세요. \n");}//새로운 점수 받기.
}
break;//과목을 선택하고 점수넣었으니 탈출~ 새로운학생 받자~
} // 3번 선태식 if 문 종료
else { printf("잘못 입력하셨습니다. 다시 입력하세요. \n");}
}//과목선택의 예외처리 While종료
temp1++; //이름이 있으면 증가.
}//존재하는지 물어보는 if문닫기
} //for 닫기
if(temp1 == 0){
printf("이름이 존재하지않습니다. 확인 후 다시 입력하세요. \n"); } //출력대면 증가대니까없으면 0이 남는다
temp1 = 0; // loop안에서 증가상태로 남아있으면 로직에러
}//while loop닫기
//정정한 결과로 다시 계산
for(i=0 ; i<30;i++){ //총점 초기화.. 다시 누적현상발생하기때문에
p1[i][3] = 0;
}
for(j=0;j<30;j++){
for(k=0;k<3;k++){
p1[j][3] += p1[j][k];
}
} //총점 구하기
sort(p1,p2); //등수에 따라 정렬함수 호출
return;
}
void sort(int p1[30][5], char p2[30][25]){
int i, j,k, temp ; //loop제어변수 임시저장변수 선언
int rank = 1, rank1 = 1; //등수 제어변수
char chr[25]; //임시 문자열 복사 변수
for(i=0 ; i<29; i++){ // score[0][4] 와 score[1][4]~score[30][4]까지비교
// score[28][4]과 score[29][4]까지 비교하면 끝
for(j=29 ; j>=i+1 ; j--){
if(p1[i][3]
temp=p1[i][k]; // 각 과목도 정렬대고
p1[i][k]=p1[j][k];
p1[j][k]=temp;
}
strcpy(chr,p2[i]);
strcpy(p2[i],p2[j]);
strcpy(p2[j],chr); //이름도 총점에 정렬에 따라 이동
}
}
}
p1[0][4] = 1; //0순위는 무조건 1등~
for(i=0 ; i<30; i++){
if(p1[i][3]==p1[i+1][3]){
rank1++;
p1[i+1][4] = p1[i][4]; //같으면 두사람의 순위는 같게 댄다.
}
else{
p1[i][4] = rank; //같지 않았다면 순차적 랭킹을 더해준다.
p1[i+1][4] = rank+1;
if(rank1 >= 1){ rank+= rank1; rank1 = 1;} //같은사람 카운터가 1사람이상이면 그만큼을 랭크에 더한다.
else { rank++; } //아니면 그냥 순차 차운터..
}
}
}
댓글 없음:
댓글 쓰기