# add_birthday.py import json import os DATA_FILE = 'data/family.json' def load_birthdays(): """从JSON文件中加载生日数据""" if not os.path.exists(DATA_FILE): return [] with open(DATA_FILE, 'r', encoding='utf-8') as f: try: return json.load(f) except json.JSONDecodeError: return [] def save_birthdays(birthdays): """将生日数据保存到JSON文件""" with open(DATA_FILE, 'w', encoding='utf-8') as f: # indent=4让文件格式更美观, ensure_ascii=False确保中文正常显示 json.dump(birthdays, f, indent=4, ensure_ascii=False) def main(): """主函数,用于添加生日""" birthdays = load_birthdays() print("--- 生日信息添加程序 ---") print("当前已记录的生日:") for person in birthdays: print(f"- {person['name']}: {person['birthday']}") print("\n输入新的生日信息(输入姓名时直接按回车结束):") while True: name = input("请输入姓名: ").strip() if not name: break birthday_str = input(f"请输入 {name} 的生日 (格式 YYYY-MM-DD): ").strip() # 简单校验格式 (更复杂的校验可以引入日期库) if len(birthday_str.split('-')) != 3: print("格式错误,请重新输入!") continue # 检查是否已存在,存在则更新 found = False for person in birthdays: if person['name'] == name: print(f"已存在 {name} 的记录,将生日更新为 {birthday_str}") person['birthday'] = birthday_str found = True break if not found: birthdays.append({'name': name, 'birthday': birthday_str}) print(f"已添加 {name} 的生日: {birthday_str}") save_birthdays(birthdays) print("\n生日信息已保存!") if __name__ == "__main__": main()