C언어 강좌 설계 학생 성과관리 시스템

원본 포스터에 감사드립니다

#include

#include

#define SIZE 10 /* 향후 수정을 용이하게 하기 위해 상수 SIZE 정의*/

struct Student /*학생 정보를 저장할 구조 배열 정의*/

{

int 번호; / *학생 번호*/

문자 이름[20];/*이름*/

부동 점수[3];/*점수*/

float 평균 ;/*평균 점수*/

}stu[SIZE];

void menu();/*메뉴 기능 호출*/

void write() ;/*정보 읽기*/

void save();/*stud.dat 파일 저장 기능*/

void open();/*여부 확인 올바르게 저장됨*/

void inturn (struct Student c[]);/*평균 점수에 따라 학생 정보를 정렬하는 데 사용되는 함수*/

void save2();/*정렬된 정보는 Studsort.dat 파일에 저장됩니다*/

void read();/*studsort.dat 파일에 있는 두 번째 4 6 8 10 학생의 정보를 읽습니다*/

< p>void main()

{

int choice;/*사용자 선택 변수*/

printf("********* * ************************************************* ** ************************\n");

printf("* *\n");

p>

printf ("* Hwadee & 학생 점수 파일 관리& Hwadee *\n");

printf("* *\n");

printf("** **** ********************************************** ***** ***********************\n\n\n");

printf("*** ***** ************************●●환영합니다●●**************** ******** *************");

system("일시 중지");

동안 (1)< /p>

{

menu();/*메뉴 기능을 호출하여 작업 인터페이스를 형성합니다*/

printf("선택하세요:\t");< /p>

scanf("%d", &choice);

if ( 선택 == 0 )

{

system("cls" );

printf("\n\n\t\t\t\t감사합니다

Use!!!);

break;

}

switch(choice) /*다양한 기능을 달성하기 위한 다중 선택*/

{

사례 1:

write();

break;

사례 2:

시스템 ("cls");

save();

break;

사례 3:

system("pause") ;

system("cls");

open();

break;

사례 4:

system("cls");

printf("정렬 전 학생 정보:\n");

open();

inturn( stu) ;

save2();

break;

사례 5:

system("cls");

< p> read();

break;

기본값:

printf("\n해당 기능이 없습니다!\n다시 입력하세요\n ");< /p>

}

}

}

void menu()

{

printf ("\n1*****학생 정보 입력\t\t2*****stud.dat 파일에 정보 저장\n");

printf("3 **** *파일 데이터 확인\t\t4***** 학생 정보를 정렬하여 Studsort.dat 파일에 저장합니다\n");

printf("5***** 읽기 Studsort.dat 파일의 2번째 4 6 8 10번째 학생 정보\n");

printf("0*****시스템 종료\n\n\n");

p>

}

/********************************** ** **********************************\

기능 이름:

< p> 쓰기

기능 설명:

학생 정보 작성 완료

기능 매개변수:

i stu

반환 값:

없음

모듈 기록:

\******************** **** ********************************************** ***** **/

void write()

{

int i;/*count 변수*/

stu[i].average = 0;/*구조 멤버 평균 초기화*/

printf("학생 정보를 입력하세요\n");

printf("학생 ID\tName \ t중국어\t수학\t영어\t\n");

for (i=0; i

{

scanf (" %d\t",&stu[i].number);

if (stu[i].number == 0)/*정보가 필요하지 않으면 0을 입력하세요*/

중단;

scanf("%s\t

%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);

stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/* 평균 성적 계산*/

}

}

/************************ * ************************************************* \

함수 이름:

save

함수 설명:

작성된 정보를 파일에 읽어옵니다.

함수 매개변수:

FILE *fp i

반환 값:

없음

모듈 기록:

\ ************************************************** ** **********************/

저장 무효()

{

FILE *fp ;/*파일에서 데이터를 읽기 위한 파일 포인터 정의*/

int i;

if ((fp=fopen("stud.dat"," wb")) == NULL)

{

printf("파일을 열 수 없습니다\n");

return;

}

for (i=0;i

if (fwrite(&stu[i],sizeof(struct Student),1,fp) != 1)

printf("파일 쓰기 오류\n");

fclose(fp);

printf("\n정보가 성공적으로 저장되었습니다! 축하합니다!!\n \n" );

}

/******************************** *** ************************************\

기능 이름:

열기

함수 설명:

파일로 읽은 데이터가 올바른지 확인하는 데 사용됩니다.

함수 매개변수:

FILE *cp i

반환 값:

없음

모듈 기록:

\****** ****** ******************************************** ******* **********/

void open()

{

int i;

FILE *cp ;

cp = fopen ("stud.dat","rb");

printf("stud.dat 파일에 저장된 정보:\ n\n");

printf("학생 번호\t이름\t수학\t중국어\t영어\t평균 점수\n\n");

for (i=0;i < SIZE;i++)

{

fread(&stu[i],sizeof(struct Student),1,cp);

printf("%d \t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].n

umber, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );

}

fclose (cp);

}

/******************** ***** ********************************************* ****** ***\

함수 이름:

inturn

함수 설명:

요소를 정렬하는 데 사용됩니다. 구조 배열에서< /p>

함수 매개변수:

i,j,k로

구조체 학생 임시

반환 값:

없음

모듈 기록:

\**************************** ********* *************************************/

void inturn(struct Student m[])

{

int i,j,k;/*count 변수*/

struct Student temp;/*중간 변수 유형은 구조체 본문입니다*/

for(i=0; i< p> for (j=i +1; j

{

if( m[i].average < m[j].average )

{

온도 = m[i];

m[i] = m[j];

m[j] = 온도;

}

}

printf("\n정렬된 학생 정보:\n\n");

printf("학생 번호 \t이름\ t수학\t중국어\t영어\t평균 점수\n");

for (i=0; i

{

printf("%d 이름%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i] .number , stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );

}/*정렬된 학생 정보 출력*/

}

/******************** **** *********************************************** **\

기능 이름:

save2

기능 설명:

정렬된 학생 정보를 다른 파일로 읽어옵니다. 매체

기능 매개변수:

FILE *mp

i

반환 값:

없음

모듈 기록:

\**************************************** ** ********************************/

void save2()

{

FILE *mp;

int i;

if ((mp=fopen("studsort.

dat","wb"))==NULL)

{

printf("파일을 열 수 없습니다\n");

return;

}

for (i=0;i

if (fwrite(&stu[i], sizeof(struct Student), 1, mp) != 1)

printf("파일 쓰기 오류\n");

fclose(mp);/*읽은 후 파일을 닫습니다*/

}

/***************************************** * *******************************\

함수 이름:

읽기

함수 설명:

다른 파일에서 정보 읽기

함수 매개변수:

FILE *tp

i

반환 값:

없음

모듈 기록:

\**************** * ************************************************* ** *****/

void read()

{

int i=1;

FILE *tp;

tp = fopen ("studsort.dat", "rb" );

printf("studsort.dat 파일에 있는 짝수 학생의 정보는 다음과 같습니다.\ n\n");< /p>

printf("학생 번호\t이름\t수학\t중국어\t영어\t평균 점수\n\n");

for (i = 1;i

{

fseek(tp,i*sizeof(struct Student),0);/*fseek 함수는 다음과 같이 파일의 시작 부분을 오프셋할 수 있습니다. 사용자가 파일 데이터를 읽으려면 Shift가 필요합니다.

k*sizeof(struct Student)는 위치 포인터를 현재 위치에서 k 바이트로 이동하는 것을 의미합니다*/

fread(&stu[ i],sizeof(struct Student),1,tp);

/*참고: 필요에 따라 데이터를 읽으려면 먼저 fseek 함수를 사용하여 위치를 지정해야 하지만 fseek만 사용하세요. fread 없이 함수를 사용하면

파일에서 데이터를 읽지 않고 화면에 데이터를 인쇄할 뿐입니다. 이것은 일반적인 문제입니다*/

printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[ i ].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average ) < /p>

}

fclose (tp);/*읽은 후 파일을 닫습니다*/

}