python银行系统-python简单的银行系统
先定义类:
银行卡类
class Card:
def __init__(self,cid,pwd):
self.cid = cid
self.pwd = pwd
self.money = 0
self.islock = False
管理员类
class Admin:
def __init__(self,name = 'admin',password = '123456'):
self.name = name
self.password = password
def welcome(self):
print('欢迎使用xx银行系统')
#设置登录
def login(self):
name = input('请输入您的用户名:')
password = input('请输入您的密码:')
if name == self.name and password == self.password:
return True
else:
return False
#设置菜单界面
def menu(self):
print('建户【0】 销户【1】 查看余额【2】 存款【3】 取款【4】')
print('转账【5】 锁卡【6】 解锁【7】 用户信息【8】 退出【9】')
用户类
import os
import pickle
class User:
def __init__(self,name,uid,card):
self.name = name
self.uid = uid
self.card = card
def __str__(self):
return '姓名:{} 身份证号:{} 银行卡:{}'.format(self.name,self.uid,self.card.cid)
#保存用户信息到文件中
@staticmethod
def save_info(userinfo):
#拼接要存放信息的目录
pathname = os.path.join(os.getcwd(),'user_info.db')
with open(pathname,'wb') as fp:
pickle.dump(userinfo,fp)
@staticmethod
def load_info():
pathname = os.path.join(os.getcwd(),'user_info.db')
if os.path.exists(pathname):
with open(pathname,'rb') as fp:
ret = pickle.load(fp)
return ret
else:
return {}
银行系统功能类
from help import Helper
from user import User
from card import Card
class Operate:
def __init__(self,userinfo={}):
self.userinfo = userinfo
#设置银行系统的各种功能
def new_user(self):
name = input('请输入您的名字:')
uid = input('请输入您的身份证号:')
pwd = input('请输入您的银行卡密码:')
#生成银行卡号
cid = Helper.generate_card_cid()
#加密银行卡密码
pwd = Helper.encry_pwd(pwd)
#创建银行卡和用户对象
card = Card(cid,pwd)
user = User(name,uid,card)
self.userinfo[cid] = user
#保存用户信息
User.save_info(self.userinfo)
print('开户成功!')
def del_uesr(self):
while True:
cid = input('请输入您的银行卡号:')
if cid:
user = self.userinfo[cid]
count = 0
while True:
pwd = input('请输入您的银行卡密码:')
if Helper.check_pwd(pwd,user.card.pwd):
del self.userinfo[cid]
User.save_info(self.userinfo)
break
else:
print('密码错误,请重新输入')
count += 1
if count >= 3:
print('密码错误次数上限')
else:
print('银行卡号不存在,请重新输入')
def query_money(self):
cid = input('请输入您的银行卡号:')
user = self.userinfo[cid]
print('金额:{}'.format(user.card.money))
def save_money(self):
cid = input('请输入您的银行卡号:')
user = self.userinfo[cid]
count = 0
if user.card.islock:
print('您的银行卡已冻结')
return
while True:
pwd = input('请输入您的银行卡密码:')
if Helper.check_pwd(pwd,user.card.pwd):
money = int(input('请输入您要存入的金额:'))
user.card.money += money
User.save_info(self.userinfo)
print('存款成功')
break
else:
print('密码错误,请重新输入')
count += 1
if count >= 3:
print('密码错误次数已达上限')
def get_money(self):
cid = input('请输入您的银行卡号:')
user = self.userinfo[cid]
count = 0
if user.card.islock:
print('你的银行卡已冻结')
return
while True:
pwd = input('请输入您的银行卡密码:')
if Helper.check_pwd(pwd,user.card.pwd):
money = int(input('请输入您要获取的金额:'))
if user.card.money >= money:
user.card.money -= money
User.save_info(self.userinfo)
print('取款成功')
break
else:
print('余额不足')
else:
print('密码错误,请重新输入')
count += 1
if count >= 3:
print('密码错误已达上限,银行卡已锁定')
user.card.islock = True
#转账
def give_money(self):
cid = input('请输入您的银行卡号:')
user = self.userinfo[cid]
count = 0
if user.card.islock:
print('您的银行卡已冻结')
return
count = 0
while True:
pwd = input('请输入您的银行卡密码:')
if Helper.check_pwd(pwd,user.card.pwd):
cid1 = input('请输入您要转账的银行卡号:')
user1 = self.userinfo[cid1]
money = int(input('请输入您要转账的金额:'))
user.card.money -= money
user1.card.money += money
User.save_info(self.userinfo)
print('转账成功')
break
else:
print('密码错误,请重新输入')
count += 1
if count >= 3:
print('密码错误次数已达上限,银行卡已锁定')
user.card.islock = True
def lockcard(self):
pass
def nolock(self):
cid = input('请输入您要解锁的银行卡号:')
uid = input('请出示您的身份证:')
user = self.userinfo[cid]
if user.uid == uid:
user.card.islock = False
else:
print('身份证错误')
def show(self):
for i in self.userinfo:
print(self.userinfo[i])
再建立一个help模块用于对卡号密码的创建
import hashlib
from random import randint
class Helper:
@staticmethod
#生成银行卡号
def generate_card_cid(length=8):
cid = ''
for i in range(length):
cid += str(randint(0,9))
return cid
#加密用户密码信息
@staticmethod
def encry_pwd(pwd):
m = hashlib.md5()
m.update(pwd.encode('utf-8'))
return m.hexdigest()
#核对用户信息
@staticmethod
def check_pwd(pwd,pwd_hash):
m = hashlib.md5()
m.update(pwd.encode('utf-8'))
return m.hexdigest() == pwd_hash
银行系统运行代码
from admin import Admin
from operate import Operate
from user import User
from card import Card
#创建管理员对象
admin = Admin()
admin.welcome()
count = 0
while True:
ret = admin.login()
#加载用户信息
userinfo = User.load_info()
operate = Operate(userinfo)
if ret:
print('登录成功')
while True:
admin.menu()
num = int(input('请输入您要进行的操作:'))
isbreak = False
if num == 0:
operate.new_user()
if num == 1:
operate.del_uesr()
if num == 2:
operate.query_money()
if num == 3:
operate.save_money()
if num == 4:
operate.get_money()
if num == 5:
operate.give_money()
if num == 6:
operate.lockcard()
if num == 7:
operate.nolock()
if num == 8:
operate.show()
if num == 9:
isbreak = True
break
if isbreak == True:
break
else:
print('密码错误,请重新输入')
count += 1
if count >= 3:
print('密码错误上限')
由于第一次写,可能写的不好,希望大家在评论区多多提供宝贵的意见。
python银行系统-python简单的银行系统相关推荐
- python制作统计图_刻意练习11:Python描述统计、简单统计图形
学习计划 MyPlan11 主题:Python描述统计.简单统计图形 时间:8.5-8.11周内完成 参考资料:新书<谁说菜鸟不会数据分析python篇> 各位星友们,在这个星球里每个人都 ...
- 用Python建立最简单的web服务器
用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认 ...
- Python django实现简单的邮件系统发送邮件功能
Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...
- python简单界面实现-python实现的简单窗口倒计时界面实例
本文实例讲述了python实现的简单窗口倒计时界面.分享给大家供大家参考.具体分析如下: 下面的代码通过Tkinter制作windows窗口界面,然后时间了一个简单的倒计时功能,代码可以直接运行 # ...
- python之celery简单使用
python之celery简单使用 参考:https://blog.csdn.net/zt3032/article/details/79251888 celery是一个简单.灵活和可靠的分布式任务处理 ...
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as jsonprint json ...
- python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...
原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...
- python界面设计-手把手教你用Python设计一个简单的命令行界面
原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...
- python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...
- python画曲线-Python绘制各种简单优美曲线
原标题:Python绘制各种简单优美曲线 matplotlib是著名的Python绘图库,它提供了一整套绘图API,十分适合交互式绘图.,解决数据分析和可视化问题,其实也是Python的拿手好戏.另外 ...
最新文章
- jQuery常用方法一览
- Cocoapods警告 - CocoaPods没有设置项目的基本配置,因为您的项目已经有自定义配置集
- 用 C 语言开发一门编程语言 — 交互式解释器
- html jquery ajax乱码问题,jquery使用ajax提交中文乱码问题的解决
- 操作系统【二】死锁问题以及处理方法
- API函数的调用(包含一个大小写的问题)
- Spark精华问答 | Spark的三种运行模式有何区别?
- SQL 16进制数转化10进制
- [Tomcat]无法使用tomcat6.exe启动服务解决办法
- java jvm参数获取_在java代码中获取JVM参数
- 【实用】excel中创建项目进度计划
- MICRO SIM卡 SIM小卡 尺寸图及剪卡图解
- LINE对话生成器使用教程
- Icarus iverilog中PLI使用范例
- JSP作业提交管理系统(JSP作业管理系统)JSP学生作业管理JSP教师作业批改业提交管理系统
- 茶馆预定APP开发功能需求
- AD19 双层板导出Gerber文件
- 基于java学生签到考勤系统
- 带你玩转kubernetes-k8s(第54篇-Kubernetes之使用API聚合机制扩展API资源)
- 问君硅谷几多渣?先把Snapchat总裁扒一扒