关于上次我写的那个ATM程序 ,程序没有什么错,但是有些麻烦,两个类中有好多成员函数重复,因此我把ATM重新写了一边。
不好意思!但是现在这个程序比上次那个好多了,而且没有重复,程序看起来比较简练,以下是新程序:
#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重新写了一边。的更多相关文章
- 简单练习题2编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能
编写Java应用程序.首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”.“取款”和“余额查询”.其次, 编写一个主类,在主类中测试Account类的 ...
- 编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能
package com.hanqi.test; //银行账号 public class account { private String zhanghao;//账号 //私有余额 private do ...
- 3.编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能。
Account package com.hanqi.test; public class Account { private String zhanghao;private double yve; A ...
- 黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API
---------- android培训.java培训.期待与您交流! ---------- 一.泛型 (一)泛型概述 1.泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制 ...
- python ATM购物程序
需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...
- Python3的tkinter写一个简单的小程序
一.这个学期开始学习python,但是看了python2和python3,最后还是选择了python3 本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度.所以写了一个简 ...
- JAVA - ATM机程序
ATM机程序 UnionPayTest.java package oo.day06.work; public class UnionPayTest { } interface UnionPay{ // ...
- ASP.NET 使用application和session对象写的简单聊天室程序
ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...
- 用python写个简单的小程序,编译成exe跑在win10上
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
随机推荐
- 【Android】Android实现截取当前屏幕图片并保存至SDCard
功能 1. 实现截取当前屏幕的功能. 2. 把截取的图片保存到SDCard中的某个目录文件夹下面. Java代码 package com.app.test01; import java.io.File ...
- JavaScript 中 关于 this 的学习笔记
今天上午主要学习了js中的 this ,因为之前学习面向对象时,this这个东西出现的还是很频繁的,理解的很不透彻,感觉老被JAVA的思想带进坑里,所以对它特别关注. 首先贴一个大神的一篇博客,我是通 ...
- Jquery二级简单折叠菜单
写在前面: 1.前端新手 2.欢迎交流 3. 源代码百度云页面示例链接: http://pan.baidu.com/s/1nt0yjd3 链接失效请留言 效果图: 代码部分:jquery部分: < ...
- 蜗牛爱课 - iOS7、8模态半透明弹出框
//源Controller中跳转方法实现 MKDialogController *controller = [[MKDialogController alloc] init]; controller. ...
- property参数
1,set方法内存管理相关的参数 *retain:release旧值,retain新值(适用于OC对象类型) *assign:直接赋值(默认,只用于非OC对象类型) *copy: release旧 ...
- 库函数strlen源码重现及注意问题
首先直接上源码: size_t strlen (const char * str) { const char *eos = str; while(*eos++); return(eos - str - ...
- Scala基础入门-2
简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } // 方法默认公有 d ...
- jacob 操作word转pdf
项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览p ...
- display属性值
display属性值:none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-bl ...
- Java调用.dll文件
因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档.在网上找到一个开源的组件JNativ ...