您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > python模拟银行ATM程序设计
第2次综合训练报告题目:银行ATM模拟程序姓名:张也白专业:安全工程班级:通风15-1班指导教师:邓立军2016年5月9日目录1摘要.................................................................................................................................12.设计思路..........................................................................................................................13.源程序..............................................................................................................................64.代码分析..........................................................................................................................2参考资料.............................................................................................................................31银行ATM模拟程序1摘要自动柜员机,即ATM,是指银行在不同地点设置一种小型机器,利用一张信用卡大小的胶卡上的磁带记录客户的基本户口资料(通常就是银行卡),让客户可以透过机器进行提款、存款、转账等银行柜台服务,大多数客户都把这种自助机器称为自动提款机。本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Python知识进行设计编程。实现的主要功能有:账户信息查询、存款操作、取款操作、修改密码功能、退出系统功能。用户任意选择1张银行卡(输入1位1~3的数字),输入初始密码123456即可进入ATM操作系统菜单(如图1所示),若输入密码连续错误三次则锁卡自动退出系统(如图2所示),系统菜单各功能(如图3所示)。编写程序时的环境是Python3.4,所以代码中print及input函数可能与python2.X版本有一些差别。参考了教材中第八章面向对象程序设计,编写了两个类包括ATM机类和银行卡Card类,编写了若干个函数以实现整个程序模拟ATM机的各种功能。变量和函数的命名主要使用了Camel命名法,类的命名主要使用了Pascal命名法,程序共189行(含空行),因为时间比较仓促,可能有些地方写的比较乱,有些地方命名也不规范。另外因为对文件的操作不熟练,在网上也没找到太多相关的资料,请多包涵。2图13图24图352设计思路程序设计灵感来自银行ATM机,在这里将ATM机的各种功能抽象与简化,设计了银行ATM模拟程序。根据我们日常的生活经验,我们要使用ATM机就需要一张银行卡。运用面向对象的编程方法,把ATM机和银行卡简化并抽象为两个类:1)银行卡类,主要用来存储账户信息,包括卡号、密码、用户名、余额四个属性,另外写了一个构造方法。2)ATM机类,主要用来查询和修改银行卡的信息,写了五个方法,以银行卡类的对象作为参数,实现银行卡查询(包括卡号、密码、用户名、余额)、存款(银行卡余额增加)、取款(银行卡余额减少)、修改银行卡密码、退卡(退出程序)等功能。写好了类后,我们开始模拟ATM机的操作过程。首先,使用ATM机我们需要插卡,从文件中读取银行卡信息(想法并没有能很好的实现),我们预设三张银行卡,用户选择(1~3号银行卡),根据银行卡信息创建一个对应的银行卡对象,以及ATM机对象。插卡后,我们需要用户输入密码。如果输入密码与银行卡密码匹配就进入ATM系统,如果输入密码错误打到三次就锁卡退出。进入ATM系统,用户可以选择ATM的五个功能:1)银行卡查询,实现的方法就是使用print函数输出银行卡的卡号、密码、用户名、余额。2)存款,实现的方法就是把银行卡的余额+X×100,(X为正整数),约束条件为存款金额大于100小于10000。3)取款,实现的方法就是把银行卡的余额-X×100,(X为正整数),约束条件为取款金额不大于存款金额且不大于5000。4)密码修改,实现的方法就是把银行卡的密码修改。首先要输入原密码,如果原密码输入错误,则修改密码失败,成功后需要用户输入新密码两次,如果两次密码一致则修改成功,否则密码修改失败。5)退卡,使用exit()函数退出程序63源程序1.#!/usr/bin/python2.#-*-coding:utf-8-*-3.#author:张也白PythonVersion:3.44.importos5.6.classDepositCard:7.cardID=08.cardPWD='123456'9.balance=010.userName='0000'11.def__init__(self,cardID,cardPWD,userName,balance):12.self.cardID=cardID13.self.cardPWD=cardPWD14.self.userName=userName15.self.balance=balance16.17.classATM:18.defdeposite(self,card):#存款19.divide()20.info=存款\n21.print(info.center(50))22.cash=input(提示:存款金额为100的倍数,金额要求在100-10000之间\n)23.ifint(cash)%100==0andint(cash)0andint(cash)=10000:24.card.balance+=int(cash)25.info=存款成功\n26.print(info.center(50))27.print(\nThebalanceofthecard:%d%card.balance)28.else:29.info=存款失败\n30.print(info.center(50))31.divide()32.33.defwithdraw(self,card):#取款734.divide()35.info=取款\n36.print(info.center(50))37.options={1:'100',2:'200',3:'500',4:'其他金额'}38.forainoptions.items():39.print(a[0],a[1])40.choice=input('请选择:')41.if(int(choice)==1orint(choice)==2)andcard.balance=int(choice)*100:42.43.card.balance-=int(choice)*10044.info=取款成功\n45.print(info.center(50))46.elifint(choice)==3andcard.balance=500:47.card.balance-=50048.info=取款成功\n49.print(info.center(50))50.elifint(choice)==4:51.cash=input(\n提示:取款金额为100的倍数,且总额不超过5000元\n请52.输入你要取的金额:)53.ifint(cash)=100andint(cash)=5000:54.ifint(cash)%100==0andcard.balance=int(cash):55.card.balance-=int(cash)56.info=取款成功\n57.print(info.center(50))58.else:59.print('输入错误或卡内余额不足')60.else:61.print('输入错误或卡内余额不足')62.else:63.print('输入错误或卡内余额不足')64.65.66.print(\n\nThebalanceofthecard:%d%card.balance)67.divide()868.69.defmodify(self,card):#修改密码70.divide()71.info=修改密码\n72.print(info.center(50))73.inStr=input('请输入原密码:')74.ifinStr!=card.cardPWD:75.info=密码错误\n76.print(info.center(50))77.else:78.newPWD1=input('请输入新密码:')79.newPWD2=input('请再次输入新密码:')80.ifnewPWD1==newPWD2:81.card.cardPWD=newPWD182.info=\n密码修改成功,请牢记你的新密码\n83.print(info.center(50))84.else:85.info=\n密码不一致\n86.print(info.center(50))87.divide()88.89.defquery(self,card):#查询90.divide()91.info=查询成功\n92.print(info.center(50))93.print('银行卡信息'.center(50))94.print('%-10s%-10s%-10s%-10s'%('卡号','密码','姓名','余额'))95.print('%-11s%-11s%-11s%-11s'%(str(card.cardID),card.cardPWD,card.userNam96.e,str(card.balance)))97.divide()98.defrefundCard(self,card):#退卡99.divide()100.print('(假装把卡吐出来)')101.print('谢谢使用,请收好您的卡片')9102.divide()103.defdivide():104.print(\n--------------------------------------------------\n)105.definit():106.f=open('D:\\a.txt','w')107.info='''\108.1001123456张大白1000109.1002123456张二白2000110.1003123456张三白3000'''111.f.write(info)112.f.close()113.s=open('D:\\a.txt','r')114.print('银行卡信息'.center(50))115.print('%-10s%-10s%-10s%-10s'%('卡号','密码','姓名','余额'))116.forlineins.readlines():117.foriinrange(0,4):118.print('%-11s'%line.split()[i],end='')119.ifi==3:120.print()121.s.close122.divide()123.return124.defcreateCard():125.choice=input('请选择一张银行卡(1~3):');126.ifint(choice)==1:127.newcard=DepositCard(1001,'123456','张大白',1000)128.login(newcard)129.elifint(choice)==2:130.newcard=DepositCard(1002,'123456','张二白',2000)1
本文标题:python模拟银行ATM程序设计
链接地址:https://www.777doc.com/doc-4210891 .html