본문 바로가기

Back-End/Python

[Python][파이썬] 고객 정보 관리 시스템 만들기 실습

~ 목차 ~

지금 까지 배운 내용을 토대로 고객의 정보를 관리하는 프로그램을 만들어 보았다.

 
 
1. 요구사항 - 데이타

고객의 정보는 이름, 성별, 이메일, 출생년도 가 있습니다.
고객의 정보를 입력받아 본인이 선택한 자료구조에 저장 해야 합니다.
이름은 문자열로 저장하며, 성별은 남자는 M, 여자는 F로 저장합니다.
이메일은 문자열로 저장하며, 태어난 연도는 정수로 저장 합니다.

 

고객 관리 프로그램은 고객의 정보를 저장, 조회, 수정, 삭제 있는 기능이 있어야 합니다.

고객 정보를 파일에 저장하는 기능을 구현하지 않아도 됩니다.

I ”를 눌러 고객의 정보를 입력받도록 하며,

저장된 고객 정보는 P 또는 N ”을 눌러 이전 고객정보 또는 고객정보를 조회할 있어야 합니다.

조회한 고객 정보는 U ”를 눌러 새로운 정보로 수정할 있어야 합니다.

D ”를 누르면 조회한 고객 정보를 삭제해야 합니다.

프로그램의 종료는 Q ”를 누릅니다.

 

2. 요구사항 - 비기능
아래 두개의 변수의 위치는 로컬 변수 이어야 합니다.
customer_list (전체 데이터 저장용 변수)
Index (현재 위치 저장용 변수)
입력 데이터 값의 타입 및 크기(길이)를 체크 해야 합니다.
패키지를 활용 하고 문자출력(메시지, 메뉴) 전용 함수와 데이터를
처리 하는 함수를 별도의 모듈로 정리 합니다.
 
 

 

짝 프로그래밍( Pair Programming ) 통헤 실습하기

 

두 사람이 한 짝이 되어서 같이 프로그래밍을 한다.

(우리는 4명이서 한사람이 코드를 작성하고 나머지 3명이 코드를 알려주는 역할을 맡았다.)

하나의 컴퓨터를 두고. 한 사람이 10분씩, 다른 사람이 10분 간격으로 서로 옮겨 가면서 키보드를 작성한다.

한사람이 드라이버가 돼고 나머지 3명이 네비게이터가 돼 드라이버를 조종하였다.

이 과정을 반복한다.


 
# 이름, 성별, 이메일, 출생년도
# 이름 - 문자열
# 성별 - M / F
# 이메일 - 문자열
# 출생년도 - 정수

# 저장, 조회, 수정, 삭제
# I - 고객정보입력
# P, N - 고객정보조회
# U - 고객정보수정
# D - 고객정보삭제
# Q - 종료
 
 
import re

# clientData = list()
# 기본으로 입력된 데이터 입니다.
clientData = [{'name' : 'aaa', 'gender' : 'M', 'email' : 'abc@gmail.com', 'birth' : '2000'},
              {'name' : 'bbb', 'gender' : 'F', 'email' : 'bbb@gmail.com', 'birth' : '2001'},
              {'name' : 'ccc', 'gender' : 'M', 'email' : 'ccc@gmail.com', 'birth' : '2002'}]
gender_pattern = re.compile(r'^[MFmf]$')

while True:
    yourInput = input('I, R, U, D, Q 중에 입력하시오')
    if 'I' in yourInput:
        while True:
            name = input('이름을 입력하세요')
            if name.isalpha():
                pass
            else:
                print('올바른 이름을 입력하세요.')
                continue
            gender = input('성별을 입력하세요. M / F')
            if gender_pattern.match(gender):
                pass
            else:
                print('올바른 성별을 입력하세요.')
                continue
            email = input('이메일을 입력하세요.')
            if email.isalpha():
                pass
            else:
                print('올바른 이메일을 입력하세요.')
                continue
            birth = input('태어난 연도를 입력하세요.')
            if birth.isdecimal():
                pass
            else:
                print('올바른 태어난 연도를 입력하세요.')
            dic = {'name' : name, 'gender' : gender, 'email' : email, 'birth' : birth}
            clientData.append(dic)
            print('입력완료 되었습니다.')
            break
    elif 'R' in yourInput:
        count = -1
        print('고객 정보를 조회하세요.')

        while True:
            search = input('이전정보를 조회하려면 P 다음 정보를 조회하려면 N을 입력하세요')
            if 'N' in search:
                count += 1
                print(clientData[count], f'당신의 번호는 {count}')
                continue
            elif 'P' in search:
                count -= 1
                print(clientData[count], f'당신의 번호는 {count}')
                continue
            elif 'Q' in search:
                break
            else :
                print('N, P, Q중에 입력하세요')
                continue
    elif 'U' in yourInput:
        print('고객 정보를 수정하세요.')
        user_count = input('당신의 번호를 입력하세요 : ')
        print(f'현재 당신이 가지고있는 고객정보{clientData[int(user_count)]}')
        rename = input('변경할 이름을 입력하세요')
        regender = input('변경할 성별을 입력하세요. M / F')
        reemail = input('변경할 이메일을 입력하세요.')
        rebirth = input('변경할 태어난 연도를 입력하세요.')
        dic = {'name' : rename, 'gender' : regender, 'email' : reemail, 'birth' : rebirth}
        clientData[int(user_count)]=dic
        print('입력완료 되었습니다.')
        continue
    elif 'D' in yourInput:
        print('삭제하시겠습니까?')
        userDelCount=input('삭제할 번호를 입력하세요. 나가시려면 Q를 입력해주세요.')
        if 'Q' in userDelCount:
            continue
        print(f'당신의 개인정보는 다음과 같습니다{clientData[int(userDelCount)]}')
        real = input('정말 지우겠습니까? Y/N')

        if 'Y' in real:
            del clientData[int(userDelCount)]
        continue

    elif 'Q' in yourInput:
        break

 

※ import re : re 라이브러리 이용해서 gender_pattern = re.compile(r'^[MFmf]$') 써서  gender입력시 M 또는 F만 쓰도록 했다.

728x90