day06 记账程序01
记账程序
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相关推荐
- 财务用access和mysql_《用ACCESS制作的会计记账程序》代码
时 间:2018-10-16 18:06:02 作 者:摘 要:这是一套实用的企业会计记账程序,它可以将流水账整理成科目汇总账和各科目总分类账,并能通过上年结转数计算出详尽的余额数据,与传统账本相差无 ...
- 20190226-利用序列化完成小型记账程序
写一个记账程序,每天收入多少,支出多少,总额剩多少,使用序列化方式保存信息 算法: 1.读取输入格式为 value|classify,其中value整数表示收入,负数表示支出 2.income列表存取 ...
- 包含多个段的程序01 - 零基础入门学习汇编语言29
第六章:包含多个段的程序01 让编程改变世界 Change the world by program 引言 前面我们写的程序中,只有一个代码段. 现在有一个问题是: 如果程序需要用其他空间来存放数据, ...
- 第一个程序01 - 零基础入门学习汇编语言20
第四章:第一个程序01 让编程改变世界 Change the world by program 引言 现在我们将开始编写完整的汇编语言程序,用编译器将它们编译成为可执行文件(如:*.exe文件),在操 ...
- android简单记账源码,Android+个人记账程序源码.rar(入门级)
[实例简介]Android 个人记账程序源码,入门级源码,适合新手... [实例截图] [核心代码] package com.cola.ui; import java.util.Calendar; i ...
- Java基础项目——基于文本家庭简易收支记账程序
一.目标 1.模拟实现一个基于文本的家庭简易收支记账程序 2.掌握初步的编程技巧和调试程序 3.灵活使用基础知识 二.项目需求 模拟实现一个基于文本界面(程序控制台)的<家庭收支记录程序> ...
- java小项目家庭记账程序
文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...
- java实现简单的家庭收支记账程序
java实现简单的家庭收支记账程序 文章目录 java实现简单的家庭收支记账程序 前言 一.需求分析 1.要求 2.不同模块功能 3.需定义的变量(仅供参考) 4.一些优化建议 二.工具类 概念 本项 ...
- 自动化记账程序1.0
需求背景: 网购 m.fenfaw.cn 为了更好的解放双手,提高记账效率,本人想要制作一个基于python的自动化记账程序,用于统计本人每星期.每月.每年,甚至是每日的盈亏记录,目前该程序是处于半自 ...
最新文章
- linux vim 基本操作
- numpy向量加一个常数=向量中的每个值加上这个常数,最后返回一个同维的向量
- Qt之JSON生成与解析
- 6000毫安以上智能手机_三星超长续航神机,6000毫安+128GB,上市半年不到跌至1499...
- BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
- 添加请求头 retrofit_RxJava 与 Retrofit 结合的最佳实践
- 奔涌吧,前浪,追击吧,后浪
- 第一百七十四天 how can i 坚持
- android mk subst功能,Android.mk(零)
- 《Java程序员职场全攻略:从小工到专家》连载十四:先挣的是资本,后挣的是钱
- C#多线程池演示例程--下载图片
- mybatisplus update更新操作的三种方式
- illustrator插件--常用功能开发--条码生成--js脚本开发--AI插件
- Oracle数据库的优化--索引
- 【并联机构工作空间分析系列2】圆弧相交法 论文解读及matlab程序
- 计算机表格做八折怎么辛,原来古人的书信常用语那么美
- appinventor飞机大战案例_APPInventor实例及讲解
- 数据库:一对一,一对多,多对多
- Android 8.1/GO GMS认证 (GMS认证群:738320435)
- 按键精灵什么是动态数组?如何使用动态数组?(新手进阶)