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