C언어 성적 관리 프로그램 원격 수업 과제

C언어 성적 관리 프로그램

국비 교육 초반에 원격 수업 조금 듣고 과제로 성적 관리 프로그램을 제출하라고 해서 날림으로 작성한 프로그램입니다.

과제에서 요구하는 부분만 기능으로 구현한거라 많이 허술합니다.

#include<stdio.h>
#define MAX_STUDENTS 10
#pragma warning(disable:4996)

typedef struct
{
	int id;
	char name[10];
	int score[3];
	// "국어", "영어", "수학"

}Student;

void menu();
void Registration(struct Student* students);
void ListOutput(struct Student* students);
void Delete(struct Student* students);
int Search(Student* students);
void FindStudent(Student* students);

Student students[MAX_STUDENTS];

void Init()
{
	
	for (int i = 0; i < MAX_STUDENTS; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			// 학생당 국어,영어, 수학 성적을 초기화(defalt = -1;)
			students[i].score[j] = -1;
		}

		
	}
	printf("학생 데이터 초기화\n");
}

void Registration(Student* students)
{
	int i;
	printf("정보를 입력해주세요 \n");

	// 빈공간 찾기
	for (i = 0; i < MAX_STUDENTS; i++)
	{
		if ((*(students + i)).score[0] == -1)
		{
			break;
		}
	}

	printf("학번을 입력해 주세요 : ");  
	scanf("%8d", &(*(students + i)).id);
	fflush(stdin);

	printf("이름을 입력해주세요 : ");  
	scanf("%s", &(*(students + i)).name);
	fflush(stdin);

	printf("국어 성적을 입력하세요 : "); 
	scanf("%d", &(*(students + i)).score[0]);

	printf("영어 성적을 입력하세요 : "); 
	scanf("%d", &(*(students + i)).score[1]);

	printf("수학 성적을 입력하세요 : "); 
	scanf("%d", &(*(students + i)).score[2]);

	fflush(stdin);

	printf("입력 완료\n");
	menu();
}

void ListOutput(Student* students)
{
	int i;
	int sum = 0;
	printf("리스트\n");
	printf("%8s | %8s | %5s | %5s | %5s | %5s | %6s \n\n", "학번", "이름", "국어", "영어", "수학", "합계", "평균");
	for (i = 0; i < MAX_STUDENTS; i++)
	{
		if ((*(students + i)).score[0] != -1)
		{
			sum = (*(students + i)).score[0] + (*(students + i)).score[1] + (*(students + i)).score[2];

			printf("%8d | %8s | %5d | %5d | %5d | %5d | %6.2f\n"
				,(*(students + i)).id , (*(students + i)).name, (*(students + i)).score[0], (*(students + i)).score[1], (*(students + i)).score[2], sum, (float)sum / 3);
			printf("\n");
		}
	}
}

void Delete(Student* students)
{
	int i, j;

	printf("삭제할 학번을 입력해주세요 : ");

	if ((i = Search(students)) >= 0)
	{
		printf("해당 학번 : %d 의 성적이 삭제되었습니다. \n",  (*(students + i)).id);
		for (j = 0; j < 3; j++)
		{
			(*(students + i)).score[j] = -1;
		}
	}
	else
	{
		printf("\n잘못된 학번입니다.\n");
		printf("\n메뉴로 돌아갑니다.\n");
		menu();
	}

}

void FindStudent(Student* students)
{
	int i;
	int sum = 0;
	printf("검색할 학번을 입력해주세요 : ");

	if ((i = Search(students)) >= 0)
	{
		printf("%8s | %8s | %5s | %5s | %5s | %5s | %6s \n\n", "학번", "이름", "국어", "영어", "수학", "합계", "평균");
		printf("%8d | %8s | %5d | %5d | %5d | %5d | %6.2f\n"
			, (*(students + i)).id, (*(students + i)).name, (*(students + i)).score[0], (*(students + i)).score[1], (*(students + i)).score[2], sum, (float)sum / 3);
		printf("\n");
		
	}
	else
	{
		printf("잘못된 학번입니다. \n");
		printf("메뉴로 돌아갑니다.\n");
		menu();
	}

}

int Search(Student* students)
{
	int selID = 0;	

	scanf("%d", &selID);

	fflush(stdin);

	for (int i = 0; i < MAX_STUDENTS; i++)
	{
		if (selID == (*(students + i)).id) 
		{
			return i;
		}

	}
	return -1;
}

void menu()
{
	printf("\n----------------------------------------------------\n");
	printf("0: 종료\n1: 학생 데이터 입력\n2. 학생 데이터 삭제\n3: 학생 검색\n4: 목록 보기\n");
	printf("----------------------------------------------------\n\n");

}



int main(void)
{


	Init();  // 학생의 데이터 초기롸
	menu();
	int selectMenu;


	while(1)
	{
		printf("번호로 메뉴를 선택하세요 : "); 
		scanf("%d", &selectMenu);

		switch (selectMenu)
		{

		case 0:
			printf("성적 관리 프로그램을 종료합니다.\n");
			return 0;

		case 1:
			Registration(students);
			break;

		case 2:
			Delete(students);
			break;

		case 3:
			FindStudent(students);
			break;

		case 4:
			ListOutput(students);
			break;

		default:
			break;
		}
	}


	return 0;
}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤