




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 面向对象程序设计课程设计报告模拟ATM自动取款机系统姓 名 : 学 号 : 专 业 班 级 : 完 成 时 间 : 指 导 老 师 : 目 录一、需求分析2二、程序的主要功能2三、程序运行平台2四、流程图2五、程序类的说明2六、模块分析3七、比较有特色的函数4八、存在的不足与对策4九、程序源代码4一、需求分析为了方便用户的及时取款,查询,及时修改密码的方便,本课题设计并模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额,取款,修改密码,退出系统等功能。二、程序的主要功能1、锁机功能:卡号,密码输入最多三次,否则直接退出系统。2、取款功能:取款金额受卡余额,机单笔最大取款金
2、额及机当前剩余金额的限制。3、查询功能:实现查询余额的功能。4、更改密码:实现密码更改功能,对于密码要有2次验证。5、退卡功能:实现退出系统功能。三、程序运行平台Dev c+四、流程图登陆界面主界面取款功能查询功能修改密码锁卡功能退出系统 图1 系统流程图五、程序类的说明5.1 ATM类:该类主要实现取款,查询,修改密码,登录界面等功能。class ATM/ATM类 public: ATM(YongHu& y):yh(y) .private: int times; YongHu& yh; ; 5.2 YongHu类:该类主要实现卡号,密码,余额的获取函数等功能。class Yo
3、ngHu/用户类 public: friend class ATM; . private: char ID20;/卡号 char password10;/密码 float money;/卡上余额 ;5.3 查询函数:调用YongHu类的获取函数将信息输出void ATM:CX() .5.4 修改密码函数:使用do while语句实现修改密码的功能void ATM:GG().5.5 密码星号函数:通过while语句实现输入密码时每输入一个字符就显示一个星号的功能char * ATM:GetPassword().六、模块分析1、锁机功能:卡号,密码输入最多三次,否则直接退出系统。2、取款功能:取款
4、金额受卡余额,机单笔最大取款金额及机当前剩余金额的限制。3、查询功能:实现查询余额的功能。4、更改密码:实现密码更改功能,对于密码要有2次验证。5、退卡功能:实现退出系统功能。七、比较有特色的函数char * ATM:GetPassword() char c; int i=0; char password6; while (c=getch()!='r') passwordi=c; putchar('*'); i+; if (i>=6) break; return password;/实现密码星号化的功能八、存在的不足与对策由于我的能力及时间限制,所以这次这
5、个系统设计得非常简单,功能也很单一,并且这次并没有使用文件的功能,所有的数据都是一次性的,我会在课下继续探究可以完善该系统的方法.九、程序源代码/funtion.h#include<iostream> #include<cstring> #include<cstdlib> class YongHu;/定义全局类class class ATM/ATM类 public: ATM(YongHu& y):yh(y) void DLJM();/登陆界面 bool HDMM(char ID,char password);/核对密码 void QK();/取款 v
6、oid CX();/查询 void GG();/更改密码 void GNJM();/功能界面 void LK();/锁卡 void TC();/退出 char *GetPassword();private: int times; YongHu& yh; ; class YongHu/用户类 public: friend class ATM; YongHu(char id,float Money,char Password); char* get_ID();/获取卡号 char* get_password();/获取密码 float get_money();/获取余额 void set_
7、password(char Password);/设置密码 void set_money(float m);private: char ID20;/卡号 char password10;/密码 float money;/卡上余额 ;/ATM.cpp#include<iostream>#include<conio.h>#include "funtion.h"#include <cstring>using namespace std; void ATM:DLJM()/登陆界面 times=0; char ID20,password10,ch;
8、 int i=0; do i=0; cout<<" "<<endl; cout<<" 欢迎使用中国农业银行!"<<endl; cout<<" "<<endl<<endl; cout<<" 测试卡号为:123456"<<endl; cout<<" 测试密码为:123456"<<endl; cout<<" 测试卡号余额为:10000元"&
9、lt;<endl<<endl<<endl; cout<<" 请输入您的卡号 "<<endl; cout<<"卡号:" do cin.get(ch); IDi+=ch; while(ch!='n'); IDi-1='0' i=0; cout<<endl<<" 请输入您的密码 "<<endl; cout<<"密码:" strcpy(password,GetPassword()
10、; if(!HDMM(ID,password) cout<<"对不起,您的卡号或密码有误,请重新输入"<<endl; times+; else GNJM(); while(times<3); LK(); bool ATM:HDMM(char ID,char password) if(strcmp(ID,yh.get_ID()=0&&strcmp(password,yh.get_password()=0) return true; else return false; void ATM:GNJM() int n; cout<
11、<endl<<endl<<endl; cout<<""<<endl; cout<<" 1)取款"<<endl; cout<<" 2)查询余额"<<endl; cout<<" 3)更改密码"<<endl; cout<<" 4)退出系统"<<endl; cout<<""<<endl; cout<<
12、endl<<"请输入你想操作的序号:" cin>>n; if(n<0|n>4) cout<<"您输入的序号不正确,请重新输入:" cin>>n; switch(n) case 1:QK();break; case 2:CX();break; case 3:GG();break; case 4:TC();break; while(true); void ATM:QK() float m; char ch; cout<<endl<<"请输入您要取多少钱:"
13、 cin>>m; while(m<=0) cout<<"请输入正确的取款数:"<<endl; cin>>m; if(yh.get_money()-m<0) cout<<"对不起,您的余额不足!"<<endl; else if(int)m%100!=0) cout<<"对不起,您的取款金额必须为100的倍数!"<<endl; else if(m>2000) cout<<"对不起,您每次只能取2000元!
14、"<<endl; else cout<<"操作成功,请稍后!"<<endl; yh.set_money(m);cout<<"请输入(y/n)确认是否取钱!"<<endl; cin>>ch; while(ch!='Y'&&ch!='y'&&ch!='N'&&ch!='n') cout<<"请再次输入(y/n)确认是否取钱!"<&
15、lt;endl; cin>>ch; if(ch='y'|ch='Y')cout<<"您已取款成功!请收好钱!"elsecout<<"您已取款成功!请尽快取钱!" GNJM(); void ATM:CX() cout<<""<<endl; cout<<" "<<endl; cout<<" 卡号:"<<yh.get_ID()<<endl; cout&
16、lt;<" 余额:"<<yh.get_money()<<"元"<<endl; cout<<" "<<endl;cout<<""<<endl; GNJM(); void ATM:GG() char password10,Xpassword10; times=0; do cout<<endl<<"请输入旧密码:" strcpy(password,GetPassword();if(!HDM
17、M(yh.get_ID(),password) times+; else break;while(times<3); if(times=3) LK(); int t=1;do cout<<endl<<"请输入新密码:" strcpy(password,GetPassword(); cout<<endl<<"请再次输入新密码:" strcpy(Xpassword,GetPassword(); t=strcmp(password,Xpassword);/对新密码进行比较,如果相等,则返回0 if(t!=0
18、) cout<<endl<<"您输入的密码不一致,请重新输入!"<<endl; while(t!=0);yh.set_password(password);cout<<endl<<"密码修改成功,请您牢记!"<<endl; GNJM(); void ATM:LK() cout<<"对不起,你输入的密码错误已达三次,您的卡已被没收!"<<endl; exit(1);void ATM:TC() cout<<"请取走您的卡,感谢您的使用,欢迎您下次再来!"<<endl; exit(0); char * ATM:GetPassword() char c; int i=0; char password6; while (c=getch()!='r') passwordi=c; putchar('*'); i+; if (i>=6) break; return password;/YongHu.cpp#include "funtio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于注意力机制的激光距离选通三维成像
- 北师大版八年级数学下册《2.4一元一次不等式》同步测试题带答案
- 六年级体育运动推广计划
- 基于多传感器数据融合的手势识别方法研究
- 高职院校教师师德师风培训心得体会
- 医院食品安全与感染预防措施
- 基于学习基因和不确定性估计的多模态情感分析
- 2025至2030中国映前广告市场运行态势及发展战略建议报告
- 面向越南学生的反义复合词教学研究
- 施工现场突发事件应急处理措施
- 【MOOC】国情分析与商业设计-暨南大学 中国大学慕课MOOC答案
- 恶性心律失常的急救护理
- 风机安装与调试方案
- 肿瘤的化学治疗
- 《项目风险评估》课件
- 空腔脏器手术解析
- 2024年五年级英语下册 Unit 3 Spring Begins from March第2课时说课稿 陕旅版(三起)
- 大班剪纸教育课件
- xx小学校服价格评估方案
- 房地产销售管理制度实施细则
- 体育协会赛事组织绩效考核方案
评论
0/150
提交评论