프로그래밍 언어/Python

파이썬 Python 실습 :: 고객 정보 관리 프로그램 만들어보기

gamjadori 2024. 1. 18. 10:16
728x90

<고객 정보 입력 프로그램> Ver. 1

  • 메뉴를 여러번 물어보도록 수정
  • 메뉴를 선택하면 중단하도록 프로그래밍
더보기
고객정보 = list()
while True: # 무한루프
    메뉴 = input('''
            다음 중에서 할 일을 고르시오:
            I - 고객 정보 조회
            C - 현재 고객 정보 조회
            P - 이전 고객 정보 조회
            N - 다음 고객 정보 조회
            U - 고객 정보 수정
            D - 고객 정보 삭제
            Q - 프로그램 종료)
            ''')
    if 메뉴 == 'i':
        print('고객 정보 입력')
        이름 = input('이름을 입력하세요.')
        성별 = input('성별을 F,M으로 입력하세요.')
        출생년도 = input('출생년도를 입력하세요.')
        지역 = input('지역 정보를 입력하세요.')
        고객 = {
                '이름': 이름,
                '성별': 성별,
                '출생년도': 출생년도,
                '지역': 지역
                } # { }는 딕셔너리
        고객정보.append(고객) #
# .append: 선택한 요소의 내용 끝에 내용 추가
    elif 메뉴 == 'c' or 'C':
        print('현재 고객 정보 조회')
    elif 메뉴 == 'p' or 'P':
        print('이전 고객 정보 조회')
    elif 메뉴 == 'u' or 'U':
        print('고객 정보 수정')
    elif 메뉴 == 'd' or 'D':
        print('고객 정보 삭제')
    elif 메뉴 == 'q' or 'Q':
        print('프로그램 종료')
        print(고객정보)
        break
    else:
        print('선택하신 메뉴가 없습니다.')

<고객 정보 입력 프로그램> Ver. 2

  • 입력받는 고객 정보를 체크하는 로직을 추가
  • 메뉴 Q를 선택하면, 현재 고객 정보 변수의 내용을 파일로 저장하고 종료하도록 수정
더보기
import pickle

with open('./customer.pickle', 'rb') as f:
    고객정보 = pickle.load(f)

while True:
    메뉴 = input("""
    다음 중에서 하실 일을 골라주세요.:
┌---------------------------------------------------------------------┐
│                     고객 관리 프로그램                               │
│                                                                     │  
│    I - 고객 정보 입력                                                │
│    C - 현재 고객 정보 조회                                           │
│    P - 이전 고객 정보 조회                                           │
│    N - 다음 고객 정보 조회                                           │
│    U - 고객 정보 수정                                                │
│    D - 고객 정보 삭제                                                │
│    Q - 프로그램 종료                                                 │
└---------------------------------------------------------------------┘
    """)
    if 메뉴 == 'i':
        print("┌-----------------------------------------------┐")
        print("│             고객 정보 입력                     │")
        print("└-----------------------------------------------┘")
        이름 = input('이름을 입력하세요. : ')
        while True:
            성별 = input('성별을 M, F로 입력하시오.').upper
            if 성별 in ('M', 'F'):
                break
            else:
                print('M/m 또는 F/f 중 입력하시오.')
        while True:
            출생년도 = input('출생년도를 입력하시오.')
            if 출생년도.isdecimal() and len(출생년도) == 4: // 딕셔너리.isdecimal(): 해당 문자열이 0~9까지의 수로 이루어진 것인지 검사
                break
            else:
                print('4자리 숫자로 입력하시오.')
        while True:
            지역 = input('현재 살고 있는 지역을 입력하시오.')
            if 지역.isalnum(): // 딕셔너리.isalnum(): 문자열이 영어, 한글 혹은 숫자로 되어있으면 참 리턴, 아니면(특수문자) 거짓 리턴.
                break
            else:
                print('문자와 숫자만 입력하시오.')
        고객 = dict()
        고객.setdefault('이름', 이름) // .setdefault(): 딕셔너리에 키-값 쌍을 추가
        고객.setdefault('성별', 성별)
        고객.setdefault('출생년도', 출생년도)
        고객.setdefault('지역', 지역)
        고객정보.append(고객) // .append(): 딕셔너리의 맨 마지막에 키-값 추가
    elif 메뉴 == 'c':
        print('현재 고객 정보 조회')
        print(고객정보)
    elif 메뉴 == 'p':
        print('이전 고객 정보 조회')
    elif 메뉴 == 'n':
        print('다음 고객 정보 조회')
    elif 메뉴 == 'u':
        print('고객 정보 수정')
    elif 메뉴 == 'd':
        print('고객 정보 삭제')
    elif 메뉴 == 'q':
        print('프로그램 종료')
    # print(고객 정보)
    with open('./customer.pickle', 'wb') as f:
        pickle.dump(고객정보, f) // 파일 저장
    break
else:
    print('선택하신 메뉴가 없습니다.')

<고객 정보 입력 프로그램> Ver. 3

  • 전반적인 기능 1차 완성
더보기
**import pickle** // 데이터를 자료형의 변경없이 파일로 저장하여 로드
import os // os: 운영체제의 명령어가 들어있는 라이브러리로, os 모듈은 운영 체제와 상호 작용하기 위한 수십 가지 함수들을 제공

위치 = -1 // -1이라는 것은 데이터가 없다는 뜻 (0으로 설정하면 0건이 있다고(데이터가 있다) 판단)
고객정보 = list()
if os.path.exists('./customer.pickle'): // **os.path.exists**:  디렉터리 또는 파일 존재 여부 확인
	with open('./customer.pickle', 'rb') as f: // **with as 구문:** 파일 자동 닫기
    고객정보 = pickle.load(f)
	위치 = len(고객정보) - 1 **** len():** 리스트나 튜플, 딕셔너리와 같은 다양한 자료형의 요소 개수를 구하는 데

while True:
    메뉴 = input("""
    다음 중에서 하실 일을 골라주세요.:
┌---------------------------------------------------------------------┐
│                     고객 관리 프로그램                              │
│                                                                     │  
│    I - 고객 정보 입력                                               │
│    C - 현재 고객 정보 조회                                          │
│    P - 이전 고객 정보 조회                                          │
│    N - 다음 고객 정보 조회                                          │
│    U - 고객 정보 수정                                               │
│    S - 고객 정보 저장                                               │
│    D - 고객 정보 삭제                                               │
│    Q - 프로그램 종료                                                │
└---------------------------------------------------------------------┘
    """)
    if 메뉴 == 'i':
        print("┌----------------------------------------┐")
        print("│             고객 정보 입력             │")
        print("└----------------------------------------┘")
        이름 = input('이름을 입력하세요. : ')
        while True:
            성별 = input('성별을 M, F로 입력하시오.').upper
            if 성별 in ('M', 'F'):
                break
            else:
                print('M/m 또는 F/f 중 입력하시오.')
        while True:
            출생년도 = input('출생년도를 입력하시오.')
            if 출생년도.isdecimal() and len(출생년도) == 4: // **딕셔너리.isdecimal():** 해당 문자열이 0~9까지의 수로 이루어진 것인지 검사
                break
            else:
                print('4자리 숫자로 입력하시오.')
        while True:
            지역 = input('현재 살고 있는 지역을 입력하시오.')
            if 지역.isalnum(): // **딕셔너리.isalnum()**: 문자열이 영어, 한글 혹은 숫자로 되어있으면 참 리턴, 아니면(특수문자) 거짓 리턴.
                break
            else:
                print('문자와 숫자만 입력하시오.')
        고객 = dict()
        고객.setdefault('이름', 이름) // **.setdefault()**: 딕셔너리에 키-값 쌍을 추가
        고객.setdefault('성별', 성별)
        고객.setdefault('출생년도', 출생년도)
        고객.setdefault('지역', 지역)
        고객정보.append(고객) // **.append()**: 딕셔너리의 맨 마지막에 키-값 추가
				위치 = len(고객정보) - 1
    elif 메뉴 == 'c':
        print("┌----------------------------------------┐")
        print("│          현재 고객 정보 조회            │")
        print("└----------------------------------------┘")
				if 위치 > -1: // 데이터가 있는 경우
	        print(위치 + 1, '번째 고객정보: ', 고객정보[위치]) // 위치 + 1: 인덱스 기준으로 순서를 매겨놓았기 때문에, 출력할 때는 사용자가 보기 편하게 +1
				else: // 데이터가 없는 경우
						print('고객정보가 없습니다. 입력 후 조회하시오.')   
elif 메뉴 == 'p':
        print("┌----------------------------------------┐")
        print("│          이전 고객 정보 조회            │")
        print("└----------------------------------------┘")
				if 위치 > 0:
					 위치 -= 1 # or고객정보[위치-1]로도 표현 가능
				   print(위치 + 1, '번째 고객정보: ', 고객정보[위치])
				else:
					print('첫 번째 위치입니다.')
    elif 메뉴 == 'n':
        print("┌----------------------------------------┐")
        print("│          다음 고객 정보 조회           │")
        print("└----------------------------------------┘")
				if 위치 <= len(고객정보) - 1: // (고객정보 리스트의 개수) - 1이 위치와 같거나 크면
					 위치 += 1 // **** +=: a = a + b 현재 위치에서 1을 더 해서 계산하라**
					 print(위치 + 1, '번째 고객정보: ', 고객정보[위치])
				else:
						print('마지막 위치입니다.')
    elif 메뉴 == 'u':
        print('고객 정보 수정')
		print("┌----------------------------------------┐")
        print("│             고객 정보 수정             │")
        print("└----------------------------------------┘")
        이름 = input('이름을 입력하세요. : ')
        while True:
            성별 = input('성별을 M, F로 입력하시오.').upper
            if 성별 in ('M', 'F'):
                break
            else:
                print('M/m 또는 F/f 중 입력하시오.')
        while True:
            출생년도 = input('출생년도를 입력하시오.')
            if 출생년도.isdecimal() and len(출생년도) == 4: // **딕셔너리.isdecimal():** 해당 문자열이 0~9까지의 수로 이루어진 것인지 검사
                break
            else:
                print('4자리 숫자로 입력하시오.')
        while True:
            지역 = input('현재 살고 있는 지역을 입력하시오.')
            if 지역.isalnum(): // **딕셔너리.isalnum()**: 문자열이 영어, 한글 혹은 숫자로 되어있으면 참 리턴, 아니면(특수문자) 거짓 리턴.
                break
            else:
                print('문자와 숫자만 입력하시오.')
        고객 = dict()
        고객.setdefault('이름', 이름) // **.setdefault()**: 딕셔너리에 키-값 쌍을 추가
        고객.setdefault('성별', 성별)
        고객.setdefault('출생년도', 출생년도)
        고객.setdefault('지역', 지역)
        고객정보[위치] = 고객
				위치 = len(고객정보) - 1
    elif 메뉴 == 'd':
        print("┌----------------------------------------┐")
        print("│              고객 정보 삭제            │")
        print("└----------------------------------------┘")
				del 고객정보[위치]
				print(위치 + 1, '번째 고객정보가 삭제되었습니다.')
    elif 메뉴 == 's':
        print("┌----------------------------------------┐")
        print("│              고객 정보 저장            │")
        print("└----------------------------------------┘")
				with open('./customer.pickle', 'wb') as f:
						pickle.dump(고객정보, f)
**** pickle.dump():** 객체를 파일로 저장하기(파일 쓰기) / 기존에 피클파일이 없으면 생성하기 때문에 오류 발생하지 않음
        print('고객 정보가 저장되었습니다.')
    elif 메뉴 == 'q':
        print("┌----------------------------------------┐")
        print("│              프로그램 종료             │")
        print("└----------------------------------------┘")
    # print(고객 정보)
    with open('./customer.pickle', 'wb') as f:
        **pickle.dump**(고객정보, f) // ** **pickle.dump(**): 파일 저장
    break
else:
	print("┌---------------------------------------------┐")
    print("│         선택하신 메뉴가 없습니다.            │")
    print("└---------------------------------------------┘")

<고객 정보 입력 프로그램> Ver. 4

  • I, C, P, N, U, D, S, Q 각 기능을 함수로 빼내시오.
  • global 함수를 이용한 함수 지정
더보기
import pickle
import os

위치 = -1
고객정보 = list()

def 읽기():
    global 위치, 고객정보
    if os.path.exists('./customer.pickle'):
        with open('./customer.pickle', 'rb') as f:
            고객정보 = pickle.load(f)
        위치 = len(고객정보) - 1

def _입력(): >> 생성 이유: 수정 로직과 입력 로직이 거의 흡사하여 다른 부분만 제외하고 함수 선언
    global 고객정보 // **** 전역 변수(global variable)**: 함수 외부에서 선언된 변수를 의미
		>> 함수 외부에 고객정보 = list()라고 변수 지정되어 있음 
    이름 = input('이름을 입력하세요.: ')
    while True:
        성별 = input('성별을 M, F로 입력하시오.').upper()
        if 성별 in ('M', 'F'):
            break
        else:
            print('M/m 또는 F/f 중 입력하시오.')
    while True:
        출생년도 = input('출생년도를 입력하시오.')
        if 출생년도.isdecimal() and len(출생년도) == 4:
            break
        else:
            print('4자리 숫자로 입력하시오.')
    while True:
        지역 = input('지역 정보를 입력하세요. : ')
        if 지역.isalnum():
            break
        else:
            print('현재 살고 있는 지역을 입력하시오.')
    고객 = dict()
    고객.setdefault('이름', 이름)
    고객.setdefault('성별', 성별)
    고객.setdefault('출생년도', 출생년도)
    고객.setdefault('지역', 지역)
    고객정보.append(고객)

**def 입력():
    global 위치, 고객정보
    print("┌-----------------------------------------------┐")
    print("│             고객 정보 입력                    │")
    print("└-----------------------------------------------┘")
    _입력()
    위치 = len(고객정보) - 1**

def 현재():
    **global** 위치, 고객정보
    print("┌----------------------------------------┐")
    print("│          현재 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 > -1:
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('고객정보가 없습니다. 입력 후 조회 부탁드립니다.')

def 이전():
    **global** 위치, 고객정보
    print("┌----------------------------------------┐")
    print("│          이전 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 > 0:
        위치 -= 1 #고객정보[위치-1]
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('첫번째 위치입니다.')

def 다음():
    **global** 위치, 고객정보
    print("┌----------------------------------------┐")
    print("│          다음 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 < len(고객정보) - 1:
        위치 += 1
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('마지막 위치입니다.')

**def 수정():
    print("┌----------------------------------------┐")
    print("│             고객 정보 수정              │")
    print("└----------------------------------------┘")
    _입력()
    # 위치 = len(고객정보) - 1**

def 삭제():
    **global** 위치, 고객정보
    print("┌----------------------------------------┐")
    print("│              고객 정보 삭제             │")
    print("└----------------------------------------┘")
    del 고객정보[위치]
    print(위치 + 1,'번째 고객정보가 삭제 되었습니다.')

def 저장():
    **global** 고객정보
    print("┌----------------------------------------┐")
    print("│              고객 정보 저장             │")
     print("└----------------------------------------┘")
    with open('./customer.pickle', 'wb') as f:
        pickle.dump(고객정보, f)
    print('고객 정보가 저장돼었습니다.')

def 종료():
    print("┌----------------------------------------┐")
    print("│              프로그램 종료              │")
    print("└----------------------------------------┘")
    저장()
    os._exit(0)
** os._exit(): 프로그램을 강제로 종료시키는 함수
def _메뉴():
    **return** input("""
┌---------------------------------------------------------------------┐
│                     고객 관리 프로그램                               │
│                                                                     │  
│    I - 고객 정보 입력                                                │
│    C - 현재 고객 정보 조회                                           │
│    P - 이전 고객 정보 조회                                           │
│    N - 다음 고객 정보 조회                                           │
│    U - 고객 정보 수정                                                │
│    S - 고객 정보 저장                                                │
│    D - 고객 정보 삭제                                                │
│    Q - 프로그램 종료                                                 │
└---------------------------------------------------------------------┘
===> """)

>> 사용자가 입력한 것을 return으로 반환하여 함수 종료 후 다음 과정 진행

def 메인():
    while True:
        메뉴 = _메뉴()

        if 메뉴 == 'i':
            입력()
        elif 메뉴 == 'c':
            현재()
        elif 메뉴 == 'p':
            이전()
        elif 메뉴 == 'n':
            다음()
        elif 메뉴 == 'u':
            수정()
        elif 메뉴 == 'd':
            삭제()
        elif 메뉴 == 's':
            저장()
        elif 메뉴 == 'q':
            종료()
        else:
            print("┌------------------------------------------┐")
            print("│         선택하신 메뉴가 없습니다.         │")
            print("└------------------------------------------┘")
if __name__ == '__main__':
    메인()
**** if __name__ == '__main__':** 해당 구문이 사용된 파이썬 파일을 직접 실행했을 때만 아래 코드를 실행하겠다
    읽기()

<고객 정보 입력 프로그램> Ver. 4-1

  • 전역변수 대체
더보기
import pickle
import os

def 읽기():
    global 위치, 고객정보
    if os.path.exists('./customer.pickle'):
        with open('./customer.pickle', 'rb') as f:
            고객정보 = pickle.load(f)
        위치 = len(고객정보) - 1
		else:
				고객정보 = list()
				위치 = -1
		return 고객정보, 위치

def _입력(): >> 생성 이유: 수정 로직과 입력 로직이 거의 흡사하여 다른 부분만 제외하고 함수 선언
    이름 = input('이름을 입력하세요.: ')
    while True:
        성별 = input('성별을 M, F로 입력하시오.').upper()
        if 성별 in ('M', 'F'):
            break
        else:
            print('M/m 또는 F/f 중 입력하시오.')
    while True:
        출생년도 = input('출생년도를 입력하시오.')
        if 출생년도.isdecimal() and len(출생년도) == 4:
            break
        else:
            print('4자리 숫자로 입력하시오.')
    while True:
        지역 = input('지역 정보를 입력하시오.')
        if 지역.isalnum():
            break
        else:
            print('현재 살고 있는 지역을 입력하시오.')
    고객 = dict()
    고객.setdefault('이름', 이름)
    고객.setdefault('성별', 성별)
    고객.setdefault('출생년도', 출생년도)
    고객.setdefault('지역', 지역)
		 return 고객

def 입력(고객정보, 위치):
    print("┌---------------------------------------┐")
    print("│             고객 정보 입력             │")
    print("└---------------------------------------┘")
    _입력()
		고객정보.append(고객)
    위치 = len(고객정보) - 1
		return 위치

def 현재(고객정보, 위치):
    print("┌----------------------------------------┐")
    print("│          현재 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 > -1:
				if 위치 >= len(고객정보) - 1:
						위치 = len(고객정보) - 1
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('고객정보가 없습니다. 입력 후 조회 부탁드립니다.')
		return 위치

def 이전(고객정보, 위치):
    print("┌----------------------------------------┐")
    print("│          이전 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 > 0:
        위치 -= 1 #고객정보[위치-1]
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('첫번째 위치입니다.')
		return 위치

def 다음(고객정보, 위치):
    print("┌----------------------------------------┐")
    print("│          다음 고객 정보 조회            │")
    print("└----------------------------------------┘")
    if 위치 < len(고객정보) - 1:
        위치 += 1
        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
    else:
        print('마지막 위치입니다.')
				return 위치

def 수정(고객정보, 위치):
    print("┌----------------------------------------┐")
    print("│             고객 정보 수정              │")
    print("└----------------------------------------┘")
    고객 = _입력()
		고객정보[위치] = 고객

def 삭제(고객정보, 위치):
    print("┌----------------------------------------┐")
    print("│              고객 정보 삭제             │")
    print("└----------------------------------------┘")
    del 고객정보[위치]
    print(위치 + 1,'번째 고객정보가 삭제 되었습니다.')

def 저장(고객정보):
    print("┌----------------------------------------┐")
    print("│              고객 정보 저장             │")
     print("└---------------------------------------┘")
    with open('./customer.pickle', 'wb') as f:
        pickle.dump(고객정보, f)
    print('고객 정보가 저장돼었습니다.')

def 종료(고객정보):
    print("┌----------------------------------------┐")
    print("│              프로그램 종료              │")
    print("└----------------------------------------┘")
    저장()
    os._exit(0)
** os._exit(): 프로그램을 강제로 종료시키는 함수
def _메뉴():
    **return** input("""
┌---------------------------------------------------------------------┐
│                     고객 관리 프로그램                               │
│                                                                     │  
│    I - 고객 정보 입력                                                │
│    C - 현재 고객 정보 조회                                           │
│    P - 이전 고객 정보 조회                                           │
│    N - 다음 고객 정보 조회                                           │
│    U - 고객 정보 수정                                                │
│    S - 고객 정보 저장                                                │
│    D - 고객 정보 삭제                                                │
│    Q - 프로그램 종료                                                 │
└---------------------------------------------------------------------┘
===> """)

>> 사용자가 입력한 것을 return으로 반환하여 함수 종료 후 다음 과정 진행

def 메인(고객정보, 위치):
		위치 = 위치
		고객정보 = 고객정보
    while True:
        메뉴 = _메뉴()

        if 메뉴 == 'i':
            위치 = 입력(고객정보, 위치)
        elif 메뉴 == 'c':
            위치 = 현재(고객정보, 위치)
        elif 메뉴 == 'p':
            위치 = 이전(고객정보, 위치)
        elif 메뉴 == 'n':
            위치 = 다음(고객정보, 위치)
        elif 메뉴 == 'u':
            수정(고객정보, 위치)
        elif 메뉴 == 'd':
            삭제(고객정보, 위치)
        elif 메뉴 == 's':
            저장(고객정보)
        elif 메뉴 == 'q':
            종료(고객정보)
        else:
            print("┌------------------------------------------┐")
            print("│         선택하신 메뉴가 없습니다.         │")
            print("└------------------------------------------┘")
if __name__ == '__main__':
		고객정보, 위치 = 읽기()
    메인(고객정보, 위치)
**** if __name__ == '__main__':** 해당 구문이 사용된 파이썬 파일을 직접 실행했을 때만 아래 코드를 실행하겠다

<고객 정보 입력 프로그램> Ver. 5

  • 클래스로 변환
더보기
import pickle
import os
import re // 정규표현식 지원 모듈
import datetime // import datetime

class Customer:
    def __init__(self):
        self.고객정보, self.위치 = self.읽기()

	def 읽기(self):
	    if os.path.exists('./customer.pickle'):
	        with open('./customer.pickle', 'rb') as f:
	            고객정보 = pickle.load(f)
	        위치 = len(고객정보) - 1
			else:
					고객정보 = list()
					위치 = -1
			return 고객정보, 위치

	def _입력(self):
	    이름 = input('이름을 입력하세요.: ')
			if not re.search('[^가-힣]', 이름): ** [^가-힣]: 한글로 쓰도록 범위 제한
				break
	    else:
		    print('이름은 한글로만 입력하세요.')
	    while True:
	        성별 = input('성별을 M, F로 입력하시오.').upper()
					if re.match('M|F|m|f.', 성별) and len(성별) == 1: ** 'M|F|m|f.'으로만 썼는지 확인
		          break
	        else:
	            print('M/m 또는 F/f 중 입력하시오.')
	    while True:
					max_year = (datetime.date.today() + datetime.timedelta(days=365*10)).year
	        출생년도 = input('출생년도를 입력하시오.')
					if re.match('[0-9]{4}', 출생년도) and len(출생년도) == 4 and int(출생년도) <= max_year:
	            break
					** 숫자 4자리로만 썼는지 확인
	        else:
						print('4자리 숫자만 또는 10년 후 년도 까지만 입력하시오.')
	    while True:
	        지역 = input('지역 정보를 입력하시오.')
					if not re.search('[^가-힣0-9]+', 지역): ** 한글이나 숫자로만 썼는지 확인
	            break
	        else:
							print('문자와 숫자만 입력하세요.')
	    고객 = dict()
	    고객.setdefault('이름', 이름)
	    고객.setdefault('성별', 성별)
	    고객.setdefault('출생년도', 출생년도)
	    고객.setdefault('지역', 지역)
			 return 고객

	def 입력(self, 고객정보, 위치):
	    print("┌---------------------------------------┐")
	    print("│             고객 정보 입력             │")
	    print("└---------------------------------------┘")
	    고객 = self._입력()
			고객정보.append(고객)
	    위치 = len(고객정보) - 1
			return 위치

	def 현재(self, 고객정보, 위치):
	    print("┌----------------------------------------┐")
	    print("│          현재 고객 정보 조회            │")
	    print("└----------------------------------------┘")
	    if 위치 > -1:
					if 위치 >= len(고객정보) - 1:
							위치 = len(고객정보) - 1
	        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
	    else:
	        print('고객정보가 없습니다. 입력 후 조회 부탁드립니다.')
			return 위치

	def 이전(고객정보, 위치):
	    print("┌----------------------------------------┐")
	    print("│          이전 고객 정보 조회            │")
	    print("└----------------------------------------┘")
	    if 위치 > 0:
	        위치 -= 1 #고객정보[위치-1] 위치 = 위치 - 1
	        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
	    else:
	        print('첫 번째 위치입니다.')
			return 위치

	def 다음(self, 고객정보, 위치):
	    print("┌----------------------------------------┐")
	    print("│          다음 고객 정보 조회            │")
	    print("└----------------------------------------┘")
	    if 위치 < len(고객정보) - 1:
	        위치 += 1
	        print(위치 + 1,'번째 고객정보 : ',고객정보[위치])
	    else:
	        print('마지막 위치입니다.')
					return 위치

	def 수정(self, 고객정보, 위치):
	    print("┌----------------------------------------┐")
	    print("│             고객 정보 수정              │")
	    print("└----------------------------------------┘")
	    고객 = self._입력()
			고객정보[위치] = 고객

	def 삭제(self, 고객정보, 위치):
	    print("┌----------------------------------------┐")
	    print("│              고객 정보 삭제             │")
	    print("└----------------------------------------┘")
	    del 고객정보[위치]
	    print(위치 + 1,'번째 고객정보가 삭제 되었습니다.')

	def 저장(self, 고객정보):
	    print("┌----------------------------------------┐")
	    print("│              고객 정보 저장             │")
	    print("└----------------------------------------┘")
	    with open('./customer.pickle', 'wb') as f:
	        pickle.dump(고객정보, f)
	    print('고객 정보가 저장되었습니다.')

	def 종료(self, 고객정보):
	    print("┌----------------------------------------┐")
	    print("│              프로그램 종료              │")
	    print("└----------------------------------------┘")
	    self.저장(고객정보)
	    os._exit(0)

	def _메뉴(self):
	    **return** input("""
	┌---------------------------------------------------------------------┐
	│                     고객 관리 프로그램                               │
	│                                                                     │  
	│    I - 고객 정보 입력                                                │
	│    C - 현재 고객 정보 조회                                           │
	│    P - 이전 고객 정보 조회                                           │
	│    N - 다음 고객 정보 조회                                           │
	│    U - 고객 정보 수정                                                │
	│    S - 고객 정보 저장                                                │
	│    D - 고객 정보 삭제                                                │
	│    Q - 프로그램 종료                                                 │
	└---------------------------------------------------------------------┘
	===> """)
>> 사용자가 입력한 것을 return으로 반환하여 함수 종료 후 다음 과정 진행

	def 메인(self):
	    while True:
	        메뉴 = _메뉴()

	        if 메뉴 == 'i':
	            self.위치 = self.입력(self.고객정보, self.위치)
	        elif 메뉴 == 'c':
	            self.위치 = self.현재(self.고객정보, self.위치)
	        elif 메뉴 == 'p':
	            self.위치 = self.이전(self.고객정보, self.위치)
	        elif 메뉴 == 'n':
	            self.위치 = self.다음(self.고객정보, self.위치)
	        elif 메뉴 == 'u':
	            self.수정(self.고객정보, self.위치)
	        elif 메뉴 == 'd':
	            self.삭제(self.고객정보, self.위치)
        elif 메뉴 == 's':
	            self.저장(self.고객정보)
	        elif 메뉴 == 'q':
	            self.종료(self.고객정보)
	        else:
	            print("┌------------------------------------------┐")
	            print("│         선택하신 메뉴가 없습니다.         │")
	            print("└------------------------------------------┘")
if __name__ == '__main__':
		customer = Customer()
    customer.메인()