具體介紹見?通訊錄管理系統設計與實現(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()