标题:需要使用继承与派生,已经想了好久了,但还是做不出来。请各位高手帮帮忙
只看楼主
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
结帖率:95%
已结贴  问题点数:30 回复次数:5 
需要使用继承与派生,已经想了好久了,但还是做不出来。请各位高手帮帮忙
编写程序实现简单的银行账号管理:银行bank类包括以下信息:账户姓名(owner name),账号(account number)及本金(balance), 账户可以作存款,取款,查询操作,程序实现以下功能:
1)输入账户基本信息:owner, account number & balance    2)处理存款(deposit): 账户存入一定数目现金,    3)处理取款(withdraw): 账户取出一定数目
4)打印账户信息            要求:
程序至少可以接受2个以上的账户信息;存款(deposit)及取款(withdraw)分别用两个子函数实现,存款及取款数目皆为函数参数,参数可以用指针类型或者引用类型。
从类bank里公有派生出两个派生类:
1.class Checking(支票账号,无利息) , 此类增添两个数据项,
float minimum        minimum balance to qualify for free checking
float charge (月费)amount charged per check when bal < minimum
用户的checking账户,必须总是保留一定的金额(minimum),如果balance少于此金额,就要收取一定的月费(charge).
该类需要重写提款功能,操作时需要判断balance是否足够,然后再进行提款,提取后查看balance是否低于minimum, 以便决定是否收取月费。
2. Class Saving(定期账号,有利息), 此类增添一项数据:
float intrate      annual interest rate credited monthly年利率
此类有一项新功能,计算出账户每个月挣的利息,累加进balance内。
(例如:月利息=bal * intrate / (numberofmonth * point); point可以定义为100或1000。Number of month可以为12
在main里采用实例化对象直接验证你的程序。或者采用菜单形式。
如果使用菜单形式,example of program execution:
[A] Add an account        [S] Show account        [N] Number of account        [F] Save accounts to files           [Q] Quit
Your selection is: A
如果用户选择A, 进入二级菜单如下:
 [C] Add a checking account
[S] Add a Saving account
[Q] Quit operation
搜索更多相关主题的帖子: 编写程序 account balance deposit number 
2015-05-19 23:54
lu3664198
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:185
注 册:2014-11-16
得分:5 
用组合不就行了吗

wwwwwww...~~;
本人为大一新生,说的不好不要拍我 ~ ( ̄~ ̄) ;
2015-05-20 11:32
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
得分:0 
组合?能说明白点么?
2015-05-21 17:46
lu3664198
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:185
注 册:2014-11-16
得分:5 
回复 3楼 Vsnow
如果你这是作业,当我没说...如果不是作业,可以少用继承多用组合,类的组合是什么,可以在书上看到

wwwwwww...~~;
本人为大一新生,说的不好不要拍我 ~ ( ̄~ ̄) ;
2015-05-21 19:55
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:20 
maybe better with another language
import java.util.ArrayList;
import java.util.List;
  
public class Main {
    public static void main(String[] args){
//        System.out.println("[A] Add an account        [S] Show account"+"\n"+        
//        "[N] Number of account        [F] Save accounts to files           [Q] Quit");
//        Scanner scan=new Scanner(System.in);
//        String choice=scan.nextLine();
//        if(choice.equals("A")){
//            System.out.println("[C] Add a checking account"+"\n"+
//        "[S] Add a Saving account"+"\n"+
//        "[Q] Quit operation");
//        }
        List bank=new ArrayList();
        bank.add(new Bank("张三", "1001", 2000));
        System.out.println(bank);
        System.out.println(bank.size());
        bank.add(new Saving("李四", "1002", 2000,0.01,12,100));
        bank.add(new Checking("王五", "1003", 2000,100,100));
        System.out.println(bank);
        System.out.println(bank.size());
    }
}
class Bank {
    protected String owner_name;
    protected String account_number;
    protected double balance;  
   
    public Bank() {
    }

    public Bank(String owner_name, String account_number, double balance) {
        this.owner_name = owner_name;
        this.account_number = account_number;
        this.balance = balance;
    }
  
    public void deposit(double amt){
        this.balance+=amt;
    }
    public void withdraw(double amt){
        this.balance-=amt;
    }
    @Override
    public String toString() {
        return "[owner_name=" + owner_name + ", account_number="
                + account_number + ", balance=" + balance + "]";
    }
   
}
class Checking extends Bank{
    private float minimum;
    private float charge;
    public Checking(String owner_name, String account_number, double balance,float minimum,float charge) {
        super(owner_name, account_number, balance);
        this.minimum=minimum;
        this.charge=charge;
    }
    public void update(){
        if(this.balance<minimum)
            balance-=charge;
    }
}
class Saving extends Bank{
    private double intrate;
    private int numberofmonth;
    private int point;
     
    public Saving(String owner_name, String account_number, double balance,
            double d, int numberofmonth, int point) {
        super(owner_name, account_number, balance);
        this.intrate = d;
        this.numberofmonth = numberofmonth;
        this.point = point;
    }

    public double month_rate(){
        return this.balance*intrate/(numberofmonth*point);
    }
   
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-21 21:16
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
得分:0 
O(∩_∩)O谢谢
2015-05-24 12:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445514-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.351461 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved