用python实现atm银行系统

Python实现的银行系统模拟程序完整案例

本文实例讲述了python实现的银行系统模拟程序。分享给大家供大家参考,具体如下:

银行系统模拟程序

1、概述

​ 使用面向对象思想模拟一个简单的银行系统,具备的功能:管理员登录/注销、用户开户、登录、找回密码、挂失、改密、查询、存取款、转账等功能。

​ 编程语言:python。

2、目的

​ 通过这个编程练习,可以熟悉运用面向对象的思想来解决实际问题,其中用到的知识点有类的封装、正则表达式、模块等。

3、体会

​ 在编写这个程序时,实际上的业务逻辑还是要考虑的,比如修改密码时需要输入手机号、身份证号等。在进行类的封装时,实际上还是用面向过程的思想把一些基本的业务逻辑编写成函数,对一些重复使用的代码也可以封装成函数(就是自己造适合这个业务的轮子,实际开发中很多底层的函数是不用自己再次去实现的,可以直接调用),这些都是一些底层的封装,然后在实现主要业务时上就可以调用类中的方法实现,这时只需关注业务逻辑就好了。

​ 使用面向对象的思想进行编程,考虑的点是:实现一个功能,有哪些方法可以让我进行调用(指挥者)。

​ 使用面向过程的思想进行编程,考虑的点是:实现一个功能,我需要实现哪些方法(执行者)。

​ 编写这个程序还用到一个很重要的概念,就是对程序进行模块化。模块化的好处是可以更好的对程序进行维护,条理也更清晰。

4、代码

源码github地址:https://github.com/liangdongchang/pybanksystem.git

1、banksystem.py文件

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • from view import view
  • from atm import atm
  • from person import person
  • def func(view,atm,per):
  •   view.funcinterface()
  •   choice = input("请选择您要办理的业务:")
  •   if choice == '1':
  •     return per.checkmoney(atm)
  •   elif choice == '2':
  •     return per.savemoney(atm)
  •   elif choice == '3':
  •     return per.getmoney(atm)
  •   elif choice == '4':
  •     return per.transfermoney(atm)
  •   elif choice == '5':
  •     return per.changepassword(atm)
  •   elif choice == '6':
  •     return per.unlockaccount(atm)
  •   elif choice == '7':
  •     return per.closeaccount(atm)
  •   elif choice == 't':
  •     if per.exit(atm):
  •       return true
  •   else:
  •     print("输入有误!")
  • def main():
  •   # 管理员登录名为'admin',密码为'123'
  •   view = view("admin",'123')
  •   view.initface()
  •   atm = atm()
  •   view.login()
  •   per = person()
  •   while true:
  •     view.funcinit()
  •     choice = input("请选择您要办理的业务:")
  •     if choice == '1':
  •       per.newaccount(atm)
  •     elif choice == '2':
  •       if per.login(atm):
  •         while true:
  •           if func(view,atm,per) == none:
  •             continue
  •           else:
  •             break
  •     elif choice == '3':
  •       per.findbackpassword(atm)
  •     elif choice == '4':
  •       per.lockaccount(atm)
  •     elif choice == 't':
  •       if per.exit(atm):
  •         # 管理员注销系统
  •         if view.logout():
  •            return true
  •     else:
  •       print("输入有误!")
  • if __name__ == '__main__':
  •   main()
  • 2、card.py文件:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • '''
  • 卡:
  • 类名:card
  • 属性:卡号【6位随机】  密码  余额 绑定的身份证号 手机号
  • '''
  • class card(object):
  •   def __init__(self, cardid, password, money,identityid,phonenum,cardlock='false'):
  •     self.cardid = cardid
  •     self.password = password
  •     self.money = money
  •     self.identityid = identityid
  •     self.phonenum = phonenum
  •     self.cardlock = cardlock
  • 3、readappendcard.py文件:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • '''
  • 功能:读取文件cardinfo.txt的信息
  • 方法:读、写、删
  • '''
  • from card import card
  • import json
  • # 读
  • class readcard(card):
  •   def __init__(self, cardid='', password='', money=0, identityid='', phonenum='', cardlock=''):
  •     card.__init__(self, cardid, password, money, identityid, phonenum, cardlock)
  •   def dict2card(self, d):
  •     return self.__class__(d["cardid"], d["password"], d["money"],d["identityid"],d["phonenum"], d["cardlock"])
  •   def read(self):
  •     # card对象转为字典
  •     with open("cardinfo.txt","r",encoding="utf-8") as fr:
  •       cards = []
  •       for re in fr.readlines():
  •         cards.append(self.dict2card(eval(re)))
  •     return cards
  • # 写
  • class appendcard(card):
  •   def __init__(self):
  •     card.__init__(self, cardid = '', password = '', money = 0, identityid = '', phonenum = '', cardlock='')
  •   def card2dict(self,card):
  •     return {"cardid": card.cardid, "password": card.password,
  •         "money": card.money, "identityid": card.identityid,
  •         "phonenum": card.phonenum, "cardlock": card.cardlock
  •         }
  •   def append(self,card,w= 'a'):
  •     # 默认是追加,如果w='w'就清空文件
  •     if w == 'w':
  •       with open("cardinfo.txt", "w", encoding="utf-8") as fa:
  •         fa.write('')
  •     else:
  •       with open("cardinfo.txt", "a", encoding="utf-8") as fa:
  •         json.dump(card, fa, default=self.card2dict)
  •         fa.write('\n')
  • # 删
  • class del(object):
  •   def del_(self,cardid):
  •     readcard = readcard()
  •     cards = readcard.read()
  •     for card in cards:
  •       # 删除输入的卡号
  •       if cardid == card.cardid:
  •         cards.remove(card)
  •         break
  •     else:
  •       print("卡号不存在!")
  •       return false
  •     # 重新写入文件
  •     appendcard = appendcard()
  •     appendcard.append('',w='w')
  •     for card in cards:
  •       appendcard.append(card)
  •     return true
  • 4、person.py

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • '''
  • 类名:person
  • 行为:开户、查询、取款、存储、转账、改密、销户、退出
  • '''
  • class person(object):
  •   def __init__(self,name='',identity='',phonenum='',card=none):
  •     self.name = name
  •     self.identity = identity
  •     self.phonenum = phonenum
  •     self.card = card
  •   # 登录
  •   def login(self,atm):
  •     card = atm.login()
  •     if card:
  •       self.card = card
  •       return true
  •     else:
  •       return false
  •   # 开户
  •   def newaccount(self,atm):
  •     return atm.newaccount()
  •   #找回密码
  •   def findbackpassword(self,atm):
  •     return atm.findbackpassword()
  •   # 查询余额
  •   def checkmoney(self, atm):
  •     return atm.checkmoney(self.card)
  •   # 存钱
  •   def savemoney(self, atm):
  •     return atm.savemoney(self.card)
  •   # 取钱
  •   def getmoney(self, atm):
  •     return atm.getmoney(self.card)
  •   # 转账
  •   def transfermoney(self, atm):
  •     return atm.transfermoney(self.card)
  •   # 销户
  •   def closeaccount(self, atm):
  •     return atm.closeaccount(self.card)
  •   # 挂失
  •   def lockaccount(self, atm):
  •     return atm.lockaccount()
  •   # 解锁
  •   def unlockaccount(self, atm):
  •     return atm.unlockaccount(self.card)
  •   # 改密
  •   def changepassword(self, atm):
  •     return atm.changepassword(self.card)
  •   # 退出系统
  •   def exit(self, atm):
  •     return atm.exit()
  • 5、view.py

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 猜您喜欢