先定义类:

银行卡类

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简单的银行系统相关推荐

  1. python制作统计图_刻意练习11:Python描述统计、简单统计图形

    学习计划 MyPlan11 主题:Python描述统计.简单统计图形 时间:8.5-8.11周内完成 参考资料:新书<谁说菜鸟不会数据分析python篇> 各位星友们,在这个星球里每个人都 ...

  2. 用Python建立最简单的web服务器

    用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认 ...

  3. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  4. python简单界面实现-python实现的简单窗口倒计时界面实例

    本文实例讲述了python实现的简单窗口倒计时界面.分享给大家供大家参考.具体分析如下: 下面的代码通过Tkinter制作windows窗口界面,然后时间了一个简单的倒计时功能,代码可以直接运行 # ...

  5. python之celery简单使用

    python之celery简单使用 参考:https://blog.csdn.net/zt3032/article/details/79251888 celery是一个简单.灵活和可靠的分布式任务处理 ...

  6. python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器

    simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as jsonprint json ...

  7. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  8. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  9. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片

    原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...

  10. python画曲线-Python绘制各种简单优美曲线

    原标题:Python绘制各种简单优美曲线 matplotlib是著名的Python绘图库,它提供了一整套绘图API,十分适合交互式绘图.,解决数据分析和可视化问题,其实也是Python的拿手好戏.另外 ...

最新文章

  1. jQuery常用方法一览
  2. Cocoapods警告 - CocoaPods没有设置项目的基本配置,因为您的项目已经有自定义配置集
  3. 用 C 语言开发一门编程语言 — 交互式解释器
  4. html jquery ajax乱码问题,jquery使用ajax提交中文乱码问题的解决
  5. 操作系统【二】死锁问题以及处理方法
  6. API函数的调用(包含一个大小写的问题)
  7. Spark精华问答 | Spark的三种运行模式有何区别?
  8. SQL 16进制数转化10进制
  9. [Tomcat]无法使用tomcat6.exe启动服务解决办法
  10. java jvm参数获取_在java代码中获取JVM参数
  11. 【实用】excel中创建项目进度计划
  12. MICRO SIM卡 SIM小卡 尺寸图及剪卡图解
  13. LINE对话生成器使用教程
  14. Icarus iverilog中PLI使用范例
  15. JSP作业提交管理系统(JSP作业管理系统)JSP学生作业管理JSP教师作业批改业提交管理系统
  16. 茶馆预定APP开发功能需求
  17. AD19 双层板导出Gerber文件
  18. 基于java学生签到考勤系统
  19. 带你玩转kubernetes-k8s(第54篇-Kubernetes之使用API聚合机制扩展API资源)
  20. 问君硅谷几多渣?先把Snapchat总裁扒一扒

热门文章

  1. ubuntu14.04配置中文latex完美环境(texlive+texmaker+lyx)
  2. 黑马程序员_java之集合框架
  3. [原创] Matlab 指派问题模型代码
  4. Java自学笔记(13):【面向对象】方法覆盖,final关键字,对象转型
  5. netty如何实现零拷贝
  6. python 机器移植
  7. double类型数值计算出现误差的解决办法
  8. 数据库SQL的分组函数
  9. (零)我为什么要写Linux学习笔记?
  10. 面向对象编程的乐趣(TextBox.Text=)