家庭资产管理系统CLI版

最近学习Python提交了第一份基础阶段个人项目,拿此拙作出来分享一下,希望能达到大佬们的批评意见。

1.项目背景

​ 随着经济社会的发展以及人民生活水平的提高,城市居民家庭支出在购买生活必需品之外有了新的延伸,呈现出多元化特征。由于居民间理财观念和财产管理能力的差异,居民有效消费水平不足并存在较高的超前消费风险,实际上限制了居民生活水平的提升,这与提高居民收入水平,刺激社会消费,实现内循环的战略目标存在一定的偏差。为了向社会普及理财观念,并培养居民的财产管理意识,提供合适的管理工具,因而推出家庭资产管理系统1.0版本。该系统将有助于使用者了解家庭资产状况,并根据诊断分析做出判断,从而使家庭资产利用效率最优化,在现有经济水平上实现生活水平的提升。

​ 对家庭资产的有效管理将帮助使用者清晰地认识自身经济水平,作出合理的财务决策。同时,也有助于社会消费结构的合理化,缓解过度消费和消费不足两种极端现象的发生。

2.功能结构

​ 本系统主要由如下5个模块构成:(1)菜单模块,作为系统入口主界面为用户提供菜单指南,并跳转至相应的功能模块,在相应功能执行完毕后返回该界面;(2)录入模块,用户通过该模块可增加资产信息;(3)查询模块,用户可获得存储数据中的全部资产信息,并选择增删或退出操作;(4)数据存储模块,该部分用于存储用户数据,便于下次查询修改调用;(5)分析模块,可根据家庭资产占比数据对家庭资产布局健康状况进行简单判断。

​ 功能结构图如下所示。

3.项目功能描述

3.1菜单模块

​ 系统主界面,为用户使用该系统提供菜单指南,用户输入对应的数字0~3,分别对应退出系统、录入数据、查询数据、分析数据,并能识别非指定输入,提醒用户重新输入。在用户选择对应操作后跳转至相应功能模块,并在执行完操作后返回主界面。

========家庭资产管理系统 v1.0=========
【1】           录入数据
【2】           查询数据
【3】           财务分析【0】           退出系统------------------------------
请输入您想要进行的操作对应编码:

3.2录入模块

​ 录入模块初始页面由“开始录入”和“退出至主界面”两个选项构成,用户分别输入1和0完成对应操作。在用户选择“开始录入”后,显示资产分类菜单,按照“不动产”、“现金资产”和“负债”的顺序进入数据录入界面。在进入到对应的资产分类界面后,用户可根据提示,依次输入资产名称以及对应的货币价值,每完成一项输入后询问用户是否继续输入。在用户确定完成所有录入工作后,自动调用数据存储模块,并返回主界面。

请输入您想要进行的操作对应编码:1
请选择您的操作:【1】开始录入  【0】退出至主界面   1
******************************
若所进行的分类财产无录入信息,请输入"无"
现在进行的是不动产数据录入
请输入项目名称:无
------------------------------
现在进行的是现金资产数据录入
请输入项目名称:无
------------------------------
现在进行的是负债数据录入
请输入项目名称:房贷
请输入项目货币价值(元):200
是否在该分类下继续添加新项目?【1】是  【0】否    0
------------------------------
+++++++++++++保存成功+++++++++++++
******************************
========家庭资产管理系统 v1.0=========
【1】     录入数据
【2】     查询数据
【3】     财务分析【0】     退出系统------------------------------
请输入您想要进行的操作对应编码:0
【欢迎再次使用!】
按回车键退出系统

3.3查询模块

​ 查询模块初始页面由“开始查询”和“退出至主界面”两个选项构成,用户分别输入1和0完成对应操作。在用户选择“开始查询”后,以“编号-分类-资产名称-货币价值”的格式显示存储的资产数据清单,并在下一步末尾显示操作指南,输入1执行修改操作,进入修改子模块,输入2执行分析模块功能,输入0则返回主界面。与录入模块类似,在修改界面用户只需按提示替换或删除相应信息即可,最后自动进行存储。在执行完上述所有操作后,返回主界面。

请输入您想要进行的操作对应编码:2
请选择您的操作:【1】开始查询  【0】退出至主界面   1
******************************
编号      分类      资产名称        货币价值
------------------------------
1        不动产      别墅       1000.0
2        不动产      店铺       600.0
3        不动产      SUV      800.0
4        现金资产     银行存款     300.0
5        负债       贷款       200.0------------------------------
请选择您的下一步操作?【1】修改记录   【0】退出至主界面   1
------------------------------
请输入您要修改的项目所处类别:不动产
请输入您要修改的项目名称:别墅
------------------------------
请选择您的操作:【1】修改价格  【2】删除   【0】取消操作 1
请输入该项目的更新货币价值(元):1200
是否继续进行修改操作?【1】是  【0】否    1
------------------------------
请输入您要修改的项目所处类别:店铺
请输入您要修改的项目名称:不动产
------------------------------
店铺-不动产不在记录数据中,请确认后重新输入
------------------------------
请输入您要修改的项目所处类别:不动产
请输入您要修改的项目名称:店铺
------------------------------
请选择您的操作:【1】修改价格  【2】删除   【0】取消操作 2
是否继续进行修改操作?【1】是  【0】否    0
+++++++++++++保存成功+++++++++++++
******************************
请选择您的操作:【1】开始查询  【0】退出至主界面   1
******************************
编号      分类      资产名称        货币价值
------------------------------
1        不动产      别墅       1200
2        不动产      SUV      800.0
3        现金资产     银行存款     300.0
4        负债       贷款       200.0------------------------------

3.4数据存储模块

​ 数据存储是本系统中唯一无需用户主动操作的功能模块,在用户完成数据录入或修改操作后,自动跳转至该模块,通过覆盖原有数据的方式完成数据的更新。

3.5分析模块

​ 分析模块通过家庭资产负率、现金资产占比以及理财产品占比,分析家庭潜在财务风险状况以及资产布局是否合理,并根据“财务风险>资产布局合理性”的规则,对家庭资产健康度进行“优”、“良”、“合格”以及“差”的分级评定。如果用户在进行分析操作时没有存储数据,则会弹出“未查询到资产信息”的警示信息,结束功能操作,返回主界面。

请输入您想要进行的操作对应编码:3
请选择您的操作:【1】开始分析  【0】退出至主界面   1
经统计您的家庭资产总额为2300.0元。
其中不动产2000.0元,占比86.96%;现金资产300.0元,占比13.04%。资产流动性好,短期内可能不存在现金周转风险
长期资产负债率为8.7%,处于正常水平,未来存在资不抵债风险的可能性较低
短期资产负债率为66.67%,处于正常水平,短期偿债压力较小
您的家庭资产状况评价为优秀
++++++++++++++++++++++++++++++

4.不足与展望

4.1数据需要手动登记,依赖使用者的操作习惯

​ 未来可通过绑定使用者主要收入和支付账户,自动填取数据,并根据支出发生情况提醒使用者对支出情况进行备注。

4.2相较于图形化界面,交互指令界面稍显枯燥

​ 后期可将现有功能进行改善,并形成图形操作界面,改善用户使用体验。

4.3分析功能较为单一,参考价值有限

​ 可加入证券平台和电商平台爬虫程序,利用线上数据丰富分析内容,或搭建咨询平台,雇佣相关专家提供付费服务。

4.4资产分类选择较为单一

4.2相较于图形化界面,交互指令界面稍显枯燥

​ 后期可将现有功能进行改善,并形成图形操作界面,改善用户使用体验。

4.3分析功能较为单一,参考价值有限

​ 可加入证券平台和电商平台爬虫程序,利用线上数据丰富分析内容,或搭建咨询平台,雇佣相关专家提供付费服务。

4.4资产分类选择较为单一

​ 可参考企业财务报表格式扩充这部分内容。

附录:源代码

fams_main.py


"""
主程序为用户提供操作指南,搭建系统框架
"""# 引入工具函数模块
from fams_tools import *# 主程序根据用户选择调用工具程序
def main():while True:# 显示菜单界面start_title = "家庭资产管理系统 v1.0"print(f"{start_title:=^30}")main_menu = ['录入数据', '查询数据', '财务分析']n = 1for i in main_menu:print(f"【{n}】\t\t{i}")n += 1print("\n【0】\t\t退出系统\n")print("-"*30)# 用户进行操作选择action = input("请输入您想要进行的操作对应编码:")if action == "0":print("【欢迎再次使用!】")input("按回车键退出系统")breakelif action == "1":signin()elif action == "2":search()elif action == "3":analyze()else:print(f"【{action}】不是系统可识别操作符,请重试")# 启动主函数
if __name__ == "__main__":main()

fams_tools.py


"""
工具函数模块用于存放系统功能函数,便于主函数调用
"""from sub_tools import *# 数据录入函数
def signin():while True:action = input("请选择您的操作:【1】开始录入\t【0】退出至主界面\t")print("*"*30)if action == "0":breakelif action == "1":temp_dict = {'不动产': {}, '现金资产': {}, '负债': {}}print('若所进行的分类财产无录入信息,请输入"无"')for item in temp_dict:print(f"现在进行的是{item}数据录入")detail_key = []detail_value = []ask = "1"while True:if ask != "0":name = input("请输入项目名称:")if name == "无":breakelse:detail_key.append(str(name))while True:try:price = float(input("请输入项目货币价值(元):"))detail_value.append(str(price))breakexcept Exception as e:print(f"非法数据输入{e},请重新输入")continueelse:breakwhile True:ask = input("是否在该分类下继续添加新项目?【1】是\t【0】否\t")if ask == "0":detail_dict = dict(zip(detail_key, detail_value))temp_dict[item] = detail_dictbreakelif ask == "1":breakelse:print(f"【{ask}】不是系统可识别操作符,请重试")continueprint("-"*30)store(temp_dict)print("保存成功".center(30, "+"))print("*"*30)breakelse:print(f"【{action}】不是系统可识别操作符,请重试")continue# 数据查询函数
def search():while True:action = input("请选择您的操作:【1】开始查询\t【0】退出至主界面\t")if action == "1":pass_list = {}record_list = update(pass_list)print("*"*30)print("编号\t\t分类\t\t资产名称\t\t货币价值")print("-"*30)i = 1for kind in record_list:for item in record_list[kind]:price = record_list[kind][item]print(i, end=" "*(9 - len(str(i))))print(kind, end=" "*(9 - len(kind)))print(item, end=" "*(9 - len(item)))print(price, end="\n")i += 1print("")print("-"*30)while True:ask = input("请选择您的下一步操作?【1】修改记录\t【0】退出至主界面\t")if ask == "1":temp_dict = {}change(temp_dict)print("保存成功".center(30, "+"))print("*" * 30)breakelif ask == "0":breakelse:print(f"【{ask}】不是系统可识别操作符,请重试")continueelif action == "0":breakelse:print(f"【{action}】不是系统可识别操作符,请重试")continue# 财务分析函数
def analyze():while True:action = input("请选择您的操作:【1】开始分析\t【0】退出至主界面\t")if action == "1":pass_list = {}record_list = update(pass_list)if len(record_list) == 0:print("未查询到您的资产信息")breakelse:analyze_list = []if len(record_list) == 3:for kind in record_list:sum_price = 0for item in record_list[kind]:price = float(record_list[kind][item])sum_price += priceanalyze_list.append(sum_price)real_estate = analyze_list[0]cash = analyze_list[1]debt = analyze_list[2]total_assets = real_estate + cashtry:real_estate_ratio = round((real_estate / total_assets) * 100, 2)liquid_ratio = round((cash / total_assets) * 100, 2)long_leverage = round((debt / total_assets) * 100, 2)short_leverage = round((debt / cash) * 100, 2)except ZeroDivisionError:print("无资产可用于抵债,准备跑路吧~")print(f"经统计您的家庭资产总额为{total_assets}元。\n其中不动产{real_estate}元,占比{real_estate_ratio}%;"f"现金资产{cash}元,占比{liquid_ratio}%。", end="")score = 0if liquid_ratio <= 0.4:print("资产流动性较低,可能存在现金周转风险")else:print("资产流动性好,短期内可能不存在现金周转风险")score += 1if long_leverage > 120:print(f"长期资产负债率为{long_leverage}%,处于较高水平,未来可能存在资不抵债风险")else:print(f"长期资产负债率为{long_leverage}%,处于正常水平,未来存在资不抵债风险的可能性较低")score += 2if short_leverage > 80:print(f"短期资产负债率为{short_leverage}%,处于较高水平,可能面临较大的短期偿债压力")else:print(f"短期资产负债率为{short_leverage}%,处于正常水平,短期偿债压力较小")score += 3level = ""if score >= 5:level = "优秀"elif score == 3:level = "良好"elif score >= 1:level = "合格"elif score == 0:level = "差"print(f"您的家庭资产状况评价为{level}")print("+"*30)breakelse:print("分析资产需记录数据中包含所有类别信息,请先进入【录入数据】界面补充完整")breakelif action == "0":breakelse:print(f"【{action}】不是系统可识别操作符,请重试")continue

sub_tools.py


"""
子工具模块用于存放工具模块需要调用的函数
"""# 数据更新函数
def update(info_dict):record_dict = {}f = open(r".\data\record.txt", "r", encoding="utf-8")try:content = f.readlines()if len(content) == 0:record_dict = info_dictelse:for line in content:temp_dict = {}line = line.replace("\n", "")if len(line) == 0:passelse:info_list = line.split("-")kind_name = info_list[0]kind_info = info_list[1].split(";")for item in kind_info[0:-1]:item_info = item.split(":")item_name = item_info[0]item_price = item_info[1]temp_dict[item_name] = item_pricerecord_dict[kind_name] = temp_dictfor kind in info_dict:if kind in record_dict:for item in info_dict[kind]:if item in record_dict[kind]:old_price = float(record_dict[kind][item])add_price = float(info_dict[kind][item])new_price = str(old_price + add_price)record_dict[kind][item] = new_priceelse:record_dict[kind].update({item: info_dict[kind][item]})else:record_dict.update({kind: info_dict[kind]})return record_dictexcept Exception as e:print(f"程序出现错误{e}")finally:f.close()# 数据更新存储函数
def store(info_dict):pass_list = info_dictrecord_dict = update(pass_list)b = open(r".\data\record.txt", "w", encoding="utf-8")for kind in record_dict:b.write("\n" + kind + "-")for info_name in record_dict[kind]:b.write(info_name + ":" + record_dict[kind][info_name] + ";")b.close()# 数据修改函数
def change(info_list):record_list = update(info_list)ask = "1"while True:if ask != "0":print("-"*30)kind = input("请输入您要修改的项目所处类别:")name = input("请输入您要修改的项目名称:")print("-" * 30)if (kind in record_list) and (name in record_list[kind]):while True:action = input("请选择您的操作:【1】修改价格\t【2】删除\t【0】取消操作\t")if action == "1":record_list[kind][name] = input("请输入该项目的更新货币价值(元):")breakelif action == "2":record_list[kind].pop(name)breakelif action == "0":breakelse:print(f"【{action}】不是系统可识别操作符,请重试")continueelse:print(f"{kind}-{name}不在记录数据中,请确认后重新输入")continuewhile True:ask = input("是否继续进行修改操作?【1】是\t【0】否\t")if ask == "1":breakelif ask == "0":breakelse:print(f"【{ask}】不是系统可识别操作符,请重试")continueelse:breakc = open(r".\data\record.txt", "w", encoding="utf-8")for kind in record_list:c.write("\n" + kind + "-")for info_name in record_list[kind]:c.write(info_name + ":" + record_list[kind][info_name] + ";")c.close()

家庭资产管理系统CLI版相关推荐

  1. 云呐:机房资产管理系统web版,设备资产信息管理的应用

    帮助用户解决固定资产管理过程中遇到的资产库存周期长.效率低.复杂性高.账户不一致.个人资产数据收集难以准确评估.维护预算支出偏差率难以控制等问题. 在可支配的企业预算中,我们应该注意系统的成本性能.即 ...

  2. 计算机类设备资产管理,智的设备设施资产管理系统

    智的设备设施资产管理系统电脑版是一款简单便捷的设备管理软件,智的设备设施资产管理系统官方版拥有设备购置,设备台账管理,设备转资,设备调拔,设备维修管理,设备清理等功能,智的设备设施资产管理系统电脑版可 ...

  3. Python开发_小说管理系统CLL版

    小说管理系统CLI版 项目背景 ​ 随着网络文学的发展,读书不仅仅是在纸质文学上,大量的网络文学充斥着人们的视野.网络上越来越多的平台出现,有的小说只能在特定的平台展现.为了更好的记录小说,提升对小说 ...

  4. 家庭理财管理系统/家庭财务管理系统

    摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,家庭理财管理系统当然也不能排除在外.家庭理财管理系统是以实际运用为开发背景,运用软 ...

  5. 资产管理系统有哪些功能模块和作用

    通过固定资产管理系统对固定资产进行合理管理,提高了管理水平,提高了工作效率,提高了企事业单位的经济效益.资产管理系统V2.0网络精英版适合于3-5人的中小型公司.集团公司某个部门如办公室及仓库.中小学 ...

  6. java毕业设计企业资产管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计企业资产管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计企业资产管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  7. 使用Ubuntu与宝塔搭建IT资产管理系统 - Chemex

    随着员工数量不断增加,使用Excel管理变得越来约不可行,也尝试过Microsoft List发现确实也不好用. 经过一系列调研,发现目前有三个免费IT资产管理系统. 一个是Snipt-it, 一个是 ...

  8. python基于Python的资产管理系统毕业设计-附源码201117

    摘 要 现代企业管理越来越强调利用有形资产来提供优质服务的能力,即通过资产管理来确保有形资产物尽其用.安全运行,在希望的时间和地点提供需要的设备,同时尽可能地降低运行和维护成本.资产管理系统为企业提供 ...

  9. 家庭账务管理系统html,一种家庭财务管理信息系统的制作方法

    本发明涉及财务管理系统技术领域,具体涉及一种家庭财务管理信息系统. 背景技术: 国家统计局2008年1月24日发布的统计数据显示,截至2007年末,我国居民储蓄存款余额为172534亿元,比上年末增加 ...

最新文章

  1. 微框架spark--api开发利器
  2. Gartner预测2015年的十大IT战略发展趋势
  3. PoseCNN代码复现CMake编译找不到math_functions.hpp
  4. iTOP-iMX6开发板-设备树内核-注册驱动例程
  5. 关于3D Pie Chart (ActiveReport 4.2.0)的学习总结 (一)
  6. mac mysql降版本_Mac卸載mysql並安裝mysql升級到8.0.13版本
  7. Linux虚拟机出现卡死且无法结束进程的解决办法
  8. 面试:Synchronized知识点
  9. transition animation
  10. 使用js一行代码解决上网培训弹窗问题
  11. 关于win10优化问题
  12. 某知名大学学生毕业设计, Java学好了就是厉害
  13. slot的使用方法详解
  14. 使用idea在serviceImpl中配置radis
  15. lpad用法 oracle,oracle中lpad函数的用法详解
  16. 拍好的视频如何添加配乐
  17. docker 搭建frp内网穿透以及frp详细使用
  18. 微信CRM管理系统功能分析
  19. 为什么 4EVERLAND 是 Web 3.0 的最佳云计算平台
  20. 计算机对逻辑算符的运算次序,逻辑运算符的优先顺序

热门文章

  1. Jzoj5410 小型耀斑
  2. SqlServer循环执行存储过程
  3. freeRTOS学习(三)
  4. QueryBuildRange的各种条件的总结
  5. CF1408F Two Different
  6. win 10 + vs2017+C++的运行环境练习的2048游戏(附源码)
  7. 看图,务必低调使用(一起来捉妖)
  8. 互联网金融概念--关于小贷公司和消费金融公司
  9. GameDesingerBeacon--Chapter1《DDLC》
  10. UCenter Home如何做线下活动(转载)