




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、实验名称: ATM机仿真程序设计 二、实验目的:实验目的使学生掌握类的简单设计及实现三、实验仪器:PC机,人手一机4、 实验原理及内容4.1 实验设计:运用C+语言描述ATM机类和银行卡类,每个类均包含数据成员和成员函数,并运用对象的引用和友元类的知识。注重面向对象程序设计理论知识的理解与实际的动手编程能力。运用面向对象的理念实现模拟自动取款机使用过程中的界面和用户交互过程。 实验预定要求:1) 正确性和健壮性:即此程序对一切合法的的操作都得能满足规格说明要求的结果,对不合法的操作也要有正确的处理措施,使程序严谨,保证用户的信息和财产安全;2) 可读性:程序要尽量简明扼要,便与相关人员调试
2、和修改;3) 效率性:要求本程序执行时间尽可能短,占用的内存空间尽可能的少。4.2 ATM系统实现:1)核对用户卡号、密码:核对用户输入的密码与卡号是否对应正确;2)修改密码:修改银行卡密码;3)取款功能4)存款功能5)查询账户信息:显示用户名、卡号、余额信息;6)退出终端系统:操作完成,退出;7)锁机吞卡:操作不当,密码输入错误超过三次,退出系统。4.3系统分工:功能方法或函数相关描述登录界面void welcome()登录终端界面核对所输卡号,密码是否正确bool check_passwd(char n,char pwd);用户信息核对修改密码void change_passwd();修改
3、银行卡密码取款功能void fetchmoney();取款存款功能void deposit();存款查询信息void information();显示用户名、卡号、余额信息退出系统void exitATM();退出ATM终端系统功能选项界面void functionshow();显示操作功能锁卡,退出ATM终端void lock();退出终端 定义用户char* get_passwd();获取用户名char* get_kahao();获取银行卡号float get_money();获取用户余额void set_passwd(char pwd);设置银行卡密码void set_money(flo
4、at m);取款-更新银行卡余额void set_money2(float a);存款-更新银行卡余额 4.4 函数流程图:登录终端界面(主程序)流程图输入卡号、密码开始判断卡号密码是否正确进入账号操作菜单卡号密码输入是否超过3次关闭终端退出1.修改密码2.取款功能3.存款功能4.查询余额0.退出系统NNYY修改密码(核心算法)流程图:开始输入原密码密码输入是否超过三次密码是否输入正确输入新密码关闭终端新密码是否与原密码相同新密码是否为6位数再次输入新密码新密码两次输入是否一致密码修改成功结束取款功能(核心算法)流程图:N开始输入取款金额是否为负数是否5000是否为100的倍数账户中余额是否足
5、够更新账户信息存款操作成功结束YYYY实验源代码清单:#include #include#include#include #include #include using namespace std; class consumer /用户定义 public: friend class ATM; consumer(char Name,char Num, float Money,char Password); protected: char* get_name(); char* get_kahao(); char* get_passwd(); float get_money(); void set_
6、passwd(char pwd); void set_money(float m);void set_money2(float a);private: char passwd10; /用户密码 char name20; /用户姓名 char kahao20; /用户卡号 float money; /用户余额 ; class ATM /ATM终端定义 public: ATM(consumer & cn):cnsm(cn) void welcome(); /登陆终端界面 bool check_passwd(char n,char pwd); /核对用户密码 void change_passwd()
7、; /修改用户密码 void fetchmoney(); /取款功能 void deposit(); /存款功能 void information(); /查询信息 void exitATM(); /退出终端系统 void functionshow(); /功能界面 void lock(); /输入错误,退出终端 private: int times; /记录密码输入次数 consumer &cnsm; ; int main() consumer one(wangrunke,22889350248,10000.00F,666666); /构造一位用户,信息包 /括:用户姓名、用户卡号、用户账户
8、余额、用户密码 ATM atm(one); atm.welcome(); return 0; consumer:consumer(char Name,char Kahao, float Money,char Password) /构造函数,建立账户 strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password); float consumer:get_money() /获取余额 return money; char*consumer:get_name() /获取用户名 return name; char*
9、consumer:get_kahao() /获取用户卡号 return kahao; char*consumer:get_passwd() /获取用户密码 return passwd; void consumer:set_passwd(char pwd)/设置用户密码 strcpy(passwd,pwd); void ATM:welcome() /登录用户界面 times=0; coutnnntt*欢迎使用银行ATM自动取款机*nnendl; char pwd6,num20,ch; int i=0; do i=0; coutendltt请输入卡号:; do cin.get(ch); numi+
10、=ch; while(ch!=n); numi-1=0; i=0; couttt请输入密码:; do cin.get(ch); pwdi+=ch; while(ch!=n); pwdi-1=0; if(!check_passwd(num,pwd) coutntt你输入的卡号或密码有误,请重新输入!endl; times+; else functionshow(); while(times3); lock(); bool ATM:check_passwd(char num,char pwd) if(strcmp(num,cnsm.get_kahao()=0&strcmp(pwd,cnsm.get
11、_passwd()=0) return true; else return false; void ATM:functionshow() system(cls); /每次执行一次操作进行清屏 int n; do cout endlnnntt*欢迎进入 用户界面*tt endl; coutnntt*1.修改密码 *endl tt*2.取款功能 *endl tt*3.存款功能 *endl tt*4.查询余额 *endl tt*0.退出系统 *endl; coutn; while(n4) couttt请在范围内输入功能选项!endl; coutn; switch(n) case 0: exitATM
12、(); break; case 1: change_passwd(); break; case 2: fetchmoney(); break;case 3: deposit(); break; case 4: information(); break; while(true); void ATM:change_passwd() system(cls); char pwd6,repwd6; times=0; do coutnnntt*修改密码*pwd; if(!check_passwd(cnsm.get_kahao(),pwd) times+; else break; while(times3)
13、; if(times=3)lock(); int k=0; int t=0; do k=0; coutpwd; int g=0; int v=0; g=strlen(pwd); if(g!=6) k=1; coutntt密码为6位数字!endl; for(int i=0;ig-1;i+) if(pwdi=pwdi+1) v=v+1; if(v=g) k=1; couttt原密码与新密码不能一致!endl; if(g=6&v!=g) coutrepwd; if(t=strcmp(pwd,repwd)!=0) couttt你输入的两次密码不一样,请重新输入!endl; while(t!=0|k=1
14、); cnsm.set_passwd(pwd); coutnntt温馨提示:密码修改成功endl; coutnntt; system(pause); system(cls); void ATM:fetchmoney() system(cls); float m; char ch; do coutnnntt *取款功能* ntt本ATM终端机只能取出面值为100元的人民币endltt温馨提示:取款金额为100的倍数endltt 每次最多取款5000元 m; while(m=0) coutntt请不要输入负数或0!endl; couttt ; system(pause); coutm; if(m5
15、000) coutntt对不起,本ATM终端机一次最多取5000元endl;couttt 若金额超过1万元请在柜台取款 endl;couttt 如果给您带来不便,还请谅解; else if(int)m%100!=0) coutntt对不起,取款金额为100的倍数endl; else if(cnsm.get_money()-m0) couttt对不起,你的账户余额不足!endl; else cout endltt *操作成功,请取回款 endl; cnsm.set_money( m ); coutntt *账户现有余额: cnsm.get_money()endl; coutch; while(c
16、h!=n&ch!=Y&ch!=y) coutch; while(ch=y|ch=Y); system(cls); void ATM:deposit() system(cls); float a; char b; do coutnnntt *存款功能* ntt本ATM终端机只能存入面值为50或100元的人民币endltt温馨提示:存款金额为50的倍数endltt 每次最多存款5000元 a; while(a=0) coutntt请不要输入负数或0!endl; couttt ; system(pause); couta; if(a5000) coutntt对不起,本ATM终端机一次最多存5000元
17、endl;couttt 若金额超过1万元请在柜台存款 endl;couttt 如果给您带来不便,还请谅解; else if(int)a%50!=0) coutntt对不起,存款金额为50的倍数endl; else cout endltt *操作成功,存款完成 endl; cnsm.set_money2 (a); coutntt *账户现有余额: cnsm.get_money()endl; coutb; while(b!=n&b!=Y&b!=y) coutb; while(b=y|b=Y); system(cls); void ATM:information() system(cls); cou
18、tnnntt*账户信息*endl; coutnntt 用户姓名 卡号 余额 endl; coutttcnsm.get_name() cnsm.get_kahao() cnsm.get_money()endl; coutnntt*endl; coutnntt; system(pause);system(cls); void ATM:lock() system(cls); coutendlnnntt感谢使用本ATM终端机! ntt请取回您的银行卡.endl; void ATM:exitATM() system(cls); coutnnntt成功退出ATM终端系统!欢迎使用!endl; exit(0); void consumer:set_money (float m) money=money-m; void consumer:set_money2 (float a) money=money+a; 5、 实验结果(实验数据、曲线等)5.1 登录用户界面:三次密码输入错误,执行lock 函数,退出终端。密码输入正确,则登陆至该账户该账户登陆成功界面,显示有5个基本功能5.2进行账户信息查询(功能选项4):5.3 进行修改账户密码设置(功能选项1):5.4 进行取款操作(功能选项2):【ATM机取款要求较多:只能取出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政管理人员的职业素养考核试题及答案
- 农村水资源保护利用协议
- 行政管理中的领导沟通试题及答案
- 2024-2025学年高中历史第二单元近代中国的反侵略反封建斗争第10课新民主主义革命的胜利学案含解析北师大版必修1
- 行政文书的效能评估与优化措施试题及答案
- 行政管理中的社会参与试题及答案
- 2025合作伙伴协议合同书
- 公文写作规范的遵循及试题及答案
- 2025年苗木购销合同红心猕猴桃空白模板
- 2025【合同协议范本】采购合同范本模板
- 列那狐测试题及答案
- 《酉阳杂俎》女性角色研究
- 2025年福建省福州市电子信息集团有限公司招聘笔试参考题库含答案解析
- 浙江省嘉兴市2025届高三下学期4月教学测试物理+答案
- 婴幼儿照护 课件 2遗尿现象的干预
- 运输公司2024年防汛工作方案
- 公卫重精培训试题及答案
- 2025年广东省深圳市31校中考一模历史试题及答案
- 2025年上海劳动合同范本
- 氧化碳气瓶搬运、存放及使用管理制度
- 老年人安全用药与护理
评论
0/150
提交评论