




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟自动取款机设计方案1.设计目的面向对象程序设计课程设计是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。通过课程设计,让学生能够熟练进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。2.设计要求1、 掌握使用一种面向对象程序设计语言如Borland C+或Visual C+等。2、 培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。3、 通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括:1 通过调查研究和上机实习,收集和调查有关技术资料。2 掌握设计课题的基本步骤和方法。 根据课题的要求进行上机实验调试。4、 课程设计完成后,提交课程设计报告3.设计方案3.1设计题目:模拟自动取款机(ATM) 运用C+语言描述ATM机类和银行卡类,每个类均包含数据成员和成员函数,并运用对象的引用和友元类的知识。注重面向对象程序设计理论知识的理解与实际的动手编程能力。运用面向对象的理念实现模拟自动取款机使用过程中的界面和用户交互过程。 本课程设计要实现的主要功能如下:1. 查询银行卡余额;2. 取款;3. 修改银行卡密码;4. 退出系统。3.2系统特点3.2.1.系统实现:1. 核对密码:核对用户输入的密码是否正确;2. 修改密码:修改银行卡密码;3. 取款:取款;4. 查询信息:查询余额;5. 退出系统:操作完成退出;6. 锁机吞卡:操作不当如:密码输入错误超过3次,银行卡将被锁。3.2.2.系统分工:功能方法或函数相关描述相关负责人登陆界面void welcome()显示欢迎界面赵巧娜核对所输卡号,密码是否正确bool checkpasswd(char n,char pwd)核对信息赵巧娜修改密码void changepasswd()修改银行卡密码赵巧娜取款void fetchmoney()取款赵巧娜显示信息void information()显示银行卡信息赵巧娜退出系统void exitATM()退出ATM机赵巧娜功能界面void functionshow()显示操作功能赵巧娜锁卡,退出系统void lock()锁银行卡赵巧娜辅助功能void Clear()清除屏幕上的信息赵巧娜char* getname()取得银行卡姓名赵巧娜char* getnum()取得银行卡号赵巧娜char* getpasswd()取得银行卡密码赵巧娜float getmoney()取得银行卡余额赵巧娜void setpasswd(char pwd)设置银行卡密码赵巧娜void setmoney(float m)更新银行卡金额赵巧娜4.设计内容4.1.层次分析 1.主程序流程图: 2.类结构图:BankCard-passwd8:char-name20: char- num20 :char-money :float+BankCard(char Name,char Num,float Money,char Password)#* getname():char#* getnum():char#* getpasswd():char# getmoney():float# setpasswd(char pwd)#setmoney(float m) ATM类为BankCard类的友元类ATM- times:int- totalmoney:float-leftmoney:float-oncemoney:float- & BankCardAtATM:BankCard+ATM(& bc: BankCard)+ welcome()+ checkpasswd(char n,char pwd)+changepasswd()+ fetchmoney()+information()+exitATM()+functionshow()+lock()+Clear()4.2. 核心算法主要核心算法:取款,修改密码。以取款为例1.流程图: 2.算法:void ATM:fetchmoney()/取款float m;char ch;docoutendlm;while(m=0)/金额不能为负的cout请输入正确的数字!m;if(BankCardAtATM.getmoney()-m0)coutendloncemoney)coutendlleftmoney)coutendl本取款机余额不足!;elsecoutendl操作成功,正在出钞,请收好!;leftmoney=leftmoney-m;BankCardAtATM.setmoney(m);Clear();coutendlch;while(ch!=n&ch!=N&ch!=y&ch!=Y)cinch;while(ch=y|ch=Y);5. 实现说明5.1.程序代码:#include#include#includeclass BankCard;/银行卡类的提前声明class ATM/ATM取款机类的定义public:ATM(BankCard& bc):BankCardAtATM(bc)/bc是BankCard类的引用型变量,/因为ATM类中有BankCard类的私有数据成员,所以必须调用BankCard类的构造函数初始化变量bctotalmoney = 200000.0;oncemoney = 5000.0;leftmoney = 20000.0;void welcome();/登陆界面bool checkpasswd(char n,char pwd);/核对所输卡号,密码是否正确void changepasswd();/修改密码void fetchmoney();/取款void information();/显示插入ATM机中的银行卡信息void exitATM();/退出系统void functionshow();/功能界面void lock();/锁卡,退出系统void Clear();/清屏 private:int times;/记录密码次数float totalmoney;/记录本ATM机存款总额float leftmoney;/记录取款机剩余金额float oncemoney;/记录取款单笔最高金额BankCard& BankCardAtATM;/插入ATM机的银行卡信息;/BankCard类的声明class BankCard/银行卡类public:friend class ATM;/将ATM类设置为BankCard类的友元类BankCard(char Name,char Num,float Money,char Password);protected:char* getname();/取得银行卡姓名char* getnum();/取得银行卡号char* getpasswd();/取得银行卡密码float getmoney();/取得银行卡余额void setpasswd(char pwd);/设置银行卡密码void setmoney(float m);/更新银行卡金额private:char passwd8;/存储用户密码char name20;/存储用户姓名char num20;/存储银行卡号float money;/存储银行卡金额;BankCard:BankCard(char Name,char Num,float Money,char Password)strcpy(name,Name);strcpy(num,Num);money = Money;strcpy(passwd,Password);float BankCard:getmoney()/取得银行卡金额return money;char* BankCard:getname()/取得银行卡姓名return name;char* BankCard:getnum()/取得银行卡号return num;char* BankCard:getpasswd()/取得银行卡密码return passwd;void BankCard:setmoney( float m)/更新银行卡余额money-= m;void BankCard:setpasswd(char pwd)/设置银行卡密码strcpy(passwd,pwd);/ATM类的成员函数实现void ATM:welcome()/显示欢迎界面 char ch; char num8;char pwd8;times = 0;couttt欢迎使用本行的ATM自动取款机!endl;int i = 0;doi = 0;coutendl请输入卡号:;/输入银行卡号,回车结束输入docin.get(ch);numi+=ch;while (ch!=n);numi-1=0;i = 0;coutendl请输入密码:;/输入密码,回车结束输入do cin.get(ch);pwdi+=ch ;while (ch!=n);pwdi-1=0;if(!checkpasswd(num,pwd)/检查卡号、密码是否正确coutendl你输入的卡号或密码有误,请重新输入endl;times+;elsefunctionshow();/检查合格,显示功能界面while(times3);/卡号、密码输错超过3次,锁卡退出系统lock();bool ATM:checkpasswd(char num,char pwd)/检查卡号、密码是否正确if(strcmp(num,BankCardAtATM.getnum()=0 & strcmp(pwd,BankCardAtATM.getpasswd()=0)return true;elsereturn false;void ATM:functionshow()/显示功能菜单int n;do coutendl*endl; coutendltt欢迎使用本行的ATM自动取款机!endl;couttt1)修改密码endl;couttt2)取款endl;couttt3)查询余额endl;couttt4)退出系统endl;cout*endl;coutn;while(n4)/输入正确的功能代号,不正确则反复重输coutendln;Clear();switch(n)case 1:changepasswd();/选择修改秘密Clear();break;case 2:fetchmoney();/选择取款Clear();break;case 3:information();/选择查询余额break;case 4:exitATM();/选择退出系统break;while(true);void ATM:changepasswd()/修改卡密码 char pwd8,repwd8;times=0;docoutendlpwd;if(!checkpasswd(BankCardAtATM.getnum(),pwd) times+; coutendl旧密码输入错误请重新输入; Clear();elsebreak;while(times3);if(times=3)/3次都没有输入正确的旧密码,则锁卡退出系统lock();int t=0;docoutendlpwd;coutendlrepwd;if(t=strcmp(pwd,repwd)!=0)coutendl您输入的密码不一致,请重新输入; Clear();while(t!=0);BankCardAtATM.setpasswd(pwd);coutendl密码修改成功,请妥善保管!;/调用BankCard类的成员函数setpasswd设置新密码void ATM:fetchmoney()/取款float m;char ch;docoutendlm;while(m=0)/金额不能为负的coutendlm;if(BankCardAtATM.getmoney()-m0)coutendloncemoney)coutendlleftmoney)coutendl本取款机余额不足!;elsecoutendl操作成功,正在出钞,请收好!;leftmoney=leftmoney-m;BankCardAtATM.setmoney(m); Clear();coutendlch;while(ch!=n&ch!=N&ch!=y&ch!=Y)cinch;while(ch=y|ch=Y);void ATM:information()/显示银行卡信息cout*endl;cout*用户姓名:BankCardAtATM.getname()endl; cout*卡号:BankCardAtATM.getnum()endl;cout*余额:BankCardAtATM.getmoney()endl;cout*endl;void ATM:lock()coutendl对不起,由于您的操作不当,您的卡已被锁!endl;exit(1);void ATM:exitATM()cout请取卡.endl;exit(0);void ATM:Clear()system(cls);/清屏函数void main()BankCard c1(张三,39328,30000,123456);ATM atm(c1);atm.welcome();5.2. 执行结果初始卡号:39328
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理质量管理制度
- 安全教育夹手事故防范与应对
- 消化内科出科感悟
- 物业开放日活动方案
- 绿色农业技术推广存在的问题及对策探究
- 婚姻解除后彩礼及财产分割标准协议书
- 翻译保密协议旅游攻略笔译保密合同
- 茶园土地流转与农业循环经济发展合作合同
- 车贷保险兼担保服务合同
- 竞业限制保密协议模板金融行业
- GB/T 37234-2018文件鉴定通用规范
- 健康减肥调脂降糖
- LaTeX科技排版课件
- 2023年河北交通投资集团有限公司招聘笔试题库及答案解析
- 反向传播算法课件
- 企业质量安全主体责任
- 南模自招试卷-2012年自主招生
- 数据仓库开发规范
- 可下载打印的公司章程
- 固定资产报废申请单
- 小学美术人美五年级上册偶戏皮影研究课教案
评论
0/150
提交评论