C++模拟ATM机存取款管理系统设计_第1页
C++模拟ATM机存取款管理系统设计_第2页
C++模拟ATM机存取款管理系统设计_第3页
C++模拟ATM机存取款管理系统设计_第4页
C++模拟ATM机存取款管理系统设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式整理温馨提示程序语言:C、C+、C#、Python (红色字体表示本课设使用的 程序设计语言 )图形功能选项:Win 32控制台程序(黑框、文本界面)、Win 32程序、MFC、Win Form、DirectXIO(黑体标明表示本课设的 程序图形类别,默认为 非图形界面 Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明 表示本课设使用的数据结构)C+语言项:STL库(黑体标明 表示使用 C+的STL库)编译环境:Windows 7 64 位旗舰版(Linux及其他环境 请谨慎下载

2、)集成开发环境: Visual C+ 6.0、DEVC+、CodeBlocks、Visual Studio 2015 均可通过编译。(浅蓝色字体 表示需要运行修改后的版本,请用户自行选择源代码测试)分多头文件 编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、 课设题目及预览内容将在第二页开始展示。2、代码行数: 241行3、 目录 所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、 附录 绝对包含 用户使用手册 及程序完整源代码和详细注释。5、 如需下载 其他 头文件(例如 DirectX需另行配置),本文会在此进行说明。6、 本文撰写内容

3、仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。专业资料<烟孝>-nn?rB J二«vWTHllcln-;l« Mu Ffcj j>I*t<rlfTlH值翼* It<H茫讯 li匚烘乂 障赋 宀昭Y Mdt.«n V lJ3wt<-If劉张理Qo»ri 1 *EM ws?u fffhfi 1JL*=-n-nnyViTlofl-闻*-i *fl.#:二41一 .1Pt'、f »pJ*(16*VfVW < U4>UI»ai )«

4、<4hffi*Q J 曲3f W88 fin OS £WH s<w 8t o 0<u?,*»£ :1: 二一 gtt卜 M «|0 -49iu *iw tiw i专i-Qo»WORD格式整理面向对象程序设计课程设计报告书设计题目:模拟_ATM_机存取款管理系统设计指导老师: 学生班级:学生学号:学生姓名:同组人员:时间:2017.12.专业资料WORD格式整理课程设计任务书题目模拟ATM机存取款管理系统设计一、设计内容及要求(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机

5、当前 剩余金额的限制。(3)查询功能:实现查询余额功能。(4) 更改密码:实现密码更改功能,对于密码要有2次验证(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。1、设计原始资料、设计完成后提交的成果及其相关资料四、主要参考资料C+程序设计(第二版)五、进程安排12.25 :类的设计12.26 :模块4.2、4.3的设计12.27 :模块4.4、4.5的设计12.28 :完成课程设计报告第一章概述使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。本文就以C+语言设计一项简单的模拟ATM柜员机程序。运行

6、程序时,当输入给定的卡号和密码(初始卡号和密码都为123456 )后,系统就能登录 ATM柜员机系统,用户可以进入功能实现 界面,有查询余额,取款,存款,修改密码等功能。设计要点:使用文本命令行界面。当输入给定的卡号和密码(初始卡号和密码为 123456 )时,系统能登录 ATM柜员机系统,用户可以按 照以下规则进行:查询余额:初始余额为10000元ATM取款:每次取款金额为100的倍数,总额不超过 5000元,支取金额不允许透支。ATM存款:不能出现负存款。修改密码:新密码长度不小于 6位,不允许出现6位完全相同的情况, 只有旧密码正确, 新密码符合要求,且两次输入相同的情况下才可以成功修改

7、密码。第二章设计内容12.29功能:设计一个模拟 ATM柜员机的程序,输入你需要的操作(选择相对的括号里的阿拉伯数字)程序具体功能有:(1)查询余额(2)ATM取款(3)ATM存款(4)修改密码(5)退出系统12.30操作:本程序通过键盘操作。在运行过程中, 当用户输入正确的账号和密码时,会出现一个功能界面,按照功能界面操作。只需输入所需操 作的序号,便可执行其中相应的功能。但是需要小心的是如果输错密码三次,便会锁卡,这时将无法操作。第二章总体设计12.31模块化设计为实现系统功能,本程序主要分为六个模块。它们分别为:主界面、查询余额、 ATM取款、ATM存款、修改密码、退出系统。这六个 函数

8、再通过主函数调用分别得以实现。主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。然后,通过执行多分支选择语句 一一 switch 语句,分别实现其 它各个函数的调用功能。其它各个函数的功能分别如下:ATM()构造函数face()构造函数checkout。检验卡号密码lock()锁卡checkm on ey()查询余额getm on ey()ATM取款savem on ey()ATM存款cha nge()修改密码exitsystem()退出系统show()打印界面4专业资料WORD格式整理12.32程序运行示意图专业资料主界面T取款存款WORD格式整理第四章详细设计12.33类的设计设

9、计了两个类,ATM类和face类。ATM类完成ATM柜员机的模拟, 包括:验证卡号密码,查询余额,修改密码,取款,存款,退出系统 等功能。face类完成显示登陆界面的功能,显示查询余额,修改密 码,取款,存款,退出系统的选项 。ATM类的设计:class ATMprotectedstri ngcard;stri ngpassword;float mon ey;static int times;public :ATM(stringc, stringp, floatm) 构造函数card= c;password=p;mon ey=m;.int checkout。;/验证卡号密码void lock(

10、);/ / 锁卡void checkmoney();查询余额void getmoney();/取款void savemoney();/存款void change();修改密码void exitsystem();退出系统;face类的设计class face : public ATMprotected :int x;public :face( stringc, stringp, float m): ATM( c, p, m) 构造函数void show();显示界面;12.34 ATM柜员机的登陆在main主函数中实例化一个face类的对象,卡号密码都为123456,默认余额为10000.在程序

11、运行中输入卡号密码,若都正确即可进入主界面,选择ATM柜员机的功能。程序运行首先要求用户输入卡号和密码,卡号和密码首先由main主函数构造默认,然后用checkout ()函数判断卡号密码是否一致,一致则登陆,如果连续3次输入错误,则用 lock ()函数锁定卡号密码。相关代码:void ATM:lock()if (times=3)coutvv "输入密码3次错误,该卡已被锁"<<endl;exitsystem();int ATM:checkout()stri nga;stri ngb;while (1)coutvv "请输入您的卡号:" c

12、in> >a;coutvv "请输入您的密码:" cin> >b;if (card!=a|password!=b)times+;lock();coutvv "卡号或密码有误,请重新输入"<<e ndl;else break ;return 1;12.35 ATM柜员机修改密码功能新密码长度不小于 6位,不允许出现 6位完全相同的情况,只有 旧密码正确,新密码符合要求, 且两次输入相同的情况下才能成功修 改密码。输入正确卡号密码后,或者实现其他功能退回主界面后都可以选择柜员机的修改密码功能, 在运行过程中先要求用户输入旧

13、密码,判断用户输入的旧密码是否与默认密码相同,若相同则继续运行, 若不9专业资料WORD格式整理同则需要重新输入。验证旧密码正确后系统会要求用户定义新密码, 新密码要重复输入两次,要求两次必须重复正确且新密码符合要求才能修改成功。相关代码:void ATM:cha nge()int count=O,i,j,flag=1;stri ngsec on dpassword;stri ngn ewpassword;stri ngoldpassword;cout<< "请输入旧密码:"cin>> oldpassword;if (password=oldpass

14、word)cout<< "请输入新密码:"cin>>n ewpassword;if (newpassword.size()>=6)for (i=0;i<newpassword.size();i+)for (j=i+1;j <n ewpassword.size();j+)if (newpasswordi=newpassword。)count+;if (count<6)while (flag) cout<< "请再次输入新密码:"cin> >sec on dpassword;if (ne

15、wpassword=secondpassword)cout<< "密码修改成功!" <<endl;flag=0; elsecoutvv "两次密码输入不一样,请重新输入"<<endl;flag=1;elsecoutvv "修改密码失败,请重新修改"<<e ndl;elsecoutvv "修改密码失败,请重新修改"<<e ndl;elsecoutvv "修改密码失败,请重新修改"<<e ndl;12.36 ATM柜员机存款取款

16、功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择取款,存款功能。取款功能要求用户输入取钱金额,取钱功能用if语句判断金额是否是100的倍数且金额是否大于5000或小于0,若符合要求,则顺利运行。用getmoney()函数实现更新用户余额,余额为账户余额减去取钱金额,当取钱成功时,系统会提示用户是否继续取钱,若输入“ 丫”则继续,若输入“ N”则退回主界面,若输入其他字符则要重新 输入。存款功能要求用户不能输入负值的金额,用if语句判断,若符合条件,则成功取款,并且用savemo ney ()函数更新余额,余额为账 户余额加上存款金额,当成功存款时,系统会提示是否继续存款,若 输入“Y

17、”则继续,若输入“ N则退回主界面,若输入其他字符则要 重新输入。存款功能代码:void ATM:savemo ney() 存款char ch;float save;/ 存入金额docoutvv "请输入存款金额:"cin> >save;if (save<0)coutvv "存款金额有误,请重新输入"<<e ndl;elsecoutvv "正在存款中,请稍候 "<<e ndl;mon ey=mon ey+save;coutvv "交易成功!" <<endl;co

18、utvv "请问是否继续存款?(丫/N)" vvendl;cin> >ch;while (ch!= 'Y' &&ch!='N')coutvv "该操作无效,请重新输入:" vve ndl;一cin> >ch; while (ch= 'Y');取款功能代码:void ATM:getmo ney() 取款int get;/ 一取款金额char ch;doCOUtVV "请输入取款金额:"cin> >ge t;if (get>5000|

19、get<0|get%100!=0)coutvv "支取金额有误,请重新输入"<<e ndl;else if (money-get)<0)cout<< "对不起,您的余额不足,请重新输入"<<e ndl;elsecout<< "正在取款中,请稍候 "<<e ndl;mon ey=mon ey-ge t;cout<< "取款成功!" <<endl;cout<< "请问是否继续取款?(丫/N)"

20、 <<endl;cin> >ch;while (ch!= 'Y' &&ch!='N')cout<< "该操作无效,请重新输入:"<<e ndl;cin> >ch; while (ch= 'Y');12.37 ATM柜员机查询余额功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择查询余额功能。余额主要调用 checkmoney() 函数。代码如下:void ATM:checkmo ney() 查询余额coutvv "余额:"v

21、vmon ey<<e ndl;cout<< "查询余额成功!" <<e ndl;第五章调试与测试12.38调试过程中的主要问题由于本程序的运行是当输入卡号密码成功后登陆主界面,在主界面中执行完一个功能后再次回到主界面进行操作,而程序大体上是没问题的,但是还是有一些小问题:当执行完存款或取款后,没有提示是否继续执行此操作,而是直接退回主界面,这是一处不善人意的地方,但是经过修改,已将此功 能加入程序。12.39具体测试过程(1)检验卡号密码(如下图)(2)卡号密码输入成功(如下图)28专业资料请输入您的卡号:123 请输入您的呈*>

22、* %人r 人.亠1.查询余额°, ATM取款ATM存款修改密码6退出* 2主给1你I冃制人忠z34o6c C A U/ o400卡73半二 tm;ffi?多長査询的信息:号密码输入有误(如下图)(4 )查询余额(如下图)JLp1-lgJgl MJ/*1"JL"平平平平平千下不平平平平不下矛平平审c千于要查询的信息:1余额:10000-La 甘rnj尹 -=I才 -"丿产 =l卢 匕1-.亠申.比上 _Ll ->丿”七1上 卢电1孑 岂I, =_L亠 J“ iLb .丸申平平平干平平千平平千平平平平平平平干平平千予平千于 Air "3F

23、.1入您需要查信息:(5) ATM取款成功(如下图)(6) ATM取款不成功(如下图)ATM存款成功(如下图)(8) ATM存款不成功(如下图)(9)修改密码成功(如下图)(10)修改密码失败(如下图)第六章心得体会经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了 解到了 C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打 下了坚实的基础。在为期近两周的 C+课程设计中,我体会颇多,学到了很多东西。我加强了对 C+程序设计这门课程的认识,并且复习了自己以前学习到的 知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己

24、以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们 挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在VisualC+中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助, 教会了我编译复杂程序的方法。在老师和同学的帮助下, 通过自己的努力, 终于完成了这次职工信息表的简 单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始 的选择程序、理解程序到后来的调试

25、程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服 重重困难。通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前, 要有明确的目标和整体的设计思想。 另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改

26、进了一番改进,并有创新。但是我感觉自己的创新还不够典型, 总之还不是很满意。 另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!附录用户使用手册1、卡号:123456 密码:1234562、根据提示,输入指定内容即可。程序源代码#i nclude "stdafx.h"#i nclude<iostream>

27、#in clude<stri ng>#in clude<vector>#i ncludevconi o.h>#in clude<ioma nip>#in clude<Win dows.h>#pragma warning ( disable :4996)usingnamespace std;/*class ATMprotected :stri ngcard;stri ngpassword;floatmon ey;static int times;public : class face : public ATMATM(stringc,strin

28、gp, floatm) :card(c), password(p), money( m) 函数intcheckout。;/验证卡号密码voidlock();/ 锁卡voidcheckmoney();II 查询余额voidgetmoney();II 取款voidsavemoney();II 存款voidchange();II修改密码;voidexitsystem();II 退出系统intATM:times = 0;/构造protected :int x;/构造函数publicface( stringc, stringp, float m) : ATM( c, p, m) void show();

29、 / 显示界面;voidface:show()cout<<endlvv "*"cout<<"1.查询余额"vv endl;cout<<"2.ATM 取款"<< endl;cout<<"3.ATM 存款"<< endl;cout<<"4.修改密码"<< endl;cout<<"5.退出"<< endl;cout<<H*“cout<<&q

30、uot;请输入您需要查询的信息:<< en dl;<< en dl;voidATM:lock()if(times = 3)cout << "输入密码3次错误,该卡已被锁"<< en dl;exitsystem();intATM:checkout()stri ngstri nga;b;while(1)cout<<请输入您的卡号:"cin>> a;cout<<请输入您的密码:"cin>> b;if (card!= a | password!= b)times+;l

31、ock();cout << "卡号或密码有误,请重新输入"<< endl;elsebreak ;WORD格式整理35专业资料retur n1; void ATM:cha nge()int count = 0, i, j, flag = 1;stri ngsec on dpassword;stri ngn ewpassword;stri ngoldpassword;cout<< "请输入旧密码cin>> oldpassword;if (password = oldpassword)cout << "

32、;请输入新密码:";cin >> n ewpassword;if (newpassword.size() >= 6)for (i = 0; i<n ewpassword.size(); i+)for (j = i + 1; j<newpassword.size(); j+)if (n ewpassword i = n ewpassword j )coun t+;if (cou nt<6)while (flag)cout << "请再次输入新密码:"cin>> sec on dpassword;if (n

33、ewpassword = sec on dpassword)cout << "密码修改成功!"<< endl;flag = 0;elseendl;cout << "两次密码输入不一样,请重新输入” VVflag = 1;elsecout << "修改密码失败,请重新修改 ” << endl;elsecout << "修改密码失败,请重新修改” << endl;elsecout << "修改密码失败,请重新修改” << endl;

34、void ATM:exitsystem()exit(0);void ATM:savemoney() / 存款char ch;float save; /存入金额docout << "请输入存款金额:"cin >> save;if (save<0)cout << "存款金额有误,请重新输入” << endl;elsecout << "正在存款中,请稍候 ”<< endl;money = money + save;cout << "交易成功!"<

35、< endl;cout << "请问是否继续存款?(Y/N)"<< endl;cin >> ch;while (ch !='Y' &&ch !='y' &&ch !='n' &&ch !='N')cout « "该操作无效,请重新输入:"« endl;cin >> ch; while (ch ='Y'|'y'= ch);voidATM:ge

36、tmoney()/ 取款int get; /取款金额char ch;docout << "请输入取款金额:"cin >> get;if (get>5000 | get<0 | get % 100 != 0)cout << "支取金额有误,请重新输入” << endl;else if (money - get)<0)cout << "对不起,您的余额不足,请重新输入” << endl;elsecout<< "正在取款中,请稍候 ”<< endl;money=money - get; coutcout« "取款成功!"<< en dl;<< "请问是否继续取款?(Y /N)"<< endl;cin>> ch;while(ch !='Y' &&ch !='y' &&ch !='n' &&ch !='N')cout « &qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论