본문 바로가기

Python

PYTHON - 알고리즘 개발 매장 고객 관리 및 포인트 관리 시스템

반응형

import time

prompt = '''
==================
1. 포인트 조회
2. 포인트 추가
3. 포인트 수정
7. 회원등록 (등록포인트:100)
0. 종료
===================
'''

# 변수선언/주화면 보여주기
menu = True
welcome_point = 100
dtPoint = {"01000000000": 100}
dtPoint_copy = dtPoint.copy()
last_add_point = 0
print(prompt)

# menu 선택
while menu != "0":
    menu = input("메뉴를 선택하세요>>  ")
    if menu == "0":
        break

    elif menu == "1":
        if not len(dtPoint):
            print("# 포인트 데이터가 없습니다.", "\n")
            continue
        for tel, get_point in dtPoint.items():
            print(f"{tel} 고객님의 보유 포인트 : {get_point}")

    elif menu == "2": 
        tel = input(" 전화번호를 입력하세요 :  ")
        if len(tel) >= 10:
            if dtPoint.get(tel) == None:
                print("# 비회원으로 확인되어 회원 등록으로 넘어 갑니다 . ", "\n")
                time.sleep(1)
                if dtPoint.get(tel) == None:
                    dtPoint[tel] = welcome_point
                    print(f"# 회원 등록을 되었습니다. ")
                    print(f"# 등록 축하 포인트 : {dtPoint[tel]}point \n")
                    continue
            else:
                price = int(input(" 주문 금액을 입력하세요 : "))

                newPoint = int(price*0.01)
                last_add_point = newPoint
                dtPoint[tel] = dtPoint.get(
                    tel) + newPoint  # 수정 (기존 포인트에서 업데이트)
                # 가장 마지막에 추가된 포인트만 계속 업데이트 !
                dtPoint_copy.update({tel: newPoint})
                print(
                    f"# {newPoint} point가 추가적립되어 현재 {dtPoint[tel]} point 입니다.", "\n")
        else:
            print("전화번호를 다시 한번 확인해 주세요 ! ")

    elif menu == "3":
        tel = input("  point 수정이 필요한 전화번호를 입력하세요 : ")

        if dtPoint.get(tel):
            print(f"{tel}님이 현재까지 보유중인 point : {dtPoint[tel]} ")
            # 마지막으로 들어가 포인트 -> 수정하는게 맞는 거잖아
            if dtPoint_copy.get(tel) == None:
                print(f" 마지막 추가 point : 0 ")
            else:
                print(f" 마지막 추가 point : {dtPoint_copy.get(tel)} ")
            # 마지막 추가 포인트 : copy -> update
            change_point = int(input("수정할 포인트를 입력해주세요 : "))  # 0 입력 예외 처리
            if change_point > 0:
                dtPoint[tel] = dtPoint.get(
                    tel) - dtPoint_copy.get(tel) + change_point
                print(
                    f"#기존 추가 된 {dtPoint_copy.get(tel)} point 입력하신 {change_point} point 로 수정되었습니다.", "\n")
                dtPoint_copy.update({tel: change_point})
            elif change_point == 0:
                print(f"기존 포인트 {dtPoint.get(tel)} 유지됩니다.")
                pass
            else:
                print("0 이상의 정확한 숫자를 입력하세요")

        else:
            print(f"# {tel}님은 등록되어 있지 않습니다. ", "\n")


    elif menu == "7": 
        tel = input("전화번호를 입력하세요: ")

        if len(tel) >= 10:
            if dtPoint.get(tel) == None:

                dtPoint[tel] = welcome_point
                print(f"# 회원 등록을 되었습니다. ")
                print(f"# 등록 축하 포인트 : {dtPoint[tel]}point \n")
            else:
                print(f"이미 회원이시네요!! {tel} 회원님의 포인트 : {dtPoint[tel]}")

        else:  # 번호가 인증 되면
            print(f"정확한 연락처를 확인해주세요 : {tel} 잘못 입력하셨습니다.")

    else:
        print("잘못 입력했습니다. 다시 입력해주세요. \n")

print("\n다음에 또 이용해주세요.")

while 문으로 프로세스를 진행했고
연락처를 회원 고유값으로 사용을 해서 
휴대폰 번호 입력 값에 대한 조건을 걸어 줬다. 

반응형

1번 값을 통해 -> 회원 및 보유 포인트 조회 
2번 값을 통해 -> 전화번호  미확인 시 자동 회원 가입  + 구매 금액을 입력하면 구매금액의 1%를 포인트로 적립해준다
-> 구매 마다 마지막 적립 포인트는 별도의 dictionary.update() 를 통해 보관을 한다. 
3번 값을 통해 -> 고객 보유 포인트 + 마지막 추가된 포인트를 알려주고 변경 원하는 값을 입력 받아 -> 마지막 추가된 포인트 값을 수정해준다. 
이외에 추가적인 예외 처리는 if 문을 통해 적용하였다. 

==================
1. 포인트 조회
2. 포인트 추가
3. 포인트 수정
4. 포인트 사용
5. 포인트 저장
6. 포인트 갱신
    (파일업로드)
7. 회원등록
    (등록포인트:100)
0. 종료
===================

메뉴를 선택하세요>>  1
01000000000 고객님의 보유 포인트 : 100
메뉴를 선택하세요>>  2
 전화번호를 입력하세요 :  0101111111
# 비회원으로 확인되어 회원 등록으로 넘어 갑니다 .

# 회원 등록을 되었습니다. 
# 등록 축하 포인트 : 100point

메뉴를 선택하세요>>  2
 전화번호를 입력하세요 :  01011111111
 주문 금액을 입력하세요 : 3000
# 30 point가 추가적립되어 현재 130 point 입니다.

메뉴를 선택하세요>>  3
  point 수정이 필요한 전화번호를 입력하세요 : 01096596509
01096596509님이 현재까지 보유중인 point : 130
 마지막 추가 point : 30
수정할 포인트를 입력해주세요 : 50
#기존 추가 된 30 point 입력하신 50 point 로 수정되었습니다.

 

반응형