[과제#6] 성적계산프로그램
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 문제정의

2. 문제분석

3. Design

4. 결과화면

5. 결론 및 소감

6. Source

본문내용

을 원하는 수만큼 입력받게 하기위해 포인터를 사용하였지만 이번 과제는 단순히 구조체 배열 형태로 5개의 공간을 생성하여 문제를 해결하였다. 이번에는 추가적으로 학생의 점수를 float형태로 소수점 3자리까지 입력 받아와 총점과 평균을 계산 후에 파일에 입력 할 때는 소수점 2자리까지 입력 하는 정도의 내용만 추가로 수행 해 볼 수 있었다.
#include
#include
typedef struct stu_score{ // 학생의 점수를 입력받을 구조체 선언
int std_num;
char name[20];
float Kor;
float Eng;
float Math;
float total;
float avg;
}stu_score;
void Input_info(stu_score p[]); // 학생의 점수를 입력받는 함수
void Save_info(stu_score p[]); // 입력받은 정보를 파일에 저장하는 함수
void Load_info(stu_score p[]); // 저장되어있는 파일로부터 정보를 읽어오는 함수
void Menu(); // 메뉴선택 함수
int main(){
Menu(); // 메뉴함수 호출
return 0;
}
void Menu(){
stu_score hufs[5]; // 학생점수 입력공간인 구조체 형태로 5개의 배열 hufs선언
int sel=0; // 메뉴선택 변수 sel 선언하고 초기화
while (sel!=4){ // sel이 4인 경우 프로그램 종료하기위해 while 문을 종료한다
printf("=======Menu===========\n");
printf("1.Input\n");
printf("2.save\n");
printf("3.load\n");
printf("4.exit\n");
printf("=======================\n");
printf("select : ");
scanf("%d",&sel); // 메뉴번호 입력받는다
switch(sel){ // 입력받은 메뉴 번호에 따라 함수 실행
case 1: // 학생정보 입력함수 실행
Input_info(hufs);
break;
case 2: // 학생정보 저장함수 실행
Save_info(hufs);
break;
case 3: // 파일로부터 학생정보 불러오는 함수 실행
Load_info(hufs);
break;
case 4: // 프로그램종료
printf("exit..\n");
break;
default : // 입력오류
printf("Error\n");
break;
}
}
}
void Input_info(stu_score p[]){
int i;
for(i=0;i<5;i++){ // 5명의 학생점수를 차례로 입력 받는다
printf("[%d] student number : ",i+1);
scanf("%d", &((p+i)->std_num)); // p의 i번째 배열에 std_num에 학번 입력 받는다
printf("[%d] student name : ",i+1);
scanf("%s", &((p+i)->name)); // p의 i번째 배열에 name에 이름 입력받음
printf("[%d] stud Kor score : ", i+1);
scanf("%f", &((p+i)->Kor)); // p의 i번째 배열에 Kor 에 국어 점수 입력받음
printf("[%d] stud Eng score : ", i+1);
scanf("%f", &((p+i)->Eng));
printf("[%d] stud Math score : ", i+1);
scanf("%f", &((p+i)->Math));
(p+i)->total = (p+i)->Kor + (p+i)->Eng + (p+i)->Math;
// p의 i번째 배열에 국,영,수 점수 총합을 total에 저장
(p+i)->avg = (p+i)->total/3; // p의 i번째 배열에 total의 평균인 total/3을 avg에 저장
}
}
void Save_info(stu_score p[]){
FILE *fp; // 파일포인터 fp
char str[300]={}; // 임시 저장공간 str
char *s;
int i;
fp = fopen("score.txt","a"); // score.txt 를 덧붙여쓰기 형태로 읽어온다
fputs("========================SCORE TABLE========================\n", fp);
fputs("student_number name Kor Eng Math total average\n", fp);
// fp 가 가리키는 파일에 위와같은 내용을 저장한다.
for(i=0;i<5;i++){
sprintf(str, " %d %s %.2f %.2f %.2f %.2f %.2f\n", (p+i)->std_num, (p+i)->name, (p+i)->Kor, (p+i)->Eng, (p+i)->Math, (p+i)->total, (p+i)->avg);
// P의 I 번째 배열의 정보를 string형태로 str에 저장한다. 이때 각 점수들은 모두 소수점 2자리까지만 저장
fputs(str, fp); // str 에 있는 내용을 fp가 가리키는 파일에 저장한다
}
fputs("===========================================================\n",fp);
fclose(fp); // fp 가 가리키는 파일을 닫는다
printf("File Saved !!\n");
}
void Load_info(stu_score p[]){
FILE *fp;
char *s;
char str[1024]; // str이라는 임시 저장공간 char형 배열
fp = fopen("score.txt", "r"); // score.txt 파일을 읽기 전용으로 연다
while(s=fgets(str, 1024, fp)){ // fp가 가리키는 파일의 끝까지 1024 크기만큼 행단위로 str에 저장
printf("%s", str); // str에 있는 내용을 스트링형태로 출력한다.
}
fclose(fp); // fp가 가리키는 파일을 닫는다.
}
  • 가격3,000
  • 페이지수12페이지
  • 등록일2011.11.14
  • 저작시기2011.11
  • 파일형식한글(hwp)
  • 자료번호#714092
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니