编程题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