📜  基于月份的收入 (1)

📅  最后修改于: 2023-12-03 14:51:36.303000             🧑  作者: Mango

基于月份的收入

简介

本程序旨在帮助用户基于月份进行收入管理,以达到更好的财务控制效果。用户可以在程序中添加每月的收入,程序会自动计算出每月的总收入和平均收入等信息,并以图表形式展示给用户。

功能
  1. 添加月份和总收入,程序会自动计算出平均收入和月份的总收入数量,并以图表形式进行展示。
  2. 用户可以随时修改收入信息,程序会自动重新计算平均收入和总收入数量。
  3. 可以一次性删除某个月份的所有收入信息,程序会自动重新计算平均收入和总收入数量。
技术实现

本程序采用以下技术进行实现:

  • Python 3.0及以上版本
  • Pandas库进行数据处理和计算
  • Matplotlib库进行图表绘制
  • PyQt5库进行界面设计和实现
代码实现

以下是程序的主要代码片段,采用Python语言编写。

import pandas as pd
import matplotlib.pyplot as plt
from PyQt5 import QtWidgets

class IncomeManager(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.df = pd.DataFrame(columns=['Month', 'Income'])
        self.setup_ui()

    def setup_ui(self):
        pass
        # 界面设计和实现

    def add_income(self, month, income):
        """
        添加月份和收入信息
        """
        new_row = {'Month': str(month), 'Income': income}
        self.df = self.df.append(new_row, ignore_index=True)
        self.update_display()

    def delete_income(self, month):
        """
        删除某个月份的所有收入信息
        """
        self.df = self.df[self.df['Month'] != str(month)]
        self.update_display()

    def modify_income(self, month, income):
        """
        修改某个月份的收入信息
        """
        self.df.loc[self.df['Month'] == str(month), 'Income'] = income
        self.update_display()

    def update_display(self):
        """
        更新程序界面并显示图表
        """
        total_income = self.df['Income'].sum()
        avg_income = self.df['Income'].mean()
        data = self.df.groupby(['Month'], as_index=False).sum()
        fig, ax = plt.subplots()
        ax.bar(data['Month'], data['Income'])
        ax.set_xlabel('Month')
        ax.set_ylabel('Income')
        ax.set_title('Monthly Income Report')
        self.plot_widget.setCanvas(fig.canvas)
        self.total_income_label.setText(f'Total Income: {total_income}')
        self.avg_income_label.setText(f'Average Income: {avg_income}')

以上代码主要实现了收入信息的添加、删除和修改功能,同时在更新数据时调用了matplotlib库进行图表展示。

结语

基于月份的收入管理程序可以帮助用户更好地掌控自己的财务状况,帮助用户规划好自己的收入与支出,达到更好的财务管理效果。