编程题2:用户管理器
This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
import json
|
||||
|
||||
|
||||
class UserManager:
|
||||
"""管理用户数据的增删查改,并支持 JSON 文件保存和加载。"""
|
||||
|
||||
def __init__(self):
|
||||
self.users = [] # 存放所有用户字典
|
||||
self.next_id = 1 # 下一个要分配的 id
|
||||
|
||||
def add_user(self, name, age):
|
||||
"""添加用户,自动分配 id,返回该用户字典。"""
|
||||
user = {"id": self.next_id, "name": name, "age": age}
|
||||
self.users.append(user)
|
||||
self.next_id += 1
|
||||
return user
|
||||
|
||||
def get_user(self, user_id):
|
||||
"""按 id 查询用户,不存在返回 None。"""
|
||||
for user in self.users:
|
||||
if user["id"] == user_id:
|
||||
return user
|
||||
return None
|
||||
|
||||
def update_age(self, user_id, age):
|
||||
"""修改用户年龄,成功返回 True,不存在返回 False。"""
|
||||
for user in self.users:
|
||||
if user["id"] == user_id:
|
||||
user["age"] = age
|
||||
return True
|
||||
return False
|
||||
|
||||
def remove_user(self, user_id):
|
||||
"""删除用户,成功返回 True,不存在返回 False。"""
|
||||
for user in self.users:
|
||||
if user["id"] == user_id:
|
||||
self.users.remove(user)
|
||||
return True
|
||||
return False
|
||||
|
||||
def list_users(self):
|
||||
"""列出所有用户(按添加顺序)。"""
|
||||
return self.users
|
||||
|
||||
def save_to_json(self, filepath):
|
||||
"""把所有用户保存为 JSON 文件。"""
|
||||
with open(filepath, "w", encoding="utf-8") as f:
|
||||
json.dump(self.users, f, ensure_ascii=False, indent=2)
|
||||
|
||||
def load_from_json(self, filepath):
|
||||
"""从 JSON 文件加载用户,覆盖当前数据。"""
|
||||
with open(filepath, "r", encoding="utf-8") as f:
|
||||
self.users = json.load(f)
|
||||
# 后续添加的 id 接续已加载的最大 id
|
||||
if self.users:
|
||||
self.next_id = max(user["id"] for user in self.users) + 1
|
||||
else:
|
||||
self.next_id = 1
|
||||
Reference in New Issue
Block a user