일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jsp
- nico
- ruby
- 디지몬
- DART
- Flutter
- springboot
- 日本語
- 일본어
- Spring
- javascript
- 単語
- rails7
- 비즈니스일본어
- 一日一つメソッド
- vscode
- C로 시작하는 컴퓨터 프로그래밍4판
- Web
- 반다이몰
- html
- 건담베이스
- CSS
- java
- 자바
- メソッド
- rails
- 인프런
- 연습문제
- Python
- 건담
Archives
- Today
- Total
AR삽질러
C_Project : 학생관리프로그램 본문
728x90
3. 1번의 이진 탐색 트리 프로그램을 이용하여 학생들과 관련된 자료를 저장하고 탐색하는 프로그램을 개발하여 보자. 하나의 학 생은 학번(정수), 이름(문자열), 주소(문자열), 소속학과(정수)의 정보를 가지고 있다. 이들 정보를 학번을 키로 하여 이진 탐색 트리에 저장하고 다음과 같은 메뉴가 가능하도록 프로그램을 작성하라. 학번 순으로 출력하는 것은 이진 탐색 트리의 중위 순 회시 정렬된 숫자가 얻어지는 것을 이용하여 구현하라.
1.학생 정보 입력
1 선택시 학번 이름 주소 학과를 받아 저장한다.
2. 학생 정보 삭제
2 선택 후 학생 이름을 입력하면 해당학생이 삭제되고 존재하지않는 이름입력시 되돌아간다.
3. 학생 정보 탐색
3 선택 후 학생의 학번을 입력하면 존재여부를 알수 있다.
4. 학생 정보 학번순으로 출력
4 선택 시 입력한 학생이 출력된다.
5. 현재 저장된 학생들의 총 숫자
5 선택을 제일위로 실시간으로 저장된 학생의 숫자를 만들어 두었다.
6. 전부 삭제 / 7. 종료
6 선택 시 전부 삭제되면서 종료된다. 7번도 6번과 마찬가지로 전부 삭제 후 종료된다.
// 1번의 이진 탐색 트리 프로그램을 이용하여 학생들과 관련된 자료를 저장하고 탐색하는 프로그램을 개발하여 보자.
// 하나의 학 생은 학번(정수), 이름(문자열), 주소(문자열), 소속학과(정수)의 정보를 가지고 있다.
// 이들 정보를 학번을 키로 하여 이진 탐색 트리에 저장하고 다음과 같은 메뉴가 가능하도록 프로그램을 작성하라.
// 학번 순으로 출력하는 것은 이진 탐색 트리의 중위 순 회시 정렬된 숫자가 얻어지는 것을 이용하여 구현하라.
#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
typedef struct Student
{
int Data;
char Name[256];
char Add[256];
char Depart[256];
struct Student* Link; // 자기참조 구조체
}Student;
// 함수원형 전방선영 F12 해당함수로 이동
char* CreateName();
Student* CreateStudent();
Student* Insert(Student* node);
void PrintStudent(Student* student, int Number);
void Print(Student* node);
char* CreateNode()
{
Student* NewNode = (Student*)malloc(sizeof(Student));
printf("학번입력 : ");
scanf("%d", &NewNode->Data);
printf("이름입력 : ");
scanf("%s", NewNode->Name);
printf("주소입력 : ");
scanf("%s", NewNode->Add);
printf("학과입력 : ");
scanf("%s", NewNode->Depart);
printf("\n");
NewNode->Link = NULL;
return NewNode;
}
// 학생정보 생성
Student* Insert(Student* Node)
{
if (Node == NULL)
return CreateNode();
else
Node->Link = Insert(Node->Link);
return Node;
}
// 출력
void PrintStudent(Student* student, int Number)
{
printf(" 학번 : %d", student->Data);
printf(" 이름 : %s", student->Name);
printf(" 주소 : %s", student->Add);
printf(" 학과 : %s", student->Depart);
printf("\n");
}
void Print(Student* node)
{
if (node == NULL)
return;
printf("학번 : %d 이름 : %s 주소 : %s 학과 : %s\n", node->Data, node->Name, node->Add, node->Depart);
Print(node->Link);
}
void Search(Student* Node, int Data)
{
if (Node == NULL)
printf("데이터가 존재하지않습니다.\n");
else if (Node->Data == Data)
printf("데이터가 존재합니다.\n");
else
Search(Node->Link, Data);
}
// 전체 삭제
Student* Delete(Student* Node, char Name[256])
{
if (Node == NULL)
return NULL;
Node->Link = Delete(Node->Link, Name);
if (strcmp(Node->Name, Name) == 0)
{
Student* DeleteNode = Node;
Node = Node->Link;
printf("%s 학생 삭제완료\n", DeleteNode->Name);
free(DeleteNode);
}
return Node;
}
// 할당해제
void Release(Student* node, int Number)
{
if (node == NULL)
return;
Release(node->Link, Number+1);
PrintStudent(node, Number);
free(node);
}
void main()
{
int StudentCount = 0;
Student* Head = NULL;
char Name[256];
while (TRUE)
{
system("cls");
printf("===안양대 학생정보관리프로그램===\n");
printf(" 현재 저장된 학생 숫자 : %d\n", StudentCount);
printf(" 1. 학생 정보 입력\n");
printf(" 2. 학생 정보 삭제\n");
printf(" 3. 학생 정보 탐색\n");
printf(" 4. 학생 정보 학번순으로 출력\n");
printf(" 5. 전부삭제\n");
printf(" 6. 종료\n");
printf("=====================\n\n");
int Select;
printf("Selection : ");
scanf("%d", &Select);
system("cls");
switch (Select)
{
case 1:
++StudentCount;
Head = Insert(Head);
break;
case 2:
printf("학생 이름 : ");
scanf("%s", Name);
Head = Delete(Head, Name);
--StudentCount;
break;
case 3:
printf("검색할 학번 입력 : ");
scanf("%d", &Select);
Search(Head, Select);
break;
case 4:
Print(Head);
system("pause");
break;
case 5:
case 6:
Release(Head, 1);
printf("\n종료");
return;
}
system("pause");
}
}
728x90
반응형
LIST
'C' 카테고리의 다른 글
C : 자료구조 : LinkedList : 학생등록관리 (0) | 2023.07.25 |
---|---|
C_Programing_Project : 이진탐색트리 프로그램 (0) | 2023.07.24 |
C로 시작하는 컴퓨터 프로그래밍4판 - 13장 실전예제(면적구하프로그램) (0) | 2023.06.22 |
C로 시작하는 컴퓨터 프로그래밍4판 - 13장 실전예제(데이터 정렬 프로그램) (0) | 2023.06.22 |
C로 시작하는 컴퓨터 프로그래밍4판 - 12장 파일처리와 메크로 (0) | 2023.06.22 |