python

python 도서관리프로그램(define)(1)

class="song" 2023. 11. 20.
728x90

함수를 사용하여 도서관리 프로그램을 만들어보려고 한다.

 

우선 조건을 정해봤는데,

1. 회원을 등록하고, 인증 시에 도서와 관련된 기능들을 사용할 수 있다.

2. 도서의 정보는 도서번호, 도서제목, 도서재고수량, 대출된 도서의 수량, 도서의 전체권수를 담고 있다.

3. 도서가 입고가 되지 않았을 때, 빌릴 수 없고 대출 중인 도서가 없을 때 반납을 할 수 없다.

 

서비스를 이용하기 위한 회원인증 시스템을 먼저 만들어보자.

 

회원의 정보는 회원번호만 받아서 저장할 것이다.

회원 데이터의 변수는 user_list로 정했다.

 

우선 변수를 선언한다.

user_list = [] 

 

# 시작시 입력받기
def start_menu() :
    return input("""
    원하시는 메뉴를 선택해주세요.
    S = 회원등록
    C = 회원인증
    Q = 서비스 종료
    """).upper()

처음 프로그램을 시작했을 때 메뉴를 고르는 함수를 정의해준다.

 - 이용자가 소문자로 입력했어도 대문자로 처리하기 위해 upper() 함수를 사용했다.

 

 

# 시작 매뉴
def first_menu() :
    while True :
        menu  = start_menu()
        if menu == "S" :
            new_user()
    
        elif menu == "C" :
            ok_check = user_check()
            
            if ok_check == 1 :
                Main()
            else :
                print('인증실패')

        
        elif menu == "Q" :
            check = input('종료하시겠습니까? (Y/N)').upper()
            if check == "Y" :
                break
    
        else :
            print('잘못입력하셨습니다.')

start_menu로 입력받은 값을 조건으로 기능을 나눠두었다.

입력 받은 키워드가 'S'일 때 회원등록, 'C'는 회원 인증, 'Q'는 프로그램 종료.

 

그리고 난 후 회원등록, 회원인증, 서비스 종료 기능을 만들어 보자

* 회원등록 기능

def new_user() :
    global user_list
    not_new = 0
    user_id = input('회원번호를 입력해주세요')
        
    for i in user_list :
        if i == user_id :
            print('중복된 회원번호입니다.')
            not_new = 1
        else : 
            continue
    if not_new != 1 :    
        user_list.append(user_id)
        print(user_list)
    return user_list

user_list 변수를 글로벌에서 받아온다.

not_new는 새로 회원등록을 할 때, 중복된 회원번호를 사용할 수 없도록 하기 위해 변수를 하나 만들었다.

for 문을 사용하여 user_list안에 있는 회원번호를 하나씩 전달받고, 입력받은 회원번호와 일치되면 중복처리를 한다.

 

중복처리가 되지 않았다면 입력받은 회원번호를 user_list에 넣어준다.

 

*회원인증 기능

# 회원체크 함수
def user_check():
    ok_check = 0
    while True :
        if len(user_list) == 0 :
            print('데이터가 없습니다.')
        else:
            check = input('회원번호를 입력해주세요 :')
            for i in user_list :
                if i == check :
                    print('인증성공!')
                    ok_check = 1
            break
    return ok_check

우선 인증을 위한 ok_check 변수를 만든다.

그러고 난 후 user_list의 데이터가 있는지 확인한다. 데이터가 없다면 print문으로 알려준다.

데이터가 있다면, 사용자에게 회원번호를 입력받는다.

for문을 사용하여 입력받은 데이터와 user_list의 데이터가 일치하는 것이 있을 때 인증성공을 보여주고,

ok_check의 값을 1로 변경한다.

이후의 도서관리프로그램 함수를 실행하기 위해 ok_check를 return 해준다.

 

* 서비스 종료 기능은 코드가 짧아 따로 생성하지 않고 first_menu함수 안에 넣어 두었다.

 - 실수로 버튼을 눌렀을 때를 생각해 한 번 더 체크하는 기능도 포함시켰다.

 

 

우선 회원 관련 기능들을 확인해 보았다.

잘 동작하는 것을 확인하였다.

 

다음글 : 

2023.11.20 - [분류 전체보기] - python 도서관리프로그램(difine)(2)

728x90

'python' 카테고리의 다른 글

Django 시작하기  (0) 2024.02.05
python 도서관리프로그램(difine)(2)  (2) 2023.11.20
python 기초 (함수(function))  (4) 2023.11.20
python 기초(정규식(Regular Expression))  (1) 2023.11.16
python 기초 (예외 처리)  (5) 2023.11.16

댓글