当前位置: 首页 > wzjs >正文

铁路建设单位网站嘉盛建设集团网站

铁路建设单位网站,嘉盛建设集团网站,最新的域名网站,沈阳哪里做网站第6周学习计划:项目开发 目标:通过小型项目掌握开发流程,熟悉从需求分析到代码实现的完整过程。 项目总览 小型项目:个人记账工具(本周重点)。后续方向:天气查询工具、电影推荐系统&#xff…

第6周学习计划:项目开发

目标:通过小型项目掌握开发流程,熟悉从需求分析到代码实现的完整过程。

项目总览
  1. 小型项目:个人记账工具(本周重点)。
  2. 后续方向:天气查询工具、电影推荐系统(第7-8周)。

项目:个人记账工具

目标
编写一个命令行程序,记录用户的收入和支出,按月统计并生成简单报表。

功能需求
  1. 添加记录:输入金额、类别(收入/支出)、日期。
  2. 查看记录:显示所有记录。
  3. 按月统计:显示某个月的收入、支出和余额。
  4. 保存到文件:记录持久化存储。
技术点
  • 类和对象(OOP)。
  • 文件操作(JSON)。
  • datetime 模块处理日期。
  • 列表和字典操作。

代码实现

以下是完整代码,我会逐步讲解:

from datetime import datetime
import jsonclass Transaction:def __init__(self, amount, category, date):self.amount = amountself.category = category  # "income" 或 "expense"self.date = datetime.strptime(date, "%Y-%m-%d")def __str__(self):return f"{self.date.strftime('%Y-%m-%d')} | {self.category} | {self.amount}"class AccountBook:def __init__(self, filename="transactions.json"):self.transactions = []self.filename = filenameself.load_transactions()def add_transaction(self, amount, category, date):if category not in ["income", "expense"]:raise ValueError("类别必须是 'income' 或 'expense'!")if amount < 0:raise ValueError("金额不能为负!")transaction = Transaction(amount, category, date)self.transactions.append(transaction)self.save_transactions()print(f"已添加记录:{transaction}")def view_transactions(self):if not self.transactions:print("暂无记录!")else:print("\n所有记录:")for i, t in enumerate(self.transactions, 1):print(f"{i}. {t}")def monthly_report(self, year, month):income = 0expense = 0for t in self.transactions:if t.date.year == year and t.date.month == month:if t.category == "income":income += t.amountelse:expense += t.amountbalance = income - expenseprint(f"\n{year}{month}月报表:")print(f"收入:{income}")print(f"支出:{expense}")print(f"余额:{balance}")def save_transactions(self):data = [{"amount": t.amount, "category": t.category, "date": t.date.strftime("%Y-%m-%d")}for t in self.transactions]with open(self.filename, 'w', encoding='utf-8') as f:json.dump(data, f)def load_transactions(self):try:with open(self.filename, 'r', encoding='utf-8') as f:data = json.load(f)self.transactions = [Transaction(t["amount"], t["category"], t["date"]) for t in data]except FileNotFoundError:passdef main():book = AccountBook()while True:print("\n=== 个人记账工具 ===")print("1. 添加记录")print("2. 查看所有记录")print("3. 查看月度报表")print("4. 退出")choice = input("请选择操作(1-4):")if choice == "1":try:amount = float(input("请输入金额:"))category = input("请输入类别(income/expense):")date = input("请输入日期(格式:YYYY-MM-DD):")book.add_transaction(amount, category, date)except ValueError as e:print(f"错误:{e}")except Exception:print("错误:请输入有效数据!")elif choice == "2":book.view_transactions()elif choice == "3":try:year = int(input("请输入年份(如 2025):"))month = int(input("请输入月份(1-12):"))book.monthly_report(year, month)except ValueError:print("错误:请输入有效的年月!")elif choice == "4":print("谢谢使用!")breakelse:print("无效选择,请输入 1-4!")if __name__ == "__main__":main()

代码讲解
  1. 类设计

    • Transaction:表示单条记录,包含金额、类别、日期。
    • AccountBook:管理所有记录,提供操作方法。
  2. 功能实现

    • add_transaction():添加记录,验证输入。
    • view_transactions():显示所有记录。
    • monthly_report():统计指定月份的收支。
    • save_transactions()load_transactions():用 JSON 实现数据持久化。
  3. 日期处理

    • datetime.strptime() 解析字符串日期。
    • strftime() 格式化输出。

动手实践
  1. 新建文件 account_book.py,复制代码。
  2. 运行程序,试试:
    • 1,添加记录:金额 500,类别 income,日期 2025-02-25
    • 1,添加记录:金额 200,类别 expense,日期 2025-02-26
    • 2,查看所有记录。
    • 3,输入 20252,查看月报。
    • 4,退出。
  3. 检查 transactions.json,确认数据保存。

预期输出
  • 添加后查看:
所有记录:
1. 2025-02-25 | income | 500
2. 2025-02-26 | expense | 200
  • 月报:
2025年2月报表:
收入:500
支出:200
余额:300

小挑战
  1. 分类统计:在月报中显示不同类别(如“工资”、“餐饮”)的支出。
  2. 删除记录:添加删除功能。
  3. CSV 支持:将数据保存为 CSV 而不是 JSON。

第6周进展

我们完成了一个小型项目,接下来可以:

  • 第7-8周:开发天气查询工具或电影推荐系统。
  • 扩展:优化当前项目。

文章转载自:

http://iRSoXjAB.gjqnn.cn
http://On52jkiz.gjqnn.cn
http://4leZBq3e.gjqnn.cn
http://oMQ87047.gjqnn.cn
http://psF9tJei.gjqnn.cn
http://KXyc44AE.gjqnn.cn
http://dDs6F3we.gjqnn.cn
http://ScKSt2fu.gjqnn.cn
http://nDQDbNaQ.gjqnn.cn
http://qIPPYe4l.gjqnn.cn
http://2E1F3wGF.gjqnn.cn
http://FwgUpkvI.gjqnn.cn
http://R6Sln0m3.gjqnn.cn
http://3A8xDrHS.gjqnn.cn
http://MoILBdkP.gjqnn.cn
http://NRk8Y38j.gjqnn.cn
http://DiSIVQMa.gjqnn.cn
http://XQA9CIRT.gjqnn.cn
http://A2by8MS6.gjqnn.cn
http://ERgnZmX5.gjqnn.cn
http://X3ZhLIDL.gjqnn.cn
http://YJ62JrVY.gjqnn.cn
http://3ySWJmB6.gjqnn.cn
http://4VYuOYjp.gjqnn.cn
http://B98uSs7w.gjqnn.cn
http://J2FXHSpf.gjqnn.cn
http://2NUtflWM.gjqnn.cn
http://WBfr9FUt.gjqnn.cn
http://pe6yp5ei.gjqnn.cn
http://9Qvi0oKx.gjqnn.cn
http://www.dtcms.com/wzjs/729489.html

相关文章:

  • 深圳企业网站建设企业河南国邦卫可生物科技有限公司网站建设
  • 东莞网站制作实力乐云seo黄骅市海边沙滩在哪里
  • 有关大学生做兼职的网站网页源代码下载音乐
  • 公司网站建设gghhhj关键词排行优化网站
  • 北京专门做网站的公司用什么软件做网站好处
  • 网站后台修改的页面不能显示网站建设公司擅自关闭客户网络
  • 做网站有哪些主题玉泉营网站建设
  • wordpress 热门插件台州网站建设seo
  • 蒙自建设网站电子商务网站建设需要做好哪些准备
  • 网站建设外包公司排名品牌推广渠道有哪些
  • wordpress新建用户组seo网站关键词优化多少钱
  • 商丘企业网站服务厦门建设网站的
  • ipad网站制作长春网站建设机构
  • 旅游网站开发 目的及必要性北京网站建设培训
  • 网站建设需求文档模版网上做论文的网站有哪些
  • 企业网站整合地图标注申请入口免费
  • 目前玩的人最多网游排行榜网站seo模块
  • 网站首页背景图片企业建设厂房需要办哪些证
  • 徐水住房建设局网站附近那里有做网站的
  • 网站如何做外部链接为什么要给大夫做网站
  • 郑州专业做网站企业百度一下百度搜索官网
  • 自己做网站不用WordPress网站建设负责传资料不
  • 徐州市城乡和城乡建设厅网站首页深圳百度网站优化
  • 营销型网站的建设重点是什么led的网站建设
  • 互联网公司网站wordpress 插件作用
  • 网站优化自已做还是请人做网站做留言板怎么清空源码
  • 大型网站建设兴田德润简介网站后台程序开发
  • 网站建设责任分工敦化市建设局网站
  • 制作网站要花多少钱如何深圳工程建设公司
  • 建旅游网站的意义徐东做网站