C언어 예제 - 프로젝트 회사 프로그램 만들기(2)
안녕하세요! 프로젝트 회사 프로그램 만들기 두번째 시간입니다!
이번 시간에는 프로젝트 보기 기능에 대해서 만들어 볼거에요! 항상 출력을 해주는건 더 간단합니다.
그래서 별로 어려우실게 없어요! 저번 시간에 썼던 코드를 조금 수정하고 프로젝트 보기 기능을 구현해봤습니다.
먼저 소스코드를 보실까요?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#include <stdio.h>
#define Web 0
#define C 1
#define Cpp 2
#define JAVA 3
int main() {
int project[4][1000];
char Project_Contents[4][1000][200];
char Project_Title[4][1000][30];
int N, K,i;
int _W = 0, _C = 0, _Cpp = 0, _J = 0;
while (1) {
printf("프로젝트 종류를 선택하여 주세요. Web : 0, C : 1, C++ : 2, JAVA : 3\n");
scanf_s("%d", &N);
printf("1. 프로젝트 보기 2. 프로젝트 생성 3. 프로젝트 삭제\n");
scanf_s("%d", &K);
if (K == 1) {
printf("프로젝트 보기 메뉴를 선택하셨습니다.\n");
switch (N) {
case 0:
printf("Web을 선택하셨습니다.\n");
for (i = 0; i < _W; i++) {
printf("프로젝트 제목[%d] : %s\n", i, Project_Title[0][i]);
printf("프로젝트 내용[%d] : %s\n", i, Project_Contents[0][i]);
}
break;
case 1:
printf("C를 선택하셨습니다.\n");
for (i = 0; i < _C; i++) {
printf("프로젝트 제목[%d] : %s\n", i, Project_Title[1][i]);
printf("프로젝트 내용[%d] : %s\n", i, Project_Contents[1][i]);
}
break;
case 2:
printf("Cpp를 선택하셨습니다.\n");
for (i = 0; i < _Cpp; i++) {
printf("프로젝트 제목[%d] : %s\n", i, Project_Title[2][i]);
printf("프로젝트 내용[%d] : %s\n", i, Project_Contents[2][i]);
}
break;
case 3:
printf("JAVA를 선택하셨습니다.\n");
for (i = 0; i < _J; i++) {
printf("프로젝트 제목[%d] : %s\n", i, Project_Title[3][i]);
printf("프로젝트 내용[%d] : %s\n", i, Project_Contents[3][i]);
}
break;
}
}
if (K == 2) {
switch (N) {
case 0:
printf("Web을 선택하셨습니다.\n"); project[Web][_W] = 1;
printf("프로젝트 제목을 입력해주세요(15자이내) : ");
scanf_s(" %[^\n]s", Project_Title[Web][_W], 30);
printf("프로젝트 내용을 입력해주세요(100자이내) : ");
scanf_s(" %[^\n]s", Project_Contents[Web][_W++], 100);
break;
case 1:
printf("C를 선택하셨습니다.\n"); project[C][_C] = 1;
printf("프로젝트 제목을 입력해주세요(15자이내) : ");
scanf_s(" %[^\n]s", Project_Title[C][_C], 30);
printf("프로젝트 내용을 입력해주세요(100자이내) : ");
scanf_s(" %[^\n]s", Project_Contents[C][_C++], 100);
break;
case 2:
printf("Cpp를 선택하셨습니다.\n"); project[Cpp][_Cpp] = 1;
printf("프로젝트 제목을 입력해주세요(15자이내) : ");
scanf_s(" %[^\n]s", Project_Title[Cpp][_Cpp], 30);
printf("프로젝트 내용을 입력해주세요(100자이내) : ");
scanf_s(" %[^\n]s", Project_Contents[Cpp][_Cpp++], 100);
break;
case 3:
printf("JAVA를 선택하셨습니다.\n"); project[JAVA][_J] = 1;
printf("프로젝트 제목을 입력해주세요(15자이내) : ");
scanf_s(" %[^\n]s", Project_Title[JAVA][_J], 30);
printf("프로젝트 내용을 입력해주세요(100자이내) : ");
scanf_s(" %[^\n]s", Project_Contents[JAVA][_J++], 100);
break;
default: printf("잘못된 프로젝트 종류를 입력하셨습니다. 다시 처음으로 돌아갑니다.\n");
break;
}
}
}
return 0;
}
|
cs |
중점적으로 보셔야 할 곳은 Line 17 ~ 49 입니다!
Line 17~49 : 문법적으로는 우선 if문, switch-case문, 반복문이 사용되었습니다. 다 배운 내용이라서 문법적으로는 이해가 가실겁니다. 먼저 프로젝트 종류가 무엇인지 담는 변수 N을 통해서 Web일 경우, C일 경우, Cpp일 경우, JAVA일 경우로 경우를 나눕니다. 당연히 swtich - case문을 사용했습니다. if문도 사용할 수는 있으나 조금 더 직관적으로 보기 위해서는 switch-case문이 좋습니다! 그 이후에 for문을 통해서 미리 프로젝트 생성 시에 프로젝트가 몇개가 생성이 되었는지 보기 위해서 _W, _C, _Cpp, _J라는 변수를 설정해놨습니다. 따라서 조건식을 통해 프로젝트가 있는 개수 만큼 출력을 할 수 있게 되겠지요?
그리고 각 상황별로 출력을 하는데 Web을 예로 들면 Project_Title[0][i], Project_Contents[0][i] 이렇게 두개의 이차원 배열 변수를 통해서 출력을 하도록 되어 있습니다. 왜 저 자리에 0이 들어가는지는 저번 시간에 설명을 드렸습니다. 다시 한번 설명을 드리자면 Web의 공간들은 0 인덱스를 통해 1000개의 공간이 할당이 되어 있고, C의 공간들은 1의 인덱스를 통해 1000개의 공간이 할당이 되어 있습니다. 나머지도 마찬가지입니다. 따라서 for문의 조건식을 통해 그 각 인덱스에 맞는 배열 속에 들어 있는 것들을 출력해주는 것입니다! 만약 들어있지 않다면 쓰레기 값이 출력이 되어 원하는 바를 이룰 수가 없어서 조건식이 중요합니다. 딱 프로젝트 생성을 한 것 까지만 출력을 하도록 해주는 것이 중요합니다.
출력창을 한번 보실까요?
프로젝트 생성을 했을 때 잘 저장이 되는 것을 확인하실 수 있고 프로젝트 보기를 했을 때 안에 있는 모든 프로젝트들이 보이는 것을 알 수 있습니다!
이번 시간에는 그다지 할 것이 없었어요! 어떠한 프로그램이든 사용자에게 보여주는 기능은 그다지 소스가 길지도 않고 내용이 어렵지도 않습니다. 사실 C말고 JAVA Swing을 통해서 짜거나 혹은 안드로이드 스튜디오에서 코드를 짜게 된다면 조금 더 어려워지기는 하는데 기본 로직은 같습니다. 이번 편은 설명할 것도 별로 없고 내용도 쉽고 해서 천천히 이해해보시면 다 이해가 가실겁니다. 다음 시간에는 프로젝트 제거, 프로젝트 완료 기능을 넣어보겠습니다. 그리고 그 다음 시간에는 프로젝트 함수화를 진행해보도록 하겠습니다. 함수화를 하게 된다면 완전히 까지는 아니더라도 객체지향이 어떤 의미인지 조금은 와닿으실겁니다. C언어가 객체지향이 아니긴 하지만요 ㅎㅎㅎ.. 고생하셨습니다!