具体介绍见 通讯录管理系统设计与实现(C++)-CSDN博客
class Person:
def __init__(self, name="", sex=0, age=0, phone="", addr=""):
self.m_name = name # 姓名
self.m_Sex = sex # 性别(1-男,2-女)
self.m_Age = age # 年龄
self.m_Phone = phone # 电话
self.m_Addr = addr # 地址
class AddressBook:
def __init__(self, max_size=1000):
self.person_list = [] # 联系人列表
self.m_Size = 0 # 当前联系人数量
self.MAX = max_size # 最大容量
def show_menu():
"""显示菜单界面"""
print("\n" + "*" * 24)
print("***** 1、添加联系人 *****")
print("***** 2、显示联系人 *****")
print("***** 3、删除联系人 *****")
print("***** 4、查找联系人 *****")
print("***** 5、修改联系人 *****")
print("***** 6、清空联系人 *****")
print("***** 0、退出通讯录 *****")
print("*" * 24 + "\n")
def add_person(book):
"""添加联系人"""
if book.m_Size >= book.MAX:
print("通讯录已满,无法添加!")
return
print("\n=== 添加联系人 ===")
name = input("请输入姓名:")
# 验证性别输入
while True:
sex = input("请输入性别(1-男, 2-女):")
if sex in ('1', '2'):
break
print("输入错误,请重新输入!")
# 验证年龄输入
while True:
age = input("请输入年龄:")
if age.isdigit():
break
print("年龄必须为数字,请重新输入!")
phone = input("请输入联系电话:")
addr = input("请输入家庭地址:")
# 创建新联系人并添加到通讯录
new_person = Person(name, int(sex), int(age), phone, addr)
book.person_list.append(new_person)
book.m_Size += 1
print(f"成功添加联系人:{name}")
def show_person(book):
"""显示所有联系人"""
print("\n=== 通讯录列表 ===")
if book.m_Size == 0:
print("通讯录为空")
return
for idx, person in enumerate(book.person_list, 1):
print(f"{idx}. 姓名:{person.m_name}\t", end="")
print(f"性别:{'男' if person.m_Sex == 1 else '女'}\t", end="")
print(f"年龄:{person.m_Age}\t", end="")
print(f"电话:{person.m_Phone}\t", end="")
print(f"地址:{person.m_Addr}")
def find_person(book, name):
"""查找联系人,返回索引位置,找不到返回-1"""
for idx, person in enumerate(book.person_list):
if person.m_name == name:
return idx
return -1
def delete_person(book):
"""删除联系人"""
print("\n=== 删除联系人 ===")
if book.m_Size == 0:
print("通讯录为空,无法删除!")
return
name = input("请输入要删除的联系人姓名:")
index = find_person(book, name)
if index != -1:
deleted_name = book.person_list[index].m_name
del book.person_list[index]
book.m_Size -= 1
print(f"已成功删除联系人:{deleted_name}")
else:
print("找不到该联系人!")
def search_person(book):
"""查找并显示联系人信息"""
print("\n=== 查找联系人 ===")
name = input("请输入要查找的联系人姓名:")
index = find_person(book, name)
if index != -1:
person = book.person_list[index]
print("\n找到联系人:")
print(f"姓名:{person.m_name}")
print(f"性别:{'男' if person.m_Sex == 1 else '女'}")
print(f"年龄:{person.m_Age}")
print(f"电话:{person.m_Phone}")
print(f"地址:{person.m_Addr}")
else:
print("找不到该联系人!")
def modify_person(book):
"""修改联系人信息"""
print("\n=== 修改联系人 ===")
name = input("请输入要修改的联系人姓名:")
index = find_person(book, name)
if index == -1:
print("找不到该联系人!")
return
person = book.person_list[index]
print("\n当前联系人信息:")
print(f"1. 姓名:{person.m_name}")
print(f"2. 性别:{'男' if person.m_Sex == 1 else '女'}")
print(f"3. 年龄:{person.m_Age}")
print(f"4. 电话:{person.m_Phone}")
print(f"5. 地址:{person.m_Addr}")
print("\n请选择要修改的项目(输入对应数字,0保存退出):")
while True:
choice = input("请选择(0-5):")
if choice == '0':
break
elif choice == '1':
person.m_name = input("请输入新姓名:")
elif choice == '2':
while True:
sex = input("请输入新性别(1-男, 2-女):")
if sex in ('1', '2'):
person.m_Sex = int(sex)
break
print("输入错误,请重新输入!")
elif choice == '3':
while True:
age = input("请输入新年龄:")
if age.isdigit():
person.m_Age = int(age)
break
print("年龄必须为数字,请重新输入!")
elif choice == '4':
person.m_Phone = input("请输入新电话:")
elif choice == '5':
person.m_Addr = input("请输入新地址:")
else:
print("无效选择,请重新输入!")
print("联系人信息已更新!")
def clear_all(book):
"""清空通讯录"""
confirm = input("\n确定要清空通讯录吗?(y/n):")
if confirm.lower() == 'y':
book.person_list.clear()
book.m_Size = 0
print("通讯录已清空!")
else:
print("已取消清空操作")
def main():
"""主程序"""
book = AddressBook()
while True:
show_menu()
choice = input("请选择操作(0-6):")
if choice == '1':
add_person(book)
elif choice == '2':
show_person(book)
elif choice == '3':
delete_person(book)
elif choice == '4':
search_person(book)
elif choice == '5':
modify_person(book)
elif choice == '6':
clear_all(book)
elif choice == '0':
print("\n感谢使用通讯录系统,再见!")
break
else:
print("无效输入,请重新选择!")
input("\n按回车键继续...") # 暂停以便查看结果
if __name__ == "__main__":
main()