# 3-1. 기본 구조


본 프로그램은 데이터 조회, 입력, 삭제, 변경, 종료 등의 기능으로 구성되어 있습니다. 'while문'을 이용하여 종료 명령어가 입력되기 전까지는 계속 명령어를 입력 받도록 설계 했으며 명령어가 잘못 입력된 경우에는 안내 메세지가 출력되도록 하였습니다.

  

cmd = 'na'

while cmd != 'q':

print("")

print("***사용 가능 명령어 리스트***")

print("a  : 모든 데이터 조회(all)")

print("f  : 조건에 맞는 데이터만 조회(find)")

print("i  : 수강생 입력(insert)")

print("d  : 수강생 삭제(delete)")

print("r  : 정보 변경(revise)")

print("q  : 저장하고 나가기(quit)")

print("")

cmd = input("command(명령어 입력): ")

print("")

if cmd == 'a': <code>

elif cmd == 'f': <code>

elif cmd == 'i': <code>

elif cmd == 'd': <code>

elif cmd == 'r': <code>

elif cmd == 'q': <code>

else:

print("잘못된 명령어가 입력되었습니다. 다시 입력해 주세요.")


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력):




# 3-2. 모든 수강생 조회(all)


if cmd == 'a':

sql = "SELECT * FROM student"

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): a


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지   

-----------------------------------------------

  test1    19900301    A   01000000000  서울

  test2    19910412    A   01011111111  인천

  test3    19920523    B   01022222222  수원

  test4    19930604    A   01033333333  대전

  test5    19940715    C   01044444444  부산

  test6    19950826    C   01055555555  대구

  test7    19960907    B   01066666666  서울

  test8    19971018    B   01077777777  인천

  test9    19981129    A   01088888888  대전

-----------------------------------------------


테이블의 모든 데이터를 출력하는 쿼리문을 전달한 뒤 결과를 result에 담아 출력하였습니다. 미리 입력해둔 테스트 데이터가 제대로 출력되었습니다. 참고로 출력 시에는 미리 제작해 놓은 'print_result()'를 호출하여 사용했습니다.


def print_result(result):

print("\n------------------------------------------------------------------------")

cnames = ['이름', '생년월일', '소속', '전화번호', '거주지']

for c in cnames:

print(c.center(11, ' '), end='\t')

print("\n------------------------------------------------------------------------")

ccodes = ['name', 'birth', 'team', 'phone', 'address']

forin result:

for c in ccodes:

print(str(r[c]).center(11, ' '), end='\t')

print("")

print("------------------------------------------------------------------------")





# 3-3. 조건에 맞는 데이터만 조회(find)


이름, 생년월일 등 각 칼럼에 따른 데이터를 조회할 수 있게 하기 위하여 'if문'을 이용하였으며, 전체적인 틀은 다음과 같습니다.


elif cmd == 'f':

print("무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)")

con = input("> ")

if con == '이름':

elif con == '나이':

elif con == '소속':

elif con == '전화번호':

elif con == '거주지':



# 3-3-1. 검색 기준: 이름


if con == '이름':

print("\n검색하실 수강생의 이름을 입력해 주세요.")

con2 = input("> ")

sql = "SELECT * FROM student WHERE name = '{}'".format(con2)

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


검색 대상을 'input'으로 입력받아 쿼리문을 완성되도록 했는데, 아래와 같이 제대로 검색이 되는 것을 확인할 수 있습니다.


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): f


무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)

> 이름

검색하실 수강생의 이름을 입력해 주세요.

> test1


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지

-----------------------------------------------

  test1    19900301    A   01000000000  서울

-----------------------------------------------



# 3-3-2. 검색 기준: 나이


elif con == '나이':

print("\n※ 숫자만 입력 해 주세요.\n")

input_age1 = int(input("몇 살 이상을 검색하시겠습니까? "))

input_age2 = int(input("몇 살 이하을 검색하시겠습니까? "))

import datetime, time

d = datetime.date.today()

year1 = d.year - input_age2 + 1

year2 = d.year - input_age1 + 1

sql = "SELECT * FROM student WHERE LEFT(birth, 4) BETWEEN {} AND {}".format(year1, year2)

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


저장된 데이터의 나이로 부터 생년월일(YYYYMMDD)을 추출하기 위해 오늘 자 년, 월, 일을 알려주는 'datetime'를 이용하였습니다. 추출된 연도 범위 안의 수강생을 출력하기 위해 'where'절에서 'left'를 이용하여 추출한 연도 4자리가 해당 범위에 속하는 학생만 선택될 수 있도록 하였습니다. 


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): f


무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)

> 나이


※ 숫자만 입력 해 주세요.


몇 살 이상을 검색하시겠습니까? 20

몇 살 이하을 검색하시겠습니까? 23


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지

-----------------------------------------------

  test7    19960907    B   01066666666  서울

  test8    19971018    B   01077777777  인천

  test9    19981129    A   01088888888  대전

-----------------------------------------------



# 3-3-3. 검색 기준: 소속


elif con == '소속':

print("\n검색하실 수강 그룹을 입력해 주세요. (A/B/C)")

con2 = input("> ")

sql = "SELECT * FROM student WHERE team = '{}'".format(con2)

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


저장된 데이터의 나이로 부터 생년월일(YYYYMMDD)을 추출하기 위해 오늘 자 년, 월, 일을 알려주는 'datetime'를 이용하였습니다. 추출된 연도 범위 안의 수강생을 출력하기 위해 'where'절에서 'left'를 이용하여 추출한 연도 4자리가 해당 범위에 속하는 학생만 선택될 수 있도록 하였습니다. 


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): f


무엇을 기준으로 검색하시겠습니까? (A/B/C)

> B


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지

-----------------------------------------------

  test3    19920523    B   01022222222  수원

  test7    19960907    B   01066666666  서울

  test8    19971018    B   01077777777  인천

-----------------------------------------------



# 3-3-4. 검색 기준: 전화번호


elif con == '전화번호':

print("\n검색하실 전화번호을 입력해 주세요. (숫자만 입력 해 주세요.)")

con2 = input("> ")

sql = "SELECT * FROM student WHERE phone = '{}'".format(con2)

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): f


무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)

> 전화번호


검색하실 전화번호을 입력해 주세요. (숫자만 입력 해 주세요.)

> 01055555555


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지

-----------------------------------------------

  test6    19950826    C   01055555555  대구

-----------------------------------------------



# 3-3-5. 검색 기준: 거주지


elif con == '거주지':

print("\n검색하실 거주지를 입력해 주세요.")

con2 = input("> ")

sql = "SELECT * FROM student WHERE address = '{}'".format(con2)

cursor.execute(sql)

result = cursor.fetchall()

print_result(result)


\Users\Project> python project02.py

***사용 가능 명령어 리스트***

a  : 모든 데이터 조회(all)

f  : 조건에 맞는 데이터만 조회(find)

i  : 수강생 입력(insert)

d  : 수강생 삭제(delete)

r  : 정보 변경(revise)

q  : 저장하고 나가기(quit)


command(명령어 입력): f


무엇을 기준으로 검색하시겠습니까? (이름/나이/소속/전화번호/거주지)

> 거주지


검색하실 거주지를 입력해 주세요.

> 서울


-----------------------------------------------

   이름     생년월일   소속   전화번호    거주지

-----------------------------------------------

  test1    19900301    A   01000000000  서울

  test7    19960907    B   01066666666  서울

-----------------------------------------------


+ Recent posts