MVC实现电影院
时间: 2024-02-23 18:58:27 浏览: 16
好的,下面是使用MVC模式实现电影院的示例代码。MVC模式将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。每个部分都有自己的职责,使得应用程序的开发、维护和扩展更加方便。下面是代码:
```python
# Model
class Movie:
def __init__(self, name, duration, rating, seats):
self.name = name
self.duration = duration
self.rating = rating
self.seats = [False] * seats
def reserve_seat(self, seat_number):
if seat_number < 0 or seat_number >= len(self.seats):
return False
if self.seats[seat_number]:
return False
self.seats[seat_number] = True
return True
def __str__(self):
return f"{self.name} ({self.duration} min, {self.rating}/10)"
class Cinema:
def __init__(self, name, seats):
self.name = name
self.seats = seats
self.movies = []
def add_movie(self, movie):
self.movies.append(movie)
def get_movies(self):
return self.movies
# View
class CinemaView:
def show_movies(self, movies):
print("Movies:")
for i, movie in enumerate(movies):
print(f"{i+1}. {movie}")
def show_reservation_result(self, movie_name, seat_number, success):
if success:
print(f"You have successfully reserved seat {seat_number} in {movie_name}. Enjoy the movie!")
else:
print(f"Sorry, seat {seat_number} in {movie_name} has already been taken.")
# Controller
class CinemaController:
def __init__(self, cinema, view):
self.cinema = cinema
self.view = view
def show_movies(self):
movies = self.cinema.get_movies()
self.view.show_movies(movies)
def reserve_seat(self, movie_name, seat_number):
for movie in self.cinema.get_movies():
if movie.name == movie_name:
success = movie.reserve_seat(seat_number)
self.view.show_reservation_result(movie_name, seat_number, success)
return
print(f"Sorry, we couldn't find the movie {movie_name}.")
# 使用示例
cinema = Cinema("ABC Cinema", 100)
movie1 = Movie("The Godfather", 175, 9.2, 50)
movie2 = Movie("The Shawshank Redemption", 142, 9.3, 50)
cinema.add_movie(movie1)
cinema.add_movie(movie2)
view = CinemaView()
controller = CinemaController(cinema, view)
controller.show_movies()
controller.reserve_seat("The Godfather", 10)
controller.reserve_seat("The Godfather", 10)
controller.reserve_seat("The Godfather", 60)
```
这个代码实现了一个简单的电影院系统,使用了MVC模式,将应用程序分为了三个部分:模型、视图和控制器。模型部分负责定义电影和座位的相关数据和行为;视图部分负责显示电影列表和预定座位的结果;控制器部分负责响应用户的操作,调用模型和视图的相关方法,完成相应的业务逻辑。