




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章综合项目-银行智能柜员系统《Python程序设计任务驱动教程》学习目标/Target
了解银行管理系统,能够说出银行管理系统包含的所有功能
熟悉模块的设计方式,能够根据银行管理系统的功能设计模块
熟悉类的设计方式,能够根据银行管理系统的功能设计类
掌握欢迎界面的样式,能够按照界面样式显示欢迎界面
掌握管理员登录的实现逻辑,能够实现管理员登录的功能学习目标/Target
掌握开户功能的实现逻辑,能够独立完成开户功能
掌握查询功能的实现逻辑,能够独立完成查询功能
掌握取款功能的实现逻辑,能够独立完成取款功能
掌握存款功能的实现逻辑,能够独立完成存款功能学习目标/Target
掌握锁定功能的实现逻辑,能够独立实现锁定功能
掌握解锁功能的实现逻辑,能够独立实现解锁功能
掌握退出系统功能的实现逻辑,能够独立实现退出系统功能
掌握转账功能的实现逻辑,能够独立完成转账功能章节概述/Summary随着计算机和网络技术的迅猛发展,管理信息系统被广泛运用于金融行业,逐步实现了银行管理系统。银行管理系统改变了传统银行人工办理日常业务的方式。它会调度ATM机辅助银行工作人员办理日常业务,这样不仅缩短了用户办理日常业务的时间,还简化了银行内部各项业务的流程。本章将通过13个任务逐步完成一个实用性的综合项目——银行智能柜员系统,引导大家在实际开发项目时灵活地应用面向对象思想,体会使用Python语言开发项目的乐趣。目录/Contents任务11-1搭建项目架构任务11-2设计类任务11-3显示欢迎界面任务11-4管理员登录任务11-5菜单选择目录/Contents任务11-6实现开户功能任务11-7实现查询功能任务11-8实现取款功能任务11-9实现存款功能目录/Contents任务11-11实现锁定功能任务11-12实现解锁功能任务11-13实现退出功能任务11-10实现转账功能搭建项目架构任务11-1任务描述银行智能柜员系统的使用流程银行智能柜员系统启动后会进入欢迎界面,之后管理员输入正确的账户与密码登录后进入功能菜单界面,该界面中展示了系统支持的所有功能。任务描述本任务要求根据上述银行智能柜员系统中涉及的角色及功能来划分模块,并使用PyCharm工具创建项目及模块,完成项目架构的搭建。【任务目标】任务分析我们可以从前面银行智能柜员系统的介绍中提炼出两个比较重要的角色,分别是系统和自动柜员机,除这两个角色外,银行智能柜员系统需要操作的对象还有管理员、用户和银行卡。系统自动柜员机管理员用户银行卡任务分析我们可以将每个角色封装为一个类,每个类对应一个模块,分别是bank_manager.py、atm.py、admin.py、user.py和card.py。bank_manager.py:封装智能柜员系统类。atm.py:封装ATM类。admin.py:封装管理员类。user.py:封装用户类。card.py:封装银行卡类。任务实现创建一个新的项目Chapter11。在Chapter11项目中创建bank_manager.py、atm.py、admin.py、user.py和card.py模块。实现步骤设计类任务11-2任务描述银行智能柜员系统涉及5种对象,分别是系统、自动柜员机、管理员、用户和银行卡,每种对象有着各自的特征和行为。本任务要求根据系统、自动柜员机、管理员、用户和银行卡的特征和行为设计类,并编写代码定义类。【任务目标】任务分析1.系统(BankManager)特征:所有用户的信息、自动柜员机、管理员行为:存盘、启动、退出任务分析2.自动柜员机(ATM)特征:所有用户的信息行为:开户、随机生成卡号、查询、校验密码、取款、存款、转账、锁定、解锁任务分析3.管理员(Admin)特征:账户、密码行为:显示欢迎界面、显示功能菜单、核对账户与密码任务分析4.用户(User)特征:用户名、用户id、手机号、银行卡行为:无5.银行卡(Card)特征:卡号、卡密码、卡金额、锁定状态行为:无任务实现在card.py文件中定义Card类。在user.py文件中定义User类。在admin.py文件中定义Admin类。在atm.py文件中定义ATM类。在bank_manager.py文件中定义BankManager类。实现步骤显示欢迎界面任务11-3任务描述银行智能柜员系统的欢迎界面银行智能柜员系统的欢迎界面相对简单一些,没有酷炫的图片效果,只包含一些简单的边框和文字。任务描述本任务要求编写代码,使Chapter11项目能够显示欢迎界面。【任务目标】任务分析共7行文本内容任务分析45个*号45个*号任务分析6个*号和若干个空格任务分析6个*号、若干个空格和汉字“欢迎登录银行系统”我们可以根据这些特点将每一行文本内容作为字符串的内容,通过多个print()函数将包含每行内容的字符串输出到控制台上。任务实现在Admin类的print_admin_view()方法中编写代码,实现显示欢迎界面的功能。在bank_manager.py文件的work()方法中增加调用print_admin_view()方法的代码。在bank_manager.py文件的末尾位置增加调用work()方法的代码。运行bank_manager.py文件。实现步骤管理员登录任务11-4任务描述管理员登录成功与登录失败在智能柜员系统启动后会要求管理员进行登录,登录成功后才会展示功能菜单,登录失败会关闭系统。任务描述本任务要求编写代码,实现管理员登录时符合以上逻辑的核对账户与密码的功能。【任务目标】任务分析我们可以通过两个if语句分别对管理员账户和密码进行判断,若管理员账户正确再继续判断密码。为了区分登录成功与登录失败两种状态,我们可以为这两种状态指定状态值,如果状态值为0,也就是说布尔值为False,则说明登录成功;如果状态值为-1,也就是说布尔值为True,则说明登录失败。实现思路任务实现在check_option()方法中增加核对管理员账户与密码的逻辑代码。在bank_manager.py文件的work()方法的末尾调用check_option()方法。在bank_manager.py文件的work()方法的末尾增加测试代码,对result的值进行处理。运行bank_manager.py文件。实现步骤需要注意的是,测试完成后需要注释或删除测试代码,避免影响后面的输出结果。菜单选择任务11-5任务描述功能菜单界面在智能柜员系统中,管理员成功登录后会进入功能菜单界面,展示该系统支持的全部功能。任务描述本任务要求编写代码,实现符合前文要求的菜单选择功能。【任务目标】任务分析展示功能菜单界面。我们可以通过多个print()函数完成,每个函数负责输出功能菜单界面中的一行文本内容。判断用户输入选项。用户从键盘输入的选项包含两种以上的情况,我们需要通过if-elif语句完成判断并执行相关逻辑。实现思路任务实现在Admin类的print_func_view()方法中,增加打印功能菜单界面的代码。在BankManager类中work()方法的末尾位置增加代码,用于重复展示功能菜单,并根据用户输入的选项执行相应的操作。运行bank_manager.py文件。实现步骤实现开户功能任务11-6任务描述开户的操作流程在智能柜员系统中,用户根据功能菜单界面的提示输入1后,会执行开户功能。任务描述当用户输入的信息符合系统要求后,会获得一个随机生成的6位卡号。本任务要求编写代码,实现符合前文逻辑的开户功能。【任务目标】任务分析当输入的信息为密码或预存金额时,对密码或预存金额进行判断,此操作可以通过if语句完成。6位卡号的每个字符都是数字,此操作可以借助random模块生成随机数,随机数的范围为0~9。为了避免卡号重复,我们需要将新生成的卡号与其他用户的卡号进行比较,只要与所有其他用户的卡号都不同就将生成新的卡号分配给当前用户。实现思路任务实现在ATM类中分别导入User类、Card类和random模块。在ATM类中完善create_user()方法。在ATM类中完善random_card_id()方法,用于生成随机6位卡号。在BankManager类的work()方法中找到编号为1的分支,在该分支下增加调用create_user()方法的代码。运行bank_manager.py文件。实现步骤实现查询功能任务11-7任务描述查询的操作流程智能柜员系统中,用户根据功能菜单界面的提示从键盘输入2后,会让系统执行查询功能,查看指定卡内余额。任务描述本任务要求编写代码,实现符合以上逻辑的查询功能。【任务目标】任务分析我们需要对用户输入的内容分三种情况进行判断,前两种情况可以通过if语句进行判断,若判断条件不成立,则程序会执行第三种情况。密码校验操作在查询、存款、取款、转账等功能中都会涉及,因此可以将这个操作封装成单独的函数,便于在程序的多个地方重复使用。实现思路任务实现在ATM类中完善check_pwd()方法,使用户最多可输错3次密码。在ATM类中完善search_user()方法,用于查询卡号上的余额。在BankManager类的work()方法中找到编号为2的分支,在该分支下增加调用search_user()方法的代码。运行bank_manager.py文件。实现步骤实现取款功能任务11-8任务描述取款的操作流程在智能柜员系统中,用户根据功能菜单界面的提示从键盘输入3后,会让系统执行取款功能。任务描述本任务要求读者编写代码,实现符合以上逻辑的取款功能。【任务目标】任务分析调用search_user()方法校验用户的卡号与密码。取款金额分两种情况:取款金额大于卡余额和取款金额小于卡余额,第一种情况可以通过if语句进行判断,判断条件不成立,便会执行第二种情况。为了保证程序在满足第一种情况时不再继续向下执行,而是直接终止取款操作,可以在if语句的末尾通过return语句返回-1。实现思路任务实现在ATM类中完善get_money()方法,在该方法中对用户从键盘输入的卡号、密码和取款金额进行校验。在BankManager类的work()方法中找到编号为3的分支,在该分支下增加调用get_money()方法的代码。运行bank_manager.py文件。实现步骤实现存款功能任务11-9任务描述存款的操作流程在智能柜员系统中,用户根据功能菜单界面的提示从键盘输入编号4之后,便会让系统执行存款功能。任务描述本任务要求读者编写代码,实现符合以上逻辑的存款功能。【任务目标】任务分析调用search_user()方法校验用户的卡号与密码。存款金额分两种情况:存款金额小于0和存款金额大于或等于0,这两种情况可以通过if-else语句进行判断。实现思路任务实现在ATM类中完善save_money()方法,在该方法中依次对用户输入的卡号、密码和存款金额进行判断,它们符合要求后进行金额累加操作。在BankManager类的work()方法中找到编号为4的分支,在该分支下增加调用save_money()方法的代码。运行bank_manager.py文件。实现步骤实现转账功能任务11-10任务描述转账的操作流程在智能柜员系统中,用户根据功能菜单界面的提示输入5之后,系统会执行转账功能。任务描述本任务要求读者编写代码,实现符合以上逻辑的转账功能。【任务目标】任务分析我们若希望复用查询功能的代码,需要在查询功能的方法中定义一个变量base,用于区分转出主卡号、转入卡号和查询功能的提示信息。base值为1获取用户输入的提示信息为“请输入您的卡号:”base值为2获取用户输入的提示信息为“请输入转出主卡号:”base值为3获取用户输入的提示信息为“请输入转入卡号:”我们在输出卡号余额的提示信息时,也需要单独处理base的值为3的情况。任务分析校验转出卡号与密码。校验转入卡号与密码。判断卡号余额是否大于或等于转账金额。确认用户是否转账。实现思路任务实现在ATM类中修改search_user()方法。在ATM类中完善transfer_money()方法。在BankManager类的work()方法中找到编号为5的分支,在该分支下增加调用transfer_money()方法的代码。运行bank_manager.py文件。实现步骤实现锁定功能任务11-11任务描述锁定的操作流程在智能柜员系统中,用户根据功能菜单界面的提示输入数字6之后,系统会执行锁定功能。任务描述本任务要求读者编写代码,实现符合以上逻辑的锁定功能。【任务目标】任务分析观察任务描述中锁定功能的操作流程可知,系统会对用户输入的内容分以下四种情况进行处理:(1)用户从键盘输入了不存在的卡号,输出提示信息并中止锁定操作。(2)用户输入的卡号处于锁定状态,输出提示信息并中止锁定操作。(3)用户连续三次输入错误的密码,输出提示信息并中止锁定操作。(4)如果用户输入的卡号正确、卡号未锁定、密码正确,则重置卡号为锁定状态。实现思路任务分析系统会对用户输入的内容分4种情况进行处理,前3种情况可以通过if语句进行判断,判断条件均不成立,便会按第4种情况进行处理。我们需要在每个分支下通过return返回-1。我们需要在查询功能内部增加判断卡号的操作,这样一来,存款、取款、转账功能都会具有判断卡号的操作。实现思路任务实现在ATM类中完善lock_card()方法。修改ATM类的search_user()方法,在该方法中增加判断卡号状态的代码。在BankManager类的work()方法中找到编号为6的分支,在该分支下增加调用lock_card()方法的代码。运行bank_manager.py文件。实现步骤实现解锁功能任务11-12任务描述解锁的操作流程在智能柜员系统中,用户根据功能菜单界面的提示输入数字7之后,系统会执行解锁功能。任务描述本任务要求读者编写代码,实现符合以上逻辑的解锁功能。【任务目标】任务分析观察任务描述中解锁功能的操作流程可知,系统会对用户输入的内容分以下几种情况进行处理:(1)用户从键盘输入了不存在的卡号,输出解锁失败的提示信息并中止解锁操作。(2)用户输入的卡号处于未锁定状态,输出无需解锁的提示信息并中止解锁操作。(3)用户连续三次输入错误的密码,输出解锁失败的提示信息并中止解锁操作。(4)用户从键盘输入正确的卡号与密码,且卡号已锁定,则重置卡号为非锁定状态。实现思路任务分析系统会对用户输入的内容分4种情况处理,前3种情况可以通过if-elif语句进行判断,判断条件均不成立,便会按第4种情况处理。我们可以在分支下使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无痛胃镜全麻护理常规
- 《你的知识需要管理》读书笔记
- 肛瘘病人护理课程
- 2025年中国机螺钉市场调查研究报告
- 2025年中国塑钢密封毛条市场调查研究报告
- 2025年中国五开光绣墩市场调查研究报告
- 中医个案护理
- 大学植物细胞工程
- 男装货品培训
- 2025至2030年中国黄铜管铆钉行业发展研究报告
- 水生生物学课件 第1章 原生动物
- 陕西省汉中市各县区乡镇行政村村庄村名居民村民委员会明细
- 中考赏析句子答题技巧课件
- 专职安全安全员委派书(新)
- 2022年公务员年度考核测评表
- 2022届高考英语考前最后一课课件(10张)
- 军事地形学地形图基本知识
- 根轨迹法(自动控制原理)PPT课件
- 工程力学作图题计算题(共63页)
- 全国节能监察机构能力建设仪器装备配置指南
- 工程实体样板实施方案
评论
0/150
提交评论