ATM机仿真设计实验_第1页
ATM机仿真设计实验_第2页
ATM机仿真设计实验_第3页
ATM机仿真设计实验_第4页
ATM机仿真设计实验_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、信控学院专业课实验报告专业 计算机科学与技术 班级 1502 姓名 王润科 评分 学号 150602223 第 23 组 年 月 日 一、实验名称: 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()登录终端界面核对所输卡号,密码是否正确b

3、ool check_passwd(char n,char pwd);用户信息核对修改密码void change_passwd();修改银行卡密码取款功能void fetchmoney();取款存款功能void deposit();存款查询信息void information();显示用户名、卡号、余额信息退出系统void exitATM();退出ATM终端系统功能选项界面void functionshow();显示操作功能锁卡,退出ATM终端void lock();退出终端 定义用户char* get_passwd();获取用户名char* get_kahao();获取银行卡号float ge

4、t_money();获取用户余额void set_passwd(char pwd);设置银行卡密码void set_money(float m);取款-更新银行卡余额void set_money2(float a);存款-更新银行卡余额 4.4 函数流程图:登录终端界面(主程序)流程图输入卡号、密码开始判断卡号密码是否正确进入账号操作菜单卡号密码输入是否超过3次关闭终端退出1.修改密码2.取款功能3.存款功能4.查询余额0.退出系统NNYY修改密码(核心算法)流程图:开始输入原密码密码输入是否超过三次密码是否输入正确输入新密码关闭终端新密码是否与原密码相同新密码是否为6位数再次输入新密码新密码

5、两次输入是否一致密码修改成功结束取款功能(核心算法)流程图:N开始输入取款金额是否为负数是否>5000是否为100的倍数账户中余额是否足够更新账户信息存款操作成功结束开始输入取款金额是否为负数是否>5000是否为100的倍数账户中余额是否足够更新账户信息YYYY实验源代码清单:#include <iostream> #include<iomanip>#include<string>#include <cstring> #include <stdio.h> #include <stdlib.h> using na

6、mespace 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_passwd(char pwd); void set_money(float m);void set_money2(float a);private: char passwd

7、10; /用户密码 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(); /修改用户密码 void fetchmoney(); /取款功能 void deposit(); /存款功能 void information(); /查询信息

8、void exitATM(); /退出终端系统 void functionshow(); /功能界面 void lock(); /输入错误,退出终端 private: int times; /记录密码输入次数 consumer &cnsm; ; int main() consumer one("wangrunke","22889350248",10000.00F,"666666"); /构造一位用户,信息包 /括:用户姓名、用户卡号、用户账户余额、用户密码 ATM atm(one); atm.welcome(); return

9、 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*consumer:get_kahao() /获取用户卡号 return kahao;

10、char*consumer:get_passwd() /获取用户密码 return passwd; void consumer:set_passwd(char pwd)/设置用户密码 strcpy(passwd,pwd); void ATM:welcome() /登录用户界面 times=0; cout<<"nnntt*欢迎使用银行ATM自动取款机*nn"<<endl; char pwd6,num20,ch; int i=0; do i=0; cout<<endl<<"tt请输入卡号:" do cin.ge

11、t(ch); numi+=ch; while(ch!='n'); numi-1='0' i=0; cout<<"tt请输入密码:" do cin.get(ch); pwdi+=ch; while(ch!='n'); pwdi-1='0' if(!check_passwd(num,pwd) cout<<"ntt你输入的卡号或密码有误,请重新输入!"<<endl; times+; else functionshow(); while(times<3);

12、lock(); bool ATM:check_passwd(char num,char pwd) if(strcmp(num,cnsm.get_kahao()=0&&strcmp(pwd,cnsm.get_passwd()=0) return true; else return false; void ATM:functionshow() system("cls"); /每次执行一次操作进行清屏 int n; do cout <<endl<<"nnntt*欢迎进入 用户界面*tt "<<endl; co

13、ut<<"nntt*1.修改密码 *"<<endl <<"tt*2.取款功能 *"<<endl <<"tt*3.存款功能 *"<<endl <<"tt*4.查询余额 *"<<endl <<"tt*0.退出系统 *"<<endl; cout<<"tt 功能选项(0-3):" cin>>n; while(n<0|n>4) co

14、ut<<"tt请在范围内输入功能选项!"<<endl; cout<<"tt 功能选项(0-4):" cin>>n; switch(n) case 0: exitATM(); 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(&

15、quot;cls"); char pwd6,repwd6; times=0; do cout<<"nnntt*修改密码*"<<"ntt请输入原密码:" cin>>pwd; if(!check_passwd(cnsm.get_kahao(),pwd) times+; else break; while(times<3); if(times=3)lock(); int k=0; int t=0; do k=0; cout<<"ntt请输入新密码:" cin>>pw

16、d; int g=0; int v=0; g=strlen(pwd); if(g!=6) k=1; cout<<"ntt密码为6位数字!"<<endl; for(int i=0;i<g-1;i+) if(pwdi=pwdi+1) v=v+1; if(v=g) k=1; cout<<"tt原密码与新密码不能一致!"<<endl; if(g=6&&v!=g) cout<<"ntt请再次输入新密码(两次保持一致):" cin>>repwd; if(

17、t=strcmp(pwd,repwd)!=0) cout<<"tt你输入的两次密码不一样,请重新输入!"<<endl; while(t!=0|k=1); cnsm.set_passwd(pwd); cout<<"nntt温馨提示:密码修改成功"<<endl; cout<<"nntt" system("pause"); system("cls"); void ATM:fetchmoney() system("cls")

18、; float m; char ch; do cout<<"nnntt *取款功能*" <<"ntt本ATM终端机只能取出面值为100元的人民币"<<endl<<"tt温馨提示:取款金额为100的倍数"<<endl<<"tt 每次最多取款5000元" <<"nntt 请输入取款金额:" cin>>m; while(m<=0) cout<<"ntt请不要输入负数或0!&quo

19、t;<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 请重新输入取款金额:" ; cin>>m; if(m>5000) cout<<"ntt对不起,本ATM终端机一次最多取5000元"<<endl;cout<<"tt 若金额超过1万元请在柜台取款" <<endl;cout<<"tt 如果给您带来不便,还请谅解" el

20、se if(int)m%100!=0) cout<<"ntt对不起,取款金额为100的倍数"<<endl; else if(cnsm.get_money()-m<0) cout<<"tt对不起,你的账户余额不足!"<<endl; else cout<< endl<<"tt *操作成功,请取回款" <<endl; cnsm.set_money( m ); cout<<"ntt *账户现有余额: "<<cn

21、sm.get_money()<<endl; cout<<"ntt是否要继续该项操作(Y/N):" cin>>ch; while(ch!='n'&&ch!='Y'&&ch!='y') cout<<"(Y/N):" cin>>ch; while(ch='y'|ch='Y'); system("cls"); void ATM:deposit() system("

22、cls"); float a; char b; do cout<<"nnntt *存款功能*" <<"ntt本ATM终端机只能存入面值为50或100元的人民币"<<endl<<"tt温馨提示:存款金额为50的倍数"<<endl<<"tt 每次最多存款5000元" <<"nntt 请输入存款金额:" cin>>a; while(a<=0) cout<<"ntt请不要

23、输入负数或0!"<<endl; cout<<"tt" ; system("pause"); cout<<"ntt 请重新输入存款金额:" ; cin>>a; if(a>5000) cout<<"ntt对不起,本ATM终端机一次最多存5000元"<<endl;cout<<"tt 若金额超过1万元请在柜台存款" <<endl;cout<<"tt 如果给您带来不便,还请

24、谅解" else if(int)a%50!=0) cout<<"ntt对不起,存款金额为50的倍数"<<endl; else cout<< endl<<"tt *操作成功,存款完成" <<endl; cnsm.set_money2 (a); cout<<"ntt *账户现有余额: "<<cnsm.get_money()<<endl; cout<<"ntt是否要继续该项操作(Y/N):" cin>

25、;>b; while(b!='n'&&b!='Y'&&b!='y') cout<<"(Y/N):" cin>>b; while(b='y'|b='Y'); system("cls"); void ATM:information() system("cls"); cout<<"nnntt*账户信息*"<<endl; cout<<"nntt 用户姓名 "<<" 卡号 "<<" 余额 "<<endl; cout<<"tt"

温馨提示

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

评论

0/150

提交评论