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

下载本文档

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

文档简介

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

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

3、和纰漏,恳请各位老师或同学批评指正。面向对象程序设计课程设计报告书 设计题目: 模拟ATM机存取款管理系统设计 指导老师: 学生班级: 学生学号: 学生姓名: 同组人员: 时 间: 2017.12. 课 程 设 计 任 务 书题 目 模拟ATM机存取款管理系统设计一、设计内容及要求(1)卡号、密码输入最多三次,否则直接退出系统。(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。(3)查询功能:实现查询余额功能。(4)更改密码:实现密码更改功能,对于密码要有2次验证。(5)锁卡功能:实现卡被锁的功能。(6)退卡功能:实现退出系统功能。二、设计原始资料 三、设计完成后提交

4、的成果及其相关资料。 四、主要参考资料 c+程序设计(第二版) 五、进程安排12.25:类的设计12.26:模块4.2、4.3的设计12.27:模块4.4、4.5的设计12.28:完成课程设计报告 第一章 概述 使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。本文就以C+语言设计一项简单的模拟ATM柜员机程序。运行程序时,当输入给定的卡号和密码(初始卡号和密码都为)后,系统就能登录ATM柜员机系统,用户可以进入功能实现界面,有查询余额,取款,存款,修改密码等功能。设计要点:使用文本命令行界面。当输入给定的卡号和密码(

5、初始卡号和密码为)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:l 查询余额:初始余额为10000元l ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。l ATM存款:不能出现负存款。修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 第二章 设计内容2.1功能:设计一个模拟ATM柜员机的程序,输入你需要的操作(选择相对的括号里的阿拉伯数字)程序具体功能有:(1) 查询余额(2) ATM取款(3) ATM存款(4) 修改密码(5) 退出系统2.2 操作:本程序通过

6、键盘操作。在运行过程中,当用户输入正确的账号和密码时,会出现一个功能界面,按照功能界面操作。只需输入所需操作的序号,便可执行其中相应的功能。但是需要小心的是如果输错密码三次,便会锁卡,这时将无法操作。 第三章 总体设计3.1模块化设计为实现系统功能,本程序主要分为六个模块。它们分别为:主界面、查询余额、ATM取款、ATM存款、修改密码、退出系统。这六个函数再通过主函数调用分别得以实现。主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。然后,通过执行多分支选择语句switch语句,分别实现其它各个函数的调用功能。其它各个函数的功能分别如下:ATM() 构造函数face() 构造函数ch

7、eckout() 检验卡号密码lock() 锁卡checkmoney() 查询余额getmoney() ATM取款savemoney() ATM存款change() 修改密码exitsystem() 退出系统show() 打印界面3.2程序运行示意图输入卡号、密码取款存款主界面查询余额修改密码退出系统 第四章 详细设计4.1类的设计 设计了两个类,ATM类和face类。ATM类完成ATM柜员机的模拟,包括:验证卡号密码,查询余额,修改密码,取款,存款,退出系统等功能。face类完成显示登陆界面的功能,显示查询余额,修改密码,取款,存款,退出系统的选项。ATM类的设计:class ATMprot

8、ected:string card;string password;float money;static int times;public:ATM(string c,string p,float m)/构造函数card=c;password=p;money=m;int checkout();/验证卡号密码void lock();/锁卡void checkmoney();/查询余额void getmoney();/取款void savemoney();/存款void change();/修改密码void exitsystem();/退出系统;face类的设计class face:public A

9、TMprotected:int x;public:face(string c,string p,float m):ATM(c,p,m)/构造函数void show();/显示界面;4.2 ATM柜员机的登陆在main主函数中实例化一个face类的对象,卡号密码都为,默认余额为10000.在程序运行中输入卡号密码,若都正确即可进入主界面,选择ATM柜员机的功能。程序运行首先要求用户输入卡号和密码,卡号和密码首先由main主函数构造默认,然后用checkout()函数判断卡号密码是否一致,一致则登陆,如果连续3次输入错误,则用lock()函数锁定卡号密码。相关代码:void ATM:lock()i

10、f(times=3)cout输入密码3次错误,该卡已被锁endl;exitsystem();int ATM:checkout()string a;string b;while(1)couta;coutb;if(card!=a|password!=b)times+;lock();cout卡号或密码有误,请重新输入endl;elsebreak;return 1;4.3 ATM柜员机修改密码功能新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才能成功修改密码。输入正确卡号密码后,或者实现其他功能退回主界面后都可以选择柜员机的修改密码功能,在运

11、行过程中先要求用户输入旧密码,判断用户输入的旧密码是否与默认密码相同,若相同则继续运行,若不同则需要重新输入。验证旧密码正确后系统会要求用户定义新密码,新密码要重复输入两次,要求两次必须重复正确且新密码符合要求才能修改成功。相关代码:void ATM:change()int count=0,i,j,flag=1;string secondpassword;string newpassword;string oldpassword;coutoldpassword;if(password=oldpassword)coutnewpassword;if(newpassword.size()=6)for

12、(i=0;inewpassword.size();i+)for(j=i+1;jnewpassword.size();j+)if(newpasswordi=newpasswordj)count+;if(count6)while(flag)coutsecondpassword;if(newpassword=secondpassword)cout密码修改成功!endl;flag=0;elsecout两次密码输入不一样,请重新输入endl;flag=1;elsecout修改密码失败,请重新修改endl;elsecout修改密码失败,请重新修改endl;elsecout修改密码失败,请重新修改endl;

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

14、存款,若输入“Y”则继续,若输入“N”则退回主界面,若输入其他字符则要重新输入。存款功能代码:void ATM:savemoney()/存款char ch;float save;/存入金额docoutsave;if(save0)cout存款金额有误,请重新输入endl;elsecout正在存款中,请稍候.endl;money=money+save;cout交易成功!endl;cout请问是否继续存款?(Y/N)ch;while(ch!=Y&ch!=N)cout该操作无效,请重新输入:ch;while(ch=Y); 取款功能代码:void ATM:getmoney()/取款int get;/取款

15、金额char ch;docoutget;if(get5000|get0|get%100!=0)cout支取金额有误,请重新输入endl;else if(money-get)0)cout对不起,您的余额不足,请重新输入endl;elsecout正在取款中,请稍候.endl;money=money-get;cout取款成功!endl;cout请问是否继续取款?(Y/N)ch;while(ch!=Y&ch!=N)cout该操作无效,请重新输入:ch;while(ch=Y);4.5 ATM柜员机查询余额功能输入正确卡号密码后,即可登录柜员机主界面,其中可以选择查询余额功能。余额主要调用checkmon

16、ey()函数。代码如下:void ATM:checkmoney()/查询余额cout余额:moneyendl;cout查询余额成功!endl; 第五章调试与测试5.1调试过程中的主要问题由于本程序的运行是当输入卡号密码成功后登陆主界面,在主界面中执行完一个功能后再次回到主界面进行操作,而程序大体上是没问题的,但是还是有一些小问题:当执行完存款或取款后,没有提示是否继续执行此操作,而是直接退回主界面,这是一处不善人意的地方,但是经过修改,已将此功能加入程序。5.2具体测试过程(1) 检验卡号密码(如下图)(2)卡号密码输入成功(如下图)(3)卡号密码输入有误(如下图)(4)查询余额(如下图)(5

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

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

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

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

21、 warning (disable:4996)using namespace std;/* 类 */class ATMprotected:string card;string password;float money;static int times;public:ATM(string c, string p, float m) :card(c), password(p), money(m) /构造函数int checkout();/验证卡号密码void lock();/锁卡void checkmoney();/查询余额void getmoney();/取款void savemoney();/

22、存款void change();/修改密码void exitsystem();/退出系统;int ATM:times = 0;class face :public ATMprotected:int x;public:face(string c, string p, float m) :ATM(c, p, m) /构造函数void show();/显示界面;void face:show()cout endl * endl;cout 1.查询余额 endl;cout 2.ATM取款 endl;cout 3.ATM存款 endl;cout 4.修改密码 endl;cout 5.退出 endl;cou

23、t * endl;cout 请输入您需要查询的信息:;void ATM:lock()if (times = 3)cout 输入密码3次错误,该卡已被锁 endl;exitsystem();int ATM:checkout()string a;string b;while (1)cout a;cout b;if (card != a | password != b)times+;lock();cout 卡号或密码有误,请重新输入 endl;elsebreak;return 1;void ATM:change()int count = 0, i, j, flag = 1;string second

24、password;string newpassword;string oldpassword;cout oldpassword;if (password = oldpassword)cout newpassword;if (newpassword.size() = 6)for (i = 0; inewpassword.size(); i+)for (j = i + 1; jnewpassword.size(); j+)if (newpasswordi = newpasswordj)count+;if (count6)while (flag)cout secondpassword;if (new

25、password = secondpassword)cout 密码修改成功! endl;flag = 0;elsecout 两次密码输入不一样,请重新输入 endl;flag = 1;elsecout 修改密码失败,请重新修改 endl;elsecout 修改密码失败,请重新修改 endl;elsecout 修改密码失败,请重新修改 endl;void ATM:exitsystem()exit(0);void ATM:savemoney()/存款char ch;float save;/存入金额docout save;if (save0)cout 存款金额有误,请重新输入 endl;elsecout 正在存款中,请稍候. endl;money = money + save;cout 交易成功! endl;cout 请问是否继续存款?(Y/N) ch;while (ch != Y&ch != y&ch != n&ch != N)cout 该操作无效,请重新输入: ch; while (ch = Y | y = ch

温馨提示

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

评论

0/150

提交评论