허, 참, 이런 거 공짜로 해드리고 그러면 안되는데..
원래 돈 받고 해 드리는 일인데...
에잇, 기분 좋은 토요일이니 이번만 특별히 무료로 해 드리지요.
1) 동적 할당을 (간접적이지만) 사용해서, 2) 저장/변경할 수 있는 인원이 제한 없도록 고쳤습니다.
덤으로 3) 소스 길이도 좀 줄였어요.
코드에 버그가 좀 있는 것 같아서 고쳤습니다. 그 외에도 로직이 미심쩍은 부분이 좀 있었는데, 명백히 버그인 경우를 제외하고는 일단 남겨뒀어요.
#!/usr/bin/env python3from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ormimport sessionmaker
from sqlalchemy.ext.declarativeimport declarative_base
engine = create_engine('sqlite:///video_rental.db')
Base = declarative_base()class Video(Base):
__tablename__ ='video'id= Column(Integer, primary_key=True)
title = Column(String)
director = Column(String)time= Column(String)
price = Column(String)def__init__(self, title, director,time, price):
self.title= title
self.director= director
self.time=timeself.price= price
def__repr__(self):
return"<Video('{:s}', '{:s}', '{:s}', '{:s}')".format(self.title,self.director,self.time,self.price)def__str__(self):
return'{:s}||{:s}||{:s}||{:s}'.format(self.title,self.director,self.time,self.price)class User(Base):
__tablename__ ='user'id= Column(Integer, primary_key=True)
name = Column(String)
age = Column(String)
address = Column(String)
phonenum = Column(String)def__init__(self, name, age, address, phonenum):
self.name= name
self.age= age
self.address= address
self.phonenum= phonenum
def__repr__(self):
return"<User('{:s}', '{:s}', '{:s}', '{:s}')".format(self.name,self.age,self.address,self.phonenum)def__str__(self):
return'{:s}||{:s}||{:s}||{:s}'.format(self.name,self.age,self.address,self.phonenum)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()def main():
print('=========================');print('비 디 오 관 리 프 로 그 램');print('=========================');whileTrue:
select=input('''
1. 비 디 오 입 력
2. 비 디 오 삭 제
3. 비 디 오 대 여
4. 비 디 오 검 색
5. 비 디 오 출 력
6. 회 원 등 록
7. 회 원 삭 제
8. 회 원 출 력
9. 종 료
''')ifselect=='1':
InsertVideo()elifselect=='2':
DeleteVideo()elifselect=='3':
RentalVideo()elifselect=='4':
SearchVideo()elifselect=='5':
PrintVideo()elifselect=='6':
InsertUser()elifselect=='7':
DeleteUser()elifselect=='8':
PrintUser()elifselect=='9':
breakelse:
print('''잘못입력하셨습니다
다시 입력하세요''')def InsertVideo():
whileTrue:
title =input('비디오 제목을 입력 하세요--->')
director =input('비디오 감독을 입력 하세요--->')time=input('비디오 분량을 입력 하세요--->')
price =input('비디오 대여료을 입력 하세요--->')
new_video = Video(title, director,time, price)
session.add(new_video)
session.commit()
sel =input('계속 입력 하시겠습니까?(Yes : Y / No : N) :')if sel =='Y':
continueelif sel =='N':
breakelse:
print('Y 또는 N을 입력하세요')breakdef DeleteVideo():
title =input('삭제할 비디오 제목을 입력하세요 --->')for video in session.query(Video).filter(Video.title== title):
session.delete(video)print('삭제되었습니다')
session.commit()def RentalVideo():
title =input('대여할 비디오 제목을 입력하세요 --->')for video in session.query(Video).filter(Video.title== title):
session.delete(video)print('대여되었습니다')
session.commit()def SearchVideo():
choice =input('검색할 방식을 고르세요 : 1.제 목 2.감 독 :')if choice =='1':
title =input('검색할 비디오 제목을 입력하세요 --->')print('''=====================================================
제 목 ||감 독 ||분 량 ||대여료
=====================================================''')for video in session.query(Video).filter(Video.title== title):
print(video)
session.commit()elif choice =='2':
director =input('검색할 비디오 감독을 입력하세요 --->')print('''=======================================================
제 목 ||감 독 ||분 량 ||대여료
=======================================================''')for video in session.query(Video).filter(Video.director== director):
print(video)
session.commit()def PrintVideo():
print('''=====================================================
제 목 ||감 독 ||분 량 ||대여료
=====================================================''')for video in session.query(Video):
print(video)
session.commit()def InsertUser():
whileTrue:
name =input('회원 이름을 입력 하세요--->')
age =input('나이를 입력 하세요--->')
address =input('주소를 입력 하세요--->')
phonenum =input('핸드폰번호를 입력 하세요--->')
new_user = User(name, age, address, phonenum)
session.add(new_user)
session.commit()
sel =input('계속 입력 하시겠습니까?(Yes : Y / No : N) :')if sel =='Y':
continueelif sel =='N':
breakelse:
print('Y 또는 N을 입력하세요')breakdef DeleteUser():
name =input('삭제할 회원이름을 입력하세요 --->')foruserin session.query(User).filter(User.name== name):
session.delete(user)print('삭제되었습니다')
session.commit()def PrintUser():
print('''=====================================================
이 름 ||나 이 ||주 소 ||핸드폰번호
=====================================================''')foruserin session.query(User):
print(user)
session.commit()if __name__ =='__main__':
main()
비디오 대여 사업 하는 데가 아직도 있나요?
비디오 대여 사업 하는 데가 아직도 있나요?
동적할당에 대한 거라면 구글에서
malloc
검색해 보셔요.
세벌 https://sebuls.blogspot.kr/
허, 참, 이런 거 공짜로 해드리고 그러면 안되는데.
허, 참, 이런 거 공짜로 해드리고 그러면 안되는데..
원래 돈 받고 해 드리는 일인데...
에잇, 기분 좋은 토요일이니 이번만 특별히 무료로 해 드리지요.
1) 동적 할당을 (간접적이지만) 사용해서, 2) 저장/변경할 수 있는 인원이 제한 없도록 고쳤습니다.
덤으로 3) 소스 길이도 좀 줄였어요.
코드에 버그가 좀 있는 것 같아서 고쳤습니다. 그 외에도 로직이 미심쩍은 부분이 좀 있었는데, 명백히 버그인 경우를 제외하고는 일단 남겨뒀어요.
어이구, 다 짜놓고 보니 C언어 질문이었네요.
어이구, 다 짜놓고 보니 C언어 질문이었네요.
괜찮습니다. 금방 고칠 수 있어요.
너무 감사합니다,,,
기분 좋은 토요일에 이렇게 도움 주셔서 정말 감사합니다ㅠㅠ
이런, 코드가 깨져서 올라갔군요.
이런, 코드가 깨져서 올라갔군요.
너무 긴 코드는 짤리는가봅니다. -_-;; 다른 방법을 찾아봐야겠네요.
깃헙
깃헙에 코드올려놓으시면 다른분들이 도와드리기가 더 수월할수도 있을 것 같네요!
댓글 달기