Перейти к содержанию

1.15. Курсовая работа

Для реализации личного помощника по финансам необходимо выполнить следующие требования:

  1. Создать глобальные переменные, которые будут хранить - ежемесячный доход, ежемесячный расход, разовый доход.
  2. Реализовать функцию add_mounth_income(amount), которая добавляет к текущим постоянным ежемесячным доходам сумму amount и ничего не возвращает.
  3. Реализовать функцию add_mounth_outcome(amount), которая добавляет к ежемесячным расходам сумму amount и ничего не возвращает.
  4. Реализовать функцию set_reservepercent(perc), которая устанавливает процент отчисления для резервного фонда ежемесячно.
  5. Реализовать функцию set_fintarget(amount) - финансовую цель, которая установит сумму, которую необходимо накопить.
  6. Реализовать функцию set_fintpercent(perc) которая хранит процент для откладывания на финансовую цель ежемесячно.
  7. Реализовать функцию report(), которая выводит сводку размеров фондов на год, с шагом в месяц, а также признак будет ли достигнута финансовая цель.

Шаблон скрипта:

import argparse

#Пользовательские функции:
#Функция для добавления источников постоянного  дохода.
def add_mounth_income(amount):
    pass

#Функция для добавления источников разового дохода.
def add_onceincom(amount):
    pass

#функция для добавления постоянных  источников расхода.
def add_mounth_outcome(amount):
    pass

def set_reservepercent(perc):
    pass

#Функция для назначения финансовой цели.
def set_fintarget(amount):
    pass

#Функция для назначения процентов.
def set_fintpercent(perc):
    pass

#Функция выводит размеры фондов за год, с шагом в месяц а также проверяет, будет ли достигнута финансовая цель.
def report():
    print("Отчета нет.")

#Функция отмечает неоптимальные финансовые показатели, и даёт рекомендации по их улучшению.
def recomend():
    print("Рекомендаций нет.")

#это часть шаблона, не менять!
def main(mounth_income, mounth_outcome, once_income, fin_amount, percent_reserve, percent_fintar, need_reccomend):
    print('Ежемесячная прибыль: {}\nЕжемесячный расход: {}\nЕдиновременная прибыль: {}\nФинансовая цель: {}\nПроцент отчислений в резервный фонд: {}\nПроцент отчислений на цель: {}\nНеобходимость рекомендации: {}\n-------\n'.format(mounth_income, mounth_outcome, once_income, fin_amount, percent_reserve, percent_fintar,need_reccomend))
    add_mounth_income(mounth_income)
    add_mounth_outcome(mounth_outcome)
    add_onceincom(once_income)
    set_fintarget(fin_amount)
    set_reservepercent(percent_reserve)
    set_fintpercent(percent_fintar)
    #получаем отчет
    report()
    #если задана рекоммендация, то получаем
    if need_reccomend:
        recomend()

if __name__ == "__main__":  
    parser = argparse.ArgumentParser(description='SUFLE')
    parser.add_argument('--mi', type=int, default=120000, help='Mounth income (default: 120000)')
    parser.add_argument('--mo', type=int, default=30000, help='Mounth outcome (default: 30000)')
    parser.add_argument('--oi', type=int, default=0, help='Once income (default: 0)')
    parser.add_argument('--ft', type=int, default=60000, help='Finance target (default: 60000)')
    parser.add_argument('--pr', type=int, default=30, help='Percent reserve fond (default: 30)')
    parser.add_argument('--pf', type=int, default=10, help='Percent finansial target (default: 10)')
    parser.add_argument('--r', type=bool, default=False, help='Need recommendation (default: False)')
    args = parser.parse_args()
    main(args.mi,args.mo,args.oi,args.ft,args.pr,args.pf,args.r)

Пример выдачи:

Месяц  Резерв    Цель
1      19785     6595
...
Цель - достигнута. Срок: 10 месяцев.

Скрипт использует аргументы командной строки. Посмотреть список аргументов можно так:

python kurs1.py --help

Все аргумены устанавливаются значениями по-умолчанию. Для установки других параметров пишите через два тире. Например, вы хотите запустить с ежемесячным доходом 60000 и финансовой цели на 30000:

python kurs1.py --mi=60000 --ft=30000

Дополнительная задача 1. Одноразовые доходы.

Реализовать функцию add_once_income(amount), которая добавляет к текущим одноразовым доходам сумму amount и ничего не возвращает.

Дополнительная задача 2

Реализовать рекомендательную систему на свой выбор в функции recomend(). Она должна по размерам фондов, ежемесячных доходов и т.п. давать рекомендации по увеличении процента резервного фонда, его уменьшению, а также подсказывать как достичь финансовую цель, если не выходит.