首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个提款机的有关问题~(求教)

2012-02-25 
一个提款机的问题~~~~~~(求教)这是我做的一个“模拟银行存储系统”,它模拟自动存/取款机的程序系统。首先登录

一个提款机的问题~~~~~~(求教)
这是我做的一个“模拟银行存储系统”,它模拟自动存/取款机的程序系统。首先登录的用户会得到一张新卡,里面的余额只要1元,选择登录,会输入密码(第一次登录默认密码是888),然后就可以进入系统的主界面进行操作。一共有5种操作:查询余额、存款、取款、修改密码、退出系统。
  而且3次输入密码错误则会“吞卡”(必须要用一个变量进行保存);修改密码后,下一次要求输入的密码是修改后的。
  现在吞卡的要求和下一次输入密码是修改后的。这两个我怎么都没弄出来,在这里求教各位高手和老师,到底这两个该怎么弄啊?还有下面这程序还有哪些不足和缺点请指点一下,供我学习!
  谢谢了~~~~~~~


C/C++ code
#include <iostream>#include <string>using namespace std;class Cargo{  public:    int count;    float money;    void init();    float find();    float input();    float output();    int amend();};void Cargo::init(){    money=1.0;}float Cargo::find(){    cout << "您所剩的余额为:" << money << endl;    return money;}float Cargo::input(){    float mi;    cout << "您所要存入的钱数为:" << endl;    cin >> mi;    money+=mi;    cout << "您所剩的余额为:" << money <<endl;    return money;}float Cargo::output(){    float mo;    while(true)    {          cout << "您所要取出的金额为:" << endl;      cin >> mo;      if(mo>money)      {        cout << "您提取的金额比余额多,请重新输入" << endl;        continue;      }      else      {        money-=mo;        break;      }    }    cout << "您所剩的余额为:" << money <<endl;    return money;}int Cargo::amend(){  int mm2;    while(true)    {      cout << "请输入原密码:" << endl;      cin >> mm2;      if(mm2!=count)      {          cout << "您输入的密码不正确。" << endl;      }       else      {          cout << "请输入新密码:" << endl;          cin >> count;          break;      }      }  return 0;}int main(){  char zh;  int mm1;  int count=888;  char c;  Cargo c1;  c1.init();  cout << "请输入您的帐户:" <<endl;  cin >> zh;  cout << "你现在拥有一张新卡" <<endl;  while(true)  {    cout << "请输入您的密码:";    cin >> mm1;    if(mm1==count)    {       while(true)        {             cout << "\n***********************************";             cout << "\n         请选择你的操作";              cout << "\n a: 查询余额;";             cout << "\n c: 存款;";             cout << "\n t: 取款;";             cout << "\n o: 修改密码;";             cout << "\n q: 退出系统;";             cout << "\n***********************************";             cout << "\n 请选择:";             cin >> c;             switch(c)             {                 case 'a':                   c1.find();                   break;                 case 'c':                   c1.input();                   break;                 case 't':                   c1.output();                   break;                 case 'o':                   c1.amend();                   break;                 case 'q':                   return 0;                 default:                   cout << "\n您的选择有误,请重新选择!";                   break;                 }        }    }    else    {       cout << "你输入的密码有误!";       continue;    }  }  return 0;}


[解决办法]
C/C++ code
//你原来的程序感觉不像是C++啊,//根本就是面向程序的, 函数的定义也...//密码使用最好用string类型的,增加了成员变量string name;#include <iostream>#include <string>using namespace std;class Cargo{public:    Cargo()        : money(1.0)        , code("888")        , name("")    {}    string GetCode(){return code;}    void find();    void input();    void output();    void SetCode();    void SetName();private:    string code;//密码;    float money;    string name; //用户名;};void Cargo::find(){    cout << "您所剩的余额为:" << money << endl;}void Cargo::input(){    float mi;    cout << "您所要存入的钱数为:" << endl;    cin >> mi;    money+=mi;    cout << "您所剩的余额为:" << money <<endl;}void Cargo::output(){    float mo;    while(true)    {            cout << "您所要取出的金额为:" << endl;        cin >> mo;        if(mo>money)        {            cout << "您提取的金额比余额多,请重新输入" << endl;            continue;        }        else        {            money-=mo;            break;        }    }    cout << "您所剩的余额为:" << money <<endl;}void Cargo::SetCode(){    string mm2;    while(true)    {        cout << "请输入原密码:" << endl;        cin >> mm2;        if(mm2!=code)        {            cout << "您输入的密码不正确。" << endl;        }         else        {            cout << "请输入新密码:" << endl;            cin >> code;            break;        }        }}void Cargo::SetName(){    cout << "请输入您的帐户:" <<endl;    cin >> name;    cout << "你现在拥有一张新卡" <<endl;}int main(){    char zh;    string mm1;    char c;    Cargo c1;    c1.SetName();    while(true)    {        cout << "请输入您的密码:";        cin >> mm1;        if(mm1==c1.GetCode())        {            while(true)            {                cout << "\n***********************************";                cout << "\n         请选择你的操作";                cout << "\n a: 查询余额;";                cout << "\n c: 存款;";                cout << "\n t: 取款;";                cout << "\n o: 修改密码;";                cout << "\n q: 退出系统;";                cout << "\n***********************************";                cout << "\n 请选择:";                cin >> c;                system("cls");                switch(c)                {                case 'a':                    c1.find();                    break;                case 'c':                    c1.input();                    break;                case 't':                    c1.output();                    break;                case 'o':                    c1.SetCode();                    break;                case 'q':                    return 0;                default:                    cout << "\n您的选择有误,请重新选择!";                    break;                }            }        }        else        {            cout << "你输入的密码有误!";            continue;        }    }    return 0;} 


[解决办法]

C/C++ code
#include <iostream>#include <fstream>#include <cassert>#include <string>using namespace std;class Cargo{public:    Cargo()        : money(1.0)        , code("888")        , name("")    {}    string GetCode(){return code;}    void find();    void input();    void output();    void SetCode();    void SetName();    void CopyMsg2File() const;private:    string code;//密码;    float money;    string name; //用户名;};void Cargo::find(){    cout << "您所剩的余额为:" << money << endl;}void Cargo::input(){    float mi;    cout << "您所要存入的钱数为:" << endl;    cin >> mi;    money+=mi;    cout << "您所剩的余额为:" << money <<endl;}void Cargo::output(){    float mo;    while(true)    {            cout << "您所要取出的金额为:" << endl;        cin >> mo;        if(mo>money)        {            cout << "您提取的金额比余额多,请重新输入" << endl;            continue;        }        else        {            money-=mo;            break;        }    }    cout << "您所剩的余额为:" << money <<endl;}void Cargo::SetCode(){    string mm2;    while(true)    {        cout << "请输入原密码:" << endl;        cin >> mm2;        if(mm2!=code)        {            cout << "您输入的密码不正确。" << endl;        }         else        {            cout << "请输入新密码:" << endl;            cin >> code;            break;        }        }}void Cargo::SetName(){    cout << "请输入您的帐户:" <<endl;    cin >> name;    cout << "你现在拥有一张新卡" <<endl;}void Cargo::CopyMsg2File() const{    ofstream outFile("Cargo.txt", ios::app); //以后的话直接追加:ios::app    assert(outFile!=NULL);    outFile<<name<<" ";    outFile<<code<<" ";    outFile<<money<<endl;    outFile.close();}int main(){    int time=0;    string mm1;    char c;    Cargo c1;    c1.SetName();    while(true)    {        cout << "请输入您的密码:";        cin >> mm1;        if(mm1==c1.GetCode())        {            while(true)            {                cout << "\n***********************************";                cout << "\n         请选择你的操作";                cout << "\n a: 查询余额;";                cout << "\n c: 存款;";                cout << "\n t: 取款;";                cout << "\n o: 修改密码;";                cout << "\n q: 退出系统;";                cout << "\n***********************************";                cout << "\n 请选择:";                cin >> c;                system("cls");                switch(c)                {                case 'a':                    c1.find();                    break;                case 'c':                    c1.input();                    break;                case 't':                    c1.output();                    break;                case 'o':                    c1.SetCode();                    break;                case 'q':                    c1.CopyMsg2File();  //退出系统之前将用户信息拷贝到文件中去;                    return 0;                default:                    cout << "\n您的选择有误,请重新选择!";                    break;                }            }        }        else        {            time++;            cout << "你输入的密码有误!";            if(time==3)                break;        }    }    return 0;}只是改进了一下,个人觉得应该在增加一个类:取款机类。其实你现在是将用户类,取款机类混写了,所以你会觉得思路不清楚,在取款机类里面定义一个用户对象数组,    void find();    void input();    void output();这些函数应该是在取款机类里面的,慢慢来吧, ^_^^_^ 

热点排行