주소록 관리 프로그램
주소록 관리 프로그램은 객체지향 프로그래밍(OOP)의 개념을 활용하여 연락처를 효율적으로 저장하고 관리할 수 있도록 설계되었습니다. 연락처 클래스와 주소록 관리 클래스를 통해 사용자들은 연락처를 추가, 검색 및 저장할 수 있습니다.
1.1 프로그램 코드
class 연락처:
def __init__(self, 이름, 전화번호, 이메일=""):
self.이름 = 이름
self.전화번호 = 전화번호
self.이메일 = 이메일
class 주소록관리:
def __init__(self):
self.연락처목록 = []
def 연락처추가(self, 연락처):
self.연락처목록.append(연락처)
def 연락처검색(self, 이름):
for 연락처 in self.연락처목록:
if 연락처.이름 == 이름:
return 연락처
return None
def 연락처저장(self, 파일명="주소록.txt"):
with open(파일명, "w", encoding="utf-8") as f:
for 연락처 in self.연락처목록:
f.write(f"{연락처.이름},{연락처.전화번호},{연락처.이메일}\n")
1.2 추가 기능 및 확장 가능성
- 연락처 수정 및 삭제 기능 추가
- 연락처 그룹화 및 정렬 기능 추가
- GUI(그래픽 사용자 인터페이스) 지원
- 데이터베이스 연동을 통한 영구 저장
파일 자동분류기
파일 자동분류기는 사용자의 특정 폴더 내 파일을 미리 정의된 규칙에 따라 자동으로 정리하는 프로그램입니다. 파일의 확장자별로 폴더를 생성하고 이동하는 방식으로 동작합니다.
2.1 프로그램 코드
import os
import shutil
from pathlib import Path
class 파일분류기:
def __init__(self, 경로):
self.경로 = Path(경로)
self.분류규칙 = {
"이미지": [".jpg", ".png", ".gif"],
"문서": [".pdf", ".doc", ".txt"],
"음악": [".mp3", ".wav"]
}
def 폴더생성(self):
for 폴더 in self.분류규칙.keys():
새폴더 = self.경로 / 폴더
if not 새폴더.exists():
새폴더.mkdir()
def 파일분류(self):
for 파일 in self.경로.glob("*.*"):
확장자 = 파일.suffix.lower()
for 종류, 확장자목록 in self.분류규칙.items():
if 확장자 in 확장자목록:
대상폴더 = self.경로 / 종류
shutil.move(str(파일), str(대상폴더 / 파일.name))
2.2 추가 기능 및 확장 가능성
- 사용자 정의 규칙 추가 (예: 특정 파일 이름 패턴)
- 파일 크기별 정리
- 날짜별 정리
- 중복 파일 탐지 및 처리
데이터 포맷 변환기
데이터 포맷 변환기는 CSV, JSON 및 XML 형식의 데이터를 상호 변환하는 기능을 제공합니다. 다양한 데이터 형식 간의 변환을 통해 데이터 활용도를 높일 수 있습니다.
3.1 프로그램 코드
import json
import csv
import xml.etree.ElementTree as ET
class 데이터변환기:
def __init__(self, 입력파일):
self.입력파일 = 입력파일
self.데이터 = None
def CSV읽기(self):
with open(self.입력파일, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
self.데이터 = list(reader)
def JSON변환(self, 출력파일):
if self.데이터:
with open(출력파일, 'w', encoding='utf-8') as f:
json.dump(self.데이터, f, ensure_ascii=False, indent=2)
def XML변환(self, 출력파일):
if self.데이터:
root = ET.Element("데이터")
for 항목 in self.데이터:
child = ET.SubElement(root, "항목")
for key, value in 항목.items():
ET.SubElement(child, key).text = value
tree = ET.ElementTree(root)
tree.write(출력파일, encoding='utf-8', xml_declaration=True)
3.2 추가 기능 및 확장 가능성
- Excel 및 SQL 데이터 지원
- 데이터 검증 및 필터링 기능 추가
- 대용량 데이터 처리 성능 최적화
프로그램 사용 예시
# 주소록 사용
주소록 = 주소록관리()
주소록.연락처추가(연락처("홍길동", "010-1234-5678", "hong@email.com"))
주소록.연락처저장()
# 파일 분류기 사용
분류기 = 파일분류기("C:/Downloads")
분류기.폴더생성()
분류기.파일분류()
# 데이터 변환기 사용
변환기 = 데이터변환기("데이터.csv")
변환기.CSV읽기()
변환기.JSON변환("결과.json")
변환기.XML변환("결과.xml")
결론
위에서 소개한 세 가지 프로그램은 객체지향 프로그래밍을 활용하여 실생활에서 유용하게 사용할 수 있도록 구현되었습니다. 주소록 관리 프로그램은 효율적인 연락처 관리를, 파일 자동분류기는 컴퓨터의 파일 정리를, 데이터 포맷 변환기는 다양한 데이터 형식 간 변환을 지원합니다. 이러한 프로그램들은 객체지향 설계 원칙을 활용하여 유지보수성과 확장성을 고려한 구조로 개발될 수 있으며, 필요에 따라 다양한 기능을 추가하여 더욱 발전시킬 수 있습니다.
'오픈소스를 위한 기초 상식' 카테고리의 다른 글
XRDP로 원격 세팅 (0) | 2025.03.20 |
---|---|
당분간 파이썬? Pandas 관련 정리하기 (0) | 2025.02.18 |
오랜만에 파이썬: 함수(Function)와 매개변수(Parameter) (0) | 2025.02.14 |
Gemini API: 텍스트, 이미지, 오디오를 활용한 AI 콘텐츠 생성 가이드 (1) | 2025.02.08 |
Gemini API 사용 가이드 (0) | 2025.02.06 |