具体介绍见 通讯录管理系统设计与实现(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("通讯录已满,无法添加!")returnprint("\n=== 添加联系人 ===")name = input("请输入姓名:")# 验证性别输入while True:sex = input("请输入性别(1-男, 2-女):")if sex in ('1', '2'):breakprint("输入错误,请重新输入!")# 验证年龄输入while True:age = input("请输入年龄:")if age.isdigit():breakprint("年龄必须为数字,请重新输入!")phone = input("请输入联系电话:")addr = input("请输入家庭地址:")# 创建新联系人并添加到通讯录new_person = Person(name, int(sex), int(age), phone, addr)book.person_list.append(new_person)book.m_Size += 1print(f"成功添加联系人:{name}")def show_person(book):"""显示所有联系人"""print("\n=== 通讯录列表 ===")if book.m_Size == 0:print("通讯录为空")returnfor 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 idxreturn -1def delete_person(book):"""删除联系人"""print("\n=== 删除联系人 ===")if book.m_Size == 0:print("通讯录为空,无法删除!")returnname = input("请输入要删除的联系人姓名:")index = find_person(book, name)if index != -1:deleted_name = book.person_list[index].m_namedel book.person_list[index]book.m_Size -= 1print(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("找不到该联系人!")returnperson = 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':breakelif 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)breakprint("输入错误,请重新输入!")elif choice == '3':while True:age = input("请输入新年龄:")if age.isdigit():person.m_Age = int(age)breakprint("年龄必须为数字,请重新输入!")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 = 0print("通讯录已清空!")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感谢使用通讯录系统,再见!")breakelse:print("无效输入,请重新选择!")input("\n按回车键继续...") # 暂停以便查看结果if __name__ == "__main__":main()