1.账户类(满分50分)版本1:满分10分设计Account1类,包含:■一个名为id的int类型的私有数据域(默认值为0),长度为6位。
■一个名为balance的double类型的私有数据域(默认值为0)。
■一个名为annualInterestRate的double类型的私有数据域存储当前利率(默认值为0)。
假设所有的账户都有相同的利率。
■一个名为dateCreated的Date类型的私有数据域存储账户的开户日期。
■一个能创建默认账户的无参构造方法。
■一个能创建带特定id和初始余额的构造方法,初始余额不能为负数。
■id、balance和annualInterestRate的访问器和修改器。
■dateCreated的访问器。
■一个名为getMonthlyInterestRate的方法返回月利率。
■一个名为withDraw的方法从账户提取特定金额。
■一个名为deposit的方法向账户存人特定金额。
■double类型的数据域保留2位小数。
■成员方法和数据域应进行基本的合理性检查。
设计测试类ATMMachine1:■创建一个有100个账户的数组,其id为0,1,2,...99,并初始化收支为1000美元。
■主菜单如下(可参考教材中文版P296或英文版P367):Mainmenu1:checkbalance2:withdraw3:deposit4:exit版本2:满分20分扩展Account1类为Account2类:■Account2类继承Account1类。
■为Account2类新增一个名为password的String类型的私有数据域存储账号密码。
password只能为字母或数字,长度不能小于6且不能大于10。
密码显示时为*******。
■为Account2类新增一个名为name的String类型的私有数据域存储客户名字。
■为Account2类新增一个名为transactions的ArrayList类型的新数据域,其为客户存储买卖记录。
这要求新建一个名为Transaction的类,类的定义请参照教材中文版P327或英文版P404。
每笔买卖都是Transaction类的一个实例。
■新增一个带初始余额的构造方法,其id随机产生,但不能与当前系统的id重复。
若初始余额的参数为负数,则抛出一个自定义异常并在当前构造方法中进行处理。
■重写方法withDraw,要求支取的金额为100的整数倍,并且当日支取金额不能超过5000,支取金额不允许透支。
每进行一次操作应向transactions数组线性表添加一笔买卖。
■重写方法deposit,要求每进行一次操作应向transactions数组线性表添加一笔买卖。
■新增一个方法changePassword,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码设计测试类ATMMachine2,其主菜单如下(可参考教材中文版P296或英文版P367):Mainmenu0:createaaccount1:checkbalance2:withdraw3:deposit4:detailsofthetransaction5:changepassword6:exit■若用户选择新建一个账号,则应提示用户输入账号password、balance和annualInterestRate,其中id随机产生。
新产生的账户应序列化到名为accounts.dat的文件中。
所有账户只能通过这种方式产生。
■所有用户操作结果应同步到accounts.dat文件中相应账户中。
■所有用户操作应有友好、简介的提示语。
版本3:满分20分请参照银行的ATM机界面,在Account2类的基础上开发一个GUI界面的ATM系统。
要求界面应模拟小键盘,并且账户信息读、写于文件accounts.dat。
2018/6/25 8:47:38
133KB
账户类
ATM
1