不好意思!但是现在这个程序比上次那个好多了,而且没有重复,程序看起来比较简练,以下是新程序:

#include<iostream>
#include<string>
using namespace std;

class consumer
{
public:
 void int_consumer(string N ,string I,string P,float M);   //初始化
 string get_name();   //读取姓名
 string get_id();   //读取账号
 string get_password();   //读取密码
 float get_money();   //读取金额
 void set_money(float MM);
private:
 string name;
 string id;
 string password;
 float money;
};

class bank
{
public:
 void welcome();   //欢迎界面
 void exit_system();   //退出系统
 void menu();   //选择菜单
 int seek(string);   //查找卡号
 bool check();
 void int_consumer(int i,string N,string I,string P,float M);
 void change_password(consumer &cs);
 void show_me(consumer& cs);
 void transfer_money(consumer& cs);
 void withdraw_money(consumer& cs); 
 void deposit_money(consumer& cs); 
private:
 int i;
 string pass;
    consumer cs[4];
};
void consumer::set_money(float MM)
{
 money=MM;
}

void consumer::int_consumer(string N,string I,string P,float M)
{
 name=N;
 id=I;
 password=P;
 money=M;
}
string consumer::get_name()
{
 return name;
}
string consumer::get_id()
{
 return id;
}
string consumer::get_password()
{
 return password;
}
float consumer::get_money()
{
 return money;
}
void bank::welcome()
{
 cout<<"**********欢迎使用**********"<<endl;
 cout<<"请输入卡号:"<<endl;
 string id;
 int flag=-1;
 cin>>id;
 flag=seek(id);
}
void bank::transfer_money(consumer& cs)
{
 cout<<"请输入对方账号"<<endl;
 int a1;
 cin>>a1;
 cout<<"请输入转账金额"<<endl;
 float a;
 cin>>a;
 if(cs.get_money()-a<0)
 {
  cout<<"对不起你的余额不足"<<endl;
 }
 else
 {
  cs.set_money(cs.get_money()-a);
  cout<<"转账成功"<<endl;
 }
}
void bank::exit_system()
{
 cout<<"**********谢谢使用**********"<<endl;
 cout<<"********请收好您的卡********"<<endl;
 exit(0);
}
void bank::menu()
{
 int n;
 do
 {
  cout<<"**********************"<<endl;
  cout<<"*请输入相应的操作序号*"<<endl;
  cout<<"****  1  修改密码 ****"<<endl;
  cout<<"****  2  进行取款 ****"<<endl;
  cout<<"****  3  显示余额 ****"<<endl;
  cout<<"****  4  退出系统 ****"<<endl;
  cout<<"****  5  进行转账 ****"<<endl;
  cout<<"****  6  进行存款 ****"<<endl;
  cout<<"**********************"<<endl;
  cin>>n;
  while(n<1||n>6)
  {
   cout<<"操作错误,请重新输入!"<<endl;
   cin>>n;
  }
  switch(n)
  {
  case 1: change_password(cs[i]);break;
  case 2: withdraw_money(cs[i]);break;
  case 3: show_me(cs[i]);break;
  case 4: exit_system();break;
  case 5: transfer_money(cs[i]);break;
  case 6: deposit_money(cs[i]);break;
  }
 }while(true);
}
int bank::seek(string id)
{
 for(int j=0;j<4;j++)
 {
  if(id==cs[j].get_id())
  {
   i=j;
   break;
  }
 }
 if(j>=4)
 {
  i=-1;
 }
 return i;
}
void bank::int_consumer(int i,string N,string I,string P,float M)
{
 cs[i].int_consumer(N,I,P,M);

}
bool bank::check()
{
 cout<<"请输入密码:"<<endl;
 cin>>pass;
 if(pass==cs[i].get_password())
  return true;
 else
  return false;
}
void bank::show_me(consumer& cs)
{
 cout<<"**********************"<<endl;
 cout<<"*****当前账号信息*****"<<endl;
 cout<<"**用户姓名:"<<cs.get_name()<<endl;
 cout<<"**银行卡号:"<<cs.get_id()<<endl;
 cout<<"**卡内余额:"<<cs.get_money()<<endl;
 cout<<"**********************"<<endl;
 
}
void bank::change_password(consumer& cs)
{
  cout<<"*******欢迎进入更改密码界面*******"<<endl;
 string p1;
 cout<<"请输入原密码: ";
 cin>>p1;
 string p2,p3;
 if(p1==cs.get_password())
 {
  cout<<"请输入您的新密码: ";
  cin>>p2;
  cout<<"请再次输入您的新密码: ";
  cin>>p3;
  if(p2==p3)
  {
   cs.get_password()=p3;
   cout<<"密码修改成功"<<endl;
  }
  else
   cout<<"您两次输入的密码不一致,修改失败!"<<endl;
 }
 else
  cout<<"您输入的密码错误!"<<endl;
}
void bank::withdraw_money(consumer& cs)
{
  float a=0.0;
 cout<<"请输入取款金额:"<<endl;
 cin>>a;
 while(a<=0)
 {
  cout<<"输入金额有误,请重新输入"<<endl;
  cin>>a;
 }
 if(cs.get_money()-a<0)
 {
  cout<<"对不起你的余额不足"<<endl;
  cout<<"你可以透支3元,若要透支请按1"<<endl; 
  int b;
  cin>>b;
  if(b==1)
  {
   if(cs.get_money()-a<-3)
   {
    cout<<"余额不足"<<endl;
   }
   else
   {
    cout<<"正在取款中......"<<" 您的透支金额为"<<a-cs.get_money()<<endl;
    cs.set_money(cs.get_money()-a);
   }
  }
  else
   cout<<"交易取消"<<endl;
 }
 else
 {
  cout<<"正在取款中......"<<endl;
  cs.set_money(cs.get_money()-a);
  cout<<"交易成功!"<<endl;
 } 
}
void bank::deposit_money(consumer& cs)
{
 float a=0.0;
 cout<<"请输入存款金额:"<<endl;
 cin>>a;
 while(a<=0)
 {
  cout<<"输入金额有误,请重新输入"<<endl;
  cin>>a;
 }
 cout<<"正在存钱......"<<endl;
 cs.set_money(cs.get_money()+a); 
 cout<<"交易成功"<<endl;
}

int main()
{
 bank b;
 b.int_consumer(0,"王璐瑶","001","111111",1000);
 b.int_consumer(1,"赵龙辉","002","222222",2000);
 b.int_consumer(2,"刘晓伟","003","333333",3000);
 b.int_consumer(3,"焦晓东","004","444444",4000);
 b.welcome();
 if(b.check())
 {
  cout<<"密码正确!"<<endl;
  b.menu();
 }
 else
  cout<<"密码错误!"<<endl;
 return 0;
}

关于上次我写的那个ATM程序 ,程序没有什么错,但是有些麻烦,两个类中有好多成员函数重复,因此我把ATM重新写了一边。的更多相关文章

  1. 简单练习题2编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能

    编写Java应用程序.首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”.“取款”和“余额查询”.其次, 编写一个主类,在主类中测试Account类的 ...

  2. 编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能

    package com.hanqi.test; //银行账号 public class account { private String zhanghao;//账号 //私有余额 private do ...

  3. 3.编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能。

    Account package com.hanqi.test; public class Account { private String zhanghao;private double yve; A ...

  4. 黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API

    ---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...

  5. python ATM购物程序

    需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...

  6. Python3的tkinter写一个简单的小程序

    一.这个学期开始学习python,但是看了python2和python3,最后还是选择了python3 本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度.所以写了一个简 ...

  7. JAVA - ATM机程序

    ATM机程序 UnionPayTest.java package oo.day06.work; public class UnionPayTest { } interface UnionPay{ // ...

  8. ASP.NET 使用application和session对象写的简单聊天室程序

    ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...

  9. 用python写个简单的小程序,编译成exe跑在win10上

    每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...

随机推荐

  1. 为什么VS提示SurfFeatureDetector不是cv的成员函数

    surf和sift算法都是在头文件#include <opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现 ...

  2. Tcl 简单介绍及特性

    [简单介绍|特性] l  简单介绍 Tcl是一门产生于80年代末的语言,和Python一样,她是用c开发出来的.假设说C/Java/C++/C#为编译型语言的话,那么Python.Perl和Tcl就是 ...

  3. 前端资料QQ群交流

    转:https://github.com/jsfront/src/blob/master/qq.md 这本来是我QQ群内部的一份公共约定的日常交流规则,后来得到大伙的一致认可,并用实际行动来捍卫它,使 ...

  4. android Handler更新UI

    android中经常需要更新界面某个元素的值,但是在主线程中是不可以直接更新主线程的值.这里推荐通过handler机制来更新值. 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主 ...

  5. Import MySQL Dumpfile, SQL Datafile Into My Database

    How can I import a MySQL dumpfile into my database? I'm using CentOS Linux 5 server. My old hosting ...

  6. 【转】jQuery on()选择器函数

    on()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统 ...

  7. 记一次phpStudy apache启动后自动关闭 修改过程

    第一种可能原因:路径包含中文 .添加站点 2.重启服务 3.遇见问题 apache 刚启动,1秒钟中后就停止 4.解决问题 发现是自己添加的网站中包含中文路径的问题,建议不要在自己的网站目录下包含中文 ...

  8. shell编程001

    1.shell中如何进行算术计算   A=1; B=2 (1)let C=$A+$B (2)C=$[$A+$B] (3)C=$(($A+$B)) (4)C=`expr $A + $B` (注意运算符前 ...

  9. java中遍历map对象的多种方法

    在Java中如何遍历Map对象   How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...

  10. Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion

    在一年之中,也有可能只是几个月后,你会发布你的Android应用程序.但是这中间有可能会发布新的版本的Android系统,比如:6.0+. 你肯定希望你的应用可以向前兼容,当用户升级到新的Androi ...