需求
实现对用户信息的增加、删除、修改和查询。
分析
- 界面使用控制台
- 分层
- 识别对象:界面视图类、逻辑控制类、数据模型类
- 分配职责:
- 界面视图类:负责处理界面逻辑,比如显示菜单,获取输入,显示结果等。
- 逻辑控制类:负责存储用户信息,处理业务逻辑。比如添加、删除等
- 数据模型类:定义需要处理的数据类型。比如用户信息。
- 建立交互:
- 界面视图对象 <----> 数据模型对象 <----> 逻辑控制对象
设计
- 数据模型类:UserModel
- 数据:编号 id,姓名 name,年龄 age , 登录ID login_id,密码 pwd
- 逻辑控制类:UserController
- 数据:用户列表 list_user
- 行为:添加用户 add_user,删除用户remove_user,修改用户update_user
- 界面视图类:UserView
- 数据:逻辑控制对象controller
- 行为:显示菜单:__display_menu,选择菜单项:__select_menu,入口逻辑:main,录入用户:__add_users,输出用户:__display_user,删除用户:__delete_user,修改用户:__modify_user
代码实现
- 用户实体类 UserModel
class UserModel:
"""
数据模型类
"""
def __init__(self, id, name, age):
self.id = id
self.name = name
self.age = age
def __str__(self):
return f"ID: {self.id}, 姓名: {self.name}, 年龄: {self.age}"
- 逻辑控制类 UserController
class UserController:
"""
逻辑控制类
"""
def __init__(self):
self.list_user = []
def add_user(self, user):
self.list_user.append(user)
print(f"用户 {user.name} 添加成功.")
def update_user(self, user_id, new_user):
for user in self.list_user:
if user.id == user_id:
user.__dict__.update(new_user) # 假设new_data是一个包含新属性的字典
print(f"用户ID {user_id} 修改成功.")
return
print(f"用户ID {user_id} 未找到.")
def remove_user(self, user_id):
for user in self.list_user[:]: # 使用[:]创建列表的副本,避免在迭代时修改列表
if user.id == user_id:
self.list_user.remove(user)
print(f"用户ID {user_id} 删除成功.")
return
print(f"用户ID {user_id} 未找到.")
def list_users(self):
if len(self.list_user) == 0:
print("系统用户为空")
for user in self.list_user:
print(user)
- 界面视图类 UserView
import sys
from higher.user_management.UserModel import UserModel
class UserView:
"""
界面视图类
"""
def __init__(self, user_manager):
self.user_manager = user_manager
def __display_menu(self):
print("================== 欢迎使用用户管理系统 ==================")
print("================== 1.用户查询 ==================")
print("================== 2.用户录入 ==================")
print("================== 3.用户修改 ==================")
print("================== 4.用户删除 ==================")
print("================== 5.退出系统 ==================")
print("=======================================================")
def __select_menu(self):
choice = int(input("请输入序号: "))
return choice
def main(self):
while True:
self.__display_menu()
choice = self.__select_menu()
if choice == 1:
self.user_manager.list_users()
elif choice == 2:
user = self.__input_user()
self.user_manager.add_user(user)
elif choice == 3:
self.__modify_user()
elif choice == 4:
self.__delete_user()
elif choice == 5:
print("您已退出系统,欢迎下次使用!")
sys.exit(0)
break
else:
print("输入有误,请重新输入!")
def __input_user(self):
id = input("请输入ID: ")
name = input("请输入姓名: ")
age = input("请输入年龄: ")
return UserModel(id, name, int(age))
def __display_user(self, user):
print(user)
def __delete_user(self):
user_id = input("请输入需删除的ID: ")
self.user_manager.remove_user(user_id)
def __modify_user(self):
user_id = input("请输入需修改的ID: ")
new_name = input("请输入新的姓名: ")
new_age = input("请输入新的年龄: ")
new_data = {"name": new_name, "age": int(new_age)}
self.user_manager.update_user(user_id, new_data)
- 主程序入口
from higher.user_management.UserController import UserController
from higher.user_management.UserView import UserView
"""
主函数入口
"""
if __name__ == "__main__":
User_controller = UserController()
user_view = UserView(User_controller)
user_view.main()