您的位置:首页 > 编程语言 > Python开发

python 实例8 日常记账本小程序

2016-01-11 17:57 477 查看
实现收支的自动计算

能够查询每笔账款的消费详情

1、函数需要两个文件:一个类似钱包功能,存放钱;另一个用于记录每笔花销的用途

#!/usr/bin/env python
import cPickle as p

with open('wallet.data','w') as f:
p.dump(10000,f)

with open('record.txt','w') as f:
pass


2、功能实现

#!!/usr/bin/env python
#coding:utf8

import cPickle as p
import time

date = time.strftime('%Y%m%d')

def save_money():
sav_count=int(raw_input('save money: '))
sav_comment = raw_input('doing what: ')

with open('wallet.data') as f:
balance = p.load(f)

new_bal = balance + sav_count
with open('wallet.data','w') as f:
p.dump(new_bal,f)

content = '%-12s%-8s%-8s%-10s%-25s\n'%(date,'N/A',sav_count,new_bal,sav_comment)
with open('record.txt','a')as f:
f.write(content)

def spend_money():
spe_count=int(raw_input('spend money: '))
spe_comment = raw_input('doing what: ')

with open('wallet.data') as f:
balance = p.load(f)

new_bal = balance - spe_count
with open('wallet.data','w') as f:
p.dump(new_bal,f)

with open('record.txt','a')as f:
content = '%-12s%-8s%-8s%-10s%-25s\n'%(date,spe_count,'N/A',new_bal,spe_comment)
f.write(content)

def query_info():
line = '='*63
content = '%s\n%-12s%-8s%-8s%-10s%-25s'%(line,'Date','Cost','Save','Balance','Comment')

with open('wallet.data') as f:
new_bal = p.load(f)

print 'new balance: ',new_bal

print content
with open('record.txt') as f:
for line in f:
print line

def show_menu():
prompt = '''
'0':'spend_money'
'1':'save_money'
'2':'query_info'
'3':'quit'
'''
while True:
CMDs={'0':spend_money,'1':save_money,'2':query_info}
choice = raw_input('which do you want to do ?%s: '%prompt)
if choice not in '012':
break
CMDs[choice]()

if __name__=='__main__':
show_menu()


3、程序还有改进处,例如将两个文件以参数的形式传入,会简化代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: