python高级4
练习:
使用已学习的所有知识,加上文件等操作,实现一个名片管理系统。具体功能要是实现(菜单): **************名片管理系统************* 1.增加一个名片 2.删除一个名片 3.修改一个名片 4.查找一个名片 5.显示所有名片 ******************************************* 【一个名片里的信息有:姓名、联系方式、QQ、住址】
import json
import os
class CardManager:
FILE_PATH = "cards.json"
def __init__(self):
"""初始化:如果文件不存在,则创建一个空 JSON 文件"""
if not os.path.exists(self.FILE_PATH):
with open(self.FILE_PATH, "w", encoding="utf-8") as f:
json.dump([], f, ensure_ascii=False)
def load_data(self):
"""读取 JSON 文件数据"""
with open(self.FILE_PATH, "r", encoding="utf-8") as f:
return json.load(f)
def save_data(self, data):
"""保存数据到 JSON 文件"""
with open(self.FILE_PATH, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def add_card(self, name, phone, qq, address):
"""添加名片"""
data = self.load_data()
card = {"name": name, "phone": phone, "qq": qq, "address": address}
data.append(card)
self.save_data(data)
print(f"名片添加成功:{card}")
def delete_card(self, name):
"""删除名片"""
data = self.load_data()
new_data = [card for card in data if card["name"] != name]
if len(new_data) == len(data):
print(f"未找到名片:{name}")
else:
self.save_data(new_data)
print(f"名片已删除:{name}")
def update_card(self, name, phone=None, qq=None, address=None):
"""修改名片"""
data = self.load_data()
for card in data:
if card["name"] == name:
if phone:
card["phone"] = phone
if qq:
card["qq"] = qq
if address:
card["address"] = address
self.save_data(data)
print(f"名片已更新:{card}")
return
print(f"未找到名片:{name}")
def search_card(self, name):
"""查找名片"""
data = self.load_data()
results = [card for card in data if name in card["name"]]
if results:
print("查询结果:")
for card in results:
print(card)
else:
print(f"没有找到名片:{name}")
def show_all(self):
"""显示所有名片"""
data = self.load_data()
if data:
print("名片列表:")
for card in data:
print(card)
else:
print("没有任何名片信息")
# ========== 主菜单 ==========
def main():
manager = CardManager()
while True:
print("\n************** 名片管理系统 **************")
print("1. 增加一个名片")
print("2. 删除一个名片")
print("3. 修改一个名片")
print("4. 查找一个名片")
print("5. 显示所有名片")
print("0. 退出系统")
print("*******************************************")
choice = input("请选择操作(0-5):")
if choice == "1":
name = input("请输入姓名:")
phone = input("请输入联系方式:")
qq = input("请输入 QQ 号码:")
address = input("请输入住址:")
manager.add_card(name, phone, qq, address)
elif choice == "2":
name = input("请输入要删除的名片姓名:")
manager.delete_card(name)
elif choice == "3":
name = input("请输入要修改的名片姓名:")
phone = input("新联系方式(按回车跳过):") or None
qq = input("新 QQ(按回车跳过):") or None
address = input("新住址(按回车跳过):") or None
manager.update_card(name, phone, qq, address)
elif choice == "4":
name = input("请输入要查找的名片姓名:")
manager.search_card(name)
elif choice == "5":
manager.show_all()
elif choice == "0":
print("退出系统")
break
else:
print("请输入正确的选项!")
# 运行程序
if __name__ == "__main__":
main()
cards.json:
[
{
"name": "张三",
"phone": "10001",
"qq": "10002",
"address": "10003"
}
]