AiPE
막간을 이용한 친구 학원 업무보고 툴 만들기 본문
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만원 보너스를 받았다고..
'[XiBBaL] Development Project > Etc.' 카테고리의 다른 글
Python Pyinstaller enum34 오류 해결 (0) | 2023.02.07 |
---|---|
[학교 과제] 파이썬 Matplotlib으로 정규분포 곡선 (PDF, CDF) 그리기 (0) | 2023.02.06 |
[기타] 컴퓨터는 분자구조를 어떻게 계산할까 (1) | 2023.02.04 |
[Python] 특정 문자 2개 사이의 문자를 추출하는 법 (0) | 2023.01.29 |
Python 패키지 Pyinstaller로 실행파일(.exe) 만드는 법 (2) | 2023.01.29 |