一、题目要求

在上一次“银行系统ATM-part1”的基础上,再一次改进,做一个新的版本,增加新学的语法要素,如委托、事件与异常等。

要求如下:

  1. 上一版本中关于类、属性、方法、继承、修饰符等你不太满意的地方(或者你从别人那里学到的)可以进一步改进。改进的地方可以加上注释说明。(占3分)
  2. 程序中使用事件及委托。在ATM类中实现一个事件BigMoneyFetched (一大笔钱被取走了),即ATM机在操作时如果用户取款数大于10000,则可以**这个事件。事件参数也是一个对象(可以定义类BigMoneyArgs),含有账号及当时取款数。在程序中(如Main中)注册这个事件,使之能在界面中显示出告警信息(相当于银行的监控功能)。(占3分)
  3. 程序中使用自定义异常。比如,定义一个异常类BadCashException,表示有坏的钞票。在程序中适当的地方(如取款函数)中,抛出(throw)(自定义的异常类(如random的Next(3)小于1,表示有三个之一的概率时就抛出),在ATM调用这个函数时进行捕获(catch)。(占3分)
  4. 使用其他语法(可选,如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。

C#之银行ATM实例-Part2

1.普通账户:

登录失败:

C#之银行ATM实例-Part2

登录成功:

C#之银行ATM实例-Part2

输入1,查看余额:

C#之银行ATM实例-Part2

输入2,存钱并显示存钱后的余额:

C#之银行ATM实例-Part2

输入3,取钱并显示取钱后的余额:

C#之银行ATM实例-Part2

当取钱的数目大于余额时,提示出错,取钱失败:

C#之银行ATM实例-Part2

2.信用账户

登录失败、成功如上。

输入3,取钱并显示取钱后的余额(此时账户2000里包含信用余额500):

C#之银行ATM实例-Part2

3.大额余额用户登录:

登录失败、成功如上。

1.取钱(取钱金额小于10000),此时提示取出的钞票有破损,正在重新出票,然后重新出票成功,取钱成功,取出5000元,余额为20000元。

C#之银行ATM实例-Part2

2.取钱(取钱金额大于10000),提示warning,用户正在取出大额金钱,取钱成功,取钱金额为11000,此时余额为9000.

C#之银行ATM实例-Part2

 

 

 

 

 

 

相关文章:

  • 2021-12-18
  • 2022-12-23
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-11-03
  • 2021-07-02
猜你喜欢
  • 2021-07-30
  • 2021-05-06
  • 2022-12-23
  • 2021-10-05
  • 2021-11-27
  • 2021-07-12
  • 2021-09-11
相关资源
相似解决方案