基于Python便利店回本周期计算

基于Python及matplotlib绘图,统计并平均月利润,减去每月固定开支,当净利润满足初始投资意味着满足回本条件。

提示:水费、房租、工资等固定支出,大于每月利润输入的值(意味着赔本生意)是没有办法计算的哦!

无论投资项目或者生意,多数优先考虑轻资产,抛弃笨重的房租成本是第一考虑,抛弃存在情绪化不稳定因素的员工同样非常重要。

不考虑就业贡献,一家完美的企业会是3到5人组成的灵活的精英团队。

而非去依靠人力堆积而盈利,太多逃离实体行业。

import tkinter as tk
from tkinter import messagebox
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import random
from matplotlib import rcParams

# 定义颜色系
color_palette = [
    'gray', 'lightblue', 'beige', 'green', 'blue', 'red', 'pink', 'khaki',
    'wine', 'turquoise', 'purple', 'cyan', 'lavender', 'violet', 'teal',
    'skyblue', 'yellow', 'orange', 'magenta', 'brown'
]

# 设置matplotlib字体属性,以支持中文显示
rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题


def calculate_payback_period():
    try:
        initial_investment = float(investment_entry.get())
        monthly_profit = float(profit_entry.get())

        # 获取各项开支
        water_bill = float(water_entry.get())
        electricity_bill = float(electricity_entry.get())
        rent = float(rent_entry.get())
        salaries = float(salaries_entry.get())
        losses = float(losses_entry.get())

        # 计算总开支
        monthly_expenses = water_bill + electricity_bill + rent + salaries + losses

        if monthly_profit <= monthly_expenses:
            messagebox.showerror("错误", "每月利润必须大于每月开支")
            return

        monthly_net_income = monthly_profit - monthly_expenses
        payback_period = initial_investment / monthly_net_income
        payback_period_months = round(payback_period, 2)

        result_label.config(text=f"回本时间约为:{payback_period_months}个月")

        # 更新玫瑰图数据
        update_rose_chart([monthly_profit, water_bill, electricity_bill, rent, salaries, losses])
    except ValueError:
        messagebox.showerror("错误", "请输入有效的数字")


def update_rose_chart(data):
    # 清除原有图表
    fig.clear()

    # 创建新的玫瑰图
    ax = fig.add_subplot(111, polar=True)
    ax.set_theta_direction('clockwise')
    ax.set_theta_offset(90)

    # 设置玫瑰图的标签
    ax.set_thetagrids(range(0, 360, 60), labels=['利润', '水费', '电费', '房租', '工资', '损耗'])

    # 随机选择颜色
    colors = random.choices(color_palette, k=len(data))

    # 绘制玫瑰图
    ax.bar(range(len(data)), data, color=colors, width=0.5)

    # 刷新画布
    canvas.draw()


# 创建主窗口
root = tk.Tk()
root.title("便利店回本周期计算器")
root.geometry("1200x840")  # 修改主窗口大小为1200x840

# 左侧放置输入框
left_frame = tk.Frame(root)
left_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

# 添加标签和输入框
tk.Label(left_frame, text="初始投资额(元):").pack()
investment_entry = tk.Entry(left_frame)
investment_entry.pack()

tk.Label(left_frame, text="每月利润(元):").pack()
profit_entry = tk.Entry(left_frame)
profit_entry.pack()

# 添加每月开支的细分项
tk.Label(left_frame, text="水费(元):").pack()
water_entry = tk.Entry(left_frame)
water_entry.pack()

tk.Label(left_frame, text="电费(元):").pack()
electricity_entry = tk.Entry(left_frame)
electricity_entry.pack()

tk.Label(left_frame, text="房租(元):").pack()
rent_entry = tk.Entry(left_frame)
rent_entry.pack()

tk.Label(left_frame, text="工资(元):").pack()
salaries_entry = tk.Entry(left_frame)
salaries_entry.pack()

tk.Label(left_frame, text="损耗(元):").pack()
losses_entry = tk.Entry(left_frame)
losses_entry.pack()

# 添加计算按钮
calculate_button = tk.Button(left_frame, text="计算回本时间", command=calculate_payback_period)
calculate_button.pack()

# 显示结果的标签
result_label = tk.Label(left_frame, text="")
result_label.pack()

# 右侧放置玫瑰图
right_frame = tk.Frame(root)
right_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)

# 预先生成玫瑰图
fig = plt.figure(figsize=(6, 6))
canvas = FigureCanvasTkAgg(fig, master=right_frame)
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)

# 运行主循环
root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值