A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© "O_忆_O 中级黑马   /  2013-7-8 23:18  /  3126 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-9 11:18 编辑

练习1: (面向对象基础语法)
写一个账户类(Account),属性:
id:账户号码 长整数
password:账户密码 字符串类型
name:真实姓名 字符串类型
identity:身份证号码 字符串类型
email:客户的电子邮箱 字符串类型
balance:账户余额 double

方法:
deposit: 存款方法,参数是double型的金额
withdraw:取款方法,参数是double型的金额

构造方法:
有参和无参,有参构造方法用于设置必要的属性
主方法测试你写的类

练习2: (封装)
将Account类作成完全封装

练习3: (继承,多态)
银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支,而信用账户可以透支,并允许用户设置自己的透支额度.
注意:CreditAccount需要多一个属性 ceiling 透支额度
为这两种用户编写相关的类
同时要求编写Bank类,属性:
1.当前所有的账户对象的集合,存放在数组中
2.当前账户数量

方法:
1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型,返回新创建的Account对象,提示:用s1.equals(s2) 可以比较s1,s2两个字符串的值是否相等.账户类型是一个整数,为0的时候表示储蓄账户,为1的时候表示信用账户
2.用户登录,参数:id,密码 返回Account对象
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元.  

利用接口(Loanable)来抽象出LoanSavingAccount类和LoanCreditAccount类的共性
接口中的方法:
requestLoan(double money):贷款
payLoan(double money):还贷
double getLoan():获取用户贷款总额

为Bank类添加三个方法,
贷款:参数 id,贷款额,返回修改过的Account对象
还贷款:参数 id,还款额,返回修改过的Account对象
统计所有账户贷款的总数


练习6: (Object)
为Account类及其子类添加toString方法和equals方法

练习7: (Exception)
为BAM添加几个异常类

BalanceNotEnoughException:用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况)
RegisterException:用于开户异常的情况,例如密码两次输入不一致等情况
LoginException:用户登录异常的情况,例如id错误,密码错误
LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常

以上四个异常类有一个共同的父类 BusinessException
并妥善的处理这些异常

练习8: (集合)
改写Bank类,采用集合的方式来管理多个Account对象
为Bank类添加一个方法
打印所有用户的总资产排名
说明:一个用户可能会有多个账号,以身份证号为准.总资产指多个账户余额的总和,不需要考虑贷款账户的贷款额

练习9: (GUI)
为BAM添加用户界面
需要以下几个类:

BAMClient 其中会包含一个Frame,这是用户主界面
MainPanel:主界面,用户可以选择开户或者登录
RegisterPanel:用户开户具体用到的界面
LoginPanel:用户登录需要的界面
BusinessPanel:界面上会显示账户的功能 至少包括存款和取款,对于可透支的用户,还允许用户修改透支额度,对于贷款用户,还允许用户贷款和还贷款


注:本练习的界面布局不做要求,请阅读现有代码,添加事件处理代码
提示:在开户或者登录之后都会跳到BusinessPanel,而用户点击了交易之后,界面停留在BusinessPanel
要随时注意在BusinessPanel上根据数据的变化更新显示信息


练习10: (I/O)
修改Bank类,账户信息会采用对象序列化的方式存放在文件中.当Bank对象生成的时候会读取文件,设置账户集合.当账户信息改变的时候,会随时更新文件
设计一个FileDAO类(文件数据访问对象),负责对文件的访问,包括存放账户,提取账户等方法,在Bank类中,会通过FileDAO对象来访问文件

public class FileDAO{
        public Map readMap(){
                ...
        }
        public void writeMap(Map map){
                ...
        }
}

注意:如果已有的账户对象会存在文件中,那么为新的账户对象分配id的做法也应相应的改变,过去的用static属性的做法不再合适,应该改为,把下一个可用的id存放在一个文件中,每创建一个新对象的时候都会读取这个文件,获得新对象的id,并且修改文件中的id,使其加1.这个工作可以放在Account类的构造方法中

练习11: (网络)
在现有的BAM中,用户是通过界面直接访问Bank对象的,将其改为C/S结构,由界面充当客户端,通过TCP协议访问服务器端的Bank对象.
提示:客户端和服务器端需要通过对象来传递信息,这里会使用对象序列化技术.








评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

1 个回复

倒序浏览
非常不错,谢谢楼主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马