c 模拟ATM取款机的设计.doc_第1页
c 模拟ATM取款机的设计.doc_第2页
c 模拟ATM取款机的设计.doc_第3页
c 模拟ATM取款机的设计.doc_第4页
c 模拟ATM取款机的设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古科技大学c+课程设计 内蒙古科技大学 本科生课程设计论文题 目:c+课程设计模拟atm取款机的设计学生姓名:学 号:专 业:通信工程 班 级:2010-1指导教师:目录目录1前言2第一章 c+简介21 、c+语言的简介及发展22、 c+语言的特点23、c+的优点与缺点2第二章 需求分析2第三章 设计分析23.1、atm系统管理23.1.1统基本功能23.1.2相关数据结构的说明23.1.3类的设计23.2系统流程图23.3参数说明2第四章 运行及测试结果24.1、登录主界面24.2、挂失功能24.3、修改密码24.4、取款功能24.5、转账功能24.6、查询功能24.7、退出系统2第五章 课程设计总结2附录2参考文献2前言现今的社会发展迅速,atm成为了人们在银行方面不可缺少的使用工具,使用atm的人越来越多,所以atm的数量也在迅速的增长着。电信运营公司已向社会提供atm的商用业务,atm技术正在走向成熟。一些传统电信公司在核心网络技术的选择上首选atm,例如att。但是,近来高比特路由器的问世,使一些数据业务的运营公司眼前一亮,并正在开展有关ip直接在sonet或sdh上传送的业务。sprint公司使用cisco12000路由器与sonetoc12链路一起提供ipoversonet业务。mci亦有计划提供类似的业务。但是,这种方式与atm相比,不足之处是尚不适于多业务平台,网络流量和拥塞控制能力差,也不能保证具有优先级的qos,而atm的可拓性及提供新业务的能力使得多数运营公司仍在积极地扩大atm的服务范围。本文将主要介绍atm的特点。atm的发展情况及主要技术进展。iatm的技术特点atm的主要技术特点如下:1atm是一种统计时分复用的技术。atm将一个物理通路划分为多个具有不同传输特性的虚通路提供给用户,实现网络资源的按需分配。2atm利用硬件实现固定长度包的快速交换,具有时延小,实时性好的特点,能够满足多媒体数据传输的要求。3atm是支持多种业务的传送平台,并提供服务质量的保。第一章 c+简介1 、c+语言的简介及发展c+语言发展大概可以分为三个阶段: 第一阶段从80年代到1995年。这一阶段c+语言基本上是传统类型上的面向对象语言,并且凭借着接近c语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(stl)和后来的boost等程序库的出现,泛型程序设计在c+中占据了越来越多的比重性。当然,同时由于java、c#等语言的出现和硬件价格的大规模下降,c+受到了一定的冲击;第三阶段从2000年至今,由于以loki、mpl等程序库为代表的产生式编程和模板元编程的出现,c+出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使c+已经成为当今主流程序设计语言中最复杂的一员。2、 c+语言的特点20世纪80年代初期,美国at&t贝尔实验室的本贾尼斯特劳斯特卢普(bjarne stroustrup)博士发明并实现了c+(最初这种语言被称作“c with classes”)。一开始c+是作为c语言的增强版出现的,从给c语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、rtti、命名空间(name space)逐渐被加入标准。1998年国际标准组织(iso)颁布了c+程序设计语言的国际标准iso/iec 1988-1998。c+是具有国际标准的编程语言,通常称作ansi/isoc+。1998年是c+标准委员会成立的第一年,以后每5年视实际需要更新一次标准。c+0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,c+0x已经毫无疑义地成为正式国际标准。先前被临时命名为c+0x的新标准将被称为c+ 2011。c+ 2011将取代现行的c+标准iso/iec 14882,它公开于1998年并于2003年更新,通称c+98以及c+03。国际标准化组织于2011年9月1日出版发布iso/iec 14882:2011,名称是:information technology - programming languages - c+ edition: 3。c+设计成静态类型、和c同样高效且可移植的多用途程序设计语言。 c+设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。c+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。c+设计成尽可能与c兼容,籍此提供一个从c到c+的平滑过渡。c+避免平台限定或没有普遍用途的特性。c+不使用会带来额外开销的特性。c+设计成无需复杂的程序设计环境。出于保证语言的简洁和运行高效等方面的考虑,c+的很多特性都是以库(如stl)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,bjarne stroustrup的c+语言的设计和演化(1994)里做了详尽的陈述。3、c+的优点与缺点c+在一定程度上可以和c语言很好的结合,甚至目前大多数c语言程序是在c+的集成开发环境中完成的。c+相对众多的面向对象的语言,具有相当高的性能。c+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括mfc、qt、wxwidgets就是使用的c+。尽管c+语言有很强大的功能,但是在一些方面也存在争议。c+由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是c+的编译系统受到c+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。由于本身的复杂性,复杂的c+程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明c+被广泛使用和成功。c+语言由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多著名人士(比如linux之父linus torvalds与著名黑客eric s. raymond)的强烈批评与抵制。第二章 需求分析软件设计的一个重要的环节就是需求分析。本章在对atm取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是atm取款机管理系统所需要的需求分析。atm管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面挂失功能:确认是否对银行卡进行挂失,挂失后账户无法操作修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账号查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额模拟atm取款机的操作:首先录入账户信息,格式如下帐号姓名身份证密码余额323401020056078李四150201198808080088123456450.8、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。、查询功能:查询账户余额。、取款功能:取款,更新余额。、挂失功能:挂失后,该账户不能进行任何操作。、修改密码:输入原密码和新设置密码。、转账功能:输入转账的转出账户以及转账金额,进行转账。第三章 设计分析3.1、atm系统管理3.1.1统基本功能 首先,确定系统中存在两种用户,一种是atm,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个atm类,然后创建取款人类,并与atm 类形成有元,进而继承atm的所有功能,并添加录入信息的功能。基本功能 :登录功能-输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。查询功能-查询账户余额。取款功能-取款,更新余额。挂失功能-挂失后,该账户不能进行任何操作。修改密码-输入原密码和新设置密码。转账功能-输入转账的转出账户以及转账金额,进行转账。系统功能如图:取款挂失查询atm管理系统修改密码退出系统登陆转账图3-1-1图3-1-1 上图中所示为atm系统的基本功能分类3.1.2相关数据结构的说明信息的载体用对象数组。系统录入信息的操作非常枯燥,所以创建一个文件,把每次录入的信息保存入文件,在下一次进入系统是,它会默认读取文件原有的信息,当然也可以随时添加录入atm信息。然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。用户姓名:name 字符型。用户账号:num 字符型。用户密码:password 字符型。身份证号:id 字符型。存款数额:money 实型。3.1.3类的设计1)、定义了一个atm取款机类,类中包括以下几部分:公有段:依次为登陆界面,核对密码,挂失,修改密码,取款,转账,查询信息,退出系统,功能界面,锁机。私有段:记录密码输入次数以及变量j。友元函数:取款,转账,查询信息,账号,密码。2、)定义了一个consumer 类,类中包括以下几部分:公有继承了consumer类私有段:用户密码,用户姓名,用户身份证号,卡号,存款钱数保护段:取得姓名,取得卡号,取得身份证号,取得密码,取得余额,设置密码,取钱3.2系统流程图利用流程图来说明系统各个部分之间如何协调来完成任务。1)登录流程图3-2-1 图中显示的是登陆的基本流程:输入账号输入密码主界面开始结束图3-2-12)查询功能图3-2-2 图中显示的是查询的基本流程: 开始 主界面结束图3-2-2选择查询的操作序号3)挂失功能图3-2-3 图中显示的是挂失的基本流程:开始 主界面挂失成功图3-2-3选择查询的操作序号是否挂失4)修改密码图3-2-4 图中显示的是修改密码的基本流程:开始 主界面选择查询的操作序号请输入新密码请输入旧密码请再次输入新密码结束图3-2-45)取款功能图3-2-5 图中显示的是取款的基本流程:开始 主界面选择需要的操作序号是否继续取款额数结束图3-2-56)转账功能图3-2-6 图中显示的是转账的基本流程:开始 主界面请输入所转账号余额不足转账成功,余额选择查询的操作序号 请输入所转金额图3-2-63.3参数说明全局变量,重要形式参数、全局变量局部变量等等,它们的命名及用途解释bool j: 全局变量。char m,t,ch: 全局变量。int times : 重要形式参数。第四章 运行及测试结果对运行及测试结果进行说明,并添加运行界面的截图。4.1、登录主界面 上图1:为主界面登录窗口上图2:图为登录主界面时,账号或密码出错时系统自动锁机上图3:图为成功登录后,主界面所显示的窗口4.2、挂失功能上图4:根据所选代码进行挂失,挂失后系统将退出主界面4.3、修改密码上图5:图为更改密码功能界面,更改后的密码为新密码4.4、取款功能上图6:为图为取款功能界面,图中显示为成功取款上图7:图为取款失败后的功能界面4.5、转账功能上图8:图为转账功能界面,图中显示为转账成功后的界面上图9:图为转账失败后的功能界面4.6、查询功能上图10:图中所示为用户个人信息,包括用户姓名、身份证号、银行卡号以及存款余额4.7、退出系统上图11:图为选择序号后系统退出的页面第五章 课程设计总结课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。本次课程设计在老师的帮助和自己的努力下终于能够成功运行,使我感到非常高兴以及提高了自己的编程信心,虽然这次课程设计的题目实现比较简单和不实用但毕竟是自己将近两个星期的努力地结果。在期间我对编程的理念理解又加深了一点,课程设计使我明白好的算法或者是好的逻辑思维对编程的重要性,在调试期间我自卑过、高兴过、平静过。可以说是我经历了比较大的情感波动。当费很大劲才把程序调运行的时候那种感觉实在是太好了。在本次课程设计活动中,我明显的感觉到自己知识的欠缺和实际动手能的差劲。尤其是在传值传参的函数调用时更体现的非常明显,感觉自己的书本学的不透、学的不扎实。有些地方更本就不会,不如说文件的操作,比如说系统时间的获取等以前在上课或作习题时更本就不会考虑的问题在课程设计当中完全暴露出来。通过本次试验,主要加深了对于友元函数,友元类使用的熟练程度。程序功能相对比较简单,没有设计复杂的继承和重载函数,完成的比较轻松!附录以下是程序的源代码,并且加上了详细的注释:#includeiostreamusing namespace std;class consumer;class atm / atm取款机类public: atm(consumer& cn):cnsm(cn) j=true; void welcome(); / 登陆界面 bool check_passwd(char n,char pwd);/ 核对密码 bool check_zhang(char num);/核对转入账号 bool gua();/挂失 void change_passwd(); / 修改密码 void fetchmoney(); / 取款 void zhuan();/转账 void information(); / 查询信息 void exitatm(); / 退出系统 void functionshow(); / 功能界面 void lock();/锁机private: bool j; int times; / 记录密码输入次数 consumer& cnsm;class consumer/ 用户类public:friend class atm; consumer(char name,char num,char id20,float money,char password);protected:char* get_name(); / 取得姓名 char* get_num(); / 取得卡号char* get_id();/取得身份证号char* get_passwd();/ 取得密码 float get_money(); / 取得余额void set_passwd(char pwd);/ 设置密码void set_money(float m);/ 取钱private:char passwd8;/ 用户密码char name20; / 用户姓名char id20;/用户身份证号char num20;/float money;/;consumer:consumer(char name,char num,char id20,float money,char password)strcpy(name,name); strcpy(num,num);strcpy(id,id);money=money;strcpy(passwd,password);float consumer:get_money()return money;char* consumer:get_name() / 对于数组的返回操作 返回指针return name;char* consumer:get_num()return num;char* consumer:get_id()return id;char* consumer:get_passwd()return passwd;void consumer:set_money(float m)money-=m;void consumer:set_passwd(char pwd)strcpy(passwd,pwd);void atm:welcome()times=0;cout欢迎使用银行atm自动取款机endl;char pwd8,num120,ch;int i=0;doi=0;coutendl请输入卡号:;docin.get(ch); /对于键盘字符串的接收!num1i+=ch;while(ch!=n);num1i-1=0;i=0;cout请输入密码:;docin.get(ch);pwdi+=ch;while(ch!=n);pwdi-1=0;if(!check_passwd(num1,pwd)cout你输入的卡号或密码有误,请重新输入endl;times+;elsefunctionshow();while(times3);lock(); bool atm:check_passwd(char num,char pwd)if(strcmp(num,cnsm.get_num()=0&strcmp(pwd,cnsm.get_passwd()=0)return true;else return false;void atm:functionshow()int n;do cout本机可办理以下业务:endl;cout*endl; cout endl;cout挂 失 修改密码endl; cout endl; cout取 款 转 账endl; cout endl; cout查询余额 退出系统endl; cout endl;cout*endl; coutendl请您输入相应的操作序号进行操作:n; while(n6)cout请输入正确的操作序号!n;switch(n)case 1: gua(); break;case 2: change_passwd(); break;case 3: fetchmoney(); break;case 4: zhuan(); break;case 5: information(); break;case 6: exitatm(); break; while(true);bool atm:gua()char a;do cout是否确认挂失:(y/n) 继续请按y 退出请按n a;if(a=y)cout您已挂失成功!endl; exit(2);else cout您已选择退出!endl;while(a=y);return j=true;void atm:change_passwd()char pwd8,repwd8;times=0;docoutendlpwd;if(!check_passwd(cnsm.get_num(),pwd) times+;elsebreak;while(times3);if(times=3)lock();int t=1;docoutpwd;coutrepwd;t=strcmp(pwd,repwd); / 相同返回0;if(t!=0)cout你输入的两次密码不一样,请重新输入!endl;while(t!=0);cnsm.set_passwd(pwd);cout

温馨提示

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

评论

0/150

提交评论