编程题2:用户管理器

This commit is contained in:
王堃营
2026-10-07 23:52:42 +08:00
parent 7d1d9504e1
commit fd719120ff
+58
View File
@@ -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