ATM取款机模拟——数据结构课设

   今天帮人写的第二篇课设 , ;-) 机智的窝

    要求:大概说一下吧,就是要创建一个用户(初化一账户),模拟ATM的业务(取款,100的整数倍,改密               码,查余额,等等,各种简单繁琐的操作 ;-) 

   直接贴代码吧:

#include 
#include 
#include 
#include 
#include 

using namespace std;

class consumer;
class ATM     // ATM取款机
{
public:
    ATM(consumer& cn):cnsm(cn){}
    void welcome();        // 登陆界面
    bool check_passwd(char n[],char pwd[]); // 核对密码
    void change_passwd();     // 修改密码
    void fetchmoney();        // 取款
    void information();            // 查询信息
    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_num();               // 取得卡号
    char* get_passwd();            // 取得密码
    float get_money();             // 取得余额
    void set_passwd(char pwd[]);   // 设置密码
    void set_money(float m);       // 取钱
private:
    char passwd[8];    // 用户密码
    char name[20];     // 用户姓名
    char num[20];
    float money;
};


consumer::consumer(char Name[],char Num[],float Money,char Password[])
{
    strcpy(name,Name);
    strcpy(num,Num);
    money=Money;
    strcpy(passwd,Password);
}
float consumer::get_money()
{
    return money;
}
char* consumer::get_name()
{
    return name;
}
char* consumer::get_num()
{
    return num;
}
char* consumer::get_passwd()
{
    return passwd;
}
void consumer::set_money(float m)
{
    money-=m;
}
void consumer::set_passwd(char pwd[])
{
    strcpy(passwd,pwd);
}

void ATM::welcome()
{
    times=0;
    cout<<"  欢迎使用tdap银行ATM自动取款机 "<< endl;
    char pwd[8],num[20],ch;
    int i=0;
    do
    {
        i=0;
        cout<<"请输入卡号:";
        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<<"你输入的卡号或密码有误,请重新输入"<";
        cin>>n;
        while(n<1||n>4){
            cout<<"请输入正确的操作序号!"<";
            cin>>n;
        }

        switch(n){
            case 1:   change_passwd();   break;
            case 2:   fetchmoney();      break;
            case 3:   information();     break;
            case 4:   exit(0);         break;
        }
    }while(true);
}
void ATM::change_passwd(){
    char pwd[8],repwd[8];
    times=0;
    do{
        cout<<"请输入旧密码:";
        cin>>pwd;
        if(!check_passwd(cnsm.get_num(),pwd))
        times++;
        else
        break;
    }while(times<3);
    if(times==3)
    lock();

    int t=0;
    do{
        cout<<"请输入新密码:";
        cin>>pwd;
        cout<<"请再输入一次新密码:";
        cin>>repwd;
        if((t=strcmp(pwd,repwd))!=0)
        cout<<"你输入的两次密码不一样,请从新输入!"<";
        cin>>m;
        while(m<=0 || m%100 !=0 ){
            cout<<"请输入正确的数字!"< ";
            cin>>m;
        }
        if(cnsm.get_money()-m<0){
            cout<<"对不起,你的余额不足!"< ";
       cin>>ch;
        while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){
            cout<<"$ >\\";
            cin>>ch;
        }
   }while(ch=='y'||ch=='Y');
}
void ATM::information()
{
    cout<<"**********************************"<



你可能感兴趣的:(数据结构,c/c++,学习过程)