AiPE

막간을 이용한 친구 학원 업무보고 툴 만들기 본문

[XiBBaL] Development Project/Etc.

막간을 이용한 친구 학원 업무보고 툴 만들기

Oshimaker XiBBaL 2024. 3. 17. 19:44
반응형

1. 문제 상황 분석

친구가 근무하는 학원이 있는데, 매일매일 상부에 업무 내용을 문서로 작성해서 전송해야 하는 상황이다.

 

친구 뿐 아니라 모든 근무자가 자기가 근무한 내용을 적어서 보고해야 해 생각보다 시간을 많이 잡아먹는 듯.

 

학원 업무 특성상 쉴새없이 바쁜데 맨날 비슷한 내용을 적는 것이 비효율적이라고 생각한 친구가

이거 양식이 자동으로 입력되게 간단한 툴로 만들어서 업무를 줄일 수 있지 않을까 하는 제안을 함.

 

 

2. 개발계획

 

친구는 코딩 경험 없음.

그냥 간단한 툴이기 때문에 자기가 구글 찾아보고 나한테 질문하면서 직접 만들어보겠다고 함.

 

나는 친구 코딩환경 만드는 것 도와주고, 코드검사 해주고, 다른 근무자들도 사용할 수 있게 GUI로 만드는 것을 도와줌.

 

어차피 간단한 툴이고, 재미로 만드는거라 두세시간만에 후딱 끝내고 자러 가기로 함.

 

 

 

3. 주요 기능 및 Details

① 업무 보고에 사용되는 양식을 해당 날짜와 시간에 알맞게 자동으로 생성

- 날짜를 자동으로 불러와 문장으로 입력

- 요일을 자동으로 불러와 문장으로 입력

- 해당 시간대가 오전근무인지 오후근무인지 판별해 이에 맞게 문장에 입력

(16:00전까지가 오전근무, 16:00이후가 오후 근무라고 함. 일반적인 오전 오후 판별과는 차이가 있음)

 

② 검사한 학생의 인원수를 포함한 문장 자동 생성

 

③ 학생 이름을 입력하면 학생별로 질의응답한 내용을 입력할 수 있도록 구획 나누기

- 마우스 쓸 필요 없이 간단한 로직으로 입력할 수 있으면 베스트

- 마우스 잡았다 키보드 잡았다 하면 속도가 느려짐. 프로그램 만든 목적에 위배

- 학생 이름 사이에 띄어쓰기가 들어갈 수 없다는 점을 이용해 띄어쓰기를 기준으로 학생 이름을 구분하도록 설계

 

 

④ 인수인계사항과 요청사항은 거의 대부분 없기 때문에 카테고리만 만들어주고 "없습니다."를 자동으로 입력

 

⑤ 위 문장을 복사 붙여넣기 하기 쉽도록 하나의 TXT파일로 출력

 

⑥ 하나의 GUI 실행파일(.exe)로 제작 후 배포

- 별도의 설치나 라이브러리 및 개발환경 세팅이 필요 없도록 모든 패키지를 포함한 단일한 실행파일로 제작 후 배포

- 커맨드라인에 거부감을 가지는 사람들을 위한 사용법 가이드가 필요 없도록 GUI로 개발

- 다른 문서 작업과 하나의 모니터에 같이 띄워놓기 좋도록 가능한 한 창을 작게 제작

 

 

 

 

4. 코드

시원하게 코드 적어두고 가려고 한다.

import datetime
import tkinter
from tkinter import *

#GUI 관련
main = Tk()
main.title("멘토업무 보고 프로그램")
main.geometry("320x200")



sugum_ent = Entry(main,width=40)
jildab_ent = Entry(main,width=40)
jumgum_ent = Entry(main,width=40)


label=tkinter.Label(main, text=" ")
label.pack() #줄간격 맞추려고 빈 칸 넣은거임


label_2=tkinter.Label(main, text="스검인원을 정수로 입력하세요")
label_2.pack()
sugum_ent.pack()


label_3=tkinter.Label(main, text="질답인원을 정수로 입력하세요")
label_3.pack()
jildab_ent.pack()


label_4=tkinter.Label(main, text="점검인원의 이름을 띄어쓰기하여 입력하세요")
label_4.pack()
jumgum_ent.pack()




    
def generate():
    
    #인원입력
    sugum = sugum_ent.get()
    jildab = jildab_ent.get()



    #날짜 불러오기
    current_time = datetime.datetime.now()
    weekday_dict = {
        0: '월요일',
        1: '화요일',
        2: '수요일',
        3: '목요일',
        4: '금요일',
        5: '토요일',
        6: '일요일'
    }

    formatted_time = current_time.strftime("%m월 %d일") + ' ' + weekday_dict[current_time.weekday()]
    now = datetime.datetime.now()


    #오전오후 판독
    if now.hour <17:
        morning = '오전'

    else:
        afternoon = '오후'

    #학생이름 리스트처리
    jumgum_list_1 = jumgum_ent.get()
    jumgum_list_2 = jumgum_list_1.split()

    #메모장 출력
    File = open("업무보고.txt", "w")

    if 0<now.hour<17:
        print("[광명점]", formatted_time, morning, "업무 보고드립니다.\n", file=File)
        print("[1]스검인원: " + sugum + "명\n", file=File)
        print("[2]질답인원: " + jildab + "명\n", file=File)
        print("[3]점검내용:\n", file=File)
        

        print(jumgum_list_2)
        for name in jumgum_list_2:
            print("*" + name + "\n \n", file=File)
            

        print("[4]인수인계사항:\n", file=File)
        print("[5]요청사항: 없습니다.", file=File)

    else:
        print("[지점이름]", formatted_time, afternoon, "업무 보고드립니다.\n", file=File)
        print("[1]스검인원: " + sugum + "명\n", file=File)
        print("[2]질답인원: " + jildab + "명\n", file=File)
        print("[3]점검내용:\n", file=File)
        

        print(jumgum_list_2)
        for name in jumgum_list_2:
            print("*" + name + "\n \n", file=File)
            

        print("[4]인수인계사항:\n", file=File)
        print("[5]요청사항: 없습니다.", file=File)

        
    File.close()


label=tkinter.Label(main, text=" ")
label.pack() #줄간격 맞추려고 빈 칸 넣은거임

btn = Button(main, text="생성하기", command=generate)
btn.pack()


main.mainloop()

 

Pyinstaller를 사용하여 간단하게 단일 실행파일로 압축하여 저장한다.

아이콘은 대충 학원과 교사가 그려진 모양을 넣도록 한다.

 

5. 결과

생성된 실행파일을 실행하면 아래와 같은 화면을 얻을 수 있다.

 

 

- 맨 윗줄에 인원 수를 정수로 입력하면 문장으로 적어준다.

- 두번째 줄에 인원 수를 정수로 입력하면 문장으로 적어준다.

- 마지막 줄에 이름을 적으면 띄어쓰기를 기준으로 하여 구획을 나누어 준다.

예를 들어, 입력란에 "김코딩 강다니엘 박서준"이라고 적으면 띄어쓰기 양쪽을 이름으로 취급해 3명으로 인식한다.

- <생성하기> 버튼을 누르면 exe 파일 옆에 내용이 완성된 txt파일을 생성한다.

 

 

여담으로, 친구는 학원에 위 프로그램을 도입해 주변 근무자들의 많은 칭찬을 받았다고 한다..

원장님께는 5만원 보너스를 받았다고..

반응형