大家好!欢迎来到奥饼饼智慧谷 💰。这周我们已经做了天气查询、待办、猜数字、密码生成,今天再来一个超级实用的生活工具——个人记账本!让我们开始管理自己的财务吧!
🎯 记账本功能
一个好用的记账本应该有这些功能:
💡 记账小贴士
每天记一点,月底会发现自己的钱花在哪里了!
💰 开始写代码
以下是完整的记账本代码:
import json import os from datetime import datetime DATA_FILE = "accounting.json" def load_data(): """从文件加载数据""" if os.path.exists(DATA_FILE): with open(DATA_FILE, 'r', encoding='utf-8') as f: return json.load(f) return [] def save_data(data): """保存数据到文件""" with open(DATA_FILE, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) def add_record(data): """添加记录""" print("\n" + "="*40) print(" 📝 添加记录") print("="*40) # 选择类型 while True: type_choice = input("\n收入还是支出? (income/expense): ").strip().lower() if type_choice in ['income', 'expense']: break print("❌ 请输入 income 或 expense!") # 输入描述 desc = input("\n描述一下这笔钱 (例如: 工资, 午饭): ").strip() if not desc: desc = "无描述" # 输入金额 while True: try: amount = float(input("\n金额是多少: ").strip()) if amount > 0: break print("❌ 金额要大于0!") except ValueError: print("❌ 请输入有效的数字!") # 获取日期 date_str = datetime.now().strftime("%Y-%m-%d %H:%M") # 创建记录 record = { "id": len(data) + 1, "type": type_choice, "description": desc, "amount": amount, "date": date_str } data.append(record) save_data(data) type_emoji = "💰" if type_choice == "income" else "💸" print(f"\n✅ {type_emoji} 记录已添加!") def view_records(data): """查看所有记录""" if not data: print("\n📭 还没有记录呢!") return print("\n" + "="*60) print(f" 📋 所有记录 (共 {len(data)} 条)") print("="*60) print(f"{'ID':<5} {'类型':<10} {'金额':<12} {'日期':<20} 描述") print("-"*60) for record in data: type_text = "收入" if record["type"] == "income" else "支出" type_emoji = "💰" if record["type"] == "income" else "💸" print(f"{record['id']:<5} {type_emoji} {type_text:<8} {record['amount']:<12.2f} {record['date']:<20} {record['description']}") print("="*60) def view_stats(data): """查看统计""" if not data: print("\n📭 还没有记录呢!") return income_total = sum(r["amount"] for r in data if r["type"] == "income") expense_total = sum(r["amount"] for r in data if r["type"] == "expense") balance = income_total - expense_total print("\n" + "="*40) print(" 📊 财务统计") print("="*40) print(f"💰 总收入: {income_total:.2f} 元") print(f"💸 总支出: {expense_total:.2f} 元") print(f"📈 净余额: {balance:.2f} 元") if balance > 0: print("🎉 不错哦! 有盈余!") elif balance < 0: print("⚠️ 注意哦, 超支了!") else: print("😐 收支平衡") print("="*40) def delete_record(data): """删除记录""" if not data: print("\n📭 还没有记录呢!") return view_records(data) while True: try: record_id = int(input("\n要删除哪条记录? 输入ID: ").strip()) found = False for i, record in enumerate(data): if record["id"] == record_id: deleted = data.pop(i) save_data(data) print(f"✅ 已删除: {deleted['description']} ({deleted['amount']}元)") found = True break if found: break print("❌ 找不到这个ID!") except ValueError: print("❌ 请输入有效的数字!") def main(): print("="*40) print(" 💰 欢迎使用记账本! 💰") print("="*40) data = load_data() while True: print("\n" + "-"*40) print("1. 添加记录") print("2. 查看所有记录") print("3. 查看统计") print("4. 删除记录") print("5. 退出") print("-"*40) choice = input("\n请选择 (1-5): ").strip() if choice == "1": add_record(data) elif choice == "2": view_records(data) elif choice == "3": view_stats(data) elif choice == "4": delete_record(data) elif choice == "5": print("\n👋 再见! 记得每天都要记账哦!") break else: print("❌ 请选择 1-5!") if __name__ == "__main__": main()
你不理财,财不理你!记账是理财的第一步!
🚀 运行试试吧!
保存为 `accounting.py` 然后运行:
python accounting.py
开始记录你的每一笔收入和支出,月底看统计会很有成就感!
✨ 进阶玩法
想让记账本更强大?试试这些改进:
🎁 记账习惯
每天睡前花5分钟记一下,坚持一个月,你会有惊喜!
📚 知识要点
通过这个项目,我们学到了:
今天的记账本就到这里了!现在开始,把每笔钱都记录下来,做自己财务的小主人!💰
👋 感谢阅读 | 奥饼饼智慧谷
每天一个有趣的编程小项目,让学习变成乐趣!
💡 点赞 + 在看 + 分享,让更多人一起享受编程的快乐!