python银行小项目
模拟银行业务
print("*********************************************")print("* 1.开户 2.查询 *")print("* 3.存款 4.取款 *")print("* 5.转账 6.改密 *")print("* 7.锁卡 8.解卡 *")print("* 9.补卡 0.退出 *")print("*********************************************")
导包
import time
import os
import pickle
import random
定义类
'''
类:
card #卡
person #用户
view #界面
ATM #ATM机功能-
class Card:def __init__(self,cardid,password,money):self.cardid = cardidself.password = passwordself.money = moneyself.isclock = False #是否上锁class Person:def __init__(self,name,userid,phone,card):self.name = nameself.userid = useridself.phone = phoneself.card = cardclass View:def login(self):name = input("请输入管理员账号:")password = input("请输入管理员密码:")if name =="admin" and password == "hong": #初始化了账号和密码self.show()time.sleep(2)return Trueelse:print("管理员账号或密码不正确")return Falsedef show(self):print("*********************************************")print("* *")print("* *")print("* 欢迎进入银行系统 *")print("* *")print("* *")print("*********************************************")def operation_show(self):print("*********************************************")print("* 1.开户 2.查询 *")print("* 3.存款 4.取款 *")print("* 5.转账 6.改密 *")print("* 7.锁卡 8.解卡 *")print("* 9.补卡 0.退出 *")print("*********************************************")
'''
功能类:
class Operation:def __init__(self):self.load_user()print(self.user_dict)
以下所有函数都包含在Operation类中:
0.首先使用文本用来存储信息以及访问信息
def load_user(self):#加载文件之前判断文件是否存在if os.path.exists("user.txt"):with open("user.txt","rb") as f:self.user_dict = pickle.load(f)else:self.user_dict = {}def save(self):'''保存用户'''with open("user.txt","wb") as f:pickle.dump(self.user_dict,f)
1.开卡
def create(self):'''开户'''name = input("请输入持卡人姓名:")user_id = input("请输入身份证号码:")phone = input("请设置预留手机号:")password = self.get_password()cardid = self.get_cardid()#有信息之后就可以生成一张卡card = Card(cardid,password,0)#通过卡找到用户user = Person(name,user_id,phone,card)self.user_dict[cardid] = userprint("开卡成功!您的卡号为:%s,卡内余额为:%d元" % (cardid,card.money))self.save()time.sleep(2)def get_password(self):'''设置密码'''while True:pwd1 = input("请设置银行卡密码:")pwd2 = input("请重新输入密码:")if pwd1 == pwd2:return pwd1else:print("密码输入不一致!")time.sleep(2)def get_cardid(self):'''生成卡号'''while True:cardid = random.randint(100000,999999)if cardid not in self.user_dict:return cardid
2.查询
def select(self):''' 查询功能'''id = int(input("请输入卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:password = input("请输入该银行卡密码:")if password == self.user_dict[id].card.password:print("卡号:%s 持卡人:%s 卡内余额:%d" % (id, self.user_dict[id].name, self.user_dict[id].card.money))time.sleep(3)else:print("密码错误!")time.sleep(1)
3.存款
def in_money(self):'''存钱'''id = int(input("请输入卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:password = input("请输入该银行卡密码:")if password == self.user_dict[id].card.password:money = int(input("请选择存储款数:"))self.user_dict[id].card.money += moneyprint("存款成功!卡号:%s 持卡人:%s 卡内余额:%d元" % (id,self.user_dict[id].name,self.user_dict[id].card.money))time.sleep(3)self.save()else:print("密码错误!")time.sleep(1)
4.取款
def out_money(self):'''取款'''id = int(input("请输入卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:password = input("请输入该银行卡密码:")if password == self.user_dict[id].card.password:money = int(input("请选择取款数:"))if money>self.user_dict[id].card.money:print("银行卡余额不足,无法取款!")else:self.user_dict[id].card.money -= moneyprint("取款成功!卡号:%s 持卡人:%s 卡内余额:%d元" % (id,self.user_dict[id].name,self.user_dict[id].card.money))time.sleep(3)self.save()else:print("密码错误!")time.sleep(1)
5.转账
def changge(self):'''转账'''id = int(input("请输入卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:id2 = int(input("请输入转账接收者的卡号"))if id2 not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id2].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:password = input("请输入您的银行卡密码:")if password == self.user_dict[id].card.password:money = int(input("请选转账数:"))if money>self.user_dict[id].card.money:print("银行卡余额不足,无法转账!")else:self.user_dict[id].card.money -= moneyprint("转账成功!卡号:%s 持卡人:%s 卡内余额:%d元" % (id,self.user_dict[id].name,self.user_dict[id].card.money))self.user_dict[id2].card.money += moneytime.sleep(3)self.save()else:print("密码错误!")time.sleep(1)
6.改密
def chang_password(self):'''修改密码'''id = int(input("请输入卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:print("卡被锁定,无法使用!")time.sleep(1)else:password = input("请输入该原银行卡密码:")if password == self.user_dict[id].card.password:self.user_dict[id].card.password = self.get_password()print("密码修改成功!")time.sleep(3)self.save()else:print("密码错误!")time.sleep(1)
7.锁卡
def lock(self):'''冻结卡'''id = int(input("请输入要锁定(冻结)的卡号:"))if self.user_dict[id].card.isclock:print("该卡号已被锁定,无需重复锁定!")time.sleep(1)else:if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:phone = input("请输入预留手机号:") #此处也可以要获取验证码if phone == self.user_dict[id].phone:self.user_dict[id].card.isclock = Trueprint("卡号锁定(冻结)完成!")self.save()time.sleep(1)else:print("预留手机号码错误!")time.sleep(1)
8.解卡
def unlock(self):'''解冻卡'''id = int(input("请输入要解锁的卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:if self.user_dict[id].card.isclock:phone = input("请输入预留手机号:") #此处也可以要获取验证码if phone == self.user_dict[id].phone:self.user_dict[id].card.isclock = Falseprint("卡号解锁完成!")self.save()time.sleep(1)else:print("预留手机号码错误!")time.sleep(1)else:print("该卡号未被锁定,无需解锁!")time.sleep(1)
9.补卡
注:补卡后原来的卡将会删除,并且原来卡里的钱需转移到新卡
def add_card(self):'''补卡'''id = int(input("请输入丢失的卡的卡号:"))if id not in self.user_dict:print("卡号不存在!")time.sleep(1)else:name = input("请输入持卡人姓名:")user_id = input("请输入身份证号码:")phone = input("请设置预留手机号:")password = self.get_password()cardid = self.get_cardid()# 有信息之后就可以生成一张卡card = Card(cardid, password, self.user_dict[id].card.money)#删除原来的卡del self.user_dict[id]# 通过卡找到用户user = Person(name, user_id, phone, card)self.user_dict[cardid] = userprint("补卡卡成功!您的卡号为:%s,卡内余额为:%d元" % (cardid, card.money))self.save()time.sleep(2)
10.主框架
def main():v = View()if v.login() == True:while True:o = Operation()v.operation_show()choice = input("请输入业务序号:")if choice == "1": #开户o.create()elif choice == "2": #查询o.select()elif choice == "3": #存款o.in_money()elif choice == "4": #取款o.out_money()elif choice == "5": #转账o.changge()elif choice == "6": #改密o.chang_password()elif choice == "7": #锁卡o.lock()elif choice == "8": #解卡o.unlock()elif choice == "9": #补卡o.add_card()elif choice == "0": #退出o.save()breakif __name__ == '__main__':main()
python银行小项目相关推荐
- Python Turtle 小项目 8 各种音符的绘制
本次,我们将继续使用Turtle模块进行绘制,下面将教学如何绘制各种音符 一.一个四分音符 效果: 代码讲解: 1.导入模块 from turtle import * 2.设置属性 pensize(4 ...
- Python Tkinter 小项目 RGB数值转换为16进制码
欢迎来到<Python 小项目>专栏,这个专栏会不定时更新Python的小项目,大家可以订阅关注哦! 这次,我们用Tkinter写一个RGB转16进制的一个小工具,先看看效果: 代码教学: ...
- python秒表小项目_适合新手练习的几个python小项目
关于python练习的小项目,其实就是一些常用的模块的针对练习 一.找出电脑中遗忘的大文件 # !/usr/bin/env python # _*_ coding:utf-8 -*- import o ...
- python爬虫小项目挣钱兼职,python程序员兼职平台
python爬虫去哪接单 python爬虫接单的方式有两种一.接定制需求的单子爬虫定制的需求其实很多,比如 "爬取某某电商网站的评论",这类需求一般是按照爬取数据量的大小来收费,价 ...
- Python入门小项目-摇骰子小游戏
大家平时微信上没少玩骰子吧,骰子比大小是我们经常玩的一个小游戏也十分的简单,就是不同玩家骰子点数比较大小.我们大学宿舍的时候,就经常比大小决定谁下去拿外卖,那时候费非常想让自己是最大的数,现在看来,以 ...
- python入门小项目-新手学Python必看的几个练手小项目,轻松不枯燥哦!
Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?温馨提示:文末必看 ...
- python有趣小项目源码分析_推荐 10 个有趣的 Python 项目
想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...
- python爬虫小项目挣钱兼职高雅推荐日结_我用Python爬虫挣钱的那些事
在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫挣钱的方式. 1.最典型的就是找爬虫外包活儿. 这个真是体力活,最早是在国外各个freelancer网站上找适 ...
- Python实战小项目
不是很稀饭<复联>嘛,看了<复联4>,就用50行Python代码做了这些: 视频展示:50行代码玩转<复仇者联盟> 教程地址:图片转字符画 相关教程地址:视频转字符 ...
最新文章
- 闲鱼单体应用Serverless化拆分实践
- stm32 基本定时器TIM6、TIM7的使用
- 蓄水池问题c语言编程,蓄水池大作战
- SAP的这三款CRM解决方案,您能区分清楚么
- 如何用AD20打开ddb文件
- WinDbg 查看静态变量
- 【C++ Primer | 0 】字符串函数实现
- LeetCode 题 - 88. 合并两个有序数组
- Vlan9.com论坛 2007-10-30精华技术文档
- 跨平台开发与原生开发优劣比较
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_3 Mybatis的CRUD-修改和删除操作
- flink 自定义 窗口_Flink源码分析: 窗口机制的执行流程
- PyCharm常用配置和常用插件
- 1.1 爬虫入门介绍
- 茴字有四种写法,HTAP呢?
- DDS产生波形及AM 调制解调原理
- 计算机死机后 通过任务管理器关闭程序,电脑死机后,按哪个键结束程序
- 北航计算机控制系统实验报告,北航计算机控制系统实验报告..doc
- java scanner输入数组_Java Scanner输入两个数组的方法
- 《计算机操作系统(计算机)》
热门文章
- 如何用视频剪辑软件Vegas剪视频
- Cytoscape 安装教程 | Network Data Integration, Analysis, and Visualization in a Box
- 如何使用amplifycolor调色插件
- 无人机学习之路——电机
- 唯样商城:ROHM——反向恢复时间trr的影响逆变器电路的优化
- vue实现附件图片png,jpg,jpeg,pdf,doc,docx预览
- 基于Yolov5的二维码QR码识别
- 【网页设计】期末大作业html+css(体育网站)-围棋 4页
- docker制作支持中文的Centos7镜像
- 新一代大学英语(提高篇)