免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1965 | 回复: 2
打印 上一主题 下一主题

[C++] 求解决这个C++语言几个bug [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-16 10:44 |只看该作者 |倒序浏览
本帖最后由 tencrance 于 2010-12-16 10:46 编辑

姓名要求是汉字

卡号要求至少是10位

密码要求
输出显示****
密码输入不能为字母 因为真正的银行无此功能

存钱 可以存负数 这个要解决

存钱数目很大时 显示为 e+00x 要求更正
  1. #include<iostream.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. struct Bank
  5. {
  6.     char name[6],num[8],password[6];
  7.     long double money,o;
  8. }b,q;
  9. void tuichu();
  10. void fuction();
  11. void cunqian();
  12. void queren();
  13. void cin1()
  14.     {
  15.    b.money=0;
  16.    cin>>b.name;

  17.    cout<<"请输入您的卡号:"<<endl;
  18.    cin>>b.num;
  19.    cout<<"请输入您的密码:"<<endl;
  20.    cin>>b.password;
  21.    cout<<endl;
  22.     }
  23. void error()
  24. {
  25.     cout<<"您的输入错误,请再输入一遍!"<<endl;
  26. }
  27. void cout1()
  28.     {
  29.    cout<<"您的名字是:"<<b.name<<endl<<"您的卡号是:"<<b.num<<endl<<"您的密码是:"<<b.password<<endl;
  30.     }
  31. void one()
  32. {
  33.     cout<<"请按‘1’存钱,         请按‘2’取钱!"<<endl<<"请按‘3’查钱,         请按‘4’退出!" <<endl;
  34. }
  35. void tishi()
  36. {
  37.     char c;
  38.     cout<<"真的要退出吗,那就请按 'Y' . 否则,请按'N' ";
  39.     cin>>c;
  40.     if(c=='y'||c=='Y') tuichu();
  41. if(c=='n'||c=='Y') fuction();
  42.      else
  43.      {
  44.    error();
  45.    tishi();
  46.      };
  47. }
  48. void yue()
  49.     {
  50.     cout<<"您的余额为:"<<b.money<<endl;
  51.     tishi();
  52.     }
  53. void cunqian()
  54. {
  55.     b.o=b.money;
  56.     cout<<"您想存多少钱?"<<endl;
  57.     cin>>b.money;
  58.     if((b.money<'0')&&(b.money>'9'))
  59. {
  60. cout<<"请输入数字!"<<endl;
  61. cunqian();
  62. }
  63. if((b.money<=999999999)&&(b.money>=(-999999999)))
  64.     {
  65.     b.money+=b.o;
  66.     yue();
  67.     }
  68.     else
  69.     {
  70.     error();
  71.     cunqian();
  72.     b.money=0;
  73.     }
  74. }
  75. void quqian()
  76. {
  77.     double d;
  78.     cout<<"您想取多少钱?"<<endl;
  79.     cin>>d;
  80.     if((d<999999999)&&(d>=0)&&(d<=b.money+0))
  81.     {
  82.     b.money-=d;
  83.     yue();
  84.     }
  85.     else
  86.     {
  87. cout<<"对不起,您的余额不足!"<<endl;
  88. quqian();
  89.     }
  90. }
  91. void chaqian()
  92. {
  93.     yue();
  94. }
  95. void tuichu()
  96. {
  97. cout<<endl<<"欢迎下次光临欢迎进入恒大建设银行 ,请稍等..."<<endl;
  98. cout<<"请取回您的卡,谢谢您的光顾,欢迎下次再来!"<<endl;
  99. exit(0);
  100. }
  101. void fuction()
  102. {
  103.     char x;
  104.     {
  105.     one();
  106.     cin>>x;
  107.     switch(x)
  108.     {
  109.        case '1': cunqian();break;
  110.        case '2': quqian();break;
  111.        case '3': chaqian();break;
  112.        case '4': tuichu();break;
  113.        default: cout<<"您的输入错误,请输入1到4按键,谢谢!"<<endl;fuction();
  114.     }
  115.     }
  116. }
  117. void cin2()
  118.     {
  119.    cout<<"请输入您的卡号:"<<endl;
  120.    cin>>q.num;
  121.    cout<<"请输入您的密码:"<<endl;
  122.    cin>>q.password;
  123.    cout<<endl;
  124.     }
  125. void cout2()
  126. {
  127.     cout<<"欢迎进入恒大建设银行!"<<endl<<"请先在提示下进行开户操作..."<<endl<<"请输入您的名字:"<<endl;
  128.     cin1();
  129.     cout1();
  130.     queren();
  131. }
  132. void queren()
  133. {
  134.     cout<<"请再次输入以便确认您的信息:"<<endl;
  135.     int e,f;
  136.     cin2();
  137.     e=strcmp(q.num,b.num);
  138. f=strcmp(q.password,b.password);
  139. if (e==0&&f==0) fuction();
  140.       else {
  141.         cout<<"您的信息有误,请重新输入:"<<endl;
  142.            cin2();
  143.          e=strcmp(q.num,b.num);
  144.          f=strcmp(q.password,b.password);
  145.                   if (e==0&&f==0) fuction();
  146.                   else
  147.        {
  148.        cout<<"您的信息有误,请重新输入:"<<endl;
  149.                         cin2();
  150.                      e=strcmp(q.num,b.num);
  151.                            f=strcmp(q.password,b.password);
  152.                              if(e==0&&f==0) fuction();
  153.                              else {
  154.             cout<<"您的信息有误,请重新输入:"<<endl;
  155.          tuichu();
  156.          }
  157.        }
  158.      }
  159. }
  160. void main()
  161. {
  162.     cout2();
  163. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-12-17 17:40 |只看该作者
名字是汉字
很简单 你直接切换成汉字输入法直接输入就OK
卡号10位
可以加个判断 等用户输入卡号后 判断下 卡号字符串的长度 strlen()是否大于10 另外如果需要卡号全是数字 也可以诸位判断是不是数字字符
密码显示*
这个在输出时 就不能简单的输出密码信息了 要做个替换  比如 可以求出密码的长度 然后另外申请一个局部字符串数组 把其前密码长度索引都填成* 然后输出密码时输出这个数组即可。
密码不能为字母
同卡号不能为字母 用户输入密码后 判断每一位是不是数字
存钱为负数
这个本身应该支持吧 double 本身可以是负值的 +一个负数 不就相当于减了嘛
最后一个数字显示问题 如果钱数足够大以至于double 支撑不了 建议用字符串保存吧。

论坛徽章:
0
3 [报告]
发表于 2010-12-18 12:25 |只看该作者
估计没人会去看你的代码,思路楼上已经提供了,自己debug吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP