题目为信用卡消费管理系统:

主程序:main.py

#!usr/bin/env python
# encoding: utf-8
import conf,sys,time,re,os
import json
import login
tmp_dic = {} def shopping_center(arg):
print('\033[32mWelcome into Credit card store!\033[0m')
while True:
for i,(k,v) in enumerate(conf.shop_list.items(),1):
print('%s.%s:%s'%(i,k,v))
N = int(input('Please select you want to buy goods(input r:return p:pay):').strip())
if N == 7:
print('\033[31myou will return main list!\033[0m')
time.sleep(1)
tmp_dic.clear()#返回后如果没有支付则清空购物车
break elif N in range(1,len(conf.shop_list)-1):
key = list(conf.shop_list.items())[N - 1][0]
value = list(conf.shop_list.items())[N - 1][1]
if key in tmp_dic.keys():
tmp_dic[key] = tmp_dic[key] + value
else:
tmp_dic[key] = value
print('\033[35mYour shopping cart is as follows:\033[0m')
for x,y in tmp_dic.items():
print('\033[35m%-5s:%s\033[0m'%(x,y))
elif N == 8:
print('\033[33mThe total order for you:%s\033[0m'%sum(tmp_dic.values()))
sum_values = sum(tmp_dic.values())
with open('account.json','r') as f:
acc = json.load(f)
if sum_values > acc[arg][2]:
print('对不起你的信用卡额度不足,请重新购买!!')
login.log_record(arg, '消费', sum_values, 'fail')
tmp_dic.clear()
break
else:
acc[arg][2] = acc[arg][2] - sum_values
acc[arg][3] = acc[arg][3] + sum_values
with open('account.json','w') as z:
json.dump(acc,z)
login.log_record(arg,'消费',sum_values,'success')
print('恭喜你购物成功即将返回主菜单!!')
time.sleep(1)
tmp_dic.clear()
break #信用卡管理
def card_center(name):
if name == 'admin':
print('欢迎%s进入信用卡管理系统'%name)
while True:
for index,i in enumerate(conf.ad_list,1):
print('%s.%s' %(index,i))
p = int(input('请选择你要的操作的编号:').strip())
with open('account.json', 'r+') as f:
acc = json.load(f)
if p == 1:#添加用户
key = input('请输入你的用户名:').strip()
pawd = input('请输入密码:').strip()
paws = input('请输入支付密码:').strip()
acc[key] = [pawd, paws, 15000,0, "unlock"]
with open('account.json', 'w') as x:
json.dump(acc,x)
print('用户%s已经添加成功额度为15000'%key) elif p == 2:#用户额度调整
n = input('你的账号:')
limit = int(input('请输入你要的额度:').strip())
if n in acc.keys():
acc[n][2] = limit
with open('account.json','w') as y:
json.dump(acc,y)
continue
elif p == 3:#冻结账户
freeze = input('请输入你要冻结的账户:').strip()
acc[freeze][3] = "lock"
with open('account.json', 'w') as z:
json.dump(acc, z)
print('账号%s已冻结'%freeze)
continue
elif p == 4:#解冻账户
unfreeze = input('请输入你要解冻的账户:')
acc[unfreeze][3] = "unlock"
with open('account.json','w') as g:
json.dump(acc,g)
print('账户%s已解冻'%unfreeze)
continue
elif p == 5:#用户操作查询
pass
continue
elif p == 6:#返回主菜单
break
else:#消费者信用卡管理系统
print('\033[34m欢迎进入消费者信用卡管理系统!\033[0m')
with open('account.json', 'r+') as e:
acc1 = json.load(e)
while True:
for l,i in enumerate(conf.customer_list,1):
print('%s.%s'%(l,i))
custom_in = int(input('请选择你需要的操作:').strip())
if custom_in == 1:
print('#' * 20)
print('账户:%s\n额度:%s\n待还款:%s' %(name,acc1[name][2],acc1[name][3]))
print('#' * 20)
continue
elif custom_in == 2:
print('你的还款额:%s'%acc1[name][3])
huank = int(input('你要还多少:').strip())
acc1[name][2] = acc1[name][2] + huank
acc1[name][3] = acc1[name][3] - huank
with open('account.json', 'w') as g:
json.dump(acc1, g)
print('恭喜你还款成功!')
continue
elif custom_in == 3:
qukuan = int(input('请输入你要取款的金额:').strip())
acc1[name][2] = acc1[name][2] - qukuan
acc1[name][3] = acc1[name][3] + qukuan
with open('account.json', 'w') as h:
json.dump(acc1, h)
continue
elif custom_in == 4:
print('你的消费记录如下')
ff = open('record.log','r')
for line in ff:
if name in line:
print(line)
ff.close()
print('-'*20)
continue
elif custom_in == 5:
while True:
pa = input('请输入你要转账的账户:').strip()
pc = int(input('请输入你要转账的金额:').strip())
if pa not in acc1.keys():
print('你输入的账户不存在,请重新输入!')
continue
elif pc > acc1[name][2]:
print('你的转账额度不够,请重新输入!')
continue
else:
break
acc1[pa][3] = acc1[pa][3] - pc
acc1[pa][2] = acc1[pa][2] + pc
acc1[name][2] = acc1[name][2] - pc
acc1[name][3] = acc1[name][3] + pc
with open('account.json','w') as dd:
json.dump(acc1,dd)
print('恭喜你转账成功!')
continue
elif custom_in == 6:
break
else:
print('你选择的编号不对,请重新输入!!')
continue if __name__ == "__main__":
while True:
print('\033[32mWelcome into credit card store!!!\033[0m')
for index,i in enumerate(conf.main_list,1):
print('%s.%s'%(index,i))
Num = input('Please choose you to enter the system(input b exit):').strip()
if Num == 'b':
print(1)
sys.exit()
elif int(Num) == 1:
name1 = login.login()
card_center(name1)
continue
elif int(Num) == 2:
name = login.login()
shopping_center(name)
continue

配置文件:conf.py

#!usr/bin/env python
# encoding: utf-8
main_list = ['Credit card supervise','Credit card store'] shop_list = {'Car':100000,
'Iphone':5000,
'Mac Book':8000,
'pan':10,
'T-shirt':100,
'coffee':30,
'return':'返回主菜单',
'pay':'买单',
} ad_list = ['添加用户','用户额度调整','冻结账户','解冻账户','用户操作查询','返回上一级']
customer_list = ['账户查询','还款','提现','消费查询','转账','返回']

登录系统和日志系统:login.py

#!usr/bin/env python
# encoding: utf-8 import json,sys,time
# account = {'wyh':['a123',123,15000,'unlock'],
# 'bat':['b321',456,15000,'unlock'],
# 'admin':['admin',0,0,'unlock']}
# with open('account.json','w') as d:
# json.dump(account,d)
logfile = 'record.log' def login():
with open('account.json', 'r') as f:
acc = json.load(f)
i = 0
while True:
name = input('请输入账号:')
password = input('请输入密码:')
if acc[name][3] == 'lock':
print('你的账户被锁定请联系你的客户经理!!!')
sys.exit()
elif name not in acc.keys() or password != acc[name][0] :
print('你的账户信息请重新输入!!!')
i += 1
if i > 2:
print('你的账户被锁定请联系你的客户经理确认你的账户安全!!')
acc[name][3] = 'lock'
with open('account.json', 'w') as f1:
json.dump(acc, f1)
sys.exit()
continue
else:
print('欢迎%s'%name)
return name def log_record(name,Status,money,description='Null'):
date = time.strftime("%Y%m%d %H:%M:%S", time.localtime())
record_line = "%s %s %s %s %s\n" % (date, name, Status,money, description)
f = open(logfile, 'a')
f.write(record_line)
f.flush()
f.close()

账号文件:account.json

{"wyh": ["a123", 123, 14870, 100, "unlock"], "bat": ["b321", 456, 10070, 4930, "unlock"], "admin": ["admin", 0, 0, 0, "unlock"]}

python 练习4的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. JMETER之socket接口性能测试

    公司的**产品经过换代升级,终于要上线了,纯java编码,包括POS(PC/安卓平板)版.WEB版.微信版,各终端通过 Webservice服务共享数据资源,因此Webservice各接口的性能测试就 ...

  2. 深度学习原理与框架-图像补全(原理与代码) 1.tf.nn.moments(求平均值和标准差) 2.tf.control_dependencies(先执行内部操作) 3.tf.cond(判别执行前或后函数) 4.tf.nn.atrous_conv2d 5.tf.nn.conv2d_transpose(反卷积) 7.tf.train.get_checkpoint_state(判断sess是否存在

    1. tf.nn.moments(x, axes=[0, 1, 2])  # 对前三个维度求平均值和标准差,结果为最后一个维度,即对每个feature_map求平均值和标准差 参数说明:x为输入的fe ...

  3. EF.Mysql在codefirst模式下调用存储过程,和再DbFirst模式下的调用

    List<GetUserUpCrmList_Result> r = null; using (var context = new HimallContext()) { var parame ...

  4. 知识点---js监听手机返回键,回到指定界面

    方法一. $(function(){ pushHistory(); window.addEventListener(“popstate”, function(e) { window.location ...

  5. Java Script 简介

    Java Script 简介 JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备.JavaScrip ...

  6. C博客01--顺序、分支结构

    1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 经过一周的初步学习,对C语言我有了一定的认识,也体验到了代码的乐趣,这应该为我以后的学习开了一个好头.在 ...

  7. 云笔记项目-Spring事务学习-传播REQUIRES_NEW

    接下来测试事务传播的REQUIRES_NEW. Service层 Service层代码在这里不展示了,主要将EMPService1Impl类中的方法事务传播属性设置为REQUIRED,EMPServi ...

  8. python——jieba分词过程

    import jieba """函数2:分词函数""" def fenci(training_data): ""&quo ...

  9. Appium Capabilities 详解(Android适配/IOS后续再补充)

    Appium 关键字 关键字 描述 实例 automationName 你想使用的自动化测试引擎 Appium (默认) 或 Selendroid platformName 你要测试的手机操作系统 i ...

  10. C++ map 使用erase在windows下崩溃,在linux下没有问题的原因

    注意:此程序在win环境下会出现上述描述的问题:在mac环境下第一种方式是正常运行的.Map.erase有3个重载函数: void erase(iterator position); size_typ ...