반응형
시나리오
커뮤니티 시뮬레이션 응용을 작성하시오.
로긴=>사용=>로긴=>사용=>로긴=>사용...순으로 수행한다.
로긴에서는 사용자 이름을 입력한다.
사용에서는 메뉴 선택에 의해 기능을 수행하는 것을 반복한다.
메뉴: 1.게시글 작성, 2. 게시글 삭제, 3. 게시글 검색, 4. 전체 보기 0.종료
종료를 선택하면 자동 로그아웃 처리되며 다시 로긴을 수행한다.
*로긴에서 입력한 사용자 이름이 "Exit"이면 프로그램을 종료한다.
게시글 작성에서는 제목, 내용, 비밀키를 입력받는다.
비밀키를 입력하지 않으면 일반 게시글, 입력하면 비밀 게시글
게시글 삭제에서는 제목, 비밀키를 입력받는다.
비밀게시글은 비밀키가 일치해야 삭제할 수 있다.
(*작성자가 아니어도 삭제할 수 있음)
Main.py
from Application import Application
app = Application()
while app.Login():
app.Run()
Application.py
#Application.py
from Community import Community
class Application:
def __init__(self):
print("Application 생성")
community = Community()
self.user = ""
def Login(self):
print("로긴")
self.user = input("사용자:")
return self.user!="Exit"
def Run(self):
print("사용")
*Run 메서드부터 구체적으로 구현하시오.
구현 예:
Main.py
from Application import Application
app = Application()
while app.Login():
app.Run()
Application.py
#Application.py
import os
from Community import Community
class Application:
def __init__(self):
print("Application 생성")
self.community = Community()
self.user = ""
def Login(self):
print("로긴")
self.user = input("사용자:")
return self.user!="Exit"
def Run(self):
print("사용")
while True:
key = self.SelectMenu()
if key == '1':
self.WritePost()
elif key == '2':
self.RemovePost()
elif key == '3':
self.Find()
elif key == '4':
self.View()
elif key == '0':
break
else:
print("잘못 선택하였습니다.")
input("엔터 키를 누르세요.")
def SelectMenu(self):
os.system("cls")
print("1:게시글 작성 2:게시글 삭제 3:게시글 검색 4:전체 보기 0:종료")
return input("메뉴 선택:")
def WritePost(self):
print("게시글 작성")
title = input("제목:")
content = input("내용:")
secret = input("비밀번호:")
self.community.Publish(title,self.user,content,secret)
def RemovePost(self):
print("게시글 삭제")
title = input("제목:")
secret = input("비밀번호:")
self.community.Remove(title,secret)
def Find(self):
print("게시글 검색")
title = input("제목:")
post = self.community.Find(title)
if post == None:
print("없는 게시글입니다.")
self.community.ViewPost(post)
def View(self):
print("전체 보기")
self.community.View()
Community.py
#Community.py
from Post import Post
from SPost import SPost
class Community:
def __init__(self):
print("커뮤니티 생성")
self.posts = list()
def Publish(self,title,writer,content,secret=""):
print("Publish")
if secret=="":
post = Post(title,writer,content)
self.posts.append(post)
else:
post = SPost(title,writer,content,secret)
self.posts.append(post)
def View(self):
print("View")
for post in self.posts:
self.ViewPost(post)
def ViewPost(self,post):
print("제목:",post.title)
print("작성자:",post.writer)
print("내용:",post.content)
if(isinstance(post,SPost)):
print("비밀글")
def Find(self,title):
print("Find")
for post in self.posts:
if(post.title == title):
return post
return None
def Remove(self,title,secret=""):
print("Remove")
for post in self.posts:
if(post.title == title):
if(isinstance(post, SPost)):
if post.secret == secret:
self.posts.remove(post)
else:
self.posts.remove(post)
break
Post.py
#Post.py
class Post:
def __init__(self,title,writer,content):
print("Post 생성")
self.title = title
self.writer = writer
self.content = content
SPost.py
#SPost.py
from Post import Post
class SPost(Post):
def __init__(self,title,writer,content,secret):
#Post.__init__(self,title,writer,content)
super().__init__(title,writer,content)
self.secret = secret
반응형
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[python] EH 쇼핑몰 - 고객 관리, 상품 관리 - MSSQL, QT (0) | 2020.11.06 |
---|---|
[python] 고객 관리 - QT, MSSQL (0) | 2020.11.06 |
[python] 상품 조회 응용 - MSSQL, QT 사용 (0) | 2020.11.05 |
[python] QT, MSSQL 활용 - 상품 등록하기 (0) | 2020.11.05 |
[python] 쇼핑몰 구현 - MSSQL이용한 콘솔 응용 (0) | 2020.11.04 |
[python] 상속 실습 - 커뮤니티(게시글, 비밀게시글) (0) | 2020.10.30 |
[python] 상속 실습 - 상품과 할인 상품 (0) | 2020.10.30 |
[python] 상속 개요 - 책과 프로그래밍 책 (0) | 2020.10.30 |
[python] 상속 실습 - 음악가, 피아니스트 (0) | 2020.10.30 |
[python] 캡슐화 실습 - 음악가 정의하기 (0) | 2020.10.29 |