跳转至

Topic 14.5 - 完善主程序及后续工作

1. 整合所有功能到主程序

我们已经实现了金融计算器的三个模块:

  • 表达式计算模块
  • 现金流计算模块
  • 金钱时间价值计算模块

之后,我们将这些模块整合到主程序中:

# src/main.py
from input_handler import get_user_input
from ui import display_menu, show_instructions
from logger import log_write, log_read
from function_cash_flow import function_cash_flow_main
from function_expression import function_expression_main
from function_time_value import function_time_value_main

def main():
    while True:

        # 显示标题与菜单
        display_menu()
        print("-" * 40)
        # 获取用户输入
        user_input = get_user_input()
        print("-" * 40)

        # 处理用户输入
        if user_input == 'q':
            break
        elif user_input == '0':
            show_instructions("0")
        elif user_input == '1':
            function_expression_main()
        elif user_input == '2':
            function_cash_flow_main()
        elif user_input == '3':
            function_time_value_main()
        elif user_input == 'l':
            log_read()

if __name__ == "__main__":
    main()

运行主程序 src/main.py,我们可以看到,所有功能都成功集成到主程序中,并且可以正常使用:

========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: 0
----------------------------------------
欢迎使用金融计算器!本程序提供以下功能:
1. 简单的算式计算
2. 现金流计算NPV与IRR
3. 金钱的时间价值计算
请根据菜单提示选择相应的功能进行操作。
输入任意内容返回上级菜单:
========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: 1
----------------------------------------
----------------------------------------
表达式计算功能:
0. 查看功能说明
1. 计算表达式
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):1
----------------------------------------
请输入数学表达式(输入 'exit' 退出):2 + 8 * exp(3) / pi * sqrt(999)
计算结果: 1618.6139
----------------------------------------
是否继续计算?(y/n):n
----------------------------------------
----------------------------------------
表达式计算功能:
0. 查看功能说明
1. 计算表达式
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):q
----------------------------------------
========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: 2
----------------------------------------
----------------------------------------
现金流计算功能:
0. 使用说明
1. 输入现金流并进行运算
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):1
----------------------------------------
----------------------------------------
请输入现金流时间点(非负整数):0
请输入现金流金额:-1100
现金流已添加:时间点 = 0 金额 = -1100.0
----------------------------------------
是否继续添加现金流?(y/n):y
请输入现金流时间点(非负整数):1
请输入现金流金额:2000
现金流已添加:时间点 = 1 金额 = 2000.0
----------------------------------------
是否继续添加现金流?(y/n):n
----------------------------------------
完整现金流列表已生成: [-1100.0, 2000.0]
该现金流的内部收益率(IRR)为: [0.8181818181818181]
请输入折现率(小数形式,如 0.05 表示 5%):0.07
该现金流的净现值(NPV)为: 769.1589
----------------------------------------
是否继续计算?(y/n):n
----------------------------------------
----------------------------------------
现金流计算功能:
0. 使用说明
1. 输入现金流并进行运算
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):q
----------------------------------------
========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: 3
----------------------------------------
----------------------------------------
金钱时间价值计算功能:
0. 查看功能说明
1. 计算金钱时间价值
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):1
----------------------------------------
****************************************
请输入以下金钱时间价值计算所需的参数:
请输入PV(输入None表示要求现值):-1000
PV输入完成: -1000.0
****************************************
请输入FV(输入None表示要求终值):None
FV输入完成: None
****************************************
请输入PMT(输入None表示要求每期支付金额):-60
PMT输入完成: -60.0
****************************************
请输入R(输入None表示要求利率):0.05
R输入完成: 0.05
****************************************
请输入N(输入None表示要求期数):10
N输入完成: 10
****************************************
所有参数输入完成。
****************************************
参数输入为:
PV: -1000.0
FV: None
PMT: -60.0
R: 0.05
N: 10
****************************************
计算结果为:
PV: -1000.0
FV: 2383.5681789103724
PMT: -60.0
R: 0.05
N: 10
****************************************
输入任意内容返回主菜单:
----------------------------------------
----------------------------------------
金钱时间价值计算功能:
0. 查看功能说明
1. 计算金钱时间价值
q. 返回主菜单
----------------------------------------
请选择功能(0/1/q):q
----------------------------------------
========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: l
----------------------------------------
========================================
第 1 页,共 1 页
----------------------------------------
{
    "时间": "2026-01-14 21:13:38",
    "类型": "计算历史",
    "内容": {
        "功能": "算式计算",
        "输入": "2 + 8 * exp(3) / pi * sqrt(999)",
        "结果": 1618.6139
    }
}
----------------------------------------
{
    "时间": "2026-01-14 21:14:31",
    "类型": "计算历史",
    "内容": {
        "功能": "现金流计算",
        "现金流列表": [
            -1100.0,
            2000.0
        ],
        "IRR": [
            0.8181818181818181
        ],
        "折现率": 0.07,
        "NPV": 769.1589
    }
}
----------------------------------------
{
    "时间": "2026-01-14 21:15:18",
    "类型": "计算历史",
    "内容": {
        "功能": "时间价值计算",
        "输入参数": [
            -1000.0,
            null,
            -60.0,
            0.05,
            10
        ],
        "结果": [
            -1000.0,
            2383.5681789103724,
            -60.0,
            0.05,
            10
        ]
    }
}
----------------------------------------
已显示所有日志记录,退出查看日志
========================================
========================================
                金融计算器
========================================
欢迎使用金融计算器!请选择以下功能:
0. 使用说明
1. 算式计算
2. 现金流量计算
3. 时间价值计算
l. 查看计算历史
q. 退出
----------------------------------------
请输入你的选择: q
----------------------------------------

2. 编写README文件

最后,我们需要编写项目的 README.md 文件,介绍项目的功能、使用方法以及安装步骤等内容,方便其他人了解和使用我们的金融计算器项目。

  • 一个项目的 README.md 文件所包含的内容及详细程度是根据项目复杂度与目标用户群体来决定的
  • 这里我们给出一个简单示例,同学们可以根据自己的习惯调整内容、格式、以及详细程度
# 金融计算器项目

## 项目简介

金融计算器项目是一个基于Python的命令行工具,旨在帮助用户进行各种金融计算,包括算式计算、现金流量计算以及金钱的时间价值计算。

## 功能模块
- 表达式计算模块:支持基本的数学表达式计算。
- 现金流计算模块:根据用户输入的现金流,计算净现值(NPV)和内部收益率(IRR)。
- 金钱时间价值计算模块:在现值(PV)、终值(FV)、每期支付金额(PMT)、利率(R)和期数(N)5个参数中,用户输入其中4个参数,程序计算未知的第5个参数。
- 查看计算历史:用户可以查看之前的计算记录。

## 使用方法

- (1) 克隆项目到本地
- (2) 安装依赖:`pip install -r requirements.txt`
- (3) 运行主程序:`python src/main.py`
- (4) 根据菜单提示选择所需功能进行计算。

## 反馈与建议

感谢您使用金融计算器项目!欢迎提供宝贵的建议和反馈。

3. 小结

目前为止,我们的金融计算器项目已经完成了第1个版本的开发工作 financial_calculator_v1

  • 完成了三个主要功能模块的实现与测试:

    • 表达式计算模块
    • 现金流计算模块
    • 金钱时间价值计算模块
  • 完成了主程序的整合工作,使得各个功能模块可以通过主菜单进行调用

  • 完成了日志记录功能,用户可以查看历史计算记录
  • 编写了项目的 README.md 文件,介绍了项目的功能和使用方法

下一章,我们将进行项目的优化与扩展工作,将改进后的版本命名为 financial_calculator_v2