一、题目要求
在上一次“银行系统ATM-part1”的基础上,再一次改进,做一个新的版本,增加新学的语法要素,如委托、事件与异常等。
要求如下:
- 上一版本中关于类、属性、方法、继承、修饰符等你不太满意的地方(或者你从别人那里学到的)可以进一步改进。改进的地方可以加上注释说明。(占3分)
- 程序中使用事件及委托。在ATM类中实现一个事件BigMoneyFetched (一大笔钱被取走了),即ATM机在操作时如果用户取款数大于10000,则可以**这个事件。事件参数也是一个对象(可以定义类BigMoneyArgs),含有账号及当时取款数。在程序中(如Main中)注册这个事件,使之能在界面中显示出告警信息(相当于银行的监控功能)。(占3分)
- 程序中使用自定义异常。比如,定义一个异常类BadCashException,表示有坏的钞票。在程序中适当的地方(如取款函数)中,抛出(throw)(自定义的异常类(如random的Next(3)小于1,表示有三个之一的概率时就抛出),在ATM调用这个函数时进行捕获(catch)。(占3分)
- 使用其他语法(可选,如Attribute、Lambda表达式)。(占1分,总体印象较好时,也可获得这1分)
二、实验步骤
1.对上篇Part1的改进,当用户输入账号或密码错误时,可提示“press any key to continue”,即用户可按任何键来对程序进行重置,此外,当用户选择三者之一的功能并使用之后,此时屏幕上会自动清屏并重新显示功能供用户选择。
2.新增BigMoneyFetched类,当取款数大于10000时,可触发BigMoneyFetched事件发生,事件参数为temid(即用户账号)和temmoney(即用户取款数)。在ATM类中引用此事件,判断当用户取款数大于10000时,触发BigMoneyFetched事件,并在屏幕上显示warning,提示用户正在大额取款。在main函数中注册此事件,使之能在界面中显示出告警信息(相当于银行的监控功能)。
3.定义一个异常类BadCashException,表示有坏的钞票。在程序中适当的地方(如取款函数)中,抛出(throw)(自定义的异常类(如random的Next(3)小于1,表示有三个之一的概率时就抛出),在ATM调用这个函数时进行捕获(catch)。
三、实验数据及处理结果
设置的账户数据:
其中,普通账户的卡号为1111,密码为1111,余额为1000。信用账户的卡号为2222,密码为2222,实际余额为1000,信用额度为500.大额余额账户的卡号为3333,密码为3333,余额为20000。
1.普通账户:
登录失败:
登录成功:
输入1,查看余额:
输入2,存钱并显示存钱后的余额:
输入3,取钱并显示取钱后的余额:
当取钱的数目大于余额时,提示出错,取钱失败:
2.信用账户
登录失败、成功如上。
输入3,取钱并显示取钱后的余额(此时账户2000里包含信用余额500):
3.大额余额用户登录:
登录失败、成功如上。
1.取钱(取钱金额小于10000),此时提示取出的钞票有破损,正在重新出票,然后重新出票成功,取钱成功,取出5000元,余额为20000元。
2.取钱(取钱金额大于10000),提示warning,用户正在取出大额金钱,取钱成功,取钱金额为11000,此时余额为9000.