c++模拟ATM取款机的设计_第1页
c++模拟ATM取款机的设计_第2页
c++模拟ATM取款机的设计_第3页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、本科生课程设计论文题目:C+!程设计模拟ATM取款机的设计学生姓名:学号:专业:通信工程班级:指导教师:目录目录1.前言2.第一章C+简介3.1、C+语言的简介及发展3.2、C+语言的特点3.3、C+的优点与缺点4.第二章需求分析5.第三章设计分析.7.3.1、ATM系统管理Z.3.1.1统基本功能7.3.1.2相关数据结构的说明.a3.1.3类的设计8.3.2系统流程图9.3.3参数说明12第四章运行及测试结果134.1、登录主界面134.2、挂失功能144.3、修改密码154.4、取款功能164.5、转账功能174.6、查询功能184.7、退出系统18第五章课程设计总结1.9附录20.参考

2、文献31刖曰现今的社会发展迅速,ATM成为了人们在银行方面不可缺少的使用工具,使用ATM的人越来越多,所以ATM的数量也在迅速的增长着。电信运营公司已向社会提供ATM的商用业务,ATM技术正在走向成熟。一些传统电信公司在核心网络技术的选择上首选ATM,例如AT&T。但是,近来高比特路由器的问世,使一些数据业务的运营公司眼前一亮,并正在开展有关IP直接在SONET或SDH上传送的业务。Sprint公司使用Cisco12000路由器与SONETOC12链路一起提供IPoverSONET业务。MCI亦有计划提供类似的业务。但是,这种方式与ATM相比,不足之处是尚不适于多业务平台,网络流量和拥

3、塞控制能力差,也不能保证具有优先级的QOS,而ATM的可拓性及提供新业务的能力使得多数运营公司仍在积极地扩大ATM的服务范围。本文将主要介绍ATM的特点。ATM的发展情况及主要技术进展。IATM的技术特点ATM的主要技术特点如下:1.ATM是一种统计时分复用的技术。ATM将一个物理通路划分为多个具有不同传输特性的虚通路提供给用户,实现网络资源的按需分配。2.ATM利用硬件实现固定长度包的快速交换,具有时延小,实时性好的特点,能够满足多媒体数据传输的要求。3.ATM是支持多种业务的传送平台,并提供服务质量的保。第一章C+简介1、C+语言的简介及发展C+语言发展大概可以分为三个阶段:第一阶段从80

4、年代到1995年。这一阶段C+语舌基本上是传统类型上的面向对象语言并且凭借着接近C语言'的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准棋板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C+中占据了越来越多的比重性。当然,同时由于JavaC#等语言的出现和硬件价格的大规模下降,C+受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和棋板元编程的出现,C+出现了发展历史上乂一个新的高峰,这些新技术的出现以及和原有技术的融合,使C+已经成为当今主流程序设计语言中最复杂的一员。2、C+

5、诺言的特点20世纪80年代初期,美国AT&T贝尔实验室的本贾尼?斯特劳斯特卢普(BjarneStroustru博士发明并实现了C+(最初这种语言被称作“CwithClasseS')。一开始C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtualfunction)、运算符重载(operatoroverloading、多重继承(multipleinheritance)、棋板(template)、异常(exception)、RTTI、命名空间(namespace逐渐被加入标准。1998年国际标准组织(ISO)颁布了C+程序设计语言的国际标准ISO

6、/IEC1988-1998。C+是具有国际标准的编程语言,通常称作ANSI/ISOC+。1998年是C+标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C+0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C+0x已经毫无疑义地成为正式国际标准。先前被临时命名为C+0x的新标准将被称为C+2011。C+2011将取代现行的C+标准ISO/IEC14882,它公开于1998年并于2003年更新,通称C+98以及C+03。国际标准化组织于2011年9月1日出版发布ISO/IEC14882:2011,名称是:Informationtechnology-Program

7、minglanguages-C+Edition:3oC+设计成静态类型、和C同样高效且可移植的多用途程序设计语言C+设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。C+设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。C+避免平台限定或没有普遍用途的特性。C+不使用会带来额外开销的特性。C+设计成无需复杂的程序设计环境。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne

8、Stroustrup的C+语言的设计和演化(1994)里做了详尽的陈述。3、C+的优点与缺点C+在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C+的集成开发环境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C+。尽管C+语舌有很强大的功能,但是在一些方面也存在争议。C+由于语言'本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C+的编译系统受到C+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,

9、这些问题大多难于被发现。由于本身的复杂性,复杂的C+程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C+被广泛使用和成功。C+语言由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多著名人士(比如Linux之父linustorvalds与著名黑客EricS.Raymond)的强烈批评与抵制。第二章需求分析软件设计的一个重要的环节就是需求分析。本意在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求

10、分析。ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账号查询功能:用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额模拟ATM取款机的操作:首先录入账户信息,格式如下帐号姓

11、名身份证密码余额323401020056078李四150201198808080088123456450.8、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。、查询功能:查询账户余额。、取款功能:取款,更新余额。、挂失功能:挂失后,该账户不能进行任何操作。、修改密码:输入原密码和新设置密码。(六)、转账功能:输入转账的转出账户以及转账金额,进行转账。第三章设计分析3.1、ATM系统管理3.1.1统基本功能首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候

12、,先创建一个ATM类,然后创建取款人类,并与ATM类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。基本功能:登录功能输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。查询功能查询账户余额。取款功能取款,更新余额。挂失功能挂失后,该账户不能进行任何操作。修改密码输入原密码和新设置密码。转账功能输入转账的转出账户以及转账金额,进行转账。系统功能如图:ATM管理系统图3-1-1上图中所示为ATM系统的基本功能分类3.1.2相关数据结构的说明信息的载体用对象数组。系统录入信息的操作非常枯燥,所以创建一个文件,把每次录入的信息保存入文件,在下一次进入系统是,它会默认

13、读取文件原有的信息,当然也可以随时添加录入ATM信息。然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。用户姓名:Name字符型。用户账号:Num字符型。用户密码:Password字符型。身份证号:Id字符型。存款数额:Money实型。3.1.3类的设计1)、定义了一个ATM取款机类,类中包括以下几部分:公有段:依次为登陆界面,核对密码,挂失,修改密码,取款,转账,查询信息,退出系统,功能界面,锁机。私有段:记录密码输入次数以及变量j。友元函数:取款,转账,查询信息,账号,密码。2、)定义了一个consumer类,类中包括以下几部分:公有继承了consumer类私有段:用户密码,

14、用户姓名,用户身份证号,卡号,存款钱数保护段:取得姓名,取得卡号,取得身份证号,取得密码,取得余额,设置密码,取钱3.2系统流程图利用流程图来说明系统各个部分之间如何协调来完成任务1)登录流程图3-2-1图中显示的是登陆的基本流程:2)查询功能图3-2-2图中显示的是查询的基本流程:3)挂失功能图3-2-3图中显示的是挂失的基本流程:4)修改密码图3-2-4图中显示的是修改密码的基本流程:5)取款功能图3-2-5图中显示的是取款的基本流程:6)转账功能图3-2-6图中显示的是转账的基本流程:3.3参数说明全局变量,重要形式参数、全局变量局部变量等等,它们的命名及用途解释boolj:全局变量。c

15、harm,t,ch:全局变量。inttimes:重要形式参数。第四章运行及测试结果对运行及测试结果进行说明,并添加运行界面的截图4.1、登录主界面L:DocuAentsandSettingsAdAinistrator-一口f:32040102O05E078=1234S6_上图1:为主界面登录窗口上图3:图为成功登录后,主界面所显示的窗口4.2、挂失功能上图4:根据所选代码进行挂失,挂失后系统将退出主界面-|口|拭|应*C:Docu*ent3andSettiihgsAdKinistrator桌面X_.|?323401020056078笠码:123456情您输入相应的操作序号进行操作:2隋窥入旧密

16、码:123456隋勘入新密码:456789后再输入一次新密砰456789密宿修改成功;请牢记?或*C:DociiAentsandSettiiLgsAdMinistra±orkifti,.阿您输入相应的操作序与进行操作,9士sj暮±密靠新,下1码仍次功以5密密一成理旧八改亦j入入慎可a请请也摩本H1*少挂失2修改密俏5查询余额6退出系统上图5:图为更改密码功能界面,更改后的密码为新密码Dociment3and上图6:为图为取款功能界面,图中显示为成功取款上图7:图为取款失败后的功能界面上图8:图为转账功能界面,图中显示为转账成功后的界面c'*C:Doicimentsa

17、ndSettiihgaVAdninistratoir桌面k工具箱1(10J_r-lI,flJJIJL转账成功?您的游额=350-«苗机可亦理以K业务:XKMiXifitKXKliKKWiiMiKitliXKItKD挂失2修改密码3取款4转账§查询余额6退出系统您输入相应的操作序号进行操作;修输入所转账号,网76S4321。房输入所转钱数:h晌慷额不足!匿机可亦理以下业务:上图9:图为转账失败后的功能界面上图10:图中所示为用户个人信息,包括用户姓名、身份证号、银行卡号以及存款余额4.7、退出系统上图11:图为选择序号后系统退出的页面第五章课程设计总结课程设计旨在锻炼学生的实

18、际动手能力和解决真实问题的能力。并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。本次课程设计在老师的帮助和自己的努力下终于能够成功运行,使我感到非常高兴以及提高了自己的编程信心,虽然这次课程设计的题目实现比较简单和不实用但毕竟是自己将近两个星期的努力地结果。在期间我对编程的理念理解乂加深了一点,课程设计使我明白好的算法或者是好的逻辑思维对编程的重要性,在调试期间我自卑过、高兴过、平静过。可以说是我经历了比较大的情感波动。当费很大劲才把程序调运行的时候那种感觉实在是太好了。在本次课程设计活动中,我明显的感觉到自己知识的欠缺和实际动手能的差劲。尤其是在传值传参的函数调用

19、时更体现的非常明显,感觉自己的书本学的不透、学的不扎实。有些地方更本就不会,不如说文件的操作,比如说系统时间的获取等以前在上课或作习题时更本就不会考虑的问题在课程设计当中完全暴露出来。通过本次试验,主要加深了对于友元函数,友元类使用的熟练程度。程序功能相对比较简单,没有设计复杂的继承和重载函数,完成的比较轻松!附录以下是程序的源代码,并且加上了详细的注释:#include"iostream"usingnamespacestd;classconsumer;classATM/ATM取款机类(public:ATM(consumer&cn):cnsm(cn)(j=true;

20、voidwelcome();/登陆界面boolcheck_passwd(charn,charpwd);/核对密码boolcheck_zhang(charnum);/K对转入账号boolgua();/挂失voidchange_passwd();修改密码voidfetchmoney();/取款voidzhuan();转账voidinformation();/查询信息voidexitATM();/退出系统voidfunctionshow();/功能界面voidlock();/锁机private:boolj;inttimes;/记录密码输入次数consumer&cnsm;classconsum

21、er/用户类(public:friendclassATM;consumer(charName,charNum,charId20,floatMoney,charPassword);protected:char*get_name();/取得姓名char*get_num();/取得卡号char*get_id();/取得身份证号char*get_passwd();/取得密码floatget_money();/取得余额voidset_passwd(charpwd);/设置密码voidset_money(floatm);/取钱private:charpasswd8;/用户密码charname20;/用户姓

22、名charid20;/用户身份证号charnum20;/floatmoney;/;consumer:consumer(charName,charNum,charId20,floatMoney,charPassword)strcpy(name,Name);strcpy(num,Num);strcpy(id,Id);money=Money;strcpy(passwd,Password);floatconsumer:get_money()(returnmoney;char*consumer:get_name()/对于数组的返回操作返回指钉(returnname;char*consumer:get_n

23、um()(returnnum;char*consumer:get_id()(returnid;char*consumer:get_passwd()(returnpasswd;voidconsumer:set_money(floatm)money-=m;voidconsumer:set_passwd(charpwd)(strcpy(passwd,pwd);voidATM:welcome()(times=0;cout<<"欢迎使用银行ATM自动取款机"<<endl;charpwd8,num120,ch;inti=0;do(i=0;cout<<

24、endl<<”请输入卡号:"do(cin.get(ch);对于键盘字符申的接收!num1i+=ch;while(ch!='n');num1i-1='0'i=0;cout<<”请输入密码:"do(cin.get(ch);pwdi+=ch;while(ch!='n');pwdi-1='0'if(!check_passwd(num1,pwd)(cout<<”你输入的卡号或密码有误,请重新输入”<<endl;times+;else(functionshow();while

25、(times<3);lock();boolATM:check_passwd(charnum,charpwd)(if(strcmp(num,cnsm.get_num()=0&&strcmp(pwd,cnsm.get_passwd()=0)returntrue;elsereturnfalse;voidATM:functionshow()intn;docout«"本机可办理以下业务:"«endl;cout«"*"«endl;cout«"cout«"1>挂

26、尖”vv”cout«"cout«"3>M款"vv”cout«"cout«"5>查询余额"«"cout«""«endl;"«"2>修改密码"«endl;"«endl;"«"4>转账"«endl;"«endl;"«"6>退出系统"&#

27、171;endl;"«endl;cout«"*"«endl;cout«endl«"i#您输入相应的操作序号进行操作:"«endl;cin»n;while(n<1|n>6)cout«"if输入正确的操作序号!"«endl;cin»n;switch(n)case1:gua();break;case2:change_passwd();break;case3:fetchmoney();break;case4:zhuan()

28、;break;case5:information();break;case6:exitATM();break;while(true);boolATM:gua()chara;docout<<”是否确认挂失:(y/n)继续请按y退出请按n"<<endl;cin>>a;if(a='y')cout<<"您已挂失成功!"<<endl;exit(2);elsecout<<"您已选择退出!"<<endl;while(a='y');returnj

29、=true;voidATM:change_passwd()(charpwd8,repwd8;times=0;do(cout<<endl<<”请输入旧密码:"cin>>pwd;if(!check_passwd(cnsm.get_num(),pwd)times+;elsebreak;while(times<3);if(times=3)lock();intt=1;do(cout<<”请输入新密码:"cin>>pwd;cout<<”请再输入一次新密码:"cin>>repwd;t=st

30、rcmp(pwd,repwd);/相同返回0;if(t!=0)cout<<"你输入的两次密码不一样,请重新输入!"<<endl;while(t!=0);cnsm.set_passwd(pwd);cout<<"密码修改成功,请牢记!"<<endl;voidATM:fetchmoney()floatm;charch;docout<<endl<<"你要取多少钱:"<<endl;/两种情况cin>>m;while(m<=0)cout<&

31、lt;"请输入正确的数字!"<<endl;cin>>m;if(cnsm.get_money()-m<0)cout<<"对不起,你的余额不足!"<<endl;elsecout<<endl<<"取款成功,请收好钱!"<<endl;28/32cnsm.set_money(m);cout<<"是否要继续取款:(y/n)"<<endl;cin>>ch;while(ch='y'|ch='Y');voidATM:zhuan()charz20;floatnum;cout<<"请输入所转账号:"<<endl;cin>&g

温馨提示

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

评论

0/150

提交评论