银行储蓄程序(C++,simple)
*/
* Copyright (c) 2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名:text.cpp
* 作者:常轩
* 微信公众号:Worldhello
* 完成日期:2016年6月1日
* 版本号:V1.0
* 问题描述: 实现一个简单的银行储蓄系统,承担活期用户的存款和取款业务 (只是初步的写出)
1. 要求如下: 1) 实现描述银行的类Bank,记录系统中现有哪些储户(可用数组或vector实现),定义了生成储户的函数append,
按照账户删除储户的函数的deleteUser,按账号查询储户的函数query,并显示结果。 2) 定义储户基类Account,具有属性账号,存款人姓名和余额,操作saveMoney、getoutMoney和showAccountInfo。
虚函数saveMoney存储业务,虚函数getoutMoney处理取款业务,虚showAccountInfo函数显示储户所有信息。 3) 定义储户派生类普通储户NormalAccount,实现操作saveMoney、getoutMoney和showAccountInfo,
函数getoutMoney处理取款业务时余额不足不予取并提示信息,函数showAccountInfo显示普通储户的所有信息。 4) 定义储户派生类高级储户VIPAccount,包含普通账户的所有信息,同时包含透支上限,透支总额,
函数getoutMoney处理取款业务时超过透支上限不予取并提示信息,函数showAccountInfo显示高级储户的所有信息。 5) 编写main函数,测试上述所要求的各种功能,即可以根据菜单命令增加,删除,和查询储户,
以及储户存款和取款操作: a 增加账户时可选择增加普通账户和高级账户,普通账户帐号格式为“N001”,高级账户帐号格式为“V001”;
b 根据输入的帐号删除和查询账户; c 储户取款和存款时要求输入帐号,根据帐号来操作账户。
* 程序输入:无
* 程序输出:见运行结果
*/ #include<iostream>
#include<string>
using namespace std;
//储户基类
class Account
{
public:
Account(string i,string n,double m=0);
virtual void saveMoney(double s); //存钱
virtual void getoutMoney(double g); //取钱
virtual void showAccountInfo(); //查询
string getId();
protected:
string id; //用户账号
string name; //用户姓名
double money; //用户余额
};
Account::Account(string i,string n,double m)
{
id=i;
name=n;
money=m;
}
string Account::getId()
{
return id;
}
void Account::showAccountInfo() //V查询函数定义
{ }
void Account::getoutMoney(double g) //V查询函数定义
{ }
void Account::saveMoney(double s) //V查询函数定义
{ }
//普通储户类
class NormalAccount:public Account{
public:
NormalAccount(string i,string n,double m):Account(i,n,m)
{ }
void saveMoney(double s); //N存钱
void getoutMoney(double g); //N取钱
void showAccountInfo(); //N查询
private:
/*string name;
string Nid;
double money;*/
}; void NormalAccount::saveMoney(double s) //N存钱函数定义
{
this->money=this->money+s;
}
void NormalAccount::getoutMoney(double g)//N取钱函数定义
{
if(this->money<g)
{
cout<<"您的余额已不足!"<<endl;
}
else
{
this->money=this->money-g;
cout<<"取款成功!"<<endl;
}
}
void NormalAccount::showAccountInfo() //N查询函数定义
{
cout<<"姓名:"<<name<<endl<<"账号:"<<this->id<<endl<<"余额:"<<this->money<<endl; } //VIP储户类
class VipAccount:public Account{
public:
VipAccount(string i,string n,double m):Account(i,n,m)
{ touzhilimit=20000; //V透支上限两万
touzhimoney=0; //V透支总额(初始化为零
} //V构造函数(初始化透支上限与总额)
void saveMoney(double s); //V存钱
void getoutMoney(double g); //V取钱
void showAccountInfo(); //V查询
private:
/* string name;
string Vid;
double money;*/
double touzhilimit; //V透支上限
double touzhimoney; //V透支总额
};
/*
VipAccount::VipAccount() //VIP储户类构造函数定义
{
touzhilimit=20000; //V透支上限两万
touzhimoney=0; //V透支总额(初始化为零)
}*/
void VipAccount::saveMoney(double s) //V存钱函数定义
{
if(this->money=0)
{
if(touzhimoney>0)
touzhimoney=touzhimoney-s;
else
this->money=this->money+s;
}
else
this->money=this->money+s; }
void VipAccount::getoutMoney(double g) //V取钱函数定义
{
if(g>(this->money+(touzhilimit-touzhimoney)))
{
cout<<"您的余额不足,已达到透支上限!"<<endl;
}
else
{
this->money=this->money-g;
if(this->money<0)
{
touzhimoney=this->money*(-1)+touzhimoney;
this->money=0;
}
cout<<"取款成功!"<<endl;
}
}
void VipAccount::showAccountInfo() //V查询函数定义
{
cout<<"姓名:"<<this->name<<endl<<"账号:"<<this->id<<endl<<"余额:"<<this->money<<endl<<"透支总额:"<<this->touzhimoney<<"透支上限:"<<this->touzhilimit<<endl; } //银行类
class Bank{
public:
Bank();
void deleteuser();
void query();
void append();
void del();
public:
int Index; Account *user[1000]; };
Bank::Bank()
{
for(int i=0;i<1000;i++)
{
user[i] =NULL;
Index=0;
}
}
void Bank::append()
{
int choose;
string ID;
string Name;
double Money;
cout<<"***** 你好,选择开普通账户请按——1 *****"<<endl<<"***** 选择开高级账户请按——2 *****"<<endl;
cin>>choose;
if(choose==1)
{ cout<<"开户中..."<<endl;
cout<<"请输入账号,例如:N001或者N080"<<endl<<"账号:";
cin>>ID;
int tmp =1;
for(int i=0;i<Index;i++)
{ if(user[i]->getId()==ID)
{
cout<<"该账号已存在!"<<endl;
tmp =2;
}
}
if(tmp==2)
return;
else
{
cout<<"姓名:";
cin>>Name;
cout<<"存入:";
cin>>Money; Account *n=new NormalAccount(ID,Name,Money);
cout<<"开户成功!"<<endl; user[Index]=n;
cout<<endl<<"当前账户状态:"<<endl;
user[Index]->showAccountInfo();
Index++; }
}
else
{
cout<<"开户中..."<<endl;
cout<<"请输入账号,例如:V001或者V080"<<endl<<"账号:";
cin>>ID;
int tmp =1;
for(int i=0;i++;i<1000)
{
if(user[i]->getId()==ID)
{
cout<<"该账号已存在!"<<endl;
tmp =2;
}
}
if(tmp==2)
return;
cout<<"姓名:";
cin>>Name;
cout<<"存入:";
cin>>Money;
Account *n;
n=new VipAccount(ID,Name,Money);
cout<<"开户成功!"<<endl;
user[Index]=n;
cout<<endl<<"当前账户状态:"<<endl;
user[Index]->showAccountInfo();
Index++; }
}
void Bank::query()
{
string n;
cout << "请输入您要查询的用户账号:" << endl;
cin>>n;
int tem=1;
for(int i=0;i<Index;i++)
{
if(user[i]->getId() == n)
{
tem=2;
break;
}
}
if(tem==2)
user[i]->showAccountInfo();
else
cout<<"账户不存在!"<<endl;
}
void Bank::del()
{
string n;
cout << "请输入要注销的用户账号" << endl;
cin>>n;
int tem=1;
int j; //用来记录应删除账户的下标
for(int i=0;i<Index;i++)
{
if(user[i]->getId()==n)
{
tem=2;
j=i;
break;
} }
if(tem==2)
{
delete user[j];
Index--;
cout<<"注销成功!"<<endl;
}
else
cout<<"没有这个账号"<<endl;
}
int menu_select(); int main()
{
Bank bank;
char choice; for(;;)
{
choice=menu_select();
if(choice==1)
bank.append(); else if(choice==2)
bank.del();
else if(choice==3)
{
string n;
cout<<"请输入您要存取款的账号"<<endl;
cin>>n;
int tem=1;
for(int i=0;i<1000;i++)
{
if(bank.user[i]->getId()==n)
{
tem=2;
break;
}
}
if(tem==1)
{
cout<<"账号输入错误"<<endl;
}
if(tem==2)
{
int choice; cout<<"1.取款"<<endl;
cout<<"2.存款"<<endl;
cout<<"请选择"<<endl; cin>>choice;
if(choice == 1)
{
double jine;
cout<<"请输入取款金额:"<<endl;
cin >> jine;
bank.user[i]->getoutMoney(jine);
bank.user[i]->showAccountInfo(); }
if(choice == 2)
{
double qkuan;
cout<<"请输入存款金额:"<<endl;
cin>>qkuan;
bank.user[i]->saveMoney(qkuan);
bank.user[i]->showAccountInfo();
}
} }
else if(choice==4)
bank.query(); else
break;
} return 0;
} int menu_select()
{
char c;
cout<<"***************************************************************"<<endl;
cout<<"***********************银行储蓄系统 v1.0***********************"<<endl;
cout<<"* *"<<endl;
cout<<"* 1.开户 *"<<endl;
cout<<"* 2.销户 *"<<endl;
cout<<"* 3.取款或存款 *"<<endl;
cout<<"* 4.查询账户 *"<<endl;
cout<<"* 5.退出 *"<<endl;
cout<<"***************************************************************"<<endl;
cout<<" 请输入(1-5)进行操作:"<<endl;
do{
cin.get(c);
}while(c<'1'||c>'5');
return c-48; }
下面有两张简单的运行图片:
结语:
或许运行起来还是有BUG的,希望大家可以给我指正!
银行储蓄程序(C++,simple)的更多相关文章
- C++银行储蓄程序代码
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- c++课程实训 银行储蓄系统
基本要求:定义了用户类(User)和银行类(Bank),用成员函数实现各种功能,多文件组织程序.能用文本文件存取数据(如演示样例中给出的技术): 拓展方向: 序号 加分项目 细 则 1 改 ...
- 银行综合储蓄业务系统,水平为学了一年C语言
银行综合储蓄业务系统 #include <stdio.h> #include<string.h> int acccunt = 0; char name[10],pw[10]; ...
- Spark官方文档——本地编写并运行scala程序
快速开始 本文将介绍如何用scala.java.python编写一个spark单击模式的程序. 首先你只需要在一台机器上成功建造Spark:做法: 进入Spark的根目录,输入命令:$ sbt/sbt ...
- [ZETCODE]wxWidgets教程三:第一个窗体程序
本教程原文链接:http://zetcode.com/gui/wxwidgets/firstprograms/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...
- Prism 4 文档 ---第4章 模块化应用程序开发
模块化应用程序是指将一个应用程序拆分成一系列的可以组合的功能单元.一个客户端模块封装了应用程序的一部分,并且通常是一系列相关的关注点.它可以包含一个相关的组件的集合,就像用户界面,应用程序功能,和一些 ...
- Know the Core Objects of Your App---了解应用程序的内核对象
Back to App Design You develop apps using the Cocoa application environment. Cocoa presents the app’ ...
- 黑客攻防技术宝典web实战篇:攻击应用程序逻辑习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 何为强制浏览?可以通过它确定哪些漏洞? 强制浏览包括避开浏览器导航对应用程序功能访问顺序实 ...
- SQL性能优化应该考虑哪些?
1.调整数据结构的设计.这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等. 2.调整应用程序结构设计.这一部分也是在开 ...
随机推荐
- SpringBoot 1.5.x 集成 Quartz 任务调度框架
Quartz 有分 内存方式 和 数据库方式 内存方式任务信息保存在内存中, 停机会丢失, 需手动重新执行, 数据库方式: 任务信息保存在数据库中, 重点是支持集群. 内存方式 RAMJobStore ...
- linkage disequilibrium|linkage equilibrium
I.9 Linkage INDEPENDENCE OF GENOTYPES AT TWO LOCI:若A,B是两个独立位点:PA是基因A的概率,PB是基因B的概率.因为基因A与基因B是相互独立的位点, ...
- php面向对象理解(一)
常用的继承过程,以及对public.private.protected修饰符的理解: /*****************************父类************************* ...
- Centos内核更新
内核更新操作后面补上.暂时记录删除多余内核操作 删除卸载多余内核 1.系统启动时,选择需要保留的内核进入系统,通过uname -a命令查看当前内核版本,以防误删 2. 使用rpm -qa | grep ...
- 三十二、http与www服务介绍
一.用户访问百度(www.baidu.com) 用户访问在url中输入地址后,首先会访问本地的缓存和hosts文件,如果没有,会访问本地DNS,在就是根域和顶级域名等,在前面已经说过了,这里不再赘述. ...
- 吴裕雄--天生自然python机器学习:决策树算法
我们经常使用决策树处理分类问题’近来的调查表明决策树也是最经常使用的数据挖掘算法. 它之所以如此流行,一个很重要的原因就是使用者基本上不用了解机器学习算法,也不用深究它 是如何工作的. K-近邻算法可 ...
- Yii框架的学习指南(策码秀才篇)1-2 一步步学习yii framework
我也是新手,不过之前学习了tp和ci框架,所以尝鲜想看看yii到底有多强大. 如何新建一个webapp(网站应用)呢,下面是2个步骤: 1. cmd 切换到htdocs下面的yii目录下的framew ...
- Redis为什么这么快以及持久化机制
1.首先我们谈一下为什么Redis快: 一. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快. 二. 再说一下IO,Redis使用的是 ...
- [LC] 159. Longest Substring with At Most Two Distinct Characters
Given a string s , find the length of the longest substring t that contains at most 2 distinct char ...
- scala语言yield配合for的用法实例
yield配合for的用法 话不多说见实例 package com.donews.reynold /** * Created by reynold on 2017/3/23. */ object Sc ...