KDT_4기 파이썬 기초 1003(1)
2024.10.03 수업 내용 복습일기 첫번째
아래 내용은 10월 2일에 배운 내용을 통해 강의 출석 시스템을 만들어 보았다
아래 프로그램은 time모듈을 사용하여 강의를 일정시간 이상 들으면 자동으로 출석 체크를 하여 엑셀 파일에 학생의 이름과 출석 기록을 저장해 주는 프로그램입니다.
먼저 필요한 모듈들을 먼저 import해줍니다.
import time
import openpyxl
from openpyxl import Workbook
import os # 현재 작업 디렉토리를 확인하기 위한 os 모듈
import shutil # 파일 복사 등을 위한 shutil 모듈
Online_Check라는 클래스를 통해 학생의 강의 시간을 기록하고, 출석 여부를 저장할 수 있습니다.
class Online_Check:
def __init__(self):
self.attendance_file = "attendance_register.xlsx"
self.absent_file = "absent.xlsx"
# 출석부와 결석부 파일이 존재하는지 확인
if os.path.exists(self.attendance_file):
self.wb = openpyxl.load_workbook(self.attendance_file)
self.ws1 = self.wb["Attendance"]
else:
self.wb = Workbook()
self.ws1 = self.wb.active
self.ws1.title = "Attendance"
self.ws1.append(["Student Name", "Lecture Time (mins)", "Status"])
if os.path.exists(self.absent_file):
self.wb_absent = openpyxl.load_workbook(self.absent_file)
self.ws2 = self.wb_absent["Absent"]
else:
self.wb_absent = Workbook()
self.ws2 = self.wb_absent.active
self.ws2.title = "Absent"
self.ws2.append(["Student Name", "Lecture Time (mins)", "Status"])
def save_attendance(self, name, lecture_time, status):
self.ws1.append([name, lecture_time, status])
self.wb.save(self.attendance_file) # 출석부 파일에 저장
print(f"{self.attendance_file}에 출석 정보가 저장되었습니다.")
def save_absent(self, name, lecture_time, status):
self.ws2.append([name, lecture_time, status])
self.wb_absent.save(self.absent_file) # 결석부 파일에 저장
print(f"{self.absent_file}에 결석 정보가 저장되었습니다.")
def start_lecture(self):
name = input('이름을 입력해주세요:')
total_time = 0
start_time = None
while True:
print('1. 강의 듣기 시작 2. 강의 들은 시간 확인 3. 강의 듣기 끝내기')
user = int(input('메뉴 번호를 입력해 주세요:'))
if user == 1:
start_time = time.time()
print("강의 듣기를 시작하였습니다.")
elif user == 2:
if start_time is None:
print("강의를 듣기 시작하지 않았습니다.")
else:
now_time = time.time()
total_time = (now_time - start_time) / 60 # 총 시간 계산 (분 단위)
print(f"강의를 듣는 중입니다. {int(total_time)}분 동안 들었습니다.") # 소수점 없이 출력
elif user == 3:
if start_time is None:
print("강의를 듣기 시작하지 않았습니다.")
else:
end_time = time.time()
total_time = (end_time - start_time) / 60 # 종료 시점에서 총 시간 계산
lecture_duration = 30 # 출석 기준 시간 (30분)
# 출석 체크
if total_time >= lecture_duration:
status = "Present"
self.save_attendance(name, int(total_time), status) # 정수형으로 저장
else:
status = "Absent"
self.save_absent(name, int(total_time), status) # 정수형으로 저장
print(f"강의가 끝났습니다. 총 {int(total_time)}분 동안 들었습니다. 출석 상태: {status}.")
break # 루프 종료
else:
print('잘못 입력하였습니다. 다시 입력해 주세요.')
1. 클래스 정의 및 초기화 (__init__ 메서드)
- Online_Check 클래스는 강의 출석 정보를 저장할 엑셀 파일을 다룹니다.
- __init__ 메서드에서 엑셀 파일이 이미 존재하는지 확인한 후, 없으면 새로 생성합니다.
- 출석 정보는 attendance_register.xlsx 파일에 저장됩니다.
- 결석 정보는 absent.xlsx 파일에 저장됩니다.
- 출석부에는 이름, 강의 시간(분), 출석 상태를 기록합니다.
2. 출석 기록 (save_attendance 메서드)
- save_attendance 메서드는 출석 학생의 정보를 엑셀 파일에 기록합니다.
- 기록된 정보는 이름, 강의 시간(분), 출석 상태입니다.
- 출석 정보를 attendance_register.xlsx 파일에 저장하고, 저장되었다는 메시지를 출력합니다.
3. 결석 기록 (save_absent 메서드)
- save_absent 메서드는 결석 학생의 정보를 기록합니다.
- 결석 정보는 absent.xlsx 파일에 저장됩니다.
- 마찬가지로 저장된 후 메시지를 출력합니다.
4. 강의 시작 (start_lecture 메서드)
이 메서드는 학생이 실제로 강의를 듣고 시간을 기록하는 역할을 합니다.
- 이름 입력:
- 사용자에게 이름을 입력받습니다.
- 강의 메뉴 제공:
- 1. 강의 듣기 시작: 강의 시작 시간을 기록합니다.
- 2. 강의 들은 시간 확인: 현재 강의를 듣고 있는 시간을 확인합니다.
- 3. 강의 듣기 끝내기: 강의 종료 시간을 기록하고, 출석 기준 시간(30분)을 만족하는지에 따라 출석 또는 결석을 기록합니다.
- 시간 측정:
- 사용자가 1. 강의 듣기 시작을 선택하면, 프로그램은 현재 시간을 start_time에 기록합니다.
- 2. 강의 들은 시간 확인을 선택하면, 현재 시각과 start_time의 차이를 계산하여 강의를 들은 총 시간을 분 단위 정수로 출력합니다.
- 3. 강의 듣기 끝내기를 선택하면, 종료 시간과 시작 시간 사이의 총 강의 시간이 계산됩니다.
- 출석 체크:
- 강의 총 시간이 30분 이상이면 출석(Present)으로 기록되고, 그렇지 않으면 결석(Absent)으로 기록됩니다.
- 기록된 출석 또는 결석 정보는 각각 attendance_register.xlsx 또는 absent.xlsx에 저장됩니다.
5. 결과 저장
- 프로그램 종료 시, 학생의 출석/결석 정보를 엑셀 파일로 저장합니다.
출력 예시
- 강의를 듣고 있는 동안에는 현재 듣고 있는 시간이 소수점 없이 정수형으로 출력됩니다. 예를 들어, "강의를 듣는 중입니다. 8분 동안 들었습니다."와 같은 형식으로 보여줍니다.
클래스를 통해 만들었기 때문에 클래스를 변수로 설정한 후 클래스를 불러옵니다
# 클래스 인스턴스 생성 및 강의 시작
online_check = Online_Check()
online_check.start_lecture()
출력 예시는 다음과 같습니다.
이름을 입력해주세요: 심현지
1. 강의 듣기 시작 2. 강의 들은 시간 확인 3. 강의 듣기 끝내기
메뉴 번호를 입력해 주세요: 1
강의 듣기를 시작하였습니다.
1. 강의 듣기 시작 2. 강의 들은 시간 확인 3. 강의 듣기 끝내기
메뉴 번호를 입력해 주세요: 2
강의를 듣는 중입니다. 0분 동안 들었습니다.
1. 강의 듣기 시작 2. 강의 들은 시간 확인 3. 강의 듣기 끝내기
메뉴 번호를 입력해 주세요: 3
absent.xlsx에 결석 정보가 저장되었습니다.
강의가 끝났습니다. 총 0분 동안 들었습니다. 출석 상태: Absent.
위와 같이 프로그램을 실행하면 아래와 같이 엑셀 파일이 생성됩니다
그 후 엑셀파일에 아래와 같이 이름과 강의를 들은 시간, 출석 여부가 저장됩니다.
'인공지능 > 파이썬 기초' 카테고리의 다른 글
파일 입출력 모듈(Jupyter) (2) | 2024.10.02 |
---|---|
주피터 노트북(cmd) (0) | 2024.10.02 |
변수 타입 어노테이션 (4) | 2024.10.02 |
파일 입출력을 이용한 단어장 만들기 (4) | 2024.10.02 |
파일 입출력 (0) | 2024.10.02 |