목차
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가 가리키는 파일을 닫는다.
}
추천자료
정보통신망(위성통신망 무선이동통신)에 대한 PPT자료
[정보화사회][정보사회][정보통신망구축][정보통신기술][정보화][정보기술]정보화사회(정보사...
[4세대 이동통신(4G)]4G 기술의 이해, 3세대 이동통신의 한계와 4G의 등장, 4세대 이동통신(4...
[범죄][보험사기][통신사기][고고학사기][사기][보험][통신][고고학]범죄 고찰과 보험사기, ...
[일본 ICT]일본 ICT(정보통신기술)활용교육의 목적, 일본 ICT(정보통신기술)활용교육의 내용,...
[ICT]영국과 미국 ICT(정보통신기술)활용교육, 스페인과 덴마크 ICT(정보통신기술)활용교육, ...
[공학][전자공학][통신공학][기계공학][조직공학][인체공학][소프트웨어공학][환경공학][전자...
[광대역, 광대역통합망, 고속통신망, 핫스팟서비스]광대역과 광대역통합망, 광대역과 고속통...
[LAN, 랜]LAN(근거리통신망, 랜)과 랜구축(LAN구축), 랜카드(LAN카드), 랜보안(LAN보안), 무...
[LAN][랜]LAN(랜, 근거리통신망)의 개요, 분류, LAN(랜, 근거리통신망)의 역사, LAN(랜, 근거...
[일본]일본의 정보화, 일본의 정보통신기술, 일본의 이동통신, 일본의 방송통신융합, 일본의 ...
[민영화][연금민영화][방송민영화][통신민영화][철도민영화][공기업민영화][은행민영화][연금...
[생산성][은행생산성][정보통신생산성][생활체육생산성][제조업생산성][농업생산성][노동생산...
[SK 텔레콤 사업 전략] 중국 시장 분석,이동통신 시장환경,이동통신 서비스,SK텔레콤 정보통...