기획의도
1. 경기 전략적 고려: 경기 도중에는 다양한 상황이 발생할 수 있습니다. 선수 정보를 통해 각 선수의 특성과 능력을 파악하여 특정 상황에 최적의 대응을 할 수 있습니다. 예를 들어, 공격이나 수비를 강화하기 위해 특정 선수를 교체할 수 있습니다.
2. 포지션에 대한 이해: 각 선수의 주 포지션, 다양한 포지션에서의 경험 등을 고려하여 교체를 결정할 수 있습니다. 이를 통해 팀의 전술을 유연하게 조절하고, 상대팀의 전략에 대응할 수 있습니다. 선수 정보는 전략적인 결정에 필수적입니다. 또한, 선수 정보를 기반으로 경기 진행 상황에 맞는 전략을 수립할 수 있습니다.
3. 선수 정보 관리: 축구팀은 선수들의 개인 정보를 체계적으로 관리해야 합니다. 이에는 선수의 이름, 생년월일, 연락처 등이 포함됩니다. 관리 프로그램을 통해 이러한 정보를 효율적으로 저장하고 업데이트할 수 있습니다.
4. 연습 일정 및 출석 관리: 축구팀은 정기적인 훈련과 연습 경기를 계획하고 이에 선수들을 참석시키는 것이 중요합니다. 관리 프로그램은 연습 일정을 작성하고 선수들의 출석 여부를 추적하여 팀 관리자들이 팀의 활동을 효율적으로 조정할 수 있도록 도와줍니다.
5. 부상 관리 계획 수립: 선수의 나라와 클럽을 알면 해당 지역의 기후, 훈련 시설, 경기 일정 등을 고려하여 부상 관리 계획을 수립할 수 있습니다. 예를 들어, 특정 지역의 기후가 부상 발생에 영향을 줄 수 있으므로, 이를 고려하여 훈련 및 경기 일정을 조정할 수 있습니다.
6. 팀의 리소스 활용: 선수가 소속된 클럽이나 나라를 알면 해당 지역의 의료진 및 의료 시설을 활용할 수 있습니다. 부상 시에는 즉각적이고 전문적인 의료 지원이 매우 중요합니다. 따라서 선수가 소속된 클럽이나 나라의 의료진과 시설을 알아두면 부상 시에 신속하고 효과적인 치료를 받을 수 있습니다.
1. 테이블 기획
- Player 테이블 (MAIN)
: 경기 도중에는 다양한 상황이 발생할 수 있습니다.
각 선수의 주 포지션, 다양한 포지션에서의 경험 등을 고려하고
선수 정보를 통해 각 선수의 특성과 능력을 파악하여 교체를 결정할 수 있습니다.
: 이를 통해 팀의 전술을 유연하게 조절하고, 상대팀의 전략에 대응할 수 있습니다.
예를 들어, 공격이나 수비를 강화하기 위해 특정 선수를 교체할 수 있습니다.
- Pofile 테이블
: 선수들의 개인 정보를 체계적으로 관리해야 합니다.
이에는 선수의 이름, 생년월일, 연락처 등이 포함됩니다.
: 축구팀은 정기적인 훈련과 연습 경기를 계획하고 이에 선수들을 참석시키는 것이 중요합니다.
: 선수들과 소통을 통해 연습 일정을 공지하고 출석 여부를 확인하여 팀의 활동을 효율적으로 진행할 수 있도록 도와줍니다.
- Management 테이블
: 선수의 소속팀을 확인하여 각 팀과 경기일정 조율 및 확정합니다.
: 부상 시에는 즉각적이고 전문적인 의료 지원이 매우 중요합니다. 선수가 소속된 클럽이나 나라를 알면 해당 지역의 의료진 및 의료 시설을 활용할 수 있습니다. 부상 시에 신속하고 효과적인 치료를 받을 수 있습니다.
: 선수에게 특이사항이 생겼을 경우, 신속하게 특이사항을 팀에 전달함으로써 팀은 향후 계획을 조정할 수 있습니다. 예를 들어, 선수의 부상으로 인해 경기 참여가 불가능해지면 팀은 대체 선수를 찾아야 할 수 있습니다.
- Family 테이블
: 부상은 긴급 상황을 초래할 수 있습니다. 선수가 혼자서 상황을 대처하기 어려울 때, 가족이나 친구에게 연락하여 도움을 요청할 수 있습니다. 가족에게 상황을 알리면 긴급 상황에 대비할 수 있으며, 필요한 조치를 취할 수 있습니다.
: 선수가 의사와 상담하고 의료 결정을 내릴 때, 가족은 그들의 의견을 제공하고 지원할 수 있습니다. 가족의 지원은 선수가 적절한 치료를 받고 빠르게 회복할 수 있도록 도와줍니다.
- Club 테이블
: 선수가 속한 클럽 (ex. 토트넘, 파리 생제르맹, 맨체스터 시티, 바르셀로나, 바이에르 뮌헨...)
- Country 테이블
: 선수가 속한 나라 (ex. 한국, 브라질, 영국, 프랑스, 아르헨티나...)
- Sponser 테이블
: 선수를 지원하는 스폰서 (ex. 삼성, SK, GS, 아디다스, 나이키...)
- Staff
: 선수를 케어해주는 담당 스텝 (ex. 김종태, 브리스, 톰, 오성윤, 데이비드....)
2. 데이터 삽입, 수정, 삭제, 확인 ( 파이썬 활용)
import MySQLdb
# 선수 정보 확인, 출력 클래스
class Player:
def __init__(self, name, position, rating=5, career=1):
self.name = name
self.position = position
self.rating = rating
self.career = career
def setName(self, name):
self.name = name
def getName(self):
return self.name
def setPosition(self, position):
self.position = position
def getPosition(self):
return self.position
def setRating(self, rating):
self.rating = rating
def getRating(self):
return self.rating
def setCareer(self, career):
self.career = career
def getCareer(self):
return self.career
|
# db 연결/해제시켜주는 클래스
class PayerDao:
def __init__(self):
self.db = None
def connect(self):
self.db = MySQLdb.connect('localhost','root','1234','soccer')
def disconnect(self):
self.db.close()
def insert(self, player):
self.connect()
cur = self.db.cursor()
sql = 'insert into player (name, position, rating, career) values (%s, %s, %s, %s)'
data = (player.getName(), player.getPosition(), player.getRating(), player.getCareer())
cur.execute(sql,data)
self.db.commit()
cur.close()
self.disconnect()
def selectAll(self):
self.connect()
cur = self.db.cursor(MySQLdb.cursors.DictCursor)
sql = 'select name, position, rating, career from player order by name asc'
cur.execute(sql)
row = cur.fetchall()
cur.close()
self.disconnect()
return row
def search(self, name):
self.connect()
cur = self.db.cursor(MySQLdb.cursors.DictCursor)
sql = "select name, position, rating, career from player where name like concat('%%', %s, '%%')"
data = (name,)
cur.execute(sql, data)
row = cur.fetchall()
cur.close()
self.disconnect()
return row
def update(self, player):
self.connect()
cur = self.db.cursor()
sql = 'update player set position=%s, rating=%s, career=%s where name=%s'
data = (player.getPosition(), player.getRating(), player.getCareer(), player.getName())
result = cur.execute(sql,data)
self.db.commit()
if result > 0:
print('수정되었습니다.')
else:
print('에러!')
cur.close()
self.disconnect()
def delete(self, name):
self.connect()
cur = self.db.cursor()
sql = 'delete from player where name=%s'
data = (name,)
result = cur.execute(sql, data)
self.db.commit()
if result > 0 :
print('삭제되었습니다.')
else:
print('오류!')
cur.close()
self.disconnect()
|
# 서비스 클래스 class PlayerService:
def __init__(self):
self.dao = PayerDao()
def insertPlayer(self):
name = input('선수의 이름을 입력하세요 >>> ')
position = input('선수의 포지션을 입력하세요 >>> ')
rating = input('선수의 등급을 입력하세요 >>> ')
career =input('선수의 경력을 입력하세요 >>> ')
player = Player(name, position, rating, career)
self.dao.insert(player)
def printAll(self):
datas = self.dao.selectAll()
for data in datas:
print(f"\n{data['name']} : {data['position']} ({data['rating']}군, 경력 {data['career']}년)\n")
def searchPlayer(self):
eng = input('검색할 선수를 입력하세요.')
datas = self.dao.search(eng)
if datas:
for data in datas:
print(f"\n{data['name']} : {data['position']} ({data['rating']}군, 경력 {data['career']}년 )\n")
else :
print('찾는 단어가 없습니다.')
def editPlayer(self):
name = input('수정할 선수를 입력하세요.')
player = self.dao.search(name)
if not player:
print('수정할 선수가 없습니다.')
else:
position = input('포지션을 입력하세요.')
rating = input('등급을 입력하세요.')
career = input('경력을 입력하세요.')
player = Player(name, position, rating, career)
self.dao.update(player)
def delPlayer(self):
name = input('삭제할 선수를 입력하세요.')
player = self.dao.search(name)
if not player:
print('삭제할 선수가 없습니다.')
else:
self.dao.delete(name)
|
# 메뉴 선택 클래스 class Menu: def __init__(self):
self.service = PlayerService()
def run(self):
while True:
try:
menu = int(input('1.선수 등록하기 2.선수 정보 불러오기 3.선수 검색하기 4.선수 수정하기 5.선수 삭제하기 6.종료하기'))
if menu == 1:
self.service.insertPlayer()
elif menu == 2:
self.service.printAll()
elif menu == 3:
self.service.searchPlayer()
elif menu == 4:
self.service.editPlayer()
elif menu == 5:
self.service.delPlayer()
elif menu == 6:
print('프로그램을 종료합니다')
break
except Exception as e:
print(e)
print('다시 입력하세요')
|
1. 선수 등록하기 |
2. 선수 정보 불러오기 |
|
3. 선수 검색하기 |
4. 선수 수정하기 |
5. 선수 삭제하기 |
'DataBase' 카테고리의 다른 글
4-2. DB를 활용한 단어장 만들기 (0) | 2024.03.28 |
---|---|
4-1. 파이썬 MySQL 연결 (1) | 2024.03.28 |
3-3. My SQL 사용자 수정 (0) | 2024.03.27 |
3-2. 뷰(view), 다이어그램(Diagram) (0) | 2024.03.27 |
3-1. MySQL 문자열 함수, 유니온, 서브쿼리 (0) | 2024.03.27 |