본문 바로가기

코딩/c언어

[C언어]큐를 이용하여 서비스를 요청한 순서대로 고객을 관리하는 프로그램

들어가기 전에

 

 

■∥ 작성조건

 1. 프로그램 메뉴 : 서비스 요청 등록(큐 삽입) / 대기번호 출력 / 서비스 처리(큐 삭제)

 2. 서비스 요청 등록의 고객 입력 사항 : 이름, 전화번호, 서비스 요청 품목

 

 

■∥ 문제 출제 : C로 배우는 쉬운 자료구조(한빛아카데미)

 

코드
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <stdio.h>
#include <malloc.h>
 
#pragma warning(disable:4996)
typedef char element;
typedef struct Qnode {
    element Name[15];
    element Phone[18];
    element Product[40];
    struct Qnode *link;
} Qnode;
 
typedef struct {
    Qnode *front, *rear;
} LQueueType;
 
LQueueType *createLinkedQueue() {
    LQueueType *LQ;
    LQ = (LQueueType *)malloc(sizeof(LQueueType));
    LQ->front = NULL;
    LQ->rear = NULL;
    return LQ;
}
 
int isEmpty(LQueueType *LQ) {
    if (LQ->front == NULL) {
        printf("\n 서비스 요청을 등록한 고객님이 없습니다. \n");
        return 1;
    }
    else return 0;
}
 
void enQueue(LQueueType *LQ) {
    Qnode *newNode = (Qnode *)malloc(sizeof(Qnode));
    printf("이름 : ");
    gets(newNode->Name);
    printf("전화번호 : ");
    gets(newNode->Phone);
    printf("수리품목 : ");
    gets(newNode->Product);
    newNode->link = NULL;
    printf("\n등록되었습니다.\n");
    if (LQ->front == NULL) {
        LQ->front = newNode;
        LQ->rear = newNode;
    }
    else {
        LQ->rear->link = newNode;
        LQ->rear = newNode;
    }
}
 
element deQueue(LQueueType *LQ) {
    Qnode *old = LQ->front;
    if (isEmpty(LQ)) return 0;
    else {
        LQ->front = LQ->front->link;
        if (LQ->front == NULL)
            LQ->rear = NULL;
        printf("\n%s고객님의 서비스가 처리되었습니다.\n", old->Name);
        free(old);
        return 1;
    }
}
 
void printLQ(LQueueType *LQ) {
    int i = 1;
    Qnode *temp = LQ->front;
    printf("\n 대기번호\n");
    while (temp){
        printf(" %d번, %s 고객님 %s서비스 요청\n", i, temp->Name, temp->Product);
        temp = temp->link;
        i++;
    }
}
 
 
void main(){
    LQueueType *LQ1 = createLinkedQueue();
    int choice;
    do {
        printf("\n\n|서비스 센터 프로그램|\n");
        printf("(1) 서비스 요청 등록\n");
        printf("(2) 대기번호 출력\n");
        printf("(3) 서비스 처리\n");
        printf("(4) 종료\n");
        printf("\n\n 무엇을 도와드릴까요? ");
        choice = getchar();
        fflush(stdin);
        switch (choice) {
        case '1':
            printf("\n서비스 요청 등록입니다.\n");
            enQueue(LQ1);
            break;
        case '2':
            printf("\n현재 대기번호 목록입니다.\n");
            printLQ(LQ1);
            break;
        case '3':
            deQueue(LQ1);
            break;
        case '4':
            printf("\n종료합니다.\n");
            break;
        default:
            printf("\n잘못된 값을 입력하였습니다.\n");
        }
    } while (choice != '4');
}

 

 

출력 결과