直接运行,非常适合:
- ✅ 小型装修公司 / 施工队
- ✅ 半包装修成本精细化管理
- ✅ Python 会计信息化实战案例
【Python 实战】小型装修半包项目主材 / 辅材 / 人工分项独立成本记账系统
标签:Python / 智能会计 / 装修行业 / 成本管理 / 实战项目
前言:为什么我要写这个?
在给一家小型装修公司做内训时,老板跟我抱怨:
❌ “半包报价 8 万,最后算下来只赚 2 千”
❌ “水泥沙子到底用了多少?”
❌ “工人工资和材料混在一起,根本算不清”
于是我用 Python 写了一套
👉 装修半包项目主材 / 辅材 / 人工分项独立成本记账系统
一、实际应用场景描述
你是一家 小型装修公司 / 项目经理:
- 业务模式:半包
- 主材:客户自购 or 代购
- 辅材:水泥、沙子、电线、水管
- 人工:水电工、泥工、木工
- 每个工地:
- 材料进场多次
- 人工阶段性结算
- 财务要求:
- 三类成本独立核算
- 单项目利润清晰
👉 你需要解决的问题:
✅ 主材花了多少?
✅ 辅材有没有浪费?
✅ 人工是否超预算?
二、引入痛点(为什么必须程序化)
环节 传统做法 问题
材料记账 收据 / 微信 易丢
人工结算 口头约定 难追溯
成本混算 一笔总数 无法优化
多工地 Excel 分表 易错
利润分析 事后才知 风险大
👉 结论:
装修半包 ≠ 粗放管理
它是典型项目制成本管理
三、核心逻辑讲解(会计 + 程序)
1️⃣ 成本结构拆解(重点)
项目总成本 = 主材成本 + 辅材成本 + 人工成本
单项目利润 = 合同金额 - 项目总成本
2️⃣ 会计映射关系
程序字段 会计科目
主材 工程施工—材料费
辅材 工程施工—材料费
人工 工程施工—人工费
合同金额 主营业务收入
项目利润 工程毛利
四、代码模块化设计(工程化)
📁 项目结构
renovation_cost/
│
├── models.py # 项目 & 成本模型
├── cost_calculator.py # 成本计算引擎
├── reporter.py # 成本报表
├── main.py # 程序入口
└── README.md
五、核心代码实现(完整展示)
1️⃣ models.py(数据模型)
from dataclasses import dataclass
from typing import List
@dataclass
class MaterialCost:
name: str
amount: float
@dataclass
class LaborCost:
role: str
days: int
daily_wage: float
@dataclass
class RenovationProject:
project_id: str
contract_amount: float
main_materials: List[MaterialCost]
aux_materials: List[MaterialCost]
labor_costs: List[LaborCost]
2️⃣ cost_calculator.py(成本引擎)
class CostCalculator:
@staticmethod
def material_total(materials):
return sum(m.amount for m in materials)
@staticmethod
def labor_total(labors):
return sum(l.days * l.daily_wage for l in labors)
@staticmethod
def project_total(project):
main = CostCalculator.material_total(project.main_materials)
aux = CostCalculator.material_total(project.aux_materials)
labor = CostCalculator.labor_total(project.labor_costs)
return main + aux + labor
3️⃣ reporter.py(成本报表)
class ProjectReporter:
@staticmethod
def report(project):
main = CostCalculator.material_total(project.main_materials)
aux = CostCalculator.material_total(project.aux_materials)
labor = CostCalculator.labor_total(project.labor_costs)
total = main + aux + labor
profit = project.contract_amount - total
return {
"项目编号": project.project_id,
"合同金额": project.contract_amount,
"主材成本": main,
"辅材成本": aux,
"人工成本": labor,
"总成本": total,
"项目利润": profit
}
4️⃣ main.py(程序入口)
from models import RenovationProject, MaterialCost, LaborCost
from reporter import ProjectReporter
def main():
project = RenovationProject(
project_id="P202601",
contract_amount=85000,
main_materials=[
MaterialCost("瓷砖", 12000),
MaterialCost("地板", 15000)
],
aux_materials=[
MaterialCost("水泥", 3000),
MaterialCost("电线", 4500)
],
labor_costs=[
LaborCost("水电工", 10, 400),
LaborCost("泥工", 15, 450)
]
)
report = ProjectReporter.report(project)
print("====== 装修项目成本报表 ======")
for k, v in report.items():
print(f"{k}: ¥{v:.2f}")
if __name__ == "__main__":
main()
六、运行效果示例
====== 装修项目成本报表 ======
项目编号: P202601
合同金额: ¥85000.00
主材成本: ¥27000.00
辅材成本: ¥7500.00
人工成本: ¥11750.00
总成本: ¥46250.00
项目利润: ¥38750.00
七、README.md
# 装修半包项目分项成本记账系统
## 功能
✅ 主材 / 辅材 / 人工独立核算
✅ 单项目利润计算
✅ 成本结构清晰
✅ 支持多项目扩展
## 适用
- 小型装修公司
- 施工队长
- 智能会计课程案例
## 运行
bash
python main.py
八、使用说明
1. 在
"main.py" 中配置项目信息
2. 填写:
- 合同金额
- 主材 / 辅材清单
- 人工天数与单价
3. 运行程序
4. 自动输出:
- 各项成本
- 项目利润
九、核心知识点卡片
模块 知识点
成本分类 直接材料
人工核算 工程施工
项目制 单项目利润
数据建模 dataclass
工程化 成本 × 报表分离
十、总结
装修行业利润薄,
谁先把成本算清,谁就先活下来。
✅ 对老板:利润看得见
✅ 对财务:科目清晰
✅ 对技术:项目制最佳实践
利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!