Advertisement

基于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()
    
    
    
    
    AI生成项目
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/y25kKwFOzan80q9Q74AcRoSvDPmi.png)

全部评论 (0)

还没有任何评论哟~