修改上節文件,將test2.py拆分為4個文件,目錄結構如下:
mvctest/
│── model.py # 數據模型
│── view.py # 視圖界面
│── controller.py # 控制器
│── main.py # 程序入口
其中model.py代碼如下:
# 模型 (Model) - 處理數據和業務邏輯
class UserModel:def __init__(self):# 模擬數據庫中的用戶表self.users = {'admin': '123456','user1': 'password1','user2': 'password2'}def authenticate(self, username, password):"""驗證用戶憑據"""return username in self.users and self.users[username] == password
view.py代碼如下:
# 視圖 (View) - 處理用戶界面
class LoginView:def show_login_page(self):"""顯示登錄頁面"""print("\n=== 登錄頁面 ===")username = input("用戶名: ")password = input("密碼: ")return username, passworddef show_success(self, username):"""顯示登錄成功頁面"""print(f"\n=== 登錄成功 ===\n歡迎回來, {username}!")def show_failure(self):"""顯示登錄失敗頁面"""print("\n=== 登錄失敗 ===\n用戶名或密碼錯誤,請重試!")
controller.py? 代碼如下:
# 控制器 (Controller) - 處理用戶輸入和業務邏輯
class LoginController:def __init__(self, model, view):self.model = modelself.view = viewdef run(self):"""運行登錄流程"""while True:# 獲取用戶輸入username, password = self.view.show_login_page()# 驗證憑據if self.model.authenticate(username, password):self.view.show_success(username)breakelse:self.view.show_failure()
程序入口main.py代碼如下:
from model import UserModel
from view import LoginView
from controller import LoginController# 應用入口
if __name__ == "__main__":# 初始化MVC組件model = UserModel()view = LoginView()controller = LoginController(model, view)# 啟動應用controller.run()
運行程序時
python.exe? main.py
結果輸出為:
== 登錄頁面 ===
用戶名: admin
密碼: admin=== 登錄失敗 ===
用戶名或密碼錯誤,請重試!=== 登錄頁面 ===
用戶名: admin
密碼: 123456=== 登錄成功 ===
歡迎回來, admin!