




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*实践教学* 兰州理工大学计算机与通信学院2014年秋季学期 面向对象 课程设计题 目: ATM柜员机 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 前 言问题描述:此次课题的任务旨在设计一个ATM模拟程序。余额查询在设计中,我们对它尽可能的与真实的ATM模拟的相近一些,我们把它抽象出一些小模块:用户帐号信息,登录密码验证,用户余额查询,用户存取款(交易过程),用户密码的更改,用户退出程序,对于一个在线用户,如果密码输入次数达三次后,ATM锁机,直到用户退卡为止,此外,ATM向用户显示欢迎词及其他提示性信息,这样,方便了用户对ATM的使用。背景:自2000年以来,中国的ATM机总保有量便以24.62%的年均复合增长率高速增长。截至2010年底,中国联网ATM机保有量已经达到27.10万台,同比增长26.11%。我国已经取代日本成为全球第二大ATM市场,排在美国之后。现今的社会发展迅速,人们的物质生活得到极大的提高,手中的剩余资金日益增多,受传统影响,绝大多数人喜欢把资金存起来,而在需要现金的时候又可以很方便的取到现金,就这样,ATM成为了人们在银行方面不可缺少的使用工具,使用ATM的人越来越多,所以ATM的数量以及技术指标也在迅速的增长着,模拟此程序其极大的方便了人们的日常生活,同时又在使用的过程中也会遇到这样那样的问题,如果有一款软件模拟ATM,可以帮助人们了解其运行过程,避免有些不必要的麻烦,方便了人们的生活。实现方式:要求ATM柜员机模拟程序利用面向对象的方法以及C+的编程思想来完成系统的设计。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。在设计的过程中,建立清晰的类层次,各个类中要有各自的属性和方法,运用面向对象的机制(继承、派生及多态性)来实现系统功能,基于Microsoft visual C+6.0条件下实现的.。目 录摘 要1第一章 系统总体设计21.系统功能模块图22.各类间关系3第二章 详细设计4第三章 系统测试91.测试方法92.测试用例93.测试结果11第四章 软件使用说明书14总 结19参考文献20致谢20附件(源程序代码)21摘 要本次课程设计编写的是一个ATM取款机模拟程序。日常生活中,我们常使用ATM取款机,对它的操作过程和功能有一定的了解。因此在该设计书中我们模拟的就是ATM取款机的属性和行为,主要包括用户登录,用户取款,用户查询余额,用户更改密码,退出程序,以及锁卡功能。本说明书主要内容分为三个部分,第一部分主要是阐述该程序的设计背景和要求,设计的题目以及设计的实现方法;第二部分是对该问题的整体描述,问题进行深入的分析,设计,到最后编写出程序并进行测试;第三部分为该书的总结,要是写在编写程序的时候所遇到的问题,解决方法以及心得体会;最后,程序设计是一个创作的过程,解决问题的方法不是唯一的。所以独立思考问题,多想想解决方法,才更有助于程序设计水平的提高。本系统的开发采用面向对象的设计思想以及C+的编程思想。在设计的过程中,建立清晰的类层次,各个类中建立了各自的属性和方法,系统的介绍了ATM柜员机系模拟统的开发过程及面向对象思想的具体实现。关键词: ATM柜员机;面向对象方法;类和对象;第一章 系统总体设计ATM柜员机模拟系统是一套功能强大、操作简便而又实用的模拟软件。ATM模拟系统需我们进行数据结构的设计、对函数进行模块化结构化设计、并灵活运用数组、指针、文件等多种数据类型设计开发系统,应用系统分析,建立该系统的功能模块框图以及界面的组织和设计,分析系统中的各个实体及它们之间的关系包括属性和方法,根据问题描述,设计系统的类层次,完成类层次中各个类的描述(包括属性和方法),完成类中各个成员函数的定义, 完成系统的应用模块。使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:(1)查询余额:初始余额为10000元;(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;(3)ATM存款:不能出现负存款;(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。1.系统功能模块图用户登录退出系统ATM柜员机模拟系统修改密码用户取款锁 机用户存款根据用户需求,本系统将主要实现以下功能(如图1-1所示): 图1-1 系统功能模块图其中:用户登录:包括对帐号、密码正确录入,期间有次数的限制。修改密码:密码有长度、异同等属性要求。用户取款:取款面额需为100的倍数,且取钱次数有限制,期间不透支。2.各类间关系本系统共使用两个类:ATM类,Users类。其中类ATM描述主模块界面信息等,类Users描述用户界面等。它们之间的关系如图1-2所示:类ATMUsers类 图1-2 系统类间关系图ATM功能类包括:共有段:欢迎界面、登录界面、用户取款、用户存款、查询信息、锁机、功能界面、退出系统私有段:记录密码输入次数、卡上余额Users类包括:保护段:得到姓名、获取卡号、获取余额、用户存款、密码设置、用户取钱私有段:用户密码、用户姓名、用户卡号、账户余额第二章 详细设计本系统主要功能包括:欢迎界面,用户登录,密码修改,信息查询,用户取款,用户存款,退出系统、锁机、得姓名、取卡号、获取余额、设置密码等功能。其中功能欢迎界面、用户登录、密码修改、用户存款、用户取款、信息查询、锁机、退出系统使用类ATM来实现,功能得到姓名、获取卡号、获取余额、获取密码、设置密码使用类Users来实现。下面分别介绍类ATM,Users的详细设计。类ATM具体实现流程为(如图2-1所示):用户存款用户取款欢迎界面密码修改登陆界面退出系统锁机信息查询ATM图2-1 类ATM流程类ATM定义为:程序主模块界面其中:成员函数welcome()主要功能为欢迎用户进入ATM柜员机系统,实现方式为:类外定义成员函数实现其功能void ATM:welcome()成员函数void ATM:Login()主要功能为登录ATM系统,实现方式为: 类外定义成员函数实现其功能void ATM:Login()成员函数change_passwd()主要功能为修改密码,实现方式为: 类外定义成员函数实现其功能void ATM:change_passwd()成员函数getmoney()主要功能为用户取款,实现方式为: 类外定义成员函数实现其功能void ATM: :getmoney() ( )成员函数savemoney()主要功能为用户存款,实现方式为: 类外定义成员函数实现其功能void ATM: :savemoney()成员函数information()主要功能为查询信息,实现方式为: 类外定义成员函数实现其功能void ATM:information()成员函数lock()主要功能为锁机,实现方式为: 类外定义成员函数实现功void ATM:lock()成员函数exitATM()主要功能为退出程序,实现方式为: 类外定义成员函数实现其功能void ATM:exitATM() 类B具体实现流程为(如图2-2所示):设置密码Users取得姓名获取卡号取得余额得到密码图2-2 Users类流程类B定义为:用户个人界面 其中:成员函数get_name()主要功能为取得姓名,实现方式为:类外定义char *Users:get_name() return name; /取得姓名成员函数get_num()主要功能为获取卡号,实现方式为: 类外定义char *Users:get_num() return num; /取得卡号 成员函数get_money()主要功能为取得余额,实现方式为: 类外定义float Users:get_money() return money; /取得余额成员函数set_passwd()主要功能为设置密码,实现方式为: 类外定义void Users:set_passwd(char pwd) strcpy(passwd,pwd); /设置密码成员函数get_passwd();主要功能为得到密码,实现方式为: 类外定义char *Users:get_passwd() return passwd; /取得密码各函数具体流程图如下所示:如图2-3所示为程序运行主界面流程图:欢迎界面用户登录主菜单操作序号修改密码用户取款查询余额用户存款退出系统返回主菜单退出ATM图2-3主界面流程如图2-4所示为用户修改密码流程图:密码正确输入新密码2次输入一样再次输入新密码密码修改成功是否重新输入旧密码密码正确?超过3次密码修改不成功否否否是是密码正确输入新密码2次输入一样再次输入新密码密码修改成功是否重新输入旧密码密码正确?超过3次密码修改不成功否否否是是输入旧密码图2-4 修改密码流程图如图2-5所示为取款流程图:否用户取款取款金额正确?取款成功是输100元面值m重新输入取款面值金额正确是否图2-5 取款流程图用户存款存款金额正确(m0)?存款成功请输入存款金额是否如图2-6所示为用户存款流程图:图2-6 用户存款流程第三章 系统测试1.测试方法通过输入不同帐号、密码、金钱面额来调试程序 2.测试用例 系统主要实现存款、取款、修改密码功能、注销退出等功能的测试:列举取款程序进行分析:void ATM:getmoney() float m; float n; char ch; do coutendl 请输入您要取一百元的现金的张数:; coutm; n=100*m; while(n=0) cout 请输入正确的数字!endl; cout; cinm; if(use.get_money()-n5000) cout a 对不起,此机每次最多只取5000元!endlendl; else cout 您已取m*100元endl; coutendl 操作成功,请收好钱!endlendl; use.set_money(m); cout 是否要继续该项操作:(Y/N) endlendl; cout; cinch; while(ch!=n&ch!=N&ch!=Y&ch!=y) cout; cinch; while(ch=y|ch=Y); system(cls); 在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不足;如果取款金额小于存款余额的话就执行,并保存记录。3.测试结果本系统主要完成欢迎界面,用户登录,功能界面,密码修改,信息查询,用户取款,用户存款,退出系统、锁机等功能。 用户登录界面主要是用户等录,输入正确的账号,密码即可进入系统。图3-1为密码和账号输入完全正确的测试界面: 图3-1 密码正确测试界面密码修改功能主要是用户账户安全的设定,测试界面如下: 如图3-2所示为用户修改密码正确测试界面;图3-3所示为用户修改密码时输入了6位相同数字的测试界面;图3-4所示为用户修改密码输入位数不足6位的测试界面。 图3-2 密码修改正确测试界面 图3-3 新密码6位相同测试界面 图3-4 新密码不足6位测试界面 用户取款主要方便用户取款,以下为各种取款面额测试界面。如图3-5所示为用户取款面额正确的测试界面;如图3-6所示为用户单次取款面额超过5000元的测试界面;如图3-7所示为用户取款面额超出账号余额(不可透支)的测试界面。 图3-5 取款面额正确的测试界面 图3-6 单次取款超过5000测试界面 图3-7 取款数超过余额书测试界面用户存款功能主要方便用户存款。如图3-8所示为用户存入正确面额的测试界面;如图3-9所示为用户存入面值为负值测试界面。 图3-8 存款测试界面 图3-9 存入面值为负数的测试界面第四章 软件使用说明书 1、系统运行环境本软件是在 VC+6.0功能下实现的。2、系统操作提示本系统主要实现欢迎界面,用户登录,功能界面,密码修改,信息查询,用户取款,用户存款,退出系统、锁机等功能。首先用户进入欢迎界面,之后进入登陆界面。如图4-1所示,用户输入用户名、密码进入系统。 图4-1 欢迎界面进入用户登录界面,输入正确的账号,密码即可进入系统。图4-2为密码或账号输入错误的测试界面;图4-3为密码和账号输入完全正确的界面: 图4-2 错误帐号或密码界面 图4-3 登录成功界面 进入功能界面,如图4-4所示为界面: 图4-4 用户主界面密码修改功能主要是用户账户安全的设定,界面如下: 如图4-5所示为用户修改密码正确界面;图4-6所示为用户修改密码时输入了6位相同数字的界面;图3-7所示为用户修改密码输入位数不足6位的界面。 图4-5 修改密码界面 图4-6 密码修改错误界面 图4-7 错误密码界面 进入用户取款功能,以下为各种取款面额测试界面。如图4-8所示为用户取款面额不是100的倍数的测试界面;如图4-9所示为用户单次取款面额超过5000元的测试界面;如图4-10所示为用户取款面额超出账号余额(不可透支)的界面。 图4-8 取款错误界面 图4-9 取款错误界面 图4-10 取款超额界面用户信息查询功能主要实现用户账号余额以及用户基本信息的显示,如图4-11所示。用户存款功能主要方便用户存款。如图4-12所示为用户存入正确面额的界面;如图4-13所示为用户存入面值为负值的界面。 图4-12 存款成功界面 图4-13 存入负值界面当用户需退出系统时,按操作界面功能显示的操作,界面如图4-14所示。 图4-14 退出系统进入锁机界面后,用户输入密码3次不对时,系统锁机。界面图4-15所示。 图4-15 密码上限锁机界面总 结通过这次的课程设计,让我明确了学习专业知识的重要性,在以后的时间里,我会更加努力学好专业课,为以后从事专业工作打下良好的基础。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,虽然课程设计虽然很苦很累,有时候还很令人痴迷。它不仅让拉近了我和同学间的距离,而且还激发了我们学习专业的热情。的确,从从拿到题目到完成整个编程,从理论到实践,两个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说各种函数的调用,通过这次课程设计之后,又一定把以前所学过的知识重新温故。主要参考文献1C+面向对象程序设计教程, 陈维兴 林小茶, 清华大学出版社,20092C+程序开发教程, 张基温, 清华大学出版社,20023C+语言教程, 吴祖峰 陈文宇 张松梅, 电子科技大学出版社,20084C语言程序设计(第二版), 谭浩强, 清华大学出版社,19995C+语言程序设计教程与实验,温秀梅 丁学钧,清华大学出版社,20086Visual C+面向对象编程教程(第2版),王育坚,清华大学出版社, 2003致 谢紧张又忙碌的课设学习终于结束了,在本次课设中我们也取得了很大的成就。在此衷心感谢学院安排这次课设,让我们又多了一次交流学习的机会,更好的巩固了所学知识,拓展了知识面。在编写程序的过程中,我们得到了年福忠等三位老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!也感谢我们专业同学在非常时期,在生活和学习上对我的帮助和指点。附件(源程序代码)#include#include#include #include#includeclass Users;class ATM / ATM取款机 public:ATM(Users& er):use(er)void welcome();void Login(); / 通过Login输入卡号和密码进入界面bool check_passwd(char n,char pwd); / 核对密码,一致则进入界面void change_passwd(); / 修改密码void getmoney(); / 取款void savemoney(); /存款void information(); / 查询余额及信息void exitATM(); / 退出系统void func(); / 功能实现界面void lock(); / 锁机 private:int times; / 记录密码输入次数Users& use;class Users/ 用户 public:friend class ATM;/声明ATM为Users的友元类Users(char Name,char Num,float Money,char Password); protected:char* get_name(); / 取得姓名char* get_num(); / 取得卡号char* get_passwd(); / 取得密码float get_money(); / 取得余额void set_passwd(char pwd); / 设置密码void set_money(float m); / 取钱void set1_money(float m); /存款 private:char passwd10; / 用户密码char name20; / 用户姓名char num20; /卡号float money; /;Users:Users(char Name,char Num,float Money,char Password) strcpy(name,Name); strcpy(num,Num); money=Money; strcpy(passwd,Password);float Users:get_money()return money;char* Users:get_name()return name;char* Users:get_num()return num;char* Users:get_passwd()return passwd;void Users:set_money(float m)money-=m*100;void Users:set1_money(float m)money+=m;void Users:set_passwd(char pwd)strcpy(passwd,pwd);void ATM:welcome()system(color 5F);coutendlendlendltt -欢迎进入ATM柜员机管理系统-aendl; couttt| |endl;couttt| 【Welcome to the ATM】 |endl;couttt| |endl; couttt -endlendlendl;cout* * * * * * * * * * * * * endl; cout* * * * * * * * * * * * * * endl;cout* * * * * * * * * * * * * endl;cout* * * * * * * * * * * * endl;cout * * * * * * * * * * * * * endl;cout * * * * * * * * * * * * * * endl;cout * * * * * * * * * * * * * endlendl;system(pause); system(cls); /也可以用clrscr();void ATM:Login() /登录界面times=0;coutendlendltt- * 欢 迎 使 用 ATM 柜 员 机 * - aendl;char pwd10,num20,ch;int i=0;doi=0;coutendlttt 请输入卡号:a;docin.get(ch);numi+=ch;while(ch!=n);numi-1=0;i=0;coutendlttt 请输入密码:a;docin.get(ch);pwdi+=ch;while(ch!=n);pwdi-1=0;if(!check_passwd(num,pwd)coutendlttta您输入的卡号或密码有误,请重新输入!endl;coutendlttt *请注意!您的输入次数还剩:a3-timesendl;times+;elsecoutendlttt *登录成功!aaendl; system(pause); system(cls); func(); while(times3); lock(); bool ATM:check_passwd(char num,char pwd) if(strcmp(num,use.get_num()=0&strcmp(pwd,use.get_passwd()=0)return true;elsereturn false;void ATM:func() int n;dosystem(color 1F);coutendlendlendl;couttt endl; couttt endl;couttt 1.修改密码 endl;couttt endl;couttt 2.用户取款 endl;couttt endl;couttt 3.用户存款 endl;couttt endl;couttt 4.查询余额 endl;couttt endl;couttt 5.退出系统 endl;couttt endl; couttt endlendl;coutn;exit;while(n5)coutendl 请输入正确的操作序号(1/2/3/4/5)!aendl;coutendl;cinn; system(cls);switch(n)case 1: change_passwd();break;case 2: getmoney();break;case 3: savemoney();break;case 4: information();break;case 5: exitATM();break;while(true);void ATM:change_passwd() char pwd10,repwd10;times=0; do coutendlpwd; if(!check_passwd(use.get_num(),pwd)times+;else break; while(times3); if(times=3)lock(); int t=0; docoutendlpwd;coutendlrepwd; if(t=strcmp(pwd,repwd)!=0) coutendlendl 你输入的两次密码不一样,请重新输入!endlendl; while(t!=0); use.set_passwd(pwd); coutendl 恭喜您,密码修改成功!endlendl; system(cls); void ATM:getmoney() float m; float n; char ch; do coutendl 请输入您要取一百元的现金的张数:; cinm; n=100*m; while(n=0) cout 请输入正确的数字!endl; cout; cinm; if(n5000&use.get_money()-n0) cout a 对不起,此机每次最多只取5000元!endl; i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水平三跑《接力跑》教学设计08
- 2025年火电运行值班员中级面试实战演练与答案解析
- 电力基本知识培训课件教学
- 2025年医生求职面试技巧与模拟题集锦
- 电力业务知识培训课件
- 2025年特岗教师招聘面试实战模拟题集萃小学英语教育心理学等
- 2025年人力资源和社会保障局公务员招录考试指南
- 2025年售前技术支持工程师中级面试技巧与模拟题
- 电仪岗位安全知识培训课件
- 血液透析护理服务规范
- 2025中国银行新疆区分行社会招聘笔试备考试题及答案解析
- 污水采样培训课件
- 药品医疗器械试题及答案
- 子宫内膜类器官构建与临床转化专家共识解读 2
- 幼师培训:如何上好一节课
- 《趣味小品》课件
- ESD手术常见并发症
- 普通话驾驶员培训课件
- 中医治疗疼痛课件
- 2025年四川宜宾江安县国有资产管理中心县属国有企业招聘笔试参考题库含答案解析
- 2025-2030冰箱压缩机市场市场现状供需分析及投资评估规划分析研究报告
评论
0/150
提交评论