Python 小案例实战 —— 简易银行存取款查询系统

涉及知识点

  • 包的调用
  • 字典、列表的混合运用
  • 列表元素索引、追加
  • 基本的循环与分支结构

源码

import sys
import time bank = {
'users':['Tom','Jack'],
'pwd': ['1701', '1702'],
'money':[1000,2000],
'history':[[],[]]
} while True:
user_now_name = str(input("欢迎使用本系统!请输入您的用户名:\n"))
if user_now_name in bank['users']:
user_index = bank['users'].index(user_now_name)
# print('尊敬的', user_now_name, '您好!')
while True:
user_now_pwd = str(input("请输入您的密码:\n"))
if user_now_pwd == bank['pwd'][user_index]:
print('登录成功!')
isLogin = True
bank['history'][user_index].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' 登陆系统')
break
else:
print('密码错误,请重试!\n')
break
else:
print('抱歉,不存在该用户!\n') while isLogin:
print('\n请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡')
service_num = int(input())
if service_num == 1:
money_out = int(input('请输入取款金额:'))
if money_out > 0 and money_out < int(bank['money'][user_index]):
bank['money'][user_index] = int(bank['money'][user_index]) - money_out
print('当前剩余存款:', bank['money'][user_index])
bank['history'][user_index].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' 取款' + str(money_out))
else:
print('当前余额不足!!')
elif service_num == 2:
money_in = int(input('请输入存款金额:'))
if money_in < 0:
print('存款金额必须大于0')
else:
bank['money'][user_index] = int(bank['money'][user_index]) + money_in
print('当前剩余存款:', bank['money'][user_index])
bank['history'][user_index].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' 存款' + str(money_in))
elif service_num == 3:
for record in bank['history'][user_index]:
print(record)
elif service_num == 4:
bank['history'][user_index].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' 退出系统')
break

运行测试结果

欢迎使用本系统!请输入您的用户名:
GShang
抱歉,不存在该用户! 欢迎使用本系统!请输入您的用户名:
Tom
请输入您的密码:
1702
密码错误,请重试! 请输入您的密码:
1701
登录成功! 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
1
请输入取款金额:1200
当前余额不足!! 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
1
请输入取款金额:200
当前剩余存款: 800 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
2
请输入存款金额:800
当前剩余存款: 1600 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
1
请输入取款金额:1700
当前余额不足!! 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
1
请输入取款金额:100
当前剩余存款: 1500 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
3
2019-12-20 10:40:47 登陆系统
2019-12-20 10:40:57 取款200
2019-12-20 10:41:01 存款800
2019-12-20 10:41:14 取款100 请选择您要办理的业务:1.取款,2.存款,3.查询,4.退卡
4 Process finished with exit code 0

Python 小案例实战 —— 简易银行存取款查询系统的更多相关文章

  1. java并发编程——通过ReentrantLock,Condition实现银行存取款

         java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器.该框架允许更灵活地使用锁和条件,但以更难用的语法为代价. Lock 接口 ...

  2. C语言实现的简单银行存取款程序 请输入如下数字命令

    #include <stdio.h> int main(void) { //提供变量 cmd balance(余额) deposit(存款) withdraw(取款) //利用while做 ...

  3. 【计算机视觉】OpenCV篇(4) - Pycharm+PyQt5+Python小项目实战

    1.下载安装 (1)Pycharm:下载链接 (2)推荐使用Qt Designer来设计界面,如果你装的是Anaconda的话,就已经自带了designer.exe,我这里使用的是Pycharm的虚拟 ...

  4. python3.6项目:银行存取款系统

    card1 ="1001"#卡号pwd1="1001"#密码ban1=10000#余额card2 ="1002"pwd2="100 ...

  5. 【python小示例】简易彩票中奖模拟

    咱自己写个彩票程序,成功亏掉3个亿 今天突发奇想,自己设计一个小程序,模拟彩票中奖,看看如果自己有个彩票公司,能挣钱吗?代码如下: # -*- utf-8 -*- """ ...

  6. python小案例-计算输入两个数的最大公约数与最小公倍数

    # 计算最大公约数 def gcd(x,y): """ 计算最大公约数 :param x:一个正整数 :param y:一个正整数 :return:x,y的最大公约数 & ...

  7. 学习练习 java面向对象存取款查询余额

    package com.hanqi; public class Account { String ZhangHao; double CunKuanYuE; Account(String ZhangHa ...

  8. Zabbix实战-简易教程--大型分布式监控系统实现Agent批量快速接入

    一.分布式架构 相信使用zabbix的大神都熟悉他的分布式架构,分布式的优势相当明显,分而治之.比如目前我的架构图如下: 那么,对将要接入监控系统的任何一个agent如何快速定位,并进行接入呢?  问 ...

  9. 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测

    线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...

随机推荐

  1. Netty — 线程模型

    一.前言 众所周知,netty是高性能的原因源于其使用的是NIO,但是这只是其中一方面原因,其IO模型上决定的.另一方面源于其线程模型的设计,良好的线程模型设计,能够减少线程上下文切换,减少甚至避免锁 ...

  2. java Integer中隐藏的细节魔鬼!来自面试官的三轮暴击!

    1 第一波暴击!!! 程序员比较实在,一般会说: 那就先上代码 package com.example.demo; public class TestInteger { public static v ...

  3. 死磕 java同步系列之ReentrantLock源码解析(二)——条件锁

    问题 (1)条件锁是什么? (2)条件锁适用于什么场景? (3)条件锁的await()是在其它线程signal()的时候唤醒的吗? 简介 条件锁,是指在获取锁之后发现当前业务场景自己无法处理,而需要等 ...

  4. 新增SAP到OA接口,OA怎么更新WSDL给PI,怎么选择PI的IP地址(备忘)

    1.首先定义个class. 弄完以后可以使用http://IP地址:8088/seeyon/services/sapService?wsdl  进行导出,部署在哪个服务器就用哪个服务器的IP地址 pr ...

  5. Swagger UI in AspNetCore WebAPI

    Swagger其实包含了三个部分,分别是Swagger Editor文档接口编辑器,根据接口文档生成code的Swagger Codegen,以及生成在线文档的Swagger UI.在AspNetCo ...

  6. 对Python中函数参数类型及排序问题,三个方面的总结

    Python中函数的参数问题有点复杂,主要是因为参数类型问题导致的情况比较多,下面来分析一下. 参数类型:缺省参数,关键字参数,不定长位置参数,不定长关键字参数. 其实总共可以分为 位置参数和关键字参 ...

  7. 这篇文章带你彻底理解synchronized

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  8. Javase之集合体系(3)之Set及其子类知识

    集合体系之Set及其子类知识 Set(接口) public interface Set<E>extends Collection<E> ​ 特点:无序(存储顺序与取出顺序不一致 ...

  9. centos7 apache后台转nginx后台

    背景 一开始买完服务器装的是用apache搭的后台, 现在想使用nginx, 希望对你有参考作用 查看系统版本信息 lsb_release -a 我的版本信息是 首先关闭apache-tomcat服务 ...

  10. Dynamics CRM定制子网格添加按钮实例之二:调试代码、打开Web资源及获取选择的记录

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复222或者20160501可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...