记账程序

记账程序

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

import os
import pickle
from time import strftime

def save(fname):
‘用于记录收入’
date = strftime(’%Y-%m-%d’)
jin_e = int(input('金额: '))
shuoming = input('备注: ')
# 取出所有的记账内容
with open(fname, ‘rb’) as fobj:
data = pickle.load(fobj)
yu_e = data[-1][-2] + jin_e
# 构建最新一笔收入
line = [date, jin_e, 0, yu_e, shuoming]
data.append(line)
# 将记账内容写回文件
with open(fname, ‘wb’) as fobj:
pickle.dump(data, fobj)

def cost(fname):
‘用于记录支出’
date = strftime(’%Y-%m-%d’)
jin_e = int(input('金额: '))
shuoming = input('备注: ')
# 取出所有的记账内容
with open(fname, ‘rb’) as fobj:
data = pickle.load(fobj)
yu_e = data[-1][-2] - jin_e
# 构建最新一笔支出
line = [date, 0, jin_e, yu_e, shuoming]
data.append(line)
# 将记账内容写回文件
with open(fname, ‘wb’) as fobj:
pickle.dump(data, fobj)

def query(fname):
‘用于查帐’
# 取出数据
with open(fname, ‘rb’) as fobj:
data = pickle.load(fobj)
# 打印表头
print(’%-12s%-8s%-8s%-12s%-20s’ % (‘date’, ‘save’, ‘cost’, ‘balance’, ‘comment’))
for line in data:
print(’%-12s%-8s%-8s%-12s%-20s’ % tuple(line))

def show_menu():
‘用于展示主菜单’
cmds = {‘0’: save, ‘1’: cost, ‘2’: query}
prompt = ‘’’(0) 收入
(1) 开销
(2) 查询
(3) 退出
请选择(0/1/2/3): ‘’’
fname = ‘account.data’
# 判断记账文件是否存在,如果不存在,初始化它
chushi = [[strftime(’%Y-%m-%d’), 0, 0, 10000, ‘init data’]]
if not os.path.exists(fname):
with open(fname, ‘wb’) as fobj:
pickle.dump(chushi, fobj)

while 1:
    xuan = input(prompt).strip()
    if xuan not in ['0', '1', '2', '3']:
        print('无效的输入,请重试。')
        continue

    if xuan == '3':
        print('\nBye-bye')
        break

    cmds[xuan](fname)

if name == ‘main’:
show_menu()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值