목차
1. 문제정의
2. 문제분석
3. Design
4. 결과화면
5. 결론 및 소감
6. Source
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가 가리키는 파일을 닫는다.
}
#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가 가리키는 파일을 닫는다.
}
추천자료
전산개론 정리
[사회문제]청소년 성매매의 실태와 대처방안에 관한 연구
인공지능의 역사와 연구분야 그리고 우리나라의 인공지능 실태
c프로그래밍
상담과 생활지도 프로그램 -“인터넷 중독”관련
호주(오스트레일리아)의 교육제도와 영재교육, 호주(오스트레일리아)의 인터넷활용교육, 호주...
쓰레드와 소켓 프로그래밍
가정연계교육(가정연계지도) 의미, 가정연계교육(가정연계지도) 식습관교육, 가정연계교육(가...
정신지체아(정신지체아동) 성교육의 목표와 필요성, 정신지체아(정신지체아동) 성교육의 단계...
성폭력,성폭력특징,성폭력유형,성폭력관련정책,성폭력제도,성폭력현황,성폭력유형,성범죄유형...
MATLAB07
[인재교육][인재][교육][ICT][창의성][정보소양]인재교육의 ICT(정보통신기술), 인재교육의 ...
<인터넷 중독> 인터넷 중독의 실태 및 청소년에게 미치는 영향과 인터넷 중독 대책방안.PPT자료
[진로 상담, 학습상담] 진로상담 & 학습상담 - 진로상담 개념, 진로상담 필요성, 진로상...