您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > C++模拟ATM机存取款管理系统设计
..温馨提示程序语言:C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)C++语言项:STL库(黑体标明表示使用C++的STL库)编译环境:Windows764位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:VisualC++6.0、DEVC++、CodeBlocks、VisualStudio2015均可通过编译。(浅蓝色字体表示需要运行修改后的版本,请用户自行选择源代码测试)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。2、代码行数:241行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、附录绝对包含用户使用手册及程序完整源代码和详细注释。5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。......《面向对象程序设计》课程设计报告书设计题目:模拟ATM机存取款管理系统设计指导老师:学生班级:学生学号:学生姓名:同组人员:时间:2017.12...课程设计任务书题目模拟ATM机存取款管理系统设计一、设计内容及要求(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(3)查询功能:实现查询余额功能。(4)更改密码:实现密码更改功能,对于密码要有2次验证。(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。二、设计原始资料三、设计完成后提交的成果及其相关资料。四、主要参考资料《c++程序设计(第二版)》五、进程安排12.25:类的设计12.26:模块4.2、4.3的设计12.27:模块4.4、4.5的设计12.28:完成课程设计报告..第一章概述使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。本文就以C++语言设计一项简单的模拟ATM柜员机程序。运行程序时,当输入给定的卡号和密码(初始卡号和密码都为123456)后,系统就能登录ATM柜员机系统,用户可以进入功能实现界面,有查询余额,取款,存款,修改密码等功能。设计要点:使用文本命令行界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:查询余额:初始余额为10000元ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。ATM存款:不能出现负存款。修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。..第二章设计内容2.1功能:设计一个模拟ATM柜员机的程序,输入你需要的操作(选择相对的括号里的阿拉伯数字)程序具体功能有:(1)查询余额(2)ATM取款(3)ATM存款(4)修改密码(5)退出系统2.2操作:本程序通过键盘操作。在运行过程中,当用户输入正确的账号和密码时,会出现一个功能界面,按照功能界面操作。只需输入所需操作的序号,便可执行其中相应的功能。但是需要小心的是如果输错密码三次,便会锁卡,这时将无法操作。..第三章总体设计3.1模块化设计为实现系统功能,本程序主要分为六个模块。它们分别为:主界面、查询余额、ATM取款、ATM存款、修改密码、退出系统。这六个函数再通过主函数调用分别得以实现。主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。其它各个函数的功能分别如下:ATM()构造函数face()构造函数checkout()检验卡号密码lock()锁卡checkmoney()查询余额getmoney()ATM取款savemoney()ATM存款change()修改密码exitsystem()退出系统show()打印界面..3.2程序运行示意图输入卡号、密码取款存款主界面查询余额修改密码退出系统..第四章详细设计4.1类的设计设计了两个类,ATM类和face类。ATM类完成ATM柜员机的模拟,包括:验证卡号密码,查询余额,修改密码,取款,存款,退出系统等功能。face类完成显示登陆界面的功能,显示查询余额,修改密码,取款,存款,退出系统的选项。ATM类的设计:classATM{protected:stringcard;stringpassword;floatmoney;staticinttimes;public:ATM(stringc,stringp,floatm)//构造函数{card=c;password=p;money=m;}intcheckout();//验证卡号密码voidlock();//锁卡voidcheckmoney();//查询余额voidgetmoney();//取款voidsavemoney();//存款..voidchange();//修改密码voidexitsystem();//退出系统};face类的设计classface:publicATM{protected:intx;public:face(stringc,stringp,floatm):ATM(c,p,m)//构造函数{}voidshow();//显示界面};4.2ATM柜员机的登陆在main主函数中实例化一个face类的对象,卡号密码都为123456,默认余额为10000.在程序运行中输入卡号密码,若都正确即可进入主界面,选择ATM柜员机的功能。程序运行首先要求用户输入卡号和密码,卡号和密码首先由main主函数构造默认,然后用checkout()函数判断卡号密码是否一致,一致则登陆,如果连续3次输入错误,则用lock()函数锁定卡号密码。相关代码:voidATM::lock(){if(times==3){..cout输入密码3次错误,该卡已被锁endl;exitsystem();}}intATM::checkout(){stringa;stringb;while(1){cout请输入您的卡号:;cina;cout请输入您的密码:;cinb;if(card!=a||password!=b){times++;lock();cout卡号或密码有误,请重新输入endl;}else{break;}}return1;}4.3ATM柜员机修改密码功能新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才能成功修改密码。输入正确卡号密码后,或者实现其他功能退回主界面后都可以选择柜员机的修改密码功能,在运行过程中先要求用户输入旧密码,判断用户输入的旧密码是否与默认密码相同,若相同则继续运行,若不..同则需要重新输入。验证旧密码正确后系统会要求用户定义新密码,新密码要重复输入两次,要求两次必须重复正确且新密码符合要求才能修改成功。相关代码:voidATM::change(){intcount=0,i,j,flag=1;stringsecondpassword;stringnewpassword;stringoldpassword;cout请输入旧密码:;cinoldpassword;if(password==oldpassword){cout请输入新密码:;cinnewpassword;if(newpassword.size()=6){for(i=0;inewpassword.size();i++){for(j=i+1;jnewpassword.size();j++){if(newpassword[i]==newpassword[j]){count++;}}}if(count6){while(flag){cout请再次输入新密码:;cinsecondpassword;if(newpassword==secondpassword){cout密码修改成功!endl;flag=0;}else{..cout两次密码输入不一样,请重新输入endl;flag=1;}}}else{cout修改密码失败,请重新修改endl;}}else{cout修改密码失败,请重新修改endl;}}else{cout修改密码失败,请重新修改endl;}}4.4ATM柜员机存款取款功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择取款,存款功能。取款功能要求用户输入取钱金额,取钱功能用if语句判断金额是否是100的倍数且金额是否大于5000或小于0,若符合要求,则顺利运行。用getmoney()函数实现更新用户余额,余额为账户余额减去取钱金额,当取钱成功时,系统会提示用户是否继续取钱,若输入“Y”则继续,若输入“N”则退回主界面,若输入其他字符则要重新输入。存款功能要求用户不能输入负值的金额,用if语句判断,若符合条件,则成功取款,并且用savemoney()函数更新余额,余额为账..户余额加上存款金额,当成功存款时,系统会提示是否继续存款,若输入“Y”则继续,若输入“N”则退回主界面,若输入其他字符则要重新输入。存款功能代码:voidATM::savemoney()//存款{charch;floatsave;//存入金额do{cout请输入存款金额:;cinsave;if(save0){cout存款金额有误,请重新输入endl;}else{cout正在存款中,请稍候......endl;money=money+save;cout交易成功!endl;}cout请问是否继续存款?(Y/N)endl;cinch;while(ch!='Y'&&ch!='N'){cout该操作无效,请重新输入:endl;cinch;}}while(ch=='Y');}取款功能代码:voidATM::getmoney()//取款{intget;//取款金额charch;do{..cout请输入取款金额:;cinget;if(get5000||get0||get%100!=0){cout支取金额有误,请重新输入endl;}elseif((money-get)0){cout对不起,您的余额不足,请重新输入endl;}else{cout正在取款中,请稍候......endl;money=money-get;cout取款成功!endl;}cout请问是否继续取款?(Y/N)endl;cinch;while(ch!='Y'&&ch!='N'){cout该操作无效,请重新输入:endl;cinch;}}while(ch=='Y');}4.5ATM柜员机查询余额功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择查询余额功能。余额主要调用checkmoney()函数。代码如下:voidATM::checkmoney()//查询余额{cout余额:moneyendl;cout查询余额成功!endl;}..第五章调试与测试5.1调试过程中的主要问题由于本程序的运行是当输入卡号密码成功后登陆主界面,在主界面中执行完一个功能后再次回到主界面进行操作,而程序大体上是没问题的,但是还是有一些小问题:当执行完存款或取款后,
本文标题:C++模拟ATM机存取款管理系统设计
链接地址:https://www.777doc.com/doc-5582080 .html