一个c++的简单小程序,各位大师帮小弟我看下哪错了~

一个c++的简单小程序,各位大师帮我看下哪错了~~~~
//一个atm机存取款的程序,编译可以通过,存取款有问题,查询余额正常。。。。
#include <iostream.h>
#include <string.h>
enum RESULT {FAIL=0, SUCC}; //FAIL代表失败,SUCC代表成功
class ACCOUNT {
private:
unsigned long ID_No; //帐号
unsigned int password; //密码
char name[10]; //姓名
double balance; //馀额
public:
ACCOUNT(unsigned long, unsigned int, char *, double);//建构式
RESULT deposit(unsigned long, unsigned int, double); //存款
RESULT drawing(unsigned long, unsigned int, double); //提款
double chk_balance(unsigned long, unsigned int); //查询馀额
RESULT check(unsigned long, unsigned int); //检查密码
};

ACCOUNT::ACCOUNT(unsigned long id, unsigned int pw, char *n, double m)
:ID_No(id),password(pw),balance(m)
{
strcpy ( name , n ); //非一对一资料指定,仍需写在函数主体内
}

RESULT ACCOUNT::deposit(unsigned long id, unsigned int pw, double m)
//存款
{
if (check(id,pw)) //检查帐号和密码
return FAIL;
else
{
balance+=m; //存款,馀额增加
return SUCC;
}
}

RESULT ACCOUNT::drawing(unsigned long id, unsigned int pw, double m)
//提款
{
if (check(id,pw) && balance>=m) //检查帐号和密码,以及是否有足够的馀额
return FAIL;
else
{
balance-=m; //提款,馀额减少
return SUCC;
}
}

double ACCOUNT::chk_balance(unsigned long id, unsigned int pw)
//查询馀额
{
if (check(id,pw))
return balance;
else
return (double)FAIL;
}
RESULT ACCOUNT::check(unsigned long id, unsigned int pw)
//检查密码
{
if (id==ID_No && pw==password)
return SUCC;
else
return FAIL;
}

void main()
{
ACCOUNT TestAcc(8816001,1234,"AAAA",1000);
int choice;
unsigned long id; //储存输入的帐号
unsigned int pw; //储存输入的密码
double m; //储存存款金额,提款金额或查询到的馀额

do {
cout << " \n自动柜员机\n";
cout << "------------\n";
cout << "<1> 存款\n";
cout << "<2> 提款\n";
cout << "<3> 查询馀额\n";
cout << "<4> 结束\n";
cout << "------------\n";
cout << "请选择:";
cin >> choice;
switch(choice)
{
case 1:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
cout << "请输入存款金额:";
cin >> m;
if (TestAcc.deposit(id,pw,m))
{
cout << "存款作业成功! 您目前存款馀额为 ";
cout << TestAcc.chk_balance(id,pw) << "元\n";
}
else
cout << "存款作业失败! 可能是帐号或密码错误...\n";
break;
case 2:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
cout << "请输入提款金额:";
cin >> m;
if (TestAcc.drawing(id,pw,m))
{
cout << "提款作业成功! 您目前存款馀额为 ";
cout << TestAcc.chk_balance(id,pw) << "元\n";
}
else
cout << "提款作业失败! 可能是帐号或密码错误,或者存款不足...\n";
break;
case 3:
cout << "请输入帐号:";
cin >> id;
cout << "请输入密码:";
cin >> pw;
m = TestAcc.chk_balance(id,pw);
if (m)
{
cout << "提款作业成功! 您目前存款馀额为 ";
cout << m << "元\n";
}
else
cout << "查询作业失败! 可能是帐号或密码错误...\n";
break;
}
}while (choice!=4);
cout << "谢谢使用!";
}


------解决方案--------------------
C/C++ code

RESULT ACCOUNT::deposit(unsigned long id, unsigned int pw, double m)
//存款
{ 
    if (!check(id,pw)) //检查帐号和密码,check函数检查对了返回 0,而错了返回1,所以这个地方改下,可能其它地方也要相对应的改。
        return FAIL; 
    else 
    {
        balance+=m; //存款,馀额增加
        return SUCC;
    }
}