昨天学了学生管理系统,链接: link.
今天做了一个简单的记账系统(小金库管理系统)。
主要功能为:

代码:

filename='money_inf.txt'
import os
import datetime
#主函数
def main():while True:menu()choice=int(input('请选择:'))if choice in [0,1,2,3,4,5,6,7,8,9,0]:if choice==0:answer=input('您确定要退出吗?Y/N')if answer=='y'or answer=='Y':print('谢谢您的使用,祝您生活愉快!')breakelif answer=='n'or answer=='N':main()else:print('您的输入无效,请重新输入!')main()elif choice==1:stable_income()elif choice==2:travel_expenditure()elif choice==3:chuwei_expenditure()elif choice==4:clothes_expenditure()elif choice==5:medchine_expenditure()elif choice==6:modify()elif choice==7:delete()elif choice==8:sunmoney()elif choice==9:total_inf()elif choice not in [0,1,2,3,4,5,6,7,8,9,0]:print('您的输入无效,请重新输入!')main()
#菜单
def menu():print('========================金库日记======================')print('--------------------------菜单------------------------')print('\t\t\t\t\t1.固定收入')print('\t\t\t\t\t2.游玩支出')print('\t\t\t\t\t3.厨卫支出')print('\t\t\t\t\t4.衣物支出')print('\t\t\t\t\t5.医疗支出')print('\t\t\t\t\t6.修改项目')print('\t\t\t\t\t7.删除项目')print('\t\t\t\t\t8.显示总金额')print('\t\t\t\t\t9.显示全部信息')print('\t\t\t\t\t0.退出')print('------------------------------------------------------')
#功能
#录入收入项目
def stable_income():money_list=[]while True:pro_num=Pro_num()income_pro=M_pro()M_type='固定收入'M_detaile=m_detaile()if not income_pro:continuemoney_num = int(input('请输入金额:'))if not money_num:continuemoney_inf={'项目编号':pro_num,'金额性质':income_pro,'类型':M_type,'具体':M_detaile,'金额':money_num}money_list.append(money_inf)answer=input('是否添加其他类型收入?y/n\n')if answer=='y' or answer=='Y':continueelse:breaksave(money_list)print('入账成功,钱包鼓鼓哒!')
#存储信息到文件中
def save(lst):try:money_txt=open(filename,'a',encoding='Utf-8')except:money_txt=open(filename,'w',encoding='Utf-8')for item in lst:money_txt.write(str(item)+'\n')money_txt.close()
#录入游玩项目
def travel_expenditure():money_list = []pro_num = Pro_num()income_pro = M_pro()M_detaile = m_detaile()expenditure_type = '游玩支出'expenditure_num = expenditure()if not expenditure_num:travel_expenditure()money_inf = {'项目编号':pro_num,'金额性质':income_pro,'类型':expenditure_type,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)while True:answer = input('是否继续花钱?y/n\n')if answer == 'y' or answer == 'Y':pro_num1 = Pro_num()re_expenditure()print('你就把钱花光光,金库空瘪瘪!!')money_inf = {'项目编号':pro_num1,'金额性质':income_pro,'类型':expenditure_type,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)else:print('真乖!')breaksave(money_list)print('花钱如流水,加油打工人!!')
#项目编号
def Pro_num():pro_num=int(input('输入编号(按照1,2,3,...):'))cur = datetime.datetime.now()  # 获取当前系统时间cur.hour  # 小时cur.year  # 年cur.month  # 月cur.day  # 日num=(cur.year) * pow(10, 8) + (cur.month) * pow(10, 6) + (cur.day) * pow(10, 4) + (cur.hour) * pow(10, 2) +pro_numreturn num
#项目性质
def M_pro():income_pro = (input('请输入性质(入账或出账):'))return income_proreturn m_type1
#具体项目名称
def m_detaile():m_detaile1=input('请输入具体的物品')return m_detaile1
#录入支出金额
def expenditure():expenditure_num = int(input('请输入您的支出或收入金额:'))if not expenditure_num:expenditure()return expenditure_num
#录入继续支出金额
def re_expenditure():re_expenditure_num=int(input('又要花多钱:'))if not re_expenditure_num:re_expenditure()return re_expenditure_num
#录入厨卫项目
def chuwei_expenditure():money_list = []pro_num = Pro_num()income_pro = M_pro()M_detaile = m_detaile()expenditure_type = '厨卫支出'expenditure_num = expenditure()if not expenditure_num:travel_expenditure()money_inf = {'项目编号':pro_num,'金额性质':income_pro,'类型':expenditure_type ,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)while True:answer = input('是否继续花钱?y/n\n')if answer == 'y' or answer == 'Y':pro_num1= Pro_num()re_expenditure()print('厨卫嘛,该花!花!')money_inf = {'项目编号':pro_num1,'金额性质':income_pro,'类型':expenditure_type ,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)else:print('不花了?回家!')breaksave(money_list)print('积极健康打工人!!')
#录入衣物项目
def clothes_expenditure():money_list = []pro_num = Pro_num()income_pro = M_pro()M_detaile = m_detaile()expenditure_type = '衣物支出'expenditure_num = expenditure()if not expenditure_num:travel_expenditure()money_inf = {'项目编号':pro_num,'金额性质':income_pro,'类型':expenditure_type,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)while True:answer = input('是否继续花钱?y/n\n')if answer == 'y' or answer == 'Y':pro_num1 = Pro_num()re_expenditure()print('穿的了那么多吗?!')money_inf = {'项目编号':pro_num1,'金额性质':income_pro,'类型':expenditure_type ,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)else:print('呦,不买了?')breaksave(money_list)print('你是靓丽打工人!!')
#录入医疗项目
def medchine_expenditure():money_list = []pro_num = Pro_num()income_pro = M_pro()M_detaile = m_detaile()expenditure_type = '医疗支出'expenditure_num = expenditure()if not expenditure_num:travel_expenditure()money_inf = {'项目编号':pro_num,'金额性质':income_pro,'类型':expenditure_type ,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)while True:answer = input('是否继续花钱?y/n\n')if answer == 'y' or answer == 'Y':pro_num1 = Pro_num()re_expenditure()print('要爱护身体哦!')money_inf = {'项目编号':pro_num1,'金额性质':income_pro,'类型':expenditure_type ,'具体':M_detaile,'金额':expenditure_num}money_list.append(money_inf)else:print('回家养病啦!')breaksave(money_list)print('明天我是健康人!!')
#修改项目信息
def modify():total_inf()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as mfile:m_orignal=mfile.readlines()else:print('你的小金库没了!')prod_num=int(input('请输入要修改的项目编号:'))with open(filename, 'w', encoding='utf-8') as ofile:for item in m_orignal:m=dict(eval(item))if m['项目编号']==prod_num:print('找到该项目的信息,请修改。')while True:try:m['金额性质']=input('请输入性质(如:1.入账 2.出账):')m['类型'] = input('请输入性质(如:1.固定收入 2.游玩支出 3.厨卫支出 4.衣物支出 5.医疗支出):')m['具体'] = input('请输入具体的物品')m['金额'] = input('请输入您的支出或收入金额:')except:print('输入有误,请重新输入!')else:  #修改成功则退出,如果不加,会一直运行breakofile.write(str(m)+'\n')print('修改成功!')else:ofile.write(str(m)+'\n')if prod_num not in m.values():print('没有找到该编号的信息。')returnanswer=input('是否继续修改项目信息?y/n')if answer=='y':modify()
#删除项目信息
def delete():total_inf()m_lis=[]if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as dfile:m_orignal=dfile.readlines()prod_num = int(input('请输入要删除的项目编号:'))if prod_num:flag = False  # 判断是否被删除,默认为F,没有删除if m_orignal:with open(filename,'w',encoding='utf-8') as defile:m={}for item in m_orignal:m=dict(eval(item))#将字符串类型转化为字典类型if m['项目编号']!=prod_num:defile.write(str(m)+'\n')else:flag=True #表示已删除if flag:print(f'编号为{prod_num}的项目已删除,删除后的信息为:')else:print(f'没有找到编号为{prod_num}的项目。')else:print('您的小金库为空!')else:print('输入有误,请重新输入!')delete()else:print('您的小金库没了')total_inf()answer=input('是否继续删除?y/n')if answer=='Y'or answer=='y':delete()else:print('谢谢使用!!')
#项目信息格式
def show_type(lst):if len(lst) == 0:print('没有任何信息。')return# 定义标题显示格式format_title = '{:^6}\t{:^10}\t{:^12}\t{:^12}\t{:^12}\t'print(format_title.format('项目编号', '金额性质', '类型','具体','金额'))# 定义内容显示格式format_content = '{:^6}\t{:^10}\t{:^12}\t{:^12}\t{:^12}\t'for item in lst:print(format_title.format(item.get('项目编号'),item.get('金额性质'),item.get('类型'),item.get('具体'),item.get('金额')))
#展示所有项目信息
def total_inf():money_list=[]if os.path.exists(filename):with open(filename, 'r', encoding='utf-8') as tfile:money_orignal=tfile.readlines()for item in money_orignal:money_list.append(eval(item))if money_list:show_type(money_list)else:print('你没钱,穷光蛋!')else:print('你的小金库没了!')
#金蒜余额
def sunmoney():a=0b=0if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as sfile:m_orignal=sfile.readlines()if m_orignal:for item in m_orignal:m=dict(eval(item))if m['金额性质']=='入账':a+=m['金额']if m['金额性质']=='出账':b+=m['金额']print('您的余额为:',a-b)else:print('您的小金库里啥都没有!')else:print('您的小金库没了!')#调用主函数
if __name__ == '__main__':main()

结果展示:






代码:链接: link.

Pycharm趁热打铁(一):记账系统,管理你的小金库。相关推荐

  1. 表单数据自动录入_智能记账系统,公式已设好,可直接录入数据,凭证报表自动生成...

    [智能记账系统,公式已设好,可直接录入数据,凭证报表自动生成] 公司最近业务繁重,身为公司的财务人员每天都得应对一些收支款项管理,实在是令人头疼,跟我一个小组的张会计也被这件事情烦得不得了,没有好用的 ...

  2. 记账软件分享,教你如何记账并管理所有账目

    记账软件分享,教你如何记账并管理所有账目 如何记账,像支出.收入的账目,该怎么记录呢?记账一段时间之后,又该如何管理账目呢?不知道如何操作的宝贝们,下面请随小编一起来操作. 所需工具 一台Win系统的 ...

  3. Android记账系统可行性分析,毕业设计论文-基于安卓的大学生记账管理系统的设计与实现.doc...

    毕业设计论文-基于安卓的大学生记账管理系统的设计与实现 毕 业 设 计 中文题目基于安卓的大学生记账管理系统的设计与Design and Implementation of theCollege St ...

  4. 基于Android的记账APP论文,基于Android平台的手机记账系统的设计与实现

    摘要: 在经济社会中,"理财"一词对于人们来说已不再陌生.人们的生活收入稳步上升,用于工作,住房,休闲娱乐的财务支出增多,做好详细的收支计划,将有利于对个人,家庭的经济收入,支出状 ...

  5. 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

  6. java记账系统,基于java记账管理系统

    记账管理系统,,项目介绍,研究目标: 研究的目标主要包含以下几个方面: 1.实现对用户信息的信息化管理: 2.实现对财务信息的管理: 3.满足用户对于记账所需的基本要求: 研究内容: 本系统为用户提供 ...

  7. [附源码]JAVA毕业设计家庭记账系统(系统+LW)

    [附源码]JAVA毕业设计家庭记账系统(系统+LW) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(In ...

  8. SSM家庭理财个人理财管理系统记账系统

    博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 SSM家庭理财个人理财管理系统记账系统 视频效果 https://www.bili ...

  9. 计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA家庭理财记账系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目 ...

最新文章

  1. C#中的Dictionary简介
  2. 在windows上的git bash中安装tree 和 linux tree命令使用
  3. postgresql 安装_CentOS7安装使用PostgreSQL数据库
  4. 【微信小程序】token/session失效了该怎么跳转页面
  5. PTA-6-1 利用指针找最大值 (10分)(C语言)
  6. 好想学python机器人_拥有自动学习的Python机器人-ChatterBot
  7. 查找内容grep命令
  8. opencv 最大内接矩形_OpenCV之二值图像分析 – 寻找最大内接圆
  9. [原]MS SQL表字段自增相关的脚本
  10. Aliplayer简单使用
  11. WinForm中Chart控件使用
  12. 基于WKT标准的空间参考系字符串及prj文件生成样例
  13. Waterfall Header Bidding机制
  14. OA项目之我的会议(会议排座送审)
  15. 精进——如何成为很厉害的人(采铜)
  16. 广告术语(持续更新...)
  17. 叮咚同城小程序问题:点击发布信息按钮自动闪退到首页的解决方法
  18. 在UBUNTU中使用北通USB游戏手柄
  19. 【码农学编曲】Cubase乐器轨音频轨各种轨没声音的终极解决方案
  20. 车牌对应城市行政区编号

热门文章

  1. 十个有意思的Github Page
  2. 【美】兰萨姆·里格斯 - 怪屋女孩(2013年6月26日)
  3. 程序员报Bug的礼仪
  4. 面试高频,一条sql语句查询成绩,显示'优秀' ,'及格' ,'不及格'
  5. Uber系统架构设计
  6. 卡瓦格博[梅里雪山]之日照金山美景全纪录
  7. barrett hand
  8. 详解准确率acc、精确率p、准确率acc、F1 score
  9. PXC部署,配置,操作原理
  10. 各种icon图标(阿里巴巴矢量图)