1. 实际应用场景描述
场景
小王是一名职场人,朋友很多,但工作忙碌,经常忘记朋友的生日。
每次想发祝福时,要么太晚,要么祝福语千篇一律,甚至不知道送什么礼物合适。
他希望有一个工具能帮他:
- 记录朋友的生日和联系方式
- 自动生成个性化的生日祝福短信/微信模板
- 提前提醒他准备祝福和礼物
- 推荐合适的生日礼物,避免踩雷
痛点
- 忘记生日 → 影响友情
- 祝福语单调 → 缺乏心意
- 礼物选择困难 → 怕不合适
- 手动记录麻烦 → 容易丢失
2. 核心逻辑讲解
1. 录入朋友信息(姓名、生日、联系方式、关系)
2. 祝福语生成:根据关系(死党/普通朋友/同事)生成不同风格的祝福模板
3. 礼物推荐:根据关系+预算推荐礼物类别
4. 提前提醒:在生日前 N 天提醒用户
5. 数据持久化:用 JSON 文件存储朋友信息
6. 主程序交互:菜单式操作,方便使用
3. 模块化代码结构
birthday_helper/
│
├── main.py # 主程序入口
├── friends.py # 朋友信息管理
├── blessings.py # 祝福语生成
├── gifts.py # 礼物推荐
├── reminder.py # 提醒功能
├── utils.py # 工具函数
└── README.md # 项目说明
4. 核心代码实现
"friends.py"
import json
import os
FILE = "friends.json"
def load_friends():
if os.path.exists(FILE):
with open(FILE, "r", encoding="utf-8") as f:
return json.load(f)
return []
def save_friends(data):
with open(FILE, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
def add_friend(name, birthday, contact, relation):
friends = load_friends()
friends.append({"name": name, "birthday": birthday, "contact": contact, "relation": relation})
save_friends(friends)
def list_friends():
return load_friends()
"blessings.py"
import random
TEMPLATES = {
"死党": [
"兄弟/姐妹,生日快乐!愿你每天都笑得像今天一样灿烂!",
"认识你是我最大的幸运,生日快乐,永远年轻!"
],
"普通朋友": [
"祝你生日快乐,愿你心想事成,幸福满满!",
"愿你的每一天都充满阳光与欢笑,生日快乐!"
],
"同事": [
"祝你生日快乐,工作顺利,生活愉快!",
"愿你在工作和生活中都能收获满满的幸福!"
]
}
def generate_blessing(relation):
return random.choice(TEMPLATES.get(relation, TEMPLATES["普通朋友"]))
"gifts.py"
GIFT_LIST = {
"死党": ["定制相册", "手写信", "旅行体验券"],
"普通朋友": ["书籍", "香薰蜡烛", "保温杯"],
"同事": ["高档笔记本", "桌面绿植", "咖啡礼盒"]
}
def recommend_gift(relation):
return GIFT_LIST.get(relation, GIFT_LIST["普通朋友"])
"reminder.py"
from datetime import datetime, timedelta
def check_upcoming_birthdays(days_before=3):
today = datetime.today()
friends = __import__('friends').load_friends()
for f in friends:
bday = datetime.strptime(f["birthday"], "%Y-%m-%d")
# 今年生日
bday_this_year = bday.replace(year=today.year)
if bday_this_year < today:
bday_this_year = bday_this_year.replace(year=today.year + 1)
days_left = (bday_this_year - today).days
if 0 < days_left <= days_before:
print(f"⏰ 提醒:{f['name']} 的生日还有 {days_left} 天!")
"main.py"
from friends import add_friend, list_friends
from blessings import generate_blessing
from gifts import recommend_gift
from reminder import check_upcoming_birthdays
def main():
while True:
print("\n=== 朋友生日提醒助手 ===")
print("1. 添加朋友生日")
print("2. 查看所有朋友")
print("3. 生成祝福语")
print("4. 推荐礼物")
print("5. 检查近期生日")
print("0. 退出")
choice = input("请选择操作:")
if choice == "1":
name = input("姓名:")
birthday = input("生日(YYYY-MM-DD):")
contact = input("联系方式:")
relation = input("关系(死党/普通朋友/同事):")
add_friend(name, birthday, contact, relation)
print("✅ 添加成功!")
elif choice == "2":
for f in list_friends():
print(f)
elif choice == "3":
name = input("朋友姓名:")
relation = input("关系:")
print("祝福语:", generate_blessing(relation))
elif choice == "4":
relation = input("关系:")
print("礼物推荐:", recommend_gift(relation))
elif choice == "5":
check_upcoming_birthdays()
elif choice == "0":
break
else:
print("无效选择")
if __name__ == "__main__":
main()
5. README.md
# 朋友生日提醒助手
一个帮助您记录朋友生日、生成祝福语、推荐礼物并提前提醒的Python工具。
## 功能
- 录入朋友生日和联系方式
- 自动生成个性化祝福语
- 推荐合适的生日礼物
- 提前提醒生日
## 使用方法
1. 安装 Python 3.x
2. 运行 `python main.py`
3. 按菜单提示操作
## 文件结构
- `main.py` 主程序
- `friends.py` 朋友信息管理
- `blessings.py` 祝福语生成
- `gifts.py` 礼物推荐
- `reminder.py` 提醒功能
6. 核心知识点卡片
知识点 说明
JSON 数据存储 用于持久化朋友信息
随机数选择
"random.choice()" 生成多样化祝福
日期处理
"datetime" 计算距离生日的天数
模块化编程 分文件管理不同功能
用户交互 菜单式命令行界面
7. 总结
这个 朋友生日提醒助手 解决了忘记生日、祝福语单调、礼物选择困难等问题,并且通过模块化设计让代码易于维护和扩展。
如果你愿意,可以在下一步:
- 增加 微信/短信自动发送 功能(调用 API)
- 做成 桌面 GUI 应用(用 Tkinter 或 PyQt)
- 打包成 Windows 可执行文件
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!