求一个模拟实现银行atm自动取款机系统(高分)
--Margarita--
2024-05-04 15:01:01
最佳回答
#include<iostream>using namespace std;class consumer;class atm{public: atm(consumer & cn):cnsm(cn){ } void welcome(); //登面 bool check_passwd(char n[],char pwd[]); //核对密码 void change_passwd(); //修改密码 void fetchmoney(); //取款 void zhuan(); //转账 void **rmation(); //查息 void exitatm(); //退出系统 void functionshow(); //功能界面 void lock(); //private: int times; //记录密入次数 consumer &cnsm; };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); //取钱 private: char passwd[20]; //用户密码 char name[20]; //用户姓名 char kahao[20]; //用户** float money; //用户余额 };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;}char*consumer::get_passwd() //取得密码{ return passwd;}void consumer::set_passwd(char pwd[])//设置密码{ strcpy(passwd,pwd);}void atm::welcome() //登录界面{ times=0; cout<<"*欢迎使用银行atm自动取款机*"<<endl; char pwd[10],num[20],ch; int i=0; do { i=0; cout<<endl<<"请输入**:"; do { cin.get(ch); num[i++]=ch; }while(ch!='\n'); num[i-1]='\0'; i=0; cout<<"请输入密码:"; do { cin.get(ch); pwd[i++]=ch; }while(ch!='\n'); pwd[i-1]='\0'; if(!check_passwd(num,pwd)) {cout<<"你输入的**或密码有误,请从新输入"<<endl; times++; } else{functionshow();} }while(times<3); 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(){ int n; do {cout <<endl<<"请输入相应的操作序号进行操作: "<<endl; cout<<"**************************************"<<endl; cout<<"1)修改密码 "<<" "<<"2)取款 "<<endl <<"3)转账 "<<" "<<"4)余额查询 "<<endl <<"5)退出系统 "<<endl; cout<<"**************************************"<<endl; cout<<"项目>"; cin>>n; while(n<1||n>4) { cout<<"请输入正确的操作序号!"<<endl; cout<<"项目>"; cin>>n; } switch(n) { case 1: change_passwd(); break; case 2: fetchmoney(); break; case 3: zhuan(); break; case 4: **rmation(); break; case 5: exitatm(); break; } }while(true);}void atm::change_passwd(){ char pwd[10],repwd[10]; int k; times=0; do { cout<<endl<<"请输入旧密码:"; cin>>pwd; if(!check_passwd(cnsm.get_kahao(),pwd)) times++; else break; }while(times<3); if(times==3) lock(); int t=0;do { int l=0; k=0; cout<<"请输入新密码:"; cin>>pwd; l=strlen(pwd); if(l<6) { k=1; cout<<"密码不能小于6位"<<endl; } else { cout<<"请再输入一次新密码:"; cin>>repwd; if((t=strcmp(pwd,repwd))!=0) { cout<<"你输入的两次密码不一样,请重新输入!"<<endl;} } }while(t!=0||k==1); cnsm.set_passwd(pwd); cout<<"密码修改成功,请牢记!"<<endl;}void atm::fetchmoney( ){float m;char ch; do{cout<<endl<<"你要取多少钱:"<<"\n$>\\"; cin>>m; while(m<=0) {cout<<"请输入正确的数字!"<<endl; cout<<"金额>"; cin>>m;} if(m>5000) {cout<<"对不起,每次最多取5000元"<<endl; } else{ if((int)m%100!=0) {cout<<"对不起,取款金额为100的倍数"<<endl;} else{ if(cnsm.get_money()-m<0) {cout<<"对不起,你的余额不足!"<<endl;} else{ cout<< endl<<"操作成功,请收好钱!" <<endl; cnsm.set_money( m );} } }cout<<"是否要继续该项操作:(y/n)"<<endl; cout<<"项目>"; cin>>ch; while(ch!='n'&&ch!='n'&&ch!='y'&&ch!='y') { cout<<"选择>"; cin>>ch; } }while(ch=='y'||ch=='y');}void atm::zhuan(){ char z[20]; float num;cout<<"请输入所转账号:"<<endl;cin>>z;cout<<"请输入所转钱数:"<<endl;cin>>num;if(cnsm.money>num){ cnsm.money-=num; cout<<"转账成功!"<<"您的余额:"<<cnsm.money<<endl;}else cout<<"余额不足!"<<endl;}void atm::**rmation(){ cout<<"**************************"<<endl; cout<<"* 用户姓名:"<<cnsm.get_name()<<endl; cout<<"* **: "<<cnsm.get_kahao()<<endl; cout<<"* 余额: "<<cnsm.get_money()<<endl; cout<<"**************************"<<endl;}void atm::lock(){ cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl; exit(1); // 系统非正常退出}void atm::exitatm(){ cout<<"成功退出系统!谢谢惠顾!"<<endl; exit(0);}void consumer::set_money (float m){ money=money-m;}int main(){ consumer c1("王小姐","123456",100000.00f,"123456");//先构造一个用户 atm atm(c1); atm.welcome(); return 0;} 20210311