银行账户管理系统(一)

其他程序设计题目 专栏收录该内容
42 篇文章 0 订阅

一个活期储蓄帐户包括账号(id),余额(balance),年利率(rate)等信息,还包括显示账户信息(show),存款(desposit),取款(withdraw),结算利息(settle)等操作。为此设计一个savingaccount类,将id,balance,rate,作为其成员数据,将show,deposit,withdraw,settle,均作为其成员函数。无论是存款取款还是结算利息,都需要修改当前的余额并且将余额的变动输出,这些公共操作由私有成员函数record来执行。


根据所学知识代码持续完善中……

#include <iostream>
#include<cmath>
using namespace std;
class SavingAccount{
private:
    int id;             //账户
    double balance;       //余额
    double rate;          //年利率
    int lastdate;         //余额上一次变化的日期
    double accumulation;  //余额按日累加之和
    int accumulate(int date); //获得到指定日期位置的存款累计值
    double getbalance(){return balance;}
    double getrate(){return rate;}
    void record(int date,double amount);    //记账
public:
    SavingAccount(int date,int id,double rate);    //构造函数
    void deposit(int date,double amount);   //存款
    void withdrawl(int date,double amount);       //取款
    void show();   //显示余额
    void settle(int date);  //结算利息,每年一月一日调用此函数
};
//类的成员函数的实现
SavingAccount::SavingAccount(int date,int id,double rate):id(id),balance(0),rate(rate),lastdate(date),accumulation(0){
    cout<<"#"<<id<<"is created"<<endl;
}
int SavingAccount::accumulate(int date){
return accumulation+balance*(date-lastdate);
}
void SavingAccount::record(int date,double amount){
    lastdate=date;
    amount=floor(100*amount+0.5)/100;   //floor为向下取整函数,此处可以做到保留两位小数
    balance+=amount;
    cout<<date<<"\t#"<<id<<"\t"<<amount<<"\t"<<balance<<endl;
}
void SavingAccount::deposit(int date,double amount){
    record(date,amount);
}
void SavingAccount::withdrawl(int date, double amount){
    if(amount>balance)
        cout<<"not enough money"<<endl;
    else
        record(date,-amount);
}
void SavingAccount::show(){
    cout<<"#"<<id<<"\tBalance"<<balance<<endl;
}
void SavingAccount::settle(int date){
    double interest=accumulate(date)*rate/365; //计算年息
    if(interest!=0)
        record(date,interest);
    accumulation=0;
}

int main()
{
    SavingAccount s1(0,11111,0.015);
    SavingAccount s2(1,22222,0.015);
    s1.deposit(5,5000);
    s2.deposit(25,10000);
    s1.deposit(45,5500);
    s2.withdrawl(60,11000);
    s1.settle(90);
    s2.settle(90);
    s1.show();
    s2.show();
 
    return 0;
}


  • 6
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
项目名称:Bank Account Management System 银行账户管理系统 简称BAM 项目描述:这是个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户. 项目实施方式:这是个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每个进阶的项目要求. 项目 练习1:(面向对象基础语法) 写账户类(Account),属性: id:账户号码 长整数 password:账户密码 name:真实姓名 personId:身份证号码 字符串类型 email:客户的电子邮箱 balance:账户余额 方法: deposit: 存款方法,参数是double型的金额 withdraw:取款方法,参数是double型的金额 构造方法: 有参和无参,有参构造方法用于设置必要的属性 练习2:(封装) 将Account类作成完全封装,注意:要辨别每个属性的set/get方法是否需要公开 练习3:(继承,多态) 银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支,而信用账户可以透支,并允许用户设置自己的透支额度. 注意:CreditAccount需要多个属性 ceiling 透支额度 为这两种用户编写相关的类 同时要求编写Bank类,属性: 1.当前所有的账户对象的集合,存放在数组中 2.当前账户数量 方法: 1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型(int),返回新创建的Account对象 2.用户登录,参数:id,密码 返回Account对象,提示 用s1.equals(s2)判断s1和s2两个字符串内容是否相等 3.用户存款,参数:id,存款数额,返回修改过的Account对象 4.用户取款,参数:id,取款数额,返回修改过的Account对象 5.设置透支额度 参数:id,新的额度 ,返回修改过的Account对象.这个方法需要验证账户是否是信用账户 用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数 另外,请为Bank类添加几个统计方法 1.统计银行所有账户余额总数 2.统计所有信用账户透支额度总数 写个主方法测试你写的类 项目二 练习4:(语言高级特性,三个修饰符) 1.修改Account类,银行用户的账号(id)是自动生成的,初始值为100000,第个开户的用户id为100001,第二个为100002,依此类推. 提示:构造对象的时候采用static属性为id赋值 2.对于Account类,有两个方法,存款方法和取款方法,请修改这两个方法. 存款方法改为不允许子类修改 取款方法根据不同的子类而不同,因此,改为抽象方法,在两个子类中分别实现 3.将Bank类作成单例 项目三 练习5:(接口) 为SavingAccount和CreditAccount各自添加个子类 LoanSavingAccount类:用户可以贷款,不可以透支 LoanCreditAccount类:用户可以贷款,可以透支 说明:贷款和透支是不样的,透支指的是账户余额小于0,而贷款用户需要个贷款额的属性. 在ATM机上,用户可以选择贷款,也可以选择还贷款,而还贷款就是要把账户余额上的资金转到贷款额上 例如:用户余额10000元,贷款额100000元,用户可以选择还款5000元,则用户余额变为5000,贷款额变为95000元. 利用接口来抽象出LoanSavingAccount类和LoanCreditAccount类的共性 接口中的方法: requestLoan:贷款 payLoan:还贷 getLoan:获取用户贷款总额 为Bank类添加三个方法, 贷款:参数 id,贷款额,返回修改过的Account对象 还贷款:参数 id,还款额,返回修改过的Account对象 统计所有账户贷款的总数 练习6:(Object) 为Account类及其子类添加toString方法和equals方法 项目四 练习7:(Exception) 为BAM添加几个异常类 BalanceNotEnoughException :用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况) RegisterException:用于开户异常的情况,例如密码两次输入不致等情况 LoginException:用户登录异常的情况,例如id错误,密码错误 LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常 以上四个异常类有个共同的父类 BusinessException
1、背景:客户信息的管理是银行企业管理的个重要内容。随着时代的进步,银行企业的客户也逐渐变得多起来;当今资金流动越来越频繁,使得银行管理工作也变的越来越复杂。以前人们使用传统的人工方式管理客户信息,这种管理方式存在着许多缺点,如效率低下、保密性差等。另外,时间长将产生大量的文件和数据,这对于信息的查找、更新和维护来说都带来了不少的困难。所以,如何有效率地管理好银行客户信息,成为银行管理中个重要的问题。如果能实现管理的自动化,无疑将给银行管理带来很大的方便。 2、目的:客户信息管理系统是针对数据库作的个系统,主要是为了将公司的客户统起来进行管理,方便为客户服务,对客户信息的快速了解,能有效地帮助公司对客户的信息快捷地了解,方便查询,使工作效率提高。 3、意义:通过对客户信息管理系统对企业的实际需求,实现了客户基本信息的输入、修改、查询等功能,并能够按时间和客户区域对业务情况进行统计,自主设定查询条件,实现对业务数据的综合查询。使银行能够全面地、及实地了解与客户相关的合作信息。 4、主要内容:对每位客户都有详细记录,可以查询客户的基本信息,资产状况及用户级别等信息,添加,删除,查询,修改客户信息。 5、完成课题的条件:对银行管理客户信息的相关需求作充分的了解,同时也要掌握客户的需求,针对双方的需求开发此系统,使该系统的功能相对齐全。后期还要不断地同客户进行交流,以对系统进行进步地修改、完善。
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值