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;
}

![백준 1799번 (비숍, C++) [BAEKJOON]](https://lycos7560.com/wp-content/uploads/boj-og.png)
![백준 10989번 (수 정렬하기 3, C++) [BAEKJOON]](https://lycos7560.com/wp-content/uploads/boj-og-1.png)
![백준 10816번 (숫자 카드 2, C++, 정렬) [BAEKJOON]](https://lycos7560.com/wp-content/uploads/2022/10/boj-og-1-2048x1070-1-1024x535.png)