记账程序
1.  假设在记账时,有一万元钱
2.  无论是开销还是收入都要进行记账
3.  记账内容包括时间、金额和说明等
4.  记账数据要求永久存储

import pickle
import os
import time

def cost(wallet, record):
    amount = int(input('amount: '))
    comment = input('comment: ')
    date = time.strftime('%Y-%m-%d')
    with open(wallet, 'rb') as fobj:
        balance = pickle.load(fobj) - amount
    with open(wallet, 'wb') as fobj:
        pickle.dump(balance, fobj)
    with open(record, 'a') as fobj:
        fobj.write(
            '%-12s%-8s%-8s%-10s%-20s\n' % (date, amount, '', balance, comment)
        )

def save(wallet, record):
    amount = int(input('amount: '))
    comment = input('comment: ')
    date = time.strftime('%Y-%m-%d')
    with open(wallet, 'rb') as fobj:
        balance = pickle.load(fobj) + amount
    with open(wallet, 'wb') as fobj:
        pickle.dump(balance, fobj)
    with open(record, 'a') as fobj:
        fobj.write(
            '%-12s%-8s%-8s%-10s%-20s\n' % (date, '', amount, balance, comment)
        )

def query(wallet, record):
    print('%-12s%-8s%-8s%-10s%-20s' % ('date', 'cost', 'save', 'balace', 'comment'))
    with open(record) as fobj:
        for line in fobj:
            print(line, end='')
    with open(wallet, 'rb') as fobj:
        balance = pickle.load(fobj)
    print("Latest Balance: %d" % balance)

def show_menu():
    cmds = {'0': cost, '1': save, '2': query}
    prompt = """(0) cost
(1) save
(2) query
(3) exit
Please input your choice(0/1/2/3): """
    wallet = 'wallet.data'
    record = 'record.txt'
    if not os.path.exists(wallet):
        with open(wallet, 'wb') as fobj:
            pickle.dump(10000, fobj)

while True:
        try:
            choice = input(prompt).strip()[0]
        except IndexError:
            continue
        except (KeyboardInterrupt, EOFError):
            print()
            choice = '3'

if choice not in '0123':
            print('Invalid input. Try again.')
            continue

if choice == '3':
            break
        cmds[choice](wallet, record)

if __name__ == '__main__':
    show_menu()

day06 记账程序01相关推荐

  1. 财务用access和mysql_《用ACCESS制作的会计记账程序》代码

    时 间:2018-10-16 18:06:02 作 者:摘 要:这是一套实用的企业会计记账程序,它可以将流水账整理成科目汇总账和各科目总分类账,并能通过上年结转数计算出详尽的余额数据,与传统账本相差无 ...

  2. 20190226-利用序列化完成小型记账程序

    写一个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息 算法: 1.读取输入格式为 value|classify,其中value整数表示收入,负数表示支出 2.income列表存取 ...

  3. 包含多个段的程序01 - 零基础入门学习汇编语言29

    第六章:包含多个段的程序01 让编程改变世界 Change the world by program 引言 前面我们写的程序中,只有一个代码段. 现在有一个问题是: 如果程序需要用其他空间来存放数据, ...

  4. 第一个程序01 - 零基础入门学习汇编语言20

    第四章:第一个程序01 让编程改变世界 Change the world by program 引言 现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成为可执行文件(如:*.exe文件),在操 ...

  5. android简单记账源码,Android+个人记账程序源码.rar(入门级)

    [实例简介]Android 个人记账程序源码,入门级源码,适合新手... [实例截图] [核心代码] package com.cola.ui; import java.util.Calendar; i ...

  6. Java基础项目——基于文本家庭简易收支记账程序

    一.目标 1.模拟实现一个基于文本的家庭简易收支记账程序 2.掌握初步的编程技巧和调试程序 3.灵活使用基础知识 二.项目需求 模拟实现一个基于文本界面(程序控制台)的<家庭收支记录程序> ...

  7. java小项目家庭记账程序

    文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...

  8. java实现简单的家庭收支记账程序

    java实现简单的家庭收支记账程序 文章目录 java实现简单的家庭收支记账程序 前言 一.需求分析 1.要求 2.不同模块功能 3.需定义的变量(仅供参考) 4.一些优化建议 二.工具类 概念 本项 ...

  9. 自动化记账程序1.0

    需求背景: 网购 m.fenfaw.cn 为了更好的解放双手,提高记账效率,本人想要制作一个基于python的自动化记账程序,用于统计本人每星期.每月.每年,甚至是每日的盈亏记录,目前该程序是处于半自 ...

最新文章

  1. linux vim 基本操作
  2. numpy向量加一个常数=向量中的每个值加上这个常数,最后返回一个同维的向量
  3. Qt之JSON生成与解析
  4. 6000毫安以上智能手机_三星超长续航神机,6000毫安+128GB,上市半年不到跌至1499...
  5. BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
  6. 添加请求头 retrofit_RxJava 与 Retrofit 结合的最佳实践
  7. 奔涌吧,前浪,追击吧,后浪
  8. 第一百七十四天 how can i 坚持
  9. android mk subst功能,Android.mk(零)
  10. 《Java程序员职场全攻略:从小工到专家》连载十四:先挣的是资本,后挣的是钱
  11. C#多线程池演示例程--下载图片
  12. mybatisplus update更新操作的三种方式
  13. illustrator插件--常用功能开发--条码生成--js脚本开发--AI插件
  14. Oracle数据库的优化--索引
  15. 【并联机构工作空间分析系列2】圆弧相交法 论文解读及matlab程序
  16. 计算机表格做八折怎么辛,原来古人的书信常用语那么美
  17. appinventor飞机大战案例_APPInventor实例及讲解
  18. 数据库:一对一,一对多,多对多
  19. Android 8.1/GO GMS认证 (GMS认证群:738320435)
  20. 按键精灵什么是动态数组?如何使用动态数组?(新手进阶)

热门文章

  1. 谷歌Chrome浏览器提示adobe flash player已过期完美解决办法
  2. 常用的excel公式备忘
  3. 如何在Power BI Desktop中创建词云生成器
  4. 如何压缩视频而不降低画质?
  5. 9月20日云栖精选夜读:异构计算高性能计算分论坛——揭秘拿什么实现超算平民化、国际化?...
  6. 什么是VOLTE(2)
  7. Switch开关,两边字隐藏
  8. Android 反编绎工具JEB简介及下载
  9. Java中Lambda表达式和stream的使用
  10. 西南交通大学计算机应用基础第1次作业,计算机系统基础第二次作业